Ruby-новые грани

Автор: Евгений Охотников
http://www.intervale.ru

Источник: RSDN Magazine #4-2006
Опубликовано: 03.03.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 Введение

Когда некоторое время назад я выбрал 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 вчера и сегодня

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.13.1 Необязательные скобки

4.13.2 Значения параметров по умолчанию

4.13.3 Параметры Array

4.13.4 Параметры Hash

4.14 Блоки кода и объекты Proc

4.14.1 Общие сведения о блоках кода

4.14.2 Блоки в качестве итераторов

4.14.3 Блоки и захват/освобождение ресурсов

4.14.4 Блоки и обратные вызовы

4.14.5 Еще несколько общих слов

4.15 Разнообразные eval-ы

4.16 Расширение уже существующих классов и объектов

4.17 Переопределение методов

4.18 method_missing

4.19 Утиная типизация

4.19.1 Лирическое отступление: священные войны

5 Пример с использованием OpenStruct и OptionParser

6 Заключение

Список литературы


Полная версия этой статьи опубликована в журнале RSDN Magazine #4-2006. Информацию о журнале можно найти здесь