PHP ist bei Webapplikationen weit verbreitet, aber wenn du Ruby on Rails
verwenden willst oder eine Programmiersprache suchst, die für
allgemeinere Fälle ausgelegt ist, ist Ruby sicher einen Blick wert.

### Gemeinsamkeiten

Genauso wie in PHP ist Ruby…

* Ruby ist eine dynamisch typisierte Sprache, so dass man sich keine
  Gedanken um die Deklaration von Variablen machen muss.
* Ruby kennt Klassen und die gleichen Mechanismen für die
  Zugriffskontrolle wie PHP 5 (`public`, `protected` und `private`)
* Einige Variablen beginnen mit $, genau wie in PHP (aber nicht alle).
* Es gibt auch das Schlüsselwort `eval`
* Natürlich kennt auch Ruby string interpolation, wenn doppelte
  Anführungstriche verwendet werden – man kann also
  `"#{foo} und #{bar}"` schreiben. Und wie in PHP funktioniert das bei
  einfachen Anführungstrichen nicht.
* Es gibt auch heredocs.
* Wie in PHP 5 gibt es auch in Ruby Exceptions.
* Es gibt eine ziemlich umfangreiche Standard-Bibliothek.
* Standard-Arrays und Assoziative-Arrays (Hashes) funktionieren wie in
  PHP, man braucht nur weniger zu tippen: aus `array('a' => 'b')` wird
  einfach `{'a' => 'b'}`.
* `true` und `false` verhalten sich wie in PHP, aber `null` wird mit
  `nil` bezeichnet

### Unterschiede

Im Gegensatz zu PHP hat Ruby…

* Es gibt auch strenge Typisierung: man muss explizit Funktionen zur
  Typkonvertierung aufrufen. Z.B. `to_s` oder `to_i`
* strings, numbers, arrays, hashes, etc. sind Objekte. Also statt
  `abs(-1)` schreibt man in Ruby `-1.abs`
* Parameter bei Methodenaufrufen brauchen nicht in runde Klammern
  gesetzt werden – außer, falls notwendig, um Mehrdeutigkeit zu
  vermeiden.
* Die Ruby Standard Bibliothek ist in Modulen und Klassen organisiert.
* Objekte bringen Reflection-Eigenschaften bereits mit. Die Verwendung
  einer besondern `Reflection` Klasse, wie in PHP 5, ist nicht notwendig
* Variablen sind Referenzen
* Es gibt keine `abstract` Klassen und auch keine @interface@s
* Hashes und Arrays sind verschiedene Typen in Ruby.
* nur `false` und `nil` liefern false: `0`, `array()` und `""` ergeben
  in Bedingungen true.
* fast alles ist Methodenaufruf, sogar `raise`
  (`throw` in PHP).
