Stefan Tilkov:
Ruby
? die Programmiersprache der Zukunft
Why Ruby?
- it's different
- it supports growth
- it's expressive
- it's concise
- we can afford it
- Rails!
- it's fun
Quick Intro
- Type system: dynamic, strong, implicit
- interpreted (mostly...)
- very dynamic
- strong metaprogramming support
- purely object-oriented
code examples... - loops
- lists and operations on lists
- hashes
comparison von Java code and Ruby code to sort an array by lenght of elements - methods
- classes
#{variableName} in string literals is replaced by the variable's value - inheritance
- modules (kind of container for methods)
- "getters" and "setters" (properties!)
- Attribute Accessor: short cut for properties
(nice )
Metaprogramming with Ruby
Structures
Struct.new "Person", :first_name, :last_name creates new class
Creating objects and classes by name
Kernel.const_get('String').new "Teststring" creates String object
Test = Class.new
Indivual object methods
class << t1
def object_method ...
Classes and constants
Runtime Definitions
Methods adding methods
Adding methods to existing classes like String: (Re)opening classes
method_missing: Method called, when a missing method is called, with name of called method as argument
short, declarative notation is "expanded" to many method definitions
Ruby language implemenations - MRI = Matz's Ruby Interpreter
- YARV = Yet anthother Ruby VM
- Rubinius: "Ruby in Ruby"
- JRuby: "Ruby in Java"
Ruby vs. other dynamic languages
Perl - many libraries
- "write only" reputation
- weak (wierd) OO features
- very fast
Python - great community
- extensive libraries
- extremely fast
Jython - JVM version of Python
- neglected for a long time
- now supported by Sun
Groovy - designed for the JVM
- supposedly easier for Java developers
Summary
Ruby: nice, concise, object-oriented language
Killer feature: metaprogramming support
Killer framework: Ruby on Rails