Скриптовый язык Ruby. Легкий путь в мир программирования. Часть 1

С каждым годом персональный компьютер предлагает все больше способов потратить время. Мегааддиктивные офисные игрушки, наркотические многопользовательские ролевки, сладкая трясина блогов и социальных сетей…

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

Разумеется, все начинается с выбора и освоения подходящего языка программирования. С того момента, когда стало ясно, что машинные коды - не единственный и уж точно не самый лучший способ указать машине, что именно от нее требуется, этих самых языков было придумано великое множество. И, соответственно, еще больше создано программ-толмачей с «человеческого» языка на «машинный» - трансляторов. Одним было суждено уйти в забвение уже через несколько лет, другие же успешно развивались, кочевали с платформы на платформу, мутировали в другие языки.

Транслятор, о котором пойдет речь, не предназначен для создания игр или гламурных софтин с окошечками, менюшечками, рюшечками. Не получится написать на нем и операционную систему или, хотя бы, системную утилиту. И управлять каким-либо аппаратным комплексом с его помощью тоже навряд ли удастся. Но если вам потребуется обработать текстовые данные или быстренько сваять приложение для web’а, то лучший инструмент вряд ли можно найти.

Язык программирования Ruby был создан японским программистом Юкихиро Мацумото. Новый транслятор он создавал, в первую очередь, для собственных нужд. Может быть, поэтому Ruby получился таким мощным, простым и удобным.

Первый стабильный релиз Ruby увидел свет в 1995 г. Он быстро завоевал популярность в Японии, а после 2000 г. - и во всем мире.

Ruby – интерпретируемый скриптовый язык программирования. Это означает, что преобразование текста программы в машинный код происходит непосредственно в процессе ее исполнения, а сама программа представляет собой текстовый файл-сценарий (скрипт).

Конечно, подобные языки программирования существовали и ранее – TCL, Perl, Python. Но Ruby вобрал все лучшее, что в них было. Продвинутая работа с текстом, простота и лаконичность, помноженная на красоту алгоритмических конструкций – все это и многое другое – достоинства языка программирования Ruby.

Кроме этого, Ruby - полностью объектно-ориентированный язык. Все данные в нем представляют собой объекты, имеющие свойства и обрабатываемые при помощи методов.
Новый язык оказался невероятно простым в изучении. Научиться программировать на Ruby можно всего за один день!

Программа на Ruby читается на порядок легче, чем аналогичная на Perl или Python.

Ruby – динамический язык программирования. В нем нет нужды заранее объявлять переменные, тип данных которых, к тому же, в процессе выполнения программы может меняться. Более того, можно переопределять сами команды и методы языка. Прямо как клавиши в популярной бродилке- стрелялке.

Несмотря на то, что Ruby «заточен» под вывод информации в текстовом виде, к нему легко можно прикрутить один из многочисленных графических интерфейсов: TK, GTK, FOX (FXRuby) и пр. И не исключено, что в будущем появится компилятор Ruby или программа, конвертирующая скрипты в exe- файлы. Такая софтина, между прочим, уже существует для Perl.

Большую популярность Ruby придала созданная на его основе библиотека для web-приложений – Ruby-on-Rails. Ее приверженцы утверждают, что скорость разработки на ней в два раза выше, чем при помощи PHP или NET#.

На данный момент русскоязычной литературы по Ruby, мягко говоря, не слишком много. Среди доступных в Сети на весну 2010 года можно назвать лишь статьи Н.А. Роганова и Е.А. Рогановой, а также любительский перевод еще более любительской книги Криса Пайна «Учись программировать» (Learn to program). Плюс статья в Википедии.

Из печатных изданий на русском языке выходили книги Майкла Фицджеральда «Изучаем Ruby», а также труд Хэла Фултона «Программирование на языке Ruby» (доступен в Сети).

Зато в англоязычных изданиях недостатка нет. Здесь и учебники для начинающих (learning), карманные справочники (pocket reference), руководства для продвинутых (in nutshell) и даже книги рецептов (cookbook и phrasebook). Хвала свободному распространению информации, все это богатство можно без особых усилий найти в Сети.

