Читая книжку "Programming Ruby" (Клишин дал почитать, спасибо), встретил упоминание об интерактивной версии интерпретатора Руби -- irb. А поскольку дома чисто случайно оказался установленнный Руби (это только частично шутка; Руби уже включается в конфигурацию по умолчанию некоторых Linux и Mac OS систем -- попробуйте ввести в консоли "ruby -v" и можете быть приятно удивлены), я решил попробовать этот irb в действии. Забавная штука -- ты пишешь строку руби-кода, irb тебе отвечает тут же. Незаменимая вещь для изучения языка "методом тыка": а что если так? А так? Вводишь любую команду и получаешь результат или ошибку. Пишешь: "2+2" а он: "4". Можно таким же образом задавать через irb переменные и работать с ними: a = 2, b = 2, a * b.
2+2
4
a = 2
b = 2
a * b
Или пишешь: puts "Hello World!" он отвечает: (угадайте, что?). Так что пока Руби -- самый дружелюбный известный мне язык программирования: на нем короче всего пишется "Hello World!" ;)
puts "Hello World!
Блоки кода тоже поддерживаются в irb. Я решил проверить, как у Руби дела с рекурсией. Хорошо оказались дела, вплоть до определения максимального количества самовызовов (уровней стека); вот мой диалог с irb, в котором я задаю рекурсивную функцию и вызываю ее (я показал весь процесс, начиная с запуска irb прямо из командной строки):
D:\>irb irb(main):001:0> def recursion irb(main):002:1> recursion irb(main):003:1> end => nil irb(main):004:0> recursion SystemStackError: stack level too deep from (irb):2:in `recursion' from (irb):2:in `recursion' from (irb):2:in `recursion' ... 1363 levels... from (irb):2:in `recursion' from (irb):2:in `recursion' from (irb):4irb(main):005:0>
Достаточно дилетантских отзывов; узнать больше об irb (и Ruby) можно в Википедии.
Клишину: RadRails установил на работе только вчера, у них сайт висел, а ко вчерашнему вечеру завелся. Поставил как раз на свежий Eclipse 3.2 RC7, кстати :)
fxri
"Короче всего" имеется в виду, что в Пайтоне в коммандной строке надо ввести аж на одну букву больше print"Hello World!" :) Кстати, а как будет семантически верно назвать действие вывода print или puts :) Если не секрет. Что еще, кроме RadRails писано на Руби? Например На Пайтоне написан единственный из известных мне:) редакторов трехмерной графики Blender вместе с рендером и UV маппингом По моему отличное доказательство производительности скриптового языка. В Пайтоне как и в PHP код можно скомпилить (по желанию) в байт код и обфускатить его для пущей важности:) Руби позволяет это сделать или все скрипты остаются лежать в сорсе?
Семантика в данном случае граничит с религиозностью -- поэтому первый вопрос я не стану обсуждать, это чревато %)
Я в Руби -- _очень_ начинающий. В Питоне еще хуже. Поэтому спорить не буду, скажу только то, что знаю.
- Что написано на Руби? В первом издании книги по Programming Ruby (2000 г) было сказано, что на Руби уже тогда были написаны GUI-приложения, и middle-tier серверные процессы. Также Руби использовался для генерирования динамических веб-страниц, для управления серверами и досупа к базам данных. Некторые писали на нем искусстенный интеллект и программы для обучения машин, и как минимум один человек на Руби писал исследование естественной эволюции. Это все в 2000 -- через 5 лет после публичного появления Руби. Сами авторы упомянутой книги о Руби использовали его для форматирования больших частей этой книги. Также говорят, что Руби применяют как движок для исследовательской математики. Он хорошо контачит как с операционной системой, так и с другими приложениями.
- Насчет компиляциии -- я видел, но не пробовал rubyscript2exe.
Вообще, Клишина чую: придет и наведет тут шороху :)
Ни в коем случае не стремлюсь разжечь очередную религиозную войну:) Язык (любой) всего лиш инструмент общения как с человеком, так и с машиной. И будучи прагматиком я всего лиш интересуюсь преимуществами этого языка,(Ruby) перед уже имеющимися. GUI-приложение можно написать, как это ни странно и на PHP:) И утилиты типа rubyscript2exe. есть и для Пайтона и для PHP..... Я немного про другое. Например я могу код PHP "завернуть в лицензию":) Тобиш прогнать его через ZendEncoder и получить на выходе Те же файлы с расширением *.php внутри которых будет находится не скрипт а байт код типа: {ãD™¹icãîçë¢`7ÿèÆ›/¼æÐx¨éë!?¬ö66öÌä¶Ý“ó(7·÷Q±¤ XÙ"›±põcgXÉØþ¼-ªŠ}>\7ÂÆ‚â…6Õúä5qÁ" ÅU»ÚâÆu¸ôqõj@Q¼Ð¦^Ÿ¾&®¦†ÉtiÛþ°&·?âÔÙˆkr¤à…6 Красота:) И никто не сможет покопаться в моих исходниках без моего на то согласия:) Есть ли такое в Ruby?
Вот, "Что такое Питон": http://maxidoors.ru/articles/2006/05/27/what-is-python
А RadRails сделан на базе Eclipse, это Eclipse RCP с набором всех нужных для Rails-разработок плагинов. Разве что Джаваскриптовый редактор там откровенно никакой, а остальное сделано и собрано вместе очень хорошо. И можно не качать весь Eclipse, если облом -- RadRails весит около 30 мб.
Интересно канун Ворфоломеевой Ночи у гугенотов тоже праздник:). На надо нас ногами:) Речь ведь не о том кто себя чувствует комфортнее; Английский Лорд на рисовом поле или Вьетнамский Крестьянин в палате лордов. ======== По поводу линка выше там в коментах есть ремарка автора:
Макс Лапшин said about 23 hours later: ------------------------------ Как мне уже сказали, по ряду пунктов я неправ, потому что информация устарела, но в целом ситуаиция похожая. ----------- :) У меня просто сложилась ситуевина когда клиент уперся рогом - мол не хочу чтоб было написано на PHP. Предложили ASP Не нравится пункт "Итого". Вот и думаю на чем ваять. Пойду к хостерам стукнусь. Как там у них с поддержкой Ruby.
Печально у них с поддержкой Ruby:(
Jivel, я тоже недавно поинтересовался у своего хостера, как насчет Руби. Он ответил: на виртаульном сервере нету (где я щас), на выделенном -- есть. А у тебя как?
На выделенном: "За ваши деньги любой каприз":) Подкупает то, что Пайтон то и на виртуале стоит, а на вопрос: Почему Пайтона нет в списке поддерживаемых языков? Хостер ответил следующее. Пайтон предустановлен на всех тарифных планах(и виртуальных тоже) Но техническую поддержку по этому языку мы не оказываем ввиду отсутствия специальстов по этому языку в нашей компании:)
И еще пара вопросов. Уж извините за назойливость :( Посмотрел скринкасты работы в RadRails Если я правильно понял, то Раилс это своеобразный набор приемов (если никого не обижу то - шаблонов) для решения определенных задач. Тобиш, например, если мне в форме надо воткнуть еще одно поле ввода я создаю таблицу в базе с определенными характеристиками и Раилс мне автоматом выдает шаблон вывода и прослойку для валидации приходящих через это поле данных. Так сказать избавляя меня от рутины. Дальше. Если надо регистрировать юзера он мне выдаст набор шаблонов и какую-то структуру для осуществления этой регистрации. Ну и тд. и тп. ??
Нет, не извиним ;) Будем на вопросы твои лучше отвечать ;)
То, что ты заметил ("Раилс мне автоматом выдает шаблон вывода...") -- одно из удобств RubyOnRails. Называется это "scaffolding" ("подмостки"), и это часть фреймворка Rails. Скаффоkдинг генерирует Model и Controller из паттерна MVC (одна из сильных сторон Руби -- это то, что он реализует MVC чисто).
Дмитрий Сабанин перевел не русский неплохую статью Что такое Ruby on Rails 1.0? -- почитай, думаю там есть ответы на многие твои вопросы.
А еще есть мейл-лист ror2ru -- там могут ответить практически на любой вопрос (думаю, про обфускацию Руби-кода тоже).
Я пока только начинающий в Руби и не хочу ввести в заблуждление неточным ответом ;)
2 Jivel: Я лично общался с Тоном Розендаалом (автором Blender) и я вас уверяю что Блендер не на пайтоне написан - он там в качестве скриптового движка. Ruby используется для скриптования например в трехмерке SketchUp. Скомпилить Ruby в байткод не нужно - Rails-приложения работают как персистентные демоны.
Julik, спасибо! Разрулил ;)
Обфускатор для Ruby сейчас доводят товарищи из ZenSpider, но пока его нету - и это очень хорошо. Почему - обьяснять не буду.
Малеко заблудила эта фраза: =========================================== To be able to build with the SCons build system you'll need Python (preferably version 2.2.x) and SCons (http://www.scons.org) installed. After you're sure these work properly you are ready to build with SCons.
Systems supported at the moment are: * Linux (Michel_) * Windows (jesterKing) * Irix (Hos) * Cygwin (Michel_) * MacOS (sgefant) ============================================ Да действительно старый добрый Си :)
Вот куда нада было меня отправить http://ru.wikipedia.org/wiki/Руби
АГА, и там хорошо, и тут тоже, только объемнее:
http://ru.wikibooks.org/wiki/Ruby