PHPはWebアプリケーションを作る道具として普及しています。
けれど、もしあなたがRuby on Railsに興味をもったのなら、
あるいは一般的な作業をさせるのに適した言語を求めているなら、Rubyは一見の価値があります。

### PHPとの類似

PHPと同様に、Rubyは...

* 動的に型付けされます。変数の宣言について心配することはありません。
* クラスがあります。PHP5のように `public`、`protected`、`private`によるアクセス制御が可能です。
* いくつかの変数は`$`から始まります(すべてではありませんが)。
* `eval`もあります。
* 式展開を使えます。`"$foo is a $bar"`とする代わりに`"#{foo} is a #{bar}"`と書きます。
  シングルクォーテーションで括った時には、これは有効になりません。
* ヒアドキュメントがあります。
* PHP5と同様に、例外機構があります。
* かなり膨大な標準ライブラリがあります。
* `array()`を`{`と`}`に変えれば、配列とハッシュは期待するように動きます。
  `array('a' => 'b')`は`{'a' => 'b'}`とします。
* `true`と`false`はPHPと同じように振る舞います。ただし、`null`は`nil`になります。

### PHPとの違い

PHPと違って、Rubyは...

* 強い型付けがあります。文字列や数値などを互いに変換するためには、言語に任せるのではなく
  `to_s`、`to_i`などのメソッドを明示的に呼ぶ必要があります。
* 文字列、数、配列、ハッシュなどはオブジェクトです。`abs(-1)`を呼び出す代わりに`-1.abs`とします。
* パラメータを渡していることを明確にする場合を除いて、メソッド呼び出しの括弧は基本的にオプションです。
* 標準ライブラリや拡張は、モジュールやクラスを使って構造化されています。アンダースコアなどによる名前付けを使った構造化は行いません。
* リフレクション機能はオブジェクトごとに備わっています。PHP5のように`Reflection`クラスを使う必要はありません。
* 変数は参照です。
* 抽象クラス(`abstract`)や`interface`はありません。
* ハッシュと配列には互換性はありません。
* `false`と`nil`のみが偽になります。`0`や`array()`、`""`はすべて真と評価されます。
* ほとんどすべてのことは、メソッド呼び出しです。`raise`(PHPにおける`throw`)ですら、メソッド呼び出しです。
