Покорим Ruby вместе! Капля вторая

Продолжаем изучать Ruby? Так точно!

В первой части мы получили обзорные знания о Руби и Рельсах и, надеюсь, решили, нужно ли нам это, или нет. Так как мы взялись за язык основательно необходимо обустроить рабочее учебное место. Нам нужны: сам интерпретатор Ruby, фрэймворк Rails, база данных (MySQL, думаю, будет лучшим выбором) и непосредственно среда разработки, которая должна сделать процесс программирования приятным, удобным и увлекательным ;)



Среда для разработки


Как и в других интерпретируемых языках создавать готовые программы можно и в Блокноте, однако же мы всерьёз схватились за Руби ;) Стоило бы, наверное, погуглить IDE для языка, провести какое-то тестирования производительности и функциональности. Но мы же непрофессионалы, так что ищем наиболее универсальное, надежное, качественное, проверенное решение. И оно есть: это Ruby in Steel для Microsoft Visual Studio 2005/2008. Да, это сугубо коммерческий, закрытый продукт только для Windows. Но, во-первых, это знакомая IDE, которая верно будет вам служить в будущем, во-вторых она не базируется на Java, что положительно отражается на скорости работы (это важно для слабых компов, вроде моего), в-третьих, полнофункциональная trial-версия работает 60 дней, чего, я надеюсь, нам будет достаточно для нашего курса.

Если же вы отдаете предпочтение другим ОС, то несомненно стоит взглянуть на свободный кроссплатформенный NetBeans IDE 6.0 Ruby.

Выбранная вами среда разработки в дальнейшем особого значения не имеет, однако процесс установки компонентов я буду освещать для Ruby in Steel — он достаточно прост, так как вы можете скачать All-in-One Installer — готовый пакет с бесплатным Visual Studio 2008 и всем необходимым для нашего учебного места.

После загрузки распакуйте архив и запустите Setup. Отметьте нужные пакеты (в большинстве случаев стоит оставить все по умолчанию), нажмите Install и только успевайте нажимать Next и Finish в появляющихся окнах установщиков. В процессе установки будут загружены и установлены последние Rails, поэтому консольные окна не закрываем и ждем, когда появится «Press any key to continue...». Для MySQL можем задать запуск в виде сервиса Windows и установить пароль рута.

Никакой дополнительной конфигурации не требуется — просто запускаем свежеустановленный Visual Studio.

Первый проект


Проект в Ruby in Steel создаем как обычно в VS: File — New — Project — Ruby In Steel (слева) — Ruby Project (справа) — Name (задаем имя проекта) — OK.

Стоит уделить внимание иерархии организации работы с кодом — проект (Project) содержит в себе один или несколько файлов в одной или нескольких папках, в то же время Solution (решение) может содержать несколько проектов.

После создания проекта он уже содержит в себе один пустой файл rubyfile.rb, новые файлы добавляются через контекстное меню проекта. Двойной щелчок по имени файла открывает его в редакторе. Дальнейший код будем писать прямо в rubyfile.rb — это наш тестовый файл.

Первая программа


Традиционно это Hello World:

puts "Hello World!"

Упс, это всё… Ctrl+F5 в среде — и результат, так сказать, налицо!

Игры со строками


puts "Hello World!\nPrivet Mir!"

Как вы заметили прямо в строках работают управляющие последовательности (Escape Sequences), в т.ч. \n (новая строка), \t (табуляция), \s (пробел) и др.

puts 'Hello World!\nPrivet Mir!'

А вот строка, заключенная в апострофы «глупая» — она не понимает ES, поэтому в большинстве случаев используем именно кавычки. Однако если заранее известно, что ES в строке не нужны, то апострофы позволяют выиграть в производительности приложения.

puts 'It\'s Ruby'

Хотя нет, «глупая» строка понимает \' и больше ничего.

print "Hello World!"
print "Hello World!"


В отличие от оператора puts print не делает перенос строки после вывода переменной.

puts "2 x 2 = #{2*2}"

Замечательная возможность Ruby — регулярное выражение в переменной — вы можете вставлять кусочки кода Ruby прямо в строки используя конструкцию #{code}.

puts "#{"Ruby! "*4}"

«Умножаем» строку на четыре и получаем слова песни Kaiser Chiefs ;) Причем делаем все это в одной строке кода!

puts "\n\t#{(1 + 2) * 3}\nGoodbye"

