Программирование на языке Ruby | страница 8
Многих привычных сегодня инструментов и библиотек еще не существовало. Все пока было впереди: и система RDoc, и пакет REXML для анализа XML-документов. Математическая библиотека была куда беднее нынешней. Поддержка баз данных была фрагментарной, а драйверы ODBC и вовсе отсутствовали. Tk был чуть ли не единственным графическим интерфейсом. Приложения для Web разрабатывались в виде низкоуровневых CGI-сценариев.
Еще не появился «моментальный» инсталлятор для Windows. Пользователям Windows приходилось выполнять компиляцию исходных текстов в среде Cygwin или с помощью minigw.
Системы RubyGem не было даже в примитивной форме. Процедура поиска и установки приложений проводилась вручную; для решения этой задачи использовались инструменты типа tar и make.
Никто слыхом не слыхал о Ruby on Rails. Никто (насколько мне известно) не употреблял термина «утипизация»[3]. Не было ни YAML для Ruby, ни системы Rake.
В то время мы пользовались версией Ruby 1.6.4 и считали ее безмерно крутой. Но Ruby 1.8.5 (с которой я обычно работаю сейчас) еще круче!
Был незначительно изменен синтаксис, но не настолько серьезно, чтобы об этом писать. По большей части речь идет о «граничных случаях», и теперь синтаксис в этих ситуациях выглядит более разумно. Ruby всегда отличали странности в отношении к необязательности скобок; в 98% случаев вы никакой разницы не заметите, а если заметите, то, наверное, согласитесь, что язык стал более последовательным.
Изменилась семантика некоторых системных методов. Но несущественно. Например, раньше метод >Dir#chdir
не принимал в качестве параметра блок, но несколько лет назад это стало допустимо.
Некоторые системные методы объявлены устаревшими или переименованы. Метод >class
утратил свой псевдоним >type
(поскольку в Ruby мы обычно не говорим о типах объектов). Метод >intern
получил более понятное название >to_sym
, а метод >Array#indices
называется >Array#values_at
. Можно было бы продолжить, но думаю, что суть вы уловили.
Кроме того, было добавлено несколько новых системных методов, например >Enumerable#inject
, >Enumerable#zip
и >IO#readpartial
. Старая библиотека >futils
теперь называется >fileutils
, и у нее появилось собственное пространство имен >FileUtil
, тогда как раньше она добавляла методы в класс >File
.
Есть и еще много изменений. Но важно понимать, что все они вносились очень осторожно и аккуратно. Язык как был Ruby, так им и остался. Красота Ruby в немалой степени обязана тому факту, что он изменяется медленно и обдуманно, ведомый мудростью Маца и других разработчиков.