всем лучше.
тем что ОО без исключений.
перл ОО языком назвать можно только с большой натяжкой :)
и code blockи рулят.
например
a = [1,2,3,4,5]
a.each { |element|
puts element if element > 3
}
скорость.. а когда ты его последний раз смотрел? вот со времен 1.6 та аагромаднейшие ускорения. а для 1.8.x -- вообще не замечал тормозов. нет, по сравнению с perl5 он всегда будет тормозить на запуске за счет инициализации классов, но и это-то уже постараться надо заметить.
> 1) работает
Неужели питон не работает? :) А мужики то не знают...
> 2) не через zope
Не очень остроумно, на самом деле zope работает через python. И наличию таких штук как Zope это огромный плюс python'у.
> 3) не нужно мучаться отступами (пока окружающие работают)
Ах вас отступы мучают. Всех питоновских программистов эти отступы радуют, а вас мучают. Всё ясно.
> Полная объектно-ориентированность Ruby порождает некоторое количество свойств, отсутствующих в Python, или только появляющихся в нем: единая иерархия типов/классов, возможность наследоваться от всех классов
Нужно отметить что в питоне это уже давно есть (начиная с 2.2), так что инфа немного устарела.
Можно узнать про преимущества классов коллекций в Ruby над питоновскими? Мне когда-то Smalltalk'овские коллекции тоже очень понравились, однако когда познакомился с питоном, то понял что ничего особенного в них нет.
> Ruby имеет синтаксическую вариативность. Модификаторы выражений (if, unless, while, until и другие) могут следовать после любого выражения. Некоторые служебные слова опциональны (например, then в условной конструкции). Скобки в вызове метода могут быть иногда опущены. self может быть опущен.
a.each_with_index{|n,i| puts i if [2..5].include?(n) }
puts a.inject{|n,acc| acc+n}
Я раньше сидел на Perl, но мне в нем не нравилось:
1. "ненормальная" модель объектов (неудобная и "неполноценная")
2. "мешанина" типов (0 равен "0", но не равен "00"..., "неноль" = true)
3. явное наличие нескольких синтаксисов (хотя в начале тащился)
4. некоторые другие шероховатости, которые в результате ставили перед диллемой: "или оптимизация, или понимаемость".
Я перешел на ruby и не жалею. Советую и Вам попробовать - может понравится.
1. Переменные по умолчанию. $_ $! $: $1 $2 и т.д. (ага из перла :) )
2. Blocks (closures). очень удобно для итераций. sql.query.fetch{ |row| #some action with row }
3. Наследование от базовых типов (integer, string) вплоть до базового Object.
4. case с регулярными выражиниями
case(str){
when /^a.*/ then
# stuff
when /^b.*/ then
# stuff
}
5. Mix-ins
class String
def send_by_email(email)
# code to send email
end
end
"TEst..sdaasdas".send_by_email("pupkin@n.com")
расширние уже сущ. класов без наследования.
6. возможности Reflection поистине безграничны. в раби разница между рантайм/компиле тайм очень незначительна.
7. классная стандартная библеотека (distributed ruby (drb),embeded ruby (erb, для шаблонов), SOAP, parser generator, reXML(!), YAML, net(ftp,http)).
8.
a Ruby program
before I even notice
is already done
я знаю, Ruby - кульная вещь, сам держу Wiki на Ruby - instiki.org.
Но дело не в этом, да язык крут и удобен (а drb!), но мало библиотек,
непонятно кто все это спонсирует, и на Oreilly мало книг - что очень важный показатель!
Хотя мне язык понравился.
Ну Zope это плюс или минус - х.з. еще. Впрочем Zope != Python, так что можно ее и не юзать :)
Отступы в питоне рулят, не рулят они только для тех, кто пишет х.з. в чем и день через два свои редакторы меняет. Я вот пишу в vim и у меня все рулит.
А вообще зачем делать сравнения ruby vs python. Ruby - это просто еще один очень неплохой язык со своими фишками, достоинствами и недостатками.
>Никто с этим не спорит. А это точно LOR? Что-то ругани нет, странно... ;)
Я, как обычно, раз уж разговор (в который раз!) зашёл о Python, хотел бы услышать о наличествующих аналогах TT2 (http://www.template-toolkit.org/) для него. И, чувствую, в который раз не услышу.
> я спрашиваю не про мхо, а про юникод ( хотя знаю что нет там юникода).
кстати, не подскажете где можно почитать про японские и вообще азиатские кодировки, такие как Big5, Shift_JIS, EUC-JP и т.п. Интересуют различия, история появления, где какая используется и т.д. Просто ради интереса.
> Я, как обычно, раз уж разговор (в который раз!) зашёл о Python, хотел бы услышать о наличествующих аналогах TT2 (http://www.template-toolkit.org/) для него. И, чувствую, в который раз не услышу.
Ну что за стремление просто так опустить что-ннибудь (в данном случаем питон)?
Теперь по теме. Я не очень разбираюсь в подобных вещах (TT2 и т.п.) поэтому могу немного неправильно выразить свои мысли. Итак, насколько я понял с их сайта TT2 это template processing system. Мне кажется что его питоновским аналогами являются Cheetah (http://www.cheetahtemplate.org/) и Spyce (http://spyce.sourceforge.net/). А вообще питоновцы тянутся к написанию web application серверов, таких как Zope (http://zope.org/) и Webware (http://webware.sourceforge.net/), а также таких фреймворков для веб приложений как CherryPy (http://www.cherrypy.org/) и Quixote (http://www.quixote.ca/). Все вышеперечисленные проекты имеют разные подходы и очень интересны (для меня как минимум), очень жаль что у меня сейчас нет на это времени. :( Мой ответ вас удовлетворил? ;)
Я спрашивал не из-за желания что-то или кого-то опустить. Мне действительно интересно, так как не Перлом единым должен быть сыт человек, и от владения многими возможностями для реализации одной и той де задачи ещё никто не умирал.
То, что питоновцы тянутся к написанию web application серверов это, без сомнения, хорошо, но average hosting provider с такими решениями не дружит, и, по хорошему, даже слова Python пугается. Хотя, это уже исправляется, слава б-гу. Вот такие пироги.
видели мы эту писульку. основная ее проблема в том что питонисты на c2.com заходят крайне редко и в результате информация в агитке крайне однобокая. вроде get the facts от сами знаете кого.
поправка -- в последней версии от cherrypy отделили tepmlate engine, так что его теперь можно использовать отдельно.
из того что видел на перловые шаблоны больше всего похож cheetah, и dsx об этом было сказано. может он ответы невнимательно читает или еще что.
а zope -- это вещь в себе, освоить ее не так просто (по сравнению с примитивными шаблонными системами), но пока не освоишь лучше о своих соображниях насчет zope помалкивать.
> а если нужно более сложное, то: a.each{|n| puts n if n<6 }
А в питоне такое делается ещё проще IMHO:
for x in a:
. if x < 6: print x # точка в начале строки стоит для сохранения форматирования на LOR
>вернись в тот тред и посмотри, там тебе все ответы дали
Учитывая космическую юзабилити LOR, следить за ответами в тредах и, тем более, возвращаться к старым настолько неудобно, что удивительно, как вообще здесь можно хоть что-то найти.
> То, что питоновцы тянутся к написанию web application серверов это, без сомнения, хорошо, но average hosting provider с такими решениями не дружит, и, по хорошему, даже слова Python пугается. Хотя, это уже исправляется, слава б-гу.
Ну, обычный python CGI поддерживает практически любой UNIX хостер (хотя обычно это и не рекламируется), а вот с серверами приложений действительно засада.
Ещё из интересных питононовских фреймворков мне очень нравится Twisted (http://twistedmatrix.com/products/twisted), хотя конечно это не для веб приложений, а для написания обычных сетевых приложений. Кстати ещё исходники Twisted очень удобны в качестве справочника по какому-либо протоколу (Telnet, IRC и т.д.) - очень легко читаются исходники. Лепота... :)
> а zope -- это вещь в себе, освоить ее не так просто (по сравнению с примитивными шаблонными системами), но пока не освоишь лучше о своих соображниях насчет zope помалкивать.
Дело в том что я всё таки более-менее знаком с Zope и почитал по нему немало различных док, хотя Zope Book прочитал только частично. Так что я уверенно могу говорить что понимаю идеологию Zope и мне она нравится. Конечно я ещё не знаю всех возможностей DTML и ZPT, но представление о них имею. Кстати, а что ты думаешь о Zope?
>обычный python CGI поддерживает практически любой UNIX хостер
Вот именно что "практически". Иногда бывает, что на вопрос "а у вас Python есть?" отвечают что-нибудь вроде "кажется есть, но мы вам его всё равно не дадим. PHP пользуйтесь". Хорошо, если заказчик ещё не снюхался с такими клёвыми пацанами, а если уже снюхался, то всё, каюк. Приходится работать с тем, что дают. Слава б-гу, там где дают PHP, там и Perl есть.
я zope смотрел довольно давно, и по трезвом размышлении пришел к выводу что к моим скромным задачам скорее подходят более простые фреймворки, где-то хватает cgi, где-то использую cherrypy.
из впечатлений о zope (и списках рассылки по zope) осталось ощущениние что там очень легко придумать себе дополнительные сложности, как например попытки записи нетривиальных вещей в одну строку внутри шаблонов. и видимо в этом есть доля истины, поскольку третью версию насколько я понимаю переписали с нуля с несколько другими идеями и принципами организации системы.
в первом комменте я имел в виду прежде всего тех кто не знаком достаточно с zope, но полагает что zope -- отстой, потому что "оно большое и на питоне, значит тормоз"
Все-таки чтобы говорить о ZOPE - ее надо хорошо понать и выучить - тогда станут сразу видны эти преимущества - это как деталь - можно и напильником выточить за нескодько дней - а можно и на станке за 5 мин
Когда умеешь пользоваться инструментом - тогда только видишь его преимущества!
Twisted рулит. Я на twisted сделал ICQ-бота для домашнего глухо зафаерволенного на вход компа, который может в какой-то степени выполнять функции ssh-шелла, минут за 30 включая установку самого фреймворка и чтение руководства.
> я zope смотрел довольно давно, и по трезвом размышлении пришел к выводу что к моим скромным задачам скорее подходят более простые фреймворки, где-то хватает cgi, где-то использую cherrypy.