Попробуйте представить, что выведет этот код и проверьте ваше догадки :)

Эпилог


За два «занятия» мы узнали что такое Ruby и Rails, узнали их преимущества, настроили учебное место, установили IDE, написали Hello World и даже немного познакомились с работой со строковыми переменными в Руби, обойдясь при этом без ООП.

Думаю, что мы и дальше будем познавать нативный, «чистый» Руби, отставив Rails в кладовку на будущее. Заранее прошу прощения за это перед теми, кто рассчитывал сразу штамповать сайты. Далее мы познакомимся с числовыми переменными, методами, локальными и глобальными переменными. Теперь будет меньше текста, больше кода

PS: При написании записи использовались известные бесплатные пособия HUMBLE LITTLE RUBY BOOK от Jeremy McAnally и THE BOOK OF RUBY от Huw Collingbourne, особая благодарность Google и Яндексу. Как всегда, наверное, в тексте есть ошибки, неточности — сообщайте о них в комментариях. Если вам известны какие-нибудь оригинальные учебные пособия по Ruby (можно на английском), доступные для загрузки — также жду вас в комментариях.

Третья капля уже здесь
+37
9 января 2009, 04:03
51
MaxElc 50,6

комментарии (94)

+2
indaclu6 #
Пора переносить в Ruby. Спасибо!
0
MaxElc #
Да как-то стесняюсь :))
+2
indaclu6 #
Да я вам завидую! Проходил тот же путь, а описать не могу :(
Срочно в Ruby!
+1
MaxElc #
Перенос на вашей совести!!! :))))
Спасибо за тёплые слова!
+1
indaclu6 #
Совесть пропил. Кармы нет. Нечего терять :)
+3
MaxElc #
Впервые добавляю кому-то карму — так приятно, оказывается ;)
+3
Dronnikkl #
не прошло или суток:)
Надеюсь что получится полный каплями стакан-главное не останавливаться.
Спасибо, очень увлекательно:)
0
crosser #
Спасибо. С таким ненавязчивым и толковым объяснением, начинаю опасатся, что упаду все таки, в объятья Руби
0
MGR #
ru.wikibooks.org/wiki/Ruby
по моему для начала самое оно.
+1
azeffin #
«Массив лучше всего вообразить как гусеницу или поезд с лапками-запятыми вместо колёс. Ползёт он всегда влево, на левом же конце его локомотив — первый элемент.»

Убило.
Дальше решил читать
Programming Ruby The Pragmatic Programmer's Guide
0
FunFun #
Правильный путь паддаван :)
0
iv_s #
Pickaxe для начинающих самая лучшая книжка!:)
Да и не только для начинающих, например глава про сишные расширения.
0
MGR #
вот если бы перевод еще
+1
apple_fan #
Кстати, про IDE: тем, кому люб OS X, очень рекомендую взглянуть на TextMate. Ядрёная штука!
+4
MGR #
это не IDE, а текстовый редактор
0
FunFun #
Для ОсХ конечно это круто, но у большинства людей не маки

Windows/Linux IDE:

Мой выбор Aptana with a RadRails plugin. Плагин тот же что и

texteditors like TextMate:

e-editor ( платный, но удобств столько как и textmate )
gedit ( проплагинить и будет как textmate )
0
FunFun #
забыл дописать

*Плагин тот же что и для eclipse
+1
gugu #
VIM
Emacs
на кой ещё что-то платить?)
+1
grafmishurov #
+5
chiaroscuro #
> регулярное выражение в переменной (expression interpolation)

Expression interpolation это скорее «интерполяция выражений». Regex'ы из совсем другой оперы. :)
0
MaxElc #
Ввело в заблуждение пособие:
Double quoted strings also offer another interesting feature: expression interpolation. As fancy as that sounds, it simply means this: you can insert the value of pieces of Ruby code into strings directly.
Исправляю.
–2
kashey #
Почему каждому новому языку каждый раз придумывают новый синтаксис…
Вот почему я убил Луа, вот почему не смотрю в строну Руби
–1
nerezus #
О да, надо писать в только синтаксисе ассемблера.
–1
kashey #
Почему С и Java имеют схожий синтаксис.
Почему ПХП тоже имеет похожий синтаксис.
Почему даже паскаль особо далеко не ушол от этого синтаксиса…

Хотя конечно по сравнению с луа — руби сказка :)
0
VolCh #
А когда-то кто ругался на Си и «потомков» после фортрана и бейсика :) Почему нет номеров строк, как перейти куда хочу :)
+3
dime #
>Почему ПХП тоже имеет похожий синтаксис.
Если синтаксис пхп на что-то и похож, то разве что на исковерканый синтаксис перла из которого выбросили за недомыслием причину префиксов перед переменными, но оставив зачем-то эти самые префиксы, которые в отсутствии причины стали совершенно лишними и уродливыми до тошноты. Ну, а нынешние добавлятели всякой всячины в пхп явно идут по явскому пути словестного поноса :). Скоро уже станет необходимым писать:
public static final function void main() :) :) :)
>Почему даже паскаль особо далеко не ушол от этого синтаксиса…
Паскакаль имеет синтаксис унаследованый от алгола-60, на сишный он даже издали похож крайне слабо :).

А чего такого непохожего в рубишном синтаксисе? По-моему, он даже ближе к сишному, чем пхп-шный.
–1
kashey #
Наверное годы параллельной работы на С и ПХП притупили мой взор и посеяли предвзятое отношение к другим языкам.
0
VolCh #
После моей первой и последней попытки написать «hello, world!» для интернета на C (в конце 90-х) я понял, что надо изучать другой язык, после небольшого анализа понял, что выбирать нужно между perl и php. Взял с пяток скриптов (госетвухи, счетчики и т. п.) на том, и другом, скачал мануалы и засек время, которое понадобится чтобы написать простейший скрипт, как сейчас говорят, фотохостинга. На PHP понадобилось часа 3, синтаксис после C прозрачен был, с Perl часов за 15 так и не разобрался. И на мой неразобравшийся до сих пор в Perl'е (хотя изучал регулярки по книге, где 90% кода было на нем) взгляд PHP и C (да и Java туда же) практически один язык по сравнению с Perl'ом. Хотя, конечно, тому, кто владеет одинаоков хорошо всеми тремя, виднее :)
0
dime #
Я на перле, конечно, уже несколько лет ничего не писал, но, по памяти, из перла легко выделить небольшое подмножество, которое будет практически полностью совпадать с пхп по синтаксису (с совсем небольшим отличиями) и легко писать на нём в «стиле пхп» :). Я ни в коем случае не призываю так делать :), но, всё-таки, пхп — это донельзя упрощённый перл (основы, основы — нововведения весьма отличны уже). И на перл он, на мой взляд, похож больше, чем на си. Хотя, конечно, если исходить из того, что синтаксис самого перла имеет сишную природу, пхп, несомненно, c-like язык, синтаксически :).
0
VolCh #
Не буду спорить, но точно помню свои впечателния от первых взглядов на два аналогичных (функционально, вроде валидация формы и запись ее БД) листинга на php и perl. PHP — да это ж си практически, только $ ставить перед переменными и function писать (потом, конечно, больше различий нашел), Perl — хм… а это с какого конца читать вообще надо
+1
dime #
Да не о том я. На перле можно написать функциональный аналог почти текстуально совпадающий с таковым на пхп. Ещё и регэкспы будут человечьими, а не это пхп-шное уродство с безумным размножение палок.
Но можно написать и короче. Удобнее. Красивее. Если не поленился изучить как это делать, конечно. Если знаешь язык, запись будет понятна. Если не знаешь… Ну, зная только какой-нибудь кобол, с пхп будут ровно те же затрудния :).
Тут, главное, в ряду «короче-удобнее-красивее» вовремя остановиться, поскольку выразтельные возможности перла позволяют впасть в состояние крайней степени тяжести и писать write-only код :). Ну, это расплата за мощнось…
+1
tass #
затем что это другой язык, и синтаксис в языке играют немаловажную роль
–1
kashey #
Синтаксис силен в перле, скажем так — он краегольный камень языка…
А тут хмм — мелочи, да не приятно
+1
tass #
почитайте получше описание синтаксиса руби и вы поймете что данный синтаксис дает нам много-много сахара… и возможностей для этого сахара… что в свою очередь очень сильно влияет на сам язык в целом и конструирует его.
–3
kashey #
Руби я конечно же узучал. Для сайтов полезнее быть написаными на Руби…
Но есть такая чтука — спинной мозг. Очень сложно заставить его писать в другом синтаксисе.
Он сам будет вбивать так как привык.
Переучивать его — это время и нервы.
Время — деньги.
+3
tass #
а вы пишите программы не спинным мозгом а головным;) оно как-то полезнее
–2
kashey #
пускай головные мозги программируют, а спинные кодят.
Я свои как-то за 15 лет приучил :)
0
ulfurinn #
А вы попробуйте воспринимать это не как затраты, а как инвестиции.
–1
kashey #
Одна фигня :)
Если захочу убить время и сделать что-то эдакое — начну писать сайты на Сях :)
Опыт и фреймворк есть…
Если решу какнить сменить свою сексуальную ориентацию — так и сделаю :)
+1
gaki #
Потому что иначе это будет не новый язык. Вот почему я не смотрю на новые языки, пишу в двоичном коде. 0110101101010011111одинодинодин
+1
nerezus #
> во-вторых она не базируется на Java, что положительно отражается на скорости работы
Я, конечно не говорю, что GUI-софт на джаве быстрый, но все же… сравни eclipse/idea/netbeans с VS2008 по производительности )
По крайней мере у меня джавовские быстрее работают.
+4
VSOP_juDGe #
А у меня медленнее.
0
invisiblekid #
вот спасибо… то, что доктор прописал. параллельно начал изучать.
в избранное…
0
linche #
Жду третью каплю и все последующие!
+1
iv_s #
А кому не надо IDE, можно так
Windows:
Сам руби — fhttp://rubyforge.org/projects/rubyinstaller/
Rails — gem install rails