Особняком стоит книга Дэйва Томаса (Dave Thomas) «Programming Ruby. The pragmatic programmer's guide». Ее еще называют «киркомотыга», или же, говоря по-русски, «кайло», так как на обложке печатного издания изображено кайло. Намек более чем прозрачен, так как Ruby в переводе с английского означает рубин – драгоценный камень, а именно кайло ассоциируется как инструмент для добычи самоцветов. Надо сказать, что книга полностью соответствует этому определению. Это подробное, информативное, исчерпывающее руководство. Настольная книга для любого программиста, который работает на Ruby.

На данный момент на варезных сайтах доступна третья редакция книги, охватывающая последнюю стабильную версию языка - 1.9. К сожалению, на русский язык этот замечательный труд не переводился, и когда состоится сие знаменательное событие - неизвестно.

Предлагаемый вашему вниманию цикл публикаций как раз и преследует цель восполнить явный дефицит русскоязычной документации по Ruby. Насколько удачно, вопрос, конечно, несколько спорный.

Само собой, эти тексты предназначаются для тех, кто только начал изучать Ruby. Полагаю, они будет крайне интересны и людям, у которых регулярно возникает необходимость «здесь и сейчас» сваять скрипт для обработки текстовых или бинарных данных. Тем более что Ruby здесь рассматривается именно с вот такой, приземлено-прикладной точки зрения. Веб-разработчикам же однозначно рекомендуется не тратить время попусту, а сразу затариваться литературой по Ruby-on-Rails, JRuby и т.д.
Вообще, Ruby чрезвычайно хорош для обучения программированию. Так что если, подбирая себе первый рабочий инструмент, вы остановились именно на Ruby, остается только поздравить вас с великолепным выбором.

Установка Ruby

Чтобы программировать на Ruby, нам понадобится, конечно же, сам транслятор Ruby. Еще будет нужен хороший «программистский» редактор с подсветкой синтаксиса (например, Ultraedit, EmEditor или Notepad++). А если у вас установлена консольная файловая оболочка, например Far Manager, то совсем хорошо.

Если вы займетесь этим основательно, то не помешает и среда разработки, наподобие RDE или FreeRIDE.

Как и полагается действительно хорошей софтине, сам интерпретатор совершенно бесплатен. То есть абсолютно. Вы можете использовать его для своих разработок, не заботясь о лицензионных отчислениях.

На официальном сайте проекта www.ruby-lang.org имеются версии транслятора Ruby для различных платформ.

Вариант Ruby для Win32 представлен в двух вариантах. Обычный инсталлятор (rubyxxx-xx.exe) и zip-архив - ruby-xxx-pxxx-i386-mswin32.zip, где xxx – номера версий и обновления. На момент написания этого текста была доступна стабильная версия 1.9.1.

Что же предпочесть? Инсталлятор заметно богаче, он включает еще и библиотеки расширения RubyGems, дополнительную документацию (HTML-версия первого издания книги Дэйва Томаса), подсистему графического интерфейса FXRuby, редактор SciTE и еще несколько полезных мелочей. Кроме того, при установке он автоматически пропишет пути к исполняемому файлу транслятора и ассоциирует программы на Ruby (*.rb) с ним.

Поэтому определяться надо исходя из характера предстоящей работы. Если планируются серьезные разработки, значит, наш выбор однозначен - инсталлятор. А если использовать Ruby планируется лишь эпизодически, например для обработки текстовых файлов, то вполне достаточно будет и архива.
Во втором случае необходимо будет папку, где находится запускной файл интерпретатора, добавить в список папок, доступных по умолчанию. Для этого щелкаем правой кнопкой мыши по иконке My computer, на панели Advanced жмем кнопку Environment Variables. В списке System variables находим переменную Path и щелкаем по кнопке Edit. В открывшемся окошке в поле Variable Value через «;» без пробела добавляем путь к нужной папке. Например, C:\TOOLS\RUBY\bin.

