Skip to content

Пара слов о Ruby

30/04/2010

Сегодня я занимался очень интересным делом — портировал скрипт с Ruby на JavaScript (для выполнения в Node.js). Хитрость в том что моё знание Ruby ограничивается тремя главами Poignant Guide, и за всю жизнь я не написал на нём ни строчки кода. Здесь я изложу свои мысли по поводу языка ) Имейте в виду, в Ruby я дилетант, так что некоторых вещей я не знаю )

Скрипт из себя представляет генератор JavaScript-файла, на 99% состоящего из одного огромного JSON. Используемый XML это спецификация протокола AMQP какой либо версии, получающийся файл используется для обращения к messaging-серверу из Node.js (AMQP-модуль от xaviershay). Это было лирическое отступление. Теперь вернёмся к Ruby:

  • Для начала, любой язык, с которого можно портировать скрипт, не зная его — уже заслуживает внимания. Ruby легко читается (за несколькими исключениями, о которых ниже)
  • В целом по возможностям он близок к JavaScript. Надо сказать что я об этом и так догадывался, т.к. слышал что есть трансляторы с Ruby на JavaScript, пусть даже и несовершенные
  • Ruby очень лаконичный. При портировании на JS кода получилось ощутимо больше.
  • Методы названы странно. array.inject это не вставка в массив, а свертка. array.collect это на самом деле array.map, а hash.update это hash.merge
  • Из-за лаконичности иногда не всегда понятно, что происходит в блоке кода, по крайней мере мне. Это думаю дело привычки )
  • Странный синтаксис условий — действие — условие, несколько видов условий (if, unless), видимо тоже ради читаемости

В общем, код я портировал, по моему даже успешно. Отдельное спасибо хочу сказать товарищу @din (вот его сайт), который терпеливо объяснял мне в Джаббере сложные с моей точки зрения куски кода.

Это исходный файл.
Это — то что получилось.

5 комментариев
  1. Ewg permalink

    Какой Ruby? После таких записей очень хочется отписаться от блога. Ruby on Rails !== Ruby

  2. Тоже приходилось портировать с Ruby, но только на php — проект Mimeparse.
    В Ruby много «магии» — взяли из Перла. Странный синтаксис условий оттуда же — это достаточно удобно, когда привыкнешь. If, unless, until — на мой взгляд достаточно удобно, более читаемо, чем писать отрицание в условии.

    Я щас потихоньку перелажу на Ruby, сначала думал перелезть на node.js, но пока ИМХО рановато, инструментарий пока не очень.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: