10 причин для перехода на Ruby
Я познакомился с Ruby сравнительно недавно, благодаря чудесному фреймворку Ruby on Rails. Я не считаю себя экспертом в Ruby, но я прочитал PickAxe, написал несколько утилит на Ruby для личного пользования, а также разрабатываю на Rails в свободное время.
Ruby на данный момент, мой основной язык. Начинал же я с TurboPascal в школе, изучал C и C++ в университете, диссертацию писал на Java, а еще я изучал PHP с нуля, так как хотел научиться делать веб-сайты быстро и легко. Думаю, что написание кода для меня это некая форма развлечения, а уж потом все остальное. В начале у меня были размышления, какой язык изучать, Python или Ruby. Я выбрал второй, так как не хотел, чтоб неправильные отступы были причиной неполадок в моем коде.
Есть целая куча введений, руководств, статьей и эссе, написанных гуру, о том, как получить максимум пользы от Ruby. Данная статья ничем таким не является.
Это более скромный, неполный перечень причин, которые могут (или не могут) побудить вас использовать Ruby, ну или в крайнем случае поиграть с ним. Предостережение: если вы используете другой язык программирования для работы или в других целях — не жалуйтесь мне, если больше не захотите им пользоваться. Именно это и произошло со мной, но для меня это не столь важно. Ruby чудесный и элегантный язык и как многие подобные вещи, он может захватить ваш разум и поломать душу.
Короче, вы — предупреждены.
Зачем изучать Ruby?
1. Вы получаете все удобства (удовольствия) без уловок.
Ruby позаимствовал все лучшее из других языков программирования, от smalltalk до Java, от Perl до Python. Вот базовые возможности, которые вы в принципе могли видеть и в других языках:
- Исключения. Верите или нет, исключения являются одной из важнейших вещей при разработке программ любого рода. Программисты на PHP4, не знают ничего о них и будут говорить вам, что можно просто печатать(ошибки) на экран или использовать их собственный «супер-пупер» класс для обслуживания ошибок. К счастью для всех нас, Ruby поставляется с try/catch (или еще лучше begin/rescue) блоками и набором предопределенных, расширяемых Исключений, для правильной обработки ошибок.
- Пространства имен: модули Ruby делают использование пространства имен легким, это должно понравиться энтузиастам C++ и Java.
- Встроенные регулярные выражения: Для всех знатоков Perl, вы можете заключить нечто в // и оно становится регулярным выражение, готовым для сравнения (для этого используем оператор =~).
- Перегрузка операторов: Ruby позволяет определять операторы, такие как +, -, >, и т.д. для любого вашего класса.
- Пакеты: называемые «gems»(камешки), они действительно оправдывают свое название, кроме того — они работают. Пакеты поддерживают зависимости, а еще могут быть как кросс-платформенные, так и платформо-зависимыми.
- Интерактивная консоль: может использоваться для тестирования кода интерактивно, подобно консоли Python
2. Вы полюбите мелочи.
Ruby изящен. Почему? Потому-что он не старается делать код лаконичным настолько, что бы это мешало читабельности и пониманию. Есть несколько советов, которые могут вам помочь:
- Вы можете использовать оба оператора if и unless в условных выражениях. Кончно же вы можете использовать if с противоположным значением выражения, но использования unless обычно приводит к меньшему числу ошибок. Кроме того, вы можете использовать оба оператора, как условные модификаторы, ставя их после выражения, а не до:
order.new unless order.exists - Можно использовать знаки вопроса и восклицания в конце имени метода. Данное соглашение не навязывается, но знак «?» используется, когда метод возвращает true или false, в то время, как знак «!» используется для методов, делающих нечто необратимое, на подобии удаления записи из базы данных, отщепления последнего символа из строки и т.п.
- Можно использовать псевдонимы (alias) для уже созданных методов. Таким образом можно получить методы exist и exists, без накладных расходов и без повторений.
- Вы можете использовать директивы attr_reader, attr_writer или attr_accessor для автоматического создания getter/setteer для членов класса.
- И еще некоторое соглашение об именах: константы, классы и модули пишут с заглавной буквы, методы и члены класса должны начинаться с маленькой буквы, глобальные переменные именуют начиная с «$», имена переменных объекта начинаются с «@», а имена переменных класса с «@@», ну и т.д.
- При вызове методов, можно не писать скобки. Можно писать
write File.open("/home/h3rald/test.txt")или простоFile.open "/home/h3rald/test.txt", что особенно удобно с методами, без аргументов.
3. Больше не нужно использовать точку с запятой.
Хотите написать следующую инструкцию? Просто переходите на новую строку. Нажмите «Enter» и готово. В Ruby как и в Python, новая линия разделяет инструкции, так что вам не придется все время ставить точку с запятой. К сожалению это означает, что подобно фанатам C++, мы не сможем написать программу в одну строчку. Но это не так уж и плохо, правда?
4. Все является объектом, как это и должно быть.
Когда я изучал Java, мне говорили, что все является объектом.
- «Че, 14 и 374346.678 — объекты?»
- «Нет, глупыш, это числа!»
В Ruby числа, символы, булевы значения и все остальное является объектом. Серьезно. Это означает, что можно писать вещи подобно этим:
"YOU SHOULDN'T ALWAYS USE CAPITALS".lowcase # вернет "you shouldn't always use capitals", вместо нечто такого:
# PHP Code
strtolower("YOU SHOULDN'T ALWAYS USE CAPITALS")
Этим вы экономите время, экономите скобки и так более логично.
5. Все имеет значение.
Или «больше не надо использовать return для возврата значений». Если побыстрячку, то так: все инструкции в Ruby возвращают значение, даже присваивание переменных, так что вам действительно не нужно использовать ключевое слово «return» в конце методов. Значение последнего присваивания всегда будет возвращено.
6. Можете изменять окружение любым доступным способом.
Впервые увидев это, я был впечатлен. Представьте типичную ситуацию: вы стали использовать системный класс или класс, написанный кем-то другим и поняли, что вам надо некий дополнительный метод в нем. Есть несколько путей для решения этой проблемы в типичных языках программирования:
- Вы изменяете исходный код класса, если вы имеете к нему доступ. Но обычно это — плохая идея, не делайте так.
- Вы наследуете свой класс от того и добавляете к нему новый метод. Обычно это — хорошая идея. Но из-за одного метода это может оказаться несколько монообразным. Кроме того, придется немного подправить другой свой код соответственно.
- Можно просто создать метод вне класса. Это сработает, но будет не очень изящно, а еще — идет в разрез с ООП.
В Ruby вы можете добавить метод в оригинальный класс, без правки исходных кодов. Это можно сделать даже для системного класса.
Мы хотим добавить метод, для пересчета значений из метров в футы? Просто расширим класс Numeric, как показано:
class Numeric
def feet
self * 3.2808399
end
end
С этого момента, все наши числа, будут иметь новый метод, который может использоваться, как любой другой:
5.feet # возвратит 16.4041995
Классы в Ruby никогда не закрываются и могут быть расширены в любой момент, из любого места. Естественно использовать такую возможность надо с осторожностью!
7. Вы не сможете получать единорогов из птиц и конец, но вы получите ослов, если захотите.
Я четко помню, как моя учительница по C++, использовала животных, для иллюстрации основных концепций объектно-ориентированного программирования — классов и наследования. Было нечто загадочно, когда объясняла нам множественное наследование, образовывая «пегаса» из «птиц» и «лошадей». Сумасшедшие вещи, Ruby не позволяет множественного наследования. Это выглядит как тренд и в конце-концов это дело вкуса. Я не в восторге от множественного наследования, так как это может привести к непредсказуемым вещам. Несмотря на это есть возможность создания нечто подобного, используя модули Ruby, так что переменные и методы одного модуля, будут добавлены в определенный класс, если модуль включен в него.
8. XML — реально ненужен.
XML — красивый, общеупотребительный, язык разметки, который может быть обработан всеми языками программирования и используется повсеместно. К сожалению, он слишком громоздкий для написания, трудный для обработки(парсинга) и, давайте будем честны — трудный для чтения в большинстве случаев. А вот взгляните на следующий фрагмент:
regexp: !ruby/regexp /a-zA-Z/
number: 4.
string: a string
Безусловно это легче и проще XML, правда? Добро пожаловать в YAML, любимый (но не единственный) язык разметки Ruby, с помощью которого любой объект может быть представлен в простом, лаконичном, но полном виде.
Ruby способен работать с XML, но простота YAML подкупила многих разработчиков, которые теперь используют его вместо XML, например для файлов конфигурации (так поступили в Rails). Фрагмент, представленный выше, был получен исполнением следующего фрагмента кода:
{"string" => "a string", "number" => 4.7, "regexp" => /a-zA-Z/}.to_yaml
Метод to_yaml, определен для класса Object, который является родителем для всех остальных объектов, а потому доступен для всех объектов Ruby. Это позволяет преобразовывать объекты в YAML и обратно, абсолютно прозрачно для разработчика. Круто, да?
9. Лямбда — нечто больше, чем просто греческая буковка.
Ruby позаимствовал некую магию из Lisp и Perl в объекты и блоки Proc. Proc — это «блок кода, связанный с набором локальных переменных. Однажды связанные, они могут вызываться в различных контекстах и все еще обращаться к тем переменным.». Поглядим на следующие:
def gen_times(factor)
return Proc.new {|n| n*factor }
end
times3 = gen_times(3)
times5 = gen_times(5)
times3.call(12) #=> 36
times5.call(5) #=> 25
times3.call(times5.call(4)) #=> 60
Можно было использовать ключевое слово lambda вместо Proc.new, на результат это не влияет. Это могло показаться знакомым людям, знающим Perl и Python (или Lisp) . Такое можно сделать даже на PHP, но не много людей пользуются этой возможностью.
Кроме того в Ruby широко используются блоки типа «не созданные Proc», например, для итерации по содержимому объекта и исполнения некоторого кода, подобно методу each, доступного для класса Array:
[1, 2, 4, 6, 8].each {|c| puts c*2} #=> возвратит каждый элемент, умноженный на 2
Если код не умещается на одной строчке, рекомендуется использовать конструкцию do ... end, вместо использования скобок. Фаны Ruby не любят скобок.
10. Вы можете использовать Rails.
Последнее, но не по важности... Вы всегда можете использовать Rails для разработки веб-приложений. Разработка будет не настолько простой, как с PHP, но Rails были написаны на Ruby, поскольку он имеет возможности, отсутствующие в других языках.
Заключение
Время вышло. Возможно вы уже задумываетесь о взгляде на Ruby, возможно вы уже пробовали его, а возможно вы просто проигнорировали его. Как бы там ни было, в следующий раз, когда глядя на свой код, он будет казаться страшным, а размер его устрашающим — не обвиняйте меня.