Debian based
sudo apt-get install ruby1.8 ruby1.8-dev ri1.8 rdoc1.8 irb1.8
sudo gem install rails

Что бы быстро посмотреть на руби, можно использовать интерактивный интерпретатор — irb (аналог питоновского)
Например получить все ссылки на статьи с главной хабра:
ivs@debian:~$ irb
irb(main):001:0> require 'open-uri'
=> true
irb(main):002:0> open(«habrahabr.ru/»).read.scan(/href="([^"]*)" rel=«bookmark» class=«topic»/)
=> [[«habrahabr.ru/blogs/google_chrome/48638/»],…
0
VolCh #
Смотрю список пакетов с 'ruby' в репе убунту вижу версии 1.9 уже, а метапакеты ставят 1.8, причем с 1.8 на 1.9 обновляться не хотят, только ручками. Просто недоработка мейнтейнеров или есть что-то в 1.9 плохое?

P.S. может кому пригодится из начинающих юнксоидов, я минут 15 разбирался:
запускать в шелле .rb файлы можно командой ruby hello.rb, а можно ./hello.rb если дать права на выполнение и написать в первой строке .rb файла #!/usr/bin/ruby
+2
iv_s #
1.9 это эксперементальная ветка, 1.8.6(уже 1.8.7, но там были баги, хотя профиксили уже вроде) — стабильная.
По-этому они на два пакета разделены. На 1.9 новые идеи обкатываются, которые потом в 2.0 появяться.
Хотя 1.9 быстрее, так как там уже добавили YARV — виртуальную машину.
Для обучения впринципе безразлично, только что в 1.9 новые фичи есть, еоторых в 1.8 нет.
А для продакшена практически всегда используют 1.8.6

>из начинающих юнксоидов
Для начинающих тогда уж полностью расписать:)
Первая строка в файле #!/usr/bin/ruby или #!/usr/bin/env ruby
Потом в терминале
$ chmod u+x test.rb — делаем файл исполняемым, нужно сделать только один раз
$ ./test.rb — запускаем

Или же просто без всех этих махинаций(а в windows только так)
$ ruby test.rb
0
VolCh #
спасибо, значит пока оставим 1.8
+3
VolCh #
NetBeans уже 6.5 вышел www.netbeans.org/downloads/index.html

Жаль, конечно, что не что-нибудь открытое и кроссплатформенное в качестве среды для «капель» выбрали.
–1
MaxElc #
Если есть необходимость, то я могу написать и о NetBeans. Там еще проще — после установки среды не нужно загружать ни руби, ни рельсы, ничего. Сразу создаем проект, следим, чтобы путь к проекту на содержал кириллицы, в качестве Ruby Platform выбираем встроенный JRuby. Так как мы отложили рельсы, до этого пока будет достаточно
0
VolCh #
ну насчет необходимости не знаю, лично я уже разобрался почти, так, может пару абзацев для тех, кому точные пункты меню нужны :)
0
invisiblekid #
действительно, бОльшой необходимости нет, но было бы неплохо (и даже хорошо) «капать» и в свободном ПО ;)
0
paxer #
тока писал о NetBeans 6.5 для Ruby, мега весч paxer.habrahabr.ru/blog/48515/
0
NaTTs #
Друзья, я думаю, можно очень долго холиварить на тему: использовать ли IDE для Ruby. Только вот я вчера свою сборку Aptana променял на gedit.
И, да, чего же все под vim и emacs сидят? :) от вселенской глупости? попробуйте…

