Да и вообще, «u» как «а» читается только в закрытом слоге, например bus.
А тут открытый слог, так что Руби!:)
На подкасты/скринкасты тоже полагаться нельзя, их не всегда англоязычные люди читают.
Слушал доклад японца с rubyconf2008, дак там вообще ужас с произношением:)
Кстати, насчет Ruby IDE.
Есть еще RubyMine www.jetbrains.com/ruby/index.html
Притом еще и бесплатная(пока).
Любителям IDE думаю стоит посмотреть, т.к. она от того же разработчика что и IntelliJ IDEA, одной из лучших Java IDE.
>сама руби-платформа сейчас находится на спаде
Нда, это еще вопрос, кто из нас с вами желаемое за действительное выдать пытается:)
Похоже вы убежденный фанат Groovy(или антифанат Ruby):)
Ну клон Java, это вы конечно загнули, джава ниразу не динамическая. Просто большинство идей Groovy перенял именно от Ruby, например блоки, итераторы на них построенные, простое создание DSL. Даже не идеи(блоки например ведь не в руби впервые появились), а саму их реализацию.
>Интеграция с Java у Groovy на порядок выше.
В чем это выражается?
>Тот же Ruby 1.9 заимствует некоторые фишки, которые есть в Groovy.
Какие?(Правда очень интересно)
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
Что бы быстро посмотреть на руби, можно использовать интерактивный интерпретатор — 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/»],…
Ну не только для коммутаторов:)
ejabberd например. Или yaws. Так что ерланг хорош для серверов.
А насчет вычислений, тут сценарий может быть такой. В ерланге достаточно просто подключается код на других языках.
Так например для поиска тех же простых чисел, вычисления — на си, а распараллеливание — на ерланге.
Хотя с простыми числами не очень пример, тут сильно алгоритм не распараллелишь.
Но смысл вобщем в том, что критичные куски — это сишный код.
А сравнивать чисто на вычислительных задачах с компилируемыми языками смысла нет, тут и так понятно кто победит:)
Мне почему-то сразу вспоминаются смешные бенчмарки типо «Java 2 times faster then C++!»:)
>Увидеть это и было целью моих комментариев ;)
Поклонник императивных?:)
Я тоже долго боялся смотреть в сторону функциональных, особенно когда с первого захода Scheme снесла мне крышу на простой задаче вывести длину списка:)
А сейчас, после более менее плотного знакомства с ерлангом, мне даже нравиться начало. Но любимый Ruby все равно ни на что не променяю:)
Насчет компиляторов — их помоему вообще нет. У них там не просто интерпретатор, а виртуальная машина. Сначала исходник в байткод компилируется, что уже быстрее. И насчет производительности, демаю с этим тоже все норм должно быть(ну, с/с++ конечно будет проигрыш). В эриксоне его же использовали в электронике своей, а там с ресурсами напряженка.
>думаю провести сравнение на разных типах задач.
Было бы очень интересно увидеть результаты:)
Насчет применимости — естественно ерланг это не панацея для любых задач. У него своя область, достаточно узкая(хотя он вроде как и «язык общего назначения») — это распределенные, легко расширяемые и отказоустойчивые системы(одна подмена кода модуля прямо в процессе выполнения чего стоит!:)). Я с этим и не собирался спорить.
Насчет обучения — связи с обучением на ерланге и меньшим числом ошибок у начинающих программистов я не вижу. Вообще это не язык для обучения программированию, у него задачи совсем другие. Да и вообще, миром правят императивные языки:)
>сновное преимущество Эрланга не в «лёгких» потоках или скорости
С этим я совсем не согласен. Простота написания и меньшее количество ошибок — это следствие реализации(сообщения а не shared memory). Именно легкие изолированные процессы это основная фича ерланга, и его идеологии конкурентно ориентированного программирования.
И то что процессы у него не являются системными потоками — это огромный выигрыш в скорости, ведь каждое действие с потоком — это системный вызов. По-этому и обмен сообщениями происходит значительно бычтрее.
>логика которых не подразумевает обильное использование сообщений
Как раз наоборот, подразумевает.
Всмысле сообщения между процессами реализуются через shared память?
Не факт. Там процессы на уровне виртуальной машины а не на уровне потоков ОС. Но это если несколько процессов на одном ядре.
Когда выполнение паралелится на несколько ядер, то под каждое ядро запускается экземпляр интерпретатора, который обрабатывает свои процессы.
Смысл точно такой же, как если бы мы распаралеливали приложение на две разные машины.
А насчет области применимости, я в предыдущем посте ничего не говорил:)
Обычно люди сразу начинают учить Ruby on Rails а не Ruby:)
По руби, если с английским норм, можно начать с pickaxe(если еще сам не нагуглил;)) — www.ruby-doc.org/docs/ProgrammingRuby/
По-моему даже русский перевод где-то видел.
На русской викибук хороший учебник еще.
Вобщем удачи в изучении:)
В Groovy по сути больших отличий от Ruby нет, все таки ведь клон. Основная его фишка — это доступ к великой и могучей Java платформе.
А так как и Ruby, посредством JRuby, может использовать мощь Java платформы, то смысла в его клоне я не вижу. Естественно это субъективно, тут кому что нравиться:)
Говорят, что на N ядерном процессоре Erlang программа будет работать в N раз быстрее:)
Ну а по делу, как я понял два дня с ним поигравшись, отсутствие shared памяти на скорость сильно не влияет, это больше для избежания ошибок и дэдлоков.
Основной прирост производительности в самой идеалогии Конкуррентно Ориентированного Программирования.
Типо на каждый чих создаем новый процесс, и синхронизация между процессами происходит через сообщение, что быстрее чем через shared память со всякими локами и тд.
А теперь, каждый процесс выполняется на своем ядре — это же просто сказка какая-то!:) Отсюда и увеличение скорости.
А неизменяемые переменные по-моему вообще во всех функциональных языках есть.
А тут открытый слог, так что Руби!:)
На подкасты/скринкасты тоже полагаться нельзя, их не всегда англоязычные люди читают.
Слушал доклад японца с rubyconf2008, дак там вообще ужас с произношением:)
Есть еще RubyMine www.jetbrains.com/ruby/index.html
Притом еще и бесплатная(пока).
Любителям IDE думаю стоит посмотреть, т.к. она от того же разработчика что и IntelliJ IDEA, одной из лучших Java IDE.
Нда, это еще вопрос, кто из нас с вами желаемое за действительное выдать пытается:)
Похоже вы убежденный фанат Groovy(или антифанат Ruby):)
>пытаетесь выдать желаемое за действительное?
Поясните, пожалуйста, что я такого нереального сказал?
>Интеграция с Java у Groovy на порядок выше.
В чем это выражается?
>Тот же Ruby 1.9 заимствует некоторые фишки, которые есть в Groovy.
Какие?(Правда очень интересно)
По-этому они на два пакета разделены. На 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
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/»],…
ejabberd например. Или yaws. Так что ерланг хорош для серверов.
А насчет вычислений, тут сценарий может быть такой. В ерланге достаточно просто подключается код на других языках.
Так например для поиска тех же простых чисел, вычисления — на си, а распараллеливание — на ерланге.
Хотя с простыми числами не очень пример, тут сильно алгоритм не распараллелишь.
Но смысл вобщем в том, что критичные куски — это сишный код.
А сравнивать чисто на вычислительных задачах с компилируемыми языками смысла нет, тут и так понятно кто победит:)
Мне почему-то сразу вспоминаются смешные бенчмарки типо «Java 2 times faster then C++!»:)
if condtion
some_actions
else
some_actions
end
аналогия, что else должен занимать одну строчку
Поклонник императивных?:)
Я тоже долго боялся смотреть в сторону функциональных, особенно когда с первого захода Scheme снесла мне крышу на простой задаче вывести длину списка:)
А сейчас, после более менее плотного знакомства с ерлангом, мне даже нравиться начало. Но любимый Ruby все равно ни на что не променяю:)
Насчет компиляторов — их помоему вообще нет. У них там не просто интерпретатор, а виртуальная машина. Сначала исходник в байткод компилируется, что уже быстрее. И насчет производительности, демаю с этим тоже все норм должно быть(ну, с/с++ конечно будет проигрыш). В эриксоне его же использовали в электронике своей, а там с ресурсами напряженка.
>думаю провести сравнение на разных типах задач.
Было бы очень интересно увидеть результаты:)
Насчет обучения — связи с обучением на ерланге и меньшим числом ошибок у начинающих программистов я не вижу. Вообще это не язык для обучения программированию, у него задачи совсем другие. Да и вообще, миром правят императивные языки:)
>сновное преимущество Эрланга не в «лёгких» потоках или скорости
С этим я совсем не согласен. Простота написания и меньшее количество ошибок — это следствие реализации(сообщения а не shared memory). Именно легкие изолированные процессы это основная фича ерланга, и его идеологии конкурентно ориентированного программирования.
И то что процессы у него не являются системными потоками — это огромный выигрыш в скорости, ведь каждое действие с потоком — это системный вызов. По-этому и обмен сообщениями происходит значительно бычтрее.
>логика которых не подразумевает обильное использование сообщений
Как раз наоборот, подразумевает.
Не факт. Там процессы на уровне виртуальной машины а не на уровне потоков ОС. Но это если несколько процессов на одном ядре.
Когда выполнение паралелится на несколько ядер, то под каждое ядро запускается экземпляр интерпретатора, который обрабатывает свои процессы.
Смысл точно такой же, как если бы мы распаралеливали приложение на две разные машины.
А насчет области применимости, я в предыдущем посте ничего не говорил:)
По руби, если с английским норм, можно начать с pickaxe(если еще сам не нагуглил;)) — www.ruby-doc.org/docs/ProgrammingRuby/
По-моему даже русский перевод где-то видел.
На русской викибук хороший учебник еще.
Вобщем удачи в изучении:)
А в Groovy нет:)
А так как и Ruby, посредством JRuby, может использовать мощь Java платформы, то смысла в его клоне я не вижу. Естественно это субъективно, тут кому что нравиться:)
Ну а по делу, как я понял два дня с ним поигравшись, отсутствие shared памяти на скорость сильно не влияет, это больше для избежания ошибок и дэдлоков.
Основной прирост производительности в самой идеалогии Конкуррентно Ориентированного Программирования.
Типо на каждый чих создаем новый процесс, и синхронизация между процессами происходит через сообщение, что быстрее чем через shared память со всякими локами и тд.
А теперь, каждый процесс выполняется на своем ядре — это же просто сказка какая-то!:) Отсюда и увеличение скорости.
А неизменяемые переменные по-моему вообще во всех функциональных языках есть.