Python - еще один прекрасный язык общего назначения. Переходя в Ruby из Python, вам понадобится запомнить чуть больше синтаксических особенностей.
Сходства
Как и в Python…
- тут есть интерактивная оболочка (вызываемая 
irb). - документацию можно увидеть из консоли (с помощью команды 
riвместоpydoc). - нет символа, означающего конец строки (кроме самого перевода строки).
 - строки могут быть расположены на нескольких строках кода (как забранные в тройные кавычки).
 - квадратные скобки обозначают список, фигурные - словарь (в Ruby принято называть “хеш” - “hash”).
 - массивы ведут себя точно так же (сложение дает один большой массив, сочетание,
например, 
a3 = [ a1, a2 ]дает массив массивов). - тут тоже строгая динамическая типизация.
 - все - объект, а переменные - ссылки на объекты.
 - ключевые слова немного отличаются, работа с исключениями почти такая же
 - имеется встроенная утилита для документации (
rdoc) 
Отличия
В отличии от Python в Ruby…
- строки мутабельны
 - имеются константы (переменные, значение которых не должно меняться)
 - есть несколько требований к регистру букв (имена классов начинаются с заглавной буквы, переменные - со строчной)
 - есть только один тип для списка (
Array), он мутабелен. - двойные кавычки используются для интерполирования строк, чтобы включать в строку
Ruby выражение вместо 
"сложения " + "строк"), одинарный кавычки похожи на строкиr"raw string". - нет “новых” и “старых” классов, просто класс (как в Python 3, где это исправлено, но который не полностью совместим с Python 2.*).
 - отсутствует прямой доступ к атрибутам - в Ruby это всегда будет вызовом метода.
 - необязательно писать скобки при вызове методов
 - есть разграничение видимости методов на 
public,privateиprotectedвместо_этих___подчеркиваний__. - для множественного наследования используются примеси (“mixin”)
 - можно расширять и изменять базовые классы - оба языка позволяют это для обычных классов в любое время, но Python ограничивает это в случае с базовыми классами.
 - вместо 
Trueиспользуетсяtrue, вместоFalse-false, вместоNone-nil - в тестах на истинность ложью являются только 
falseиnil, все остальное - истина (включая0,0.0,"", и[]). - вместо 
elifпишетсяelsif. - вместо 
importиспользуетсяrequire, но само использование такое же - комментарии располагаются над строчкой (а не под строчкой как doc-string), они же используются для автоматически генерируемой документации.
 - есть несколько сокращений, которые стоит запомнить, но именно это и превращает написание кода на Ruby в увлекательное занятие и способствует продуктивности.
 - нет способа разыменовать переменную, созданную однажды (как 
delв Python), но можно присвоить ей значениеnil- тогда значение будет собрано сборщиком мусора, но переменная все равно останется в текущей области видимости.