Ruby. 001.

16 июль, 2007 - 14:20Андрей Зубинский

Этим стулом мастер Гамбс начинает новую партию мебели. Да. Итак, начинаем потихоньку о Ruby.

""Вскоре после того, как я впервые столкнулся с компьютерами в начале 80-х годов, я стал интересоваться языками программирования. С тех пор я стал "языковым гиком" (я бы переводил это слово как "шизанутый фанат", АЗ).

В 1993 году... я не был удовлетворён возможностями существующих (скриптовых) языков, таких как Perl или Python. Я не мог отыскать идеального языка, поэтому решил создать свой.

Ruby - не самый простой язык, но и человеческая душа не проста во множестве её состояний. Мы любим сочетание простоты и сложности, мы не можем справиться одновременно со многими сложными вещами, и даже с простыми, когда их очень много, нам нужен баланс простоты и сложности.

Поэтому, при проектировании Ruby, оринетированного на использование человеком языка программирования (human-oriented language), я следовал принципу Минимума Сюрпризов. Я считаю, что всё, что не является для меня сюрпризом (то есть, - неожиданностью, и не всегда приятной, АЗ) - это неплохо. В результате пользования этим принципом, мне удалось придать языковым конструкциям ощущение естественноcти от программирования на Ruby, даже ощущение радости от этого занятия. Многие программисты всего мира подтверждают справедливость этого моего утверждения.""

Юкихиро "Матц" Матсумото

автор Ruby


001. Установка

Пока обойдёмся без лишних вопросов, ограничимся готовыми ответами. Инсталлируем Ruby из бинарного файла (если для Windows) или собираем (из портов) - если для *nix. Так как в *nix все эти мелкие детали должны быть тривиальными для пользователя (иначе зачем он вообще пользует *nix), я их даже не буду касаться.

После установки в Windows бинарного дистрибутива вроде получается всё что нужно и как нужно (не зря он называется "инсталлятор одним кликом"). Но. Изучать язык лучше в интерактивном режиме - это очевидно. И Ruby располагает всем необходимым для полноценной интерактивной работы - таким себе собственным шеллом. Если вы установили Ruby, например, в каталог C:/ruby, то полное путевое имя файла этого шелла будет следующим: c:\ruby\bin\irb.bat. Пока не будем заглядывать в его содержимое (там всего несколько строк).

Я бы посоветовал запускать irb в ConEmu (несколько слов об этой программке было сказано в ранней записи блога). Причём делать это так: тырцнуть в иконку в левом верхнем углу ConEmu, выбрать Settings.

Ruby. 001.


Появится окно настроек консоли.

Ruby. 001.

В нём нам действительно важно прописать командную строку  того, что будет запущено при запуске ConEmu. В поле Command Line надо поместить следующее: C:\ruby\bin\irb.bat -r irb/completion
Можно (я бы сказал и нужно) выбрать шрифт Consolas, размер 14x0 - но это на любителя.
После этого жмём кнопку "сохранить установки" (save settings), и можно считать рабочее место минимально подготовленным к изучению Ruby.

Что мы сделали?
При запуске ConEmu программа передаёт cmd.exe указанную нами командную строку, соотвественно, - запускается интерпретатор Ruby в режиме интерактивного шелла. При втором (после конфигурирования) и последующих запусках CmdExe мы получим в своё распоряжение Ruby-шелл. Но в командной строке есть ещё какие-то параметры. Они указывают шеллу, что мы инициируем механизм автодополнения.

Теперь сразу опробуем и шелл вообще, и механизм автодополнения.
Введём арифметическое выражение 1+2 и нажмём Enter. Интерпретатор ответил результатом сложения - очень хорошо, никаких сюрпризов.

Ruby. 001.

А теперь попробуем понять, что такое эта самая цифра "три" в Ruby. Введём два символа 3. и дважды нажмём Tab - интерпретатор расскажет нам всё о том, что цифра 3 позволяет делать с собой. Иными словами - мы получаем перечень методов, которыми обладает объект "цифра" в Ruby.

Ruby. 001.

Механизм автодополнения работает и с именами методов, например, если ввести 3.to_ и дважды нажать Tab, получится более короткий список имён методов, имена которых начинаются с подстроки "to_".

Ruby. 001.

Теперь попробуем вполне очевидную по названию команду (принцип Минимума Сюрпризов!) to_s, в имени которой угадывается "в строку" (to string) - набираем 3.to_s, жмём Enter, убеждаемся, что результат похож на строку, содержащую один символ "3".

Ruby. 001.

Итак, командная среда irb позволяет нам ориентироваться в системе методов объектов аналогично тому, как обычные командные оболочки позволяют ориентироваться в файловой системе. Это первый очевидный вывод.

Второй вывод менее очевиден. Мы только что имели дело с цифрой три. С литералом. Или, если хотите, - просто со значением. Не присвоенным никакой переменной с типом "число", не помещённой ни в какой типизованный "контейнер". И, между тем, у объекта "цифра три"  есть свои методы. Целая куча. Это главная особенность Ruby как объектно-ориентированного скриптового языка - тип (как множество операций, допустимых для данного объекта) является частью самого объекта, а не переменных.

Следующий выпуск серии - в четверг. так и будем писать-читать по два выпуска в неделю, до тех пор, пока не сравняемся, - тогда интервалы выхода выпусков будут увеличены.

До встреч в эфире,
АЗ