PHP широко використовується для вебзастосунків, але якщо ви хочете
використовувати Ruby on Rails або просто мову, більш придатну для
загального використання, Ruby варто розглянути.

### Подібності

Як і в PHP, у Ruby…

* Ruby має динамічну типізацію, як і PHP, тож вам не потрібно
  турбуватися про оголошення змінних.
* Є класи, і ви можете керувати доступом до них, як у PHP 5
  (`public`, `protected`, `private`).
* Деякі змінні починаються з $, як у PHP (але не всі).
* Є `eval`.
* Можна використовувати інтерполяцію рядків. Замість `"$foo is a $bar"`
  можна написати `"#{foo} is a #{bar}"` — як і в PHP, це не застосовується
  до рядків у одинарних лапках.
* Є heredoc-и.
* Ruby має винятки, як PHP 5.
* Досить велика стандартна бібліотека.
* Масиви та hash працюють очікувано, якщо замінити `array()` на `{` і `}`:
  `array('a' => 'b')` стає `{'a' => 'b'}`.
* `true` і `false` поводяться як у PHP, але `null` називається `nil`.

### Відмінності

На відміну від PHP, у Ruby…

* Строга типізація. Вам потрібно викликати `to_s`, `to_i` тощо, щоб
  перетворювати рядки, числа і т. ін., замість того щоб покладатися
  на автоматичні перетворення мови.
* Рядки, числа, масиви, hash тощо — об’єкти. Замість `abs(-1)` — `-1.abs`.
* Дужки у викликах методів необов’язкові, окрім випадків, коли потрібно
  уточнити, які параметри належать якому виклику.
* Стандартна бібліотека та розширення організовані в модулях і класах.
* Reflection — вбудована можливість об’єктів; не потрібно використовувати
  класи `Reflection`, як у PHP 5.
* Змінні — це посилання.
* Немає `abstract` класів або `interface`-ів.
* Hash і масиви не взаємозамінні.
* Лише `false` і `nil` — хибні: `0`, `array()` і `""` — істинні
  в умовах.
* Майже все є викликом методу, навіть `raise` (`throw` у PHP).