Обсуждение
Re: 10 причин для перехода на Ruby
В руби можно использовать точку с запятой, правда на деле оно совсем не нужно.
Re: 10 причин для перехода на Ruby
Очень много ошибок.
> Кончно же, вы можете использовать if с противоположным значением выражения, но использование unless обычно приводит к меньшему числу ошибок.
> Кроме того, вы може использовать оба оператора(удалена запятая) как условные модификаторы, ставя их после выражения, а не до: order.new unless order.exists
> что бы это
Я исправил в цитатах лишь малую часть. Используйте хотя бы spellcheck'ер, мой вам совет.
Re: 10 причин для перехода на Ruby
Простите, чуть-чуть не туда поместил комментарий.
Естественно, он касается самой статьи.
Re: 10 причин для перехода на Ruby
Спасибо, мы прислушались -:)
Re: 10 причин для перехода на Ruby
в Ruby можно (!) записать любую программу в одну строчку. Точка с зарятой в Ruby эквивалентна переносу строки, поэтому это:
class A
def foo
42
end
end
можно записать: class A; def foo; 42; end; end
--
meduza
Re: 10 причин для перехода на Ruby
Из 10 пунктов ни один не отвечает на вопрос "Зачем изучать Ruby". Скорее перечисление фич языка.
Re: 10 причин для перехода на Ruby
Правильное замечание. Хотелось бы узнать, какие проекты автору удалось реализовать на Ruby и какие +/-сы для себя отметили в этих проектах.
Re: 10 причин для перехода на Ruby
Касательно веб:
Как по мне руби без рельс далеко не уедут.
одни из крупных проектах на RoR:
github
twitter
basecamp
у меня опыт не большой на РоР но за время работы встречал очень мало "говнокода", по сравнению с индо функциями на пхп. В текущем проекте крайне редко встречаю коменты .Код действительно легко читаемый, но опять же это все фреймворк ... поэтому мое мнение смотрите в первой строке.
плюсы: огромная часть заказов для веб разработки именно РоР, забываем изучение зенд, кодеигнитера, коханы и т.д. большое количество гемов и плагинов не может не радовать, и действительно чувствуется философия программирования когда ты видишь что ты пишешь именно красиво
минусы: маловато документации, а также изначально сложно было определить с какого края начать его есть. Остальные минусы пока мне не известны из за отсутствия опыта, но они есть как и везде
З.Ы. мне нравиться работать с ним :)
name of game websites
o.a.r crazy game of poker lyrics
download games gata КНгнб
texas tea slots free play
casino pizza gainesville
diamond double free play slot
riverboat gambling mississippi
unoccupied poker websites
probability of winning the lotto
chip poker tangiers
super mario brothers game
casino hotel mgm
casino huntington virginia west
xiao xiao games
graphic card pci slot
atlantic city casino discounts
blackjack computer
cabal games
casino verite black jack
free line money poker
poker no limit rules
poker chronicles
causes of compulsive gambling
free gambling picks.com sports
fireman sam games free online
1989 superb series poker
dd tournament poker
motorcycle game
casino gila river
free multi player poker game download
free 50 play poker
monogramed poker chips
online poker machines
casino entertainment in biloxi ms
meboy games
world poker tournament los angeles
free games to play that are like runescape withchat
free make your dog have pups games
century twenty one real estate
game drug dealer
swingers convention las vegas
Аренда квартир Одесса
Преглашаю обсудить портал аренда квартир Одесса, где я лично снял квартиру! Как Вы сможете его откоментировать? Для меня он теперь незаменимый и он сильно понравился так как меня интересовала элитная квартира в Одессе. Так же мне понравилась навигация на нём! Что кажется Вам? Я прав или Вы со мной не согласны.
Продажа трехкомнатных квартир в Симферополе
Чего, чего, а такого никогда не видал! Рылся в поисковике и откапал сайт продажа дома в Симферополе
, что меня осинило просто. Я даже и не подозревал, что цены на аренда в Симферополе посуточно
такие большие. На Вас так же бы повлияли такие цены? Просто я не редко посещаю интересные сайты из-за своей большой любопытности, да и таких цифр я никогда не видел на рынке Крымской недвижимости.
Красивые девушки в мини юбках фото
Здравствуйте форумчане! Обнаружил в сети интернет портал с сенсациями - stolichnyi.com и меня это порадовало. На нём есть новость красивые блондинки фото
и я в один миг стал добрее! что Вы можете сказать о своих чувствах?
жилье в Одессе
Что сказать + моя фишка это аренда квартир однокомнатных в Одессе и меня это устраивает! У меня это отлично выходит и у меня всё получается.
Недвижимость в Донецке продажа
Всё происходило следующим образом… нашёл на каком-то сайте ссылку: аренда недвижимости Донецк и я очень сильно был возгневан на нашу страну! Вообщем включив свою думалку, я с большой обидой за людей продолжал на нём находиться… после чего осознал, что в Украине и Донецке недвижимость в цене! Вследствие этого, меня очень сильно начал грызть вопрос, как быть на рынке недвижимости Донецка обычному человеку!Просто очень сильно болит душа за обычных соотвечественников потерпающих от такой цены на недвижимость в Донецке.
Сдам невероятное жильё
Вот кто такие цены делает! Не случайно вообще посетил навороченный web-site, где предлагают снять квартиру кратковременно. Вследствие чего у меня появилась мысль, кто снимает подобные квартиры? Вообщем меня интересует Ваши мысли по этому поводу. Поделитесь своими впечатлениями о этой возможности снять элитных квартир в Одессе. Кстати кинте свой взор на трехкомнатные квартиры в Одессе и их суммы… так же очень интересно будет Вам! Моё впечатление, что это просто бред!.
Снять квартиру в Одессе длительно
Nashёl сайт, где predlagayut квартиры в центре Одессы постуочно
у моря сильно дорого! Я знал, что стоимость квартир в Одессе сильно высокая по сравнению с другим, но даже не дагадывался, что всё именно так! Я рассчитывал, что после кризиса стоимость должна была упасть, а реальность почти не на копейку не сместила стоимость вниз. Кто и что скажет по подобных ценовых не колебаниях? Буду очень благодарен за за Ваше потраченное время.Я думаю, что Одесскую недвижимость надо заменить! Только тогда стоимость опустится.
Dream downtown jobs Cursed bambiblaze
Yadira carrillo desnuda
:<
Can u retrieve deleted messages from ps3
amelrynenue Download chibi chars
Гагарин плаза
Всем приветище! У меня последний день, такое невероятно отличное настроение… короче однажды я лазил по гоге и обнаружил недвижимость Одессы После чего я был очень сильно удивлён, короче недвижимость в новом жилом комплексе гагарин плаза
меня просто на повал убило меня со здравого смысла. Неужели, в какой-то обчной Украине имеет право быть такая цена? Как вообще появилась такая цена на престижные апартаменты Одессы такой завышенной?
сдача квартирв Одессе
Одесса квартиры посуточно
g-)
Одесса квартиры аренда
Foeraracill Одесса квартиры посуточно
снять квартиру в Одессе
долгосрочная аренда
|-O
длительно снять
AntitsAlollasic снять квартиру в Одессе