В принципе, для работы скрипта жизненно необходимы лишь два файла: exe-шник транслятора (ruby.exe) и служебная dll-ка (msvcrt-ruby18.dll). Поэтому, если не требуется использование библиотек, то можно просто забросить эти два файла в папку Windows или любую другую, доступную по переменной Path. На худой конец, если использование Ruby будет уж совсем узкое и эпизодическое, можно поместить их в ту же папку, где находятся скрипты.

В дальнейшем мы будем ориентироваться именно на версию 1.8, распространяемую в архиве. Версия 1.9 ориентирована на работу с Unicode- текстами, что для большинства прикладных задач является излишним.

Первое знакомство

Так или иначе, Ruby вы установили.
Перед тем как начинать работу, необходимо удостовериться, что транслятор Ruby действительно доступен. Для этого открываем консоль (Command Prompt) или запускаем Far Manager.

ruby –v

Если в ответ на экран будет выведено, что-то наподобие:

ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]

значит, все в порядке, можно продолжать работу. Иначе нужно будет сделать так, чтобы exe-шник Ruby был доступен. Проверьте системную переменную PATH, местоположение самого запускного файла и т.д.
Обычно знакомство с новым транслятором начинается с попытки заставить его вывести на экран что-нибудь простое, наподобие «Hello, world!» Не будем оригинальничать и мы.
В текстовом редакторе (или встроенном редакторе Far Manager’а) наберем следующую строку:

puts "Privet!"

Сохраним его под именем my1prog.rb
Теперь запустим скрипт. Напомню, делать это надо из консоли или Far Manager’а.

ruby my1prog.rb

На экране должно появиться:

Privet!

Теперь давайте попробуем что-нибудь более интересное. Создадим файл под названием echo.rb c такой строкой:

until (a=((gets.chomp+"-") * 5).chop) == "----" do puts a end

Запустим его:

ruby echo.rb

Ничего не появится, лишь курсор будет мигать, чего-то ожидая. Ждет он, как нетрудно догадаться, ввода с клавиатуры. Давайте что-нибудь наберем.

probe

Теперь нажмем клавишу Enter. На экран тут же выскочит строка:

probe-probe-probe-probe-probe

Можете поэкспериментировать. Программа каждый раз пятикратно повторяет введенную строку. Такое вот проказливое эхо.
В очередной раз, когда программа будет ожидать ввода, просто нажмем Enter. Скрипт завершит свою работу.
Давайте посмотрим, как он устроен.

Скрипт принимает с клавиатуры текстовую строку, отсекает последний символ («возврат каретки»), добавляет к тексту символ «-», умножает его на 5…
Стоп-стоп-стоп! Арифметические действия над текстом? А почему бы и нет? Сложение текстовых переменных используется уже давно, почему бы не появиться умножению. Тем более, если это упрощает работу программиста. Впрочем, Мацумото благоразумно решил пока что на этом остановиться, поэтому вычитания и деления для текста вы в Ruby не найдете.

Однако продолжим. После умножения от результирующей строки отсекается последний символ. Чисто для красоты. Затем происходит проверка, не была ли введена пустая строка. После всех обработок пустая строка примет значение «----». Каковое условие и проверяется. Если введенная строка не пустая, выводим ее на экран и вновь ждем ввода с клавиатуры.

Любой мало-мальски подкованный в программировании читатель тут же спросит: «Значит, вся конструкция представляет собой цикл?» Совершенно верно. Слово until перед сравнением и означает цикл «ПОКА НЕ БУДЕТ соблюдено условие». Обратите внимание, какой финт при этом используется. Присвоение значения переменной, с вводом значения и обработкой его происходит прямо в строке проверки условия.

На этом предварительное знакомство с языком программирования Ruby можно считать состоявшимся.

Юзич yuzich17@mail.ru


Компьютерная газета. Статья была опубликована в номере 24 за 2010 год в рубрике программирование

©1997-2024 Компьютерная газета