Ruby - новые грани [Евгений Охотников] (pdf) читать постранично

Книга в формате pdf! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]

Ruby - новые грани
Автор: Евгений Охотников
http://www.intervale.ru
Источник: RSDN Magazine #4-2006
Опубликовано: 03.03.2007
Исправлено: 12.07.2007
Версия текста: 1.0
1 Введение
2 Язык Ruby вчера и сегодня
3 Начало работы с Ruby
3.1 Где взять?
3.2 Что запускать?
3.3 Где искать информацию?
4 Яркие грани
4.1 Система именования
4.2 Наследие Perl
4.3 Структура программы и поиск модулей
4.4 Строковые литералы и Symbol
4.5 Всё является объектом
4.6 Метод inspect у каждого объекта
4.7 Все выражения имеют значения
4.8 Классы
4.9 Наследование
4.10 Модули и Mixin-ы
4.11 Еще раз: все является объектом
4.12 Базовые типы Array и Hash
4.13 Вызов методов и типы параметров
4.14 Блоки кода и объекты Proc
4.15 Разнообразные eval-ы
4.16 Расширение уже существующих классов и объектов
4.17 Переопределение методов
4.18 method_missing
4.19 Утиная типизация
5 Пример с использованием OpenStruct и
OptionParser
6 Заключение
Список литературы

1

1 ВВЕДЕНИЕ
Когда некоторое время назад я выбрал Ruby для реализации одной конкретной и не очень сложной
задачи, то мне не удалось оценить основные грани Ruby в полной мере. Блоки кода.
Необязательные
скобки.
Удобство
использования
attr_reader/attr_accessor.
Наличие
method_missing. Пожалуй, и все.
Вначале я программировал на Ruby в стиле C++, только пользуясь Ruby-новыми конструкциями.
Более того, временами это было «через силу», мне очень не хватало статической типизации —
диссонанс от того, что на новый язык переносилась философия старого языка.
А потом понемногу, по чуть-чуть, я оценил остальные особенности Ruby — как раз те, которые я
описываю здесь. Мне потребовалось около девяти месяцев на то, чтобы разглядеть действительно
наиболее яркие грани языка. А уже после того, как они четко обозначились, я стал решать задачи
на Ruby, думая уже в терминах Ruby, а не C++.
Возможно, столь много времени потребовалось еще из-за того, что Programming Ruby [2] — это
очень большая книга, которая посвящает читателя во все тонкости языка, но не расставляет
акцентов. Однако при переходе с C++ на Ruby (как в моем случае) не столь важны конкретные
особенности синтаксиса языка. Гораздо важнее осознать, как именно должно измениться мышление,
чтобы при программировании на Ruby думать именно на Ruby, а не на C++. И, по-моему, мне еще
не попадалась книга о Ruby, в которой делался бы акцент именно на этом.
Поэтому, когда представилась возможность рассказать о Ruby то, что я сам хотел бы рассказать, я
решил описать те грани языка, на которых я сам в конце концов сосредоточился, и которые мне
лично кажутся самыми важными. Соответственно, излагаемый ниже материал рассчитан на болееменее опытных программистов, уже использующих другие языки программирования, но желающих
понять, что же в этом Ruby такого особенного. А также для тех, кому вольно или невольно
приходится изучать Ruby — в качестве еще одного русскоязычного источника информации о Ruby.
Несколькими словами данную статью можно охарактеризовать как «глубокое погружение в Ruby для
тех, кто не прочитал Programming Ruby».

2 ЯЗЫК RUBY ВЧЕРА И СЕГОДНЯ
История языка Ruby началась в 1993 году, когда Якихиро Мацумото (Yukihiro Matsumoto) a.k.a Matz
взялся за реализацию собственного скриптового языка, который бы был таким же мощным и
удобным, как Perl, и более объектно-ориентированным, чем Python. Первая общедоступная версия
0.95 увидела свет в 1995 году. После этого Ruby быстро получил широкое распространение в
Японии — это легко объяснимо происхождением языка и отсутствием языкового барьера между
первыми пользователями Ruby и его создателем. За период с 95 по 2002 год в Японии вышло около
двадцати книг о Ruby, и Ruby стал в этой стране более популярным языком, чем Python.
После 2000 года началось распространение Ruby по всему миру. Этому способствовало появление
англоязычных книг, в первую очередь [1] и [3]. До 2004 года Ruby не был широко известен в
Европе и США, и по популярности значительно уступал там Perl и Python. Однако благодаря своим
качествам и большому количеству поддерживаемых платформ Ruby медленно, но верно умножал
ряды своих приверженцев (среди которых в это время оказался и автор этих строк). Настоящий же
всплеск интереса к Ruby спровоцировало появление Ruby-On-Rails (RoR) [5] — небольшого
фреймворка для разработки Web-приложений. RoR стал для Ruby т.н. killer application,
катализатором, благодаря которому сейчас Ruby получает признание во всем мире.
Влияние RoR на популярность Ruby неоднозначно. С одной стороны, благодаря RoR Ruby
завоевывает причитающееся ему признание. Но с другой, складывается впечатление, что Ruby —
это RoR, а RoR — это и есть Ruby. К счастью, это не так. Ruby — это динамически типизированный
язык программирования, который начинал свою историю как скриптовый, но со временем
превратился в более серьезный инструмент. Поэтому здесь рассказывается, в первую очередь,
именно о языке Ruby, а RoR упоминается лишь по мере необходимости.
На момент написания этих строк язык Ruby находится на очень интересном этапе своего развития.
До версии 1.8 он развивался, сохраненяя совместимость с