Спасибо за топик :)
0
iv_s #
Я тоже фанат gedit'a :). Все хочу приобщится к vim или emacs, но что то как то не выходит пока.
0
VolCh #
ну холиварить пока не начинали, мне так не с руки, только что первую строчку на руби написал, в gedit, кстати, который сегодня променял на netbeans (правда не знаю надолго ли, уже один баг отправил на багзиллу, если так и дальше пойдет, то наверное придется вернуться :( )

А под vim и e-macs, имхо, сидят те, у кого либо выбора не было когда-то, либо было много свободного времени и энтузиазма на изучение хотя бы основ их, или я такой тупой, что мне часа не хватило на то, чтобы понять как элементарные операции (открыть/создать файл, закрыть/сохранить, набивать текст, перемещаться по нему, редактировать, копи-пастить и т. п.) выполнять.

P.S. Вот только что еще раз попробовал, 5 минут слушал пиканье, потом все-таки зашел в хелп где написано, что хелпа нет, и еще 5 минут оттуда выходил, а потмо две минуты опять назад в шелл выходил… видать совсем тупой я, раз мне проще через cp /dev/stdin file.txt набить если уж nano хотя бы не будет :)
+2
ptiss #
vim осиливается с потом, а рассаёшься с ним со слезами
0
Tagire #
Ну в принципе человек глазом то учится управлять пару лет, так что несколько дней на освоение инструмента — это нормально.
И странная ситуация с хелпом у вас, на емаксе туториал на русском в поставке идет, а у вима вимтутор есть.
0
VolCh #
набрал vim, появился «сплэш» с надписями типа
type :help iccf to help children in Uganda
type :help for help
type :q to exit
f1 нажал (и то не сразу, уж очень дети уганды заинтерсовали :) ), в хелп попал, потом долго соображал как выйти из него, потом из редактора (надо еще! в конце поставить), в общем нельзя все-таки такие длинные каникулы делать :))))
оказывается надо двоеточие нажимать, это не знак пунктуации, а часть команды, причем нажимать его с шифтом надо, то есть смотрит не нажатую клавишу, а ascii код, и вообще интерфейс основан на командной строке похоже. В общем сложно вникнуть во что-то абсолютно отличающиеся от того к чему привык за 20 лет, даже в дос в edit, не говоря уж о лексиконе примерно те же принципы интерфейса, что и в каком-нибудь ворде 2007

ну а в самом хелпе надпись что vim online help not installed on this system, оказывается у меня стоял vim-tiny без хелпа, сейчас поставил vim-runtime, но что-то все равно не верится, что даже через неделю исходники скажем на том же php буду набирать и править быстрее чем даже в gedit, не говоря уж о netbeans или eclipse

0
gribozavr #
vimtutor запустите.
+1
gaki #
Ну какие «все», считаные единицы особо бородатых одминов под ними сидят… :)

Сам сейчас занимаюсь насильным пересаживанием себя за emacs, никаких практических причин для этого у меня нет, а чисто в порядке самоистязания, чтобы сила духа окрепла… Запретил себе писать код в чём-либо кроме емакса, уже недели три держусь, возможно, и вообще останусь… Думаю, может, статью какую-нибудь накатать, не туториал, а скорее хронику перехода и обзор того, что приобретаешь, переходя на emacs с типичных Windows GUI IDE. А то обычно если кого спросишь об этом — он либо еще не знает, либо уже не помнит :)
0
NaTTs #
Поверьте, гигов хватает :) там не только и не столько бородатые дядьки. половина Merb и Rubinius команды О_о
0
gaki #
> гигов хватает

ЩИТО? :)
0
NaTTs #
О_о гиков, пардон.
0
iv_s #
Кстати, насчет Ruby IDE.
Есть еще RubyMine www.jetbrains.com/ruby/index.html
Притом еще и бесплатная(пока).
Любителям IDE думаю стоит посмотреть, т.к. она от того же разработчика что и IntelliJ IDEA, одной из лучших Java IDE.
0
MaxElc #
Приятная RubyMine заставила мой комп буксовать. В то же время даже более способный NetBeans работает намного быстрее
0
iv_s #
Хм, когда писал на Java, использовал только InelliJ IDEA, нк тормозило и норм работало.
А RubyMine я даже не смотрел, меня вполне gedit устраивает:)
Но очень странно что у RubyMine такой регресс по сравнению с IDEA…
+1
Kane #
А еще в викиучебнике, есть отличный учебник по раби ru.wikibooks.org/wiki/Ruby
0
iv_s #
он Руби а не Раби:)
0
NaTTs #
Да :) они называют его именно руби. подкасты / скринкасты тому подтверждение )
0
iv_s #
Да и вообще, «u» как «а» читается только в закрытом слоге, например bus.
А тут открытый слог, так что Руби!:)
На подкасты/скринкасты тоже полагаться нельзя, их не всегда англоязычные люди читают.
Слушал доклад японца с rubyconf2008, дак там вообще ужас с произношением:)
0
FunFun #
да какая разница как мы называем, есть важнее вещи
0
NaTTs #
Само собой :) Там индусы и японцы в перемешку))) По акценту же сразу слышно, native english это, или подстава :)
0
yegitch #
Японец не Матц случаем?
0
iv_s #
Нет, Матц достаточно нормально говорит:)
Вот этот доклад:
www.rubyconf2008.confreaks.com/future-of-rubyvm.html
0
ptiss #
0
fleshy #
насчет «глупых» строк — в большинстве книг, которые я читал (и по Руби, и по PHP, и по чему-либо еще) они назывались «lazy» («ленивые»)
0
MaxElc #
А у меня в книгах они называются «silly» :)
+1
fleshy #
ну и бог с ними, суть ясна. статья кстати хорошая, тоже все собираюсь заняться Руби, книжек почитал, а рабочей идеи которую стоило бы начать реализовывать никак не придумаю
0
MaxElc #
Мне бы ваши проблемы :) Идей много, а вот с реализацией все затруднительно
0
Halt #
Хотя нет, «глупая» строка понимает \' и больше ничего.


Неправда :) Она понимает еще \\ :)
ЗЫ: Удачи в дальнейшем освоении. И не забывайте про "инлайны в строках #{2+3}" :)
0
MaxElc #
Ой, а подскажите, что такое инлайны :-[
0
Halt #
Ну то что я написал выше в строке. Очень удобно во всякого рода выводах при форматировании строк. Ну скажем один и тот же пример на 3х языках:

Паскаль (делфи):
ShowMessage('2 + 3 = ' + IntToStr(2+3));

С/С++:
printf(«2 + 3 = %d», 2 + 3);

Руби:
puts(«2 + 3 = #{2+3}»)

То есть, выражение втыкается прямо в строку. Естественно, инлайнов может быть сколько угодно и они даже могут быть один внутри другого.

puts(«координаты цели (#{myobj.x}, #{myobj.y})»)

В общем случае строку с инлайном можно развернуть в выражение:
«foo #{X} bar» эквивалентно «foo » + (X) + " bar"
0
Halt #
Блин, редактор преобразовал кавычки =) Ну в общем надеюсь понятно
0
MaxElc #
Спасибо — действительно понятно :)
0
rimmer333 #
NetBeans 6.5 весьма советую.
НЛО прилетело и опубликовало эту надпись здесь
0
kvervo #
The Book Of Ruby by Huw Collingbourne
www.sapphiresteel.com/The-Book-Of-Ruby

А про IDE их много. Но мое мнение то, что во время изучения языка лучше использовать текстовой редактор.
+1
4orever #
Покурим Ruby вместе! Капля вторая
+1
FuriKuri #
Why's (Poignant) Guide to Ruby
Очень интересная книга.
0
Aesthete #
.., и даже немного познакомились с работой со строковыми переменными в Руби, обойдясь при этом без ООП.

Позанудствую, но вам никак бы не удалось обойтись без ООП. В Руби же все есть объект. =)
0
MaxElc #
Об этом я написал в третьей части ;)
0
Stran_Nik #
Третья каплЯ уже здесь :-)
+1
cblnok #
Так начало не плохое хочу больше

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.