LINUX.ORG.RU

Предварительный релиз Python 2.5


0

0

Вышла бета-версия Python 2.5.
Новое в языке:

  • однострочные условные выражения (аналог X?Y:Z, PEP 308)
  • новый оператор with (PEP 343)
  • генераторы превратились в полноценные сопрограммы (coroutines, PEP 342)
Новые модули в стандартной библиотеке:
  • ctypes (прямой вызов Си-функций из .so и .dll)
  • ElementTree (упрощённая работа с XML)
  • wsgiref (стандартный интерфейс между веб-приложением и веб-сервером)
  • hashlib, sqlite3

Многочисленные оптимизации, в т.ч. операции со строками ускорены на 30% (http://wiki.python.org/moin/NeedForSp...)

Полный список изменений: http://docs.python.org/dev/whatsnew/w...

Скачать: http://www.python.org/ftp/python/2.5/

>>> Подробности

Ответ на: комментарий от mihalych

>А проектов всегда хватало:

Пардон, про webmin из головы вылетело. Но, во-первых, это динозавр :) Во-вторых - следом идут не крупные проекты, а продукты "уровня тулзы" - всевозможные mrtg, awstats и т.п.

Новых проектов такого уровня давно нет.

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

Да, на Perl можно писать большие проекты. Но - неудобно.

Не расчитан он на это.

# find /usr/libexec/webmin -name '*.pl'|wc -l
895

И это - один из самых крупных, наверное, проектов...

А, ведь даже
# find /usr/share/webapps/mediawiki/ -name '*.php'|wc -l
1016

# find /usr/share/webapps/phpmyadmin/ -name '*.php'|wc -l
1263

Скажешь, что PHP - для неучей и ламеров - так дай ссылки на Perl-CMS уровня Mediawiki хотя бы.

Даже написанная мною "в одно рыло"
# find /var/www/bal.aviaport.ru/htdocs/cms -name '*.php'|wc -l
625

При чём PHP изначально был выбран мною только из-за того, что в момент выбора mysql-запросы в PHP выполнялись в 9(!) раз быстрее, чем на Perl/DBI. И это не смотря на то, что в то время я как раз интенсивно программировал на Perl а PHP не знал вообще.

А вот проект из другого лагеря, написанный по большому счёту, командой дилетантов:

$ find ~/work/L2J_Fortress/ -name '*.java'|wc -l
2569

Дай ссылку на проект такого уровня на Перле. Который бы был написан с нуля за полтора года десятком программистов среднего уровня :)

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

> При чём PHP изначально был выбран мною только из-за того, что в момент выбора mysql-запросы в PHP выполнялись в 9(!) раз быстрее, чем на Perl/DBI. И это не смотря на то, что в то время я как раз интенсивно программировал на Perl а PHP не знал вообще. Это был какой-то баг, судя по всему. Я использую ровно одну тулзу на Си (Pro*C) для быстрой выгрузки данных из базы, на Perl'е в лоб работает медленнее.

> Да, на Perl можно писать большие проекты. Но - неудобно.

Да нормально, в общем-то. (один внутренний проект)

$ wc -l `find -name '*.pl' `

18618 total

Casus ★★★★★
()
Ответ на: комментарий от Casus

> $ wc -l `find -name '*.pl' `

> 18618 total

> $ find ~/work/L2J_Fortress/ -name '*.java'|wc -l

> 2569

Однако, от перестановки мест операндов сумма изменилась, причём не кисло. :-)

P.S. Тебе посчитали файлы. А ты посчитал строки :-)

redvasily
()
Ответ на: комментарий от redvasily

>Тебе посчитали файлы. А ты посчитал строки :-)

Да нет, вроде, те же файлы.

Но всё равно вопрос об открытых проектах на Perl, сопоставимых с массовыми проектами на PHP или Java остаётся открытым :)

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

А ты проверь :-)

Таки строки. Так что вопрос об открытых проектах на Перл не просто остаётся открытым, но и встаёт ещё более остро чем казалось :-)

redvasily
()
Ответ на: комментарий от KRoN73

Доказывать красоту и удобство Perl человеку его незнающему, всё равно, что доказывать красоту классической музыки неимеющему слух или любящему лишь попсу. Как (а главное зачем) объяснить, что Бах - это божественно? :)

mihalych ★★★
()
Ответ на: комментарий от redvasily

> P.S. Тебе посчитали файлы. А ты посчитал строки :-)

Я знаю. я просто не понимаю прикола считать файлы. Сравнивать строки на Perl со строками на Java, впрочем, тоже не понимаю.

Casus ★★★★★
()
Ответ на: комментарий от mihalych

>Доказывать красоту и удобство Perl человеку его незнающему

А где ты тут видишь человека, не знающего Perl?

KRoN73 ★★★★★
()
Ответ на: комментарий от Casus

> 18618 total
...
>Я знаю. я просто не понимаю прикола считать файлы.

Хм. Ну, тогда так:
# wc -l `find -name '*.php'`
...
57511 итого

# wc -l `find -name '*.java'`
...
142636 итого

Это для CMS и L2J, соответственно.

Действительно, цифры другие выходят ;)

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

> Дай ссылку на проект такого уровня на Перле.

Мерять надо по функционалу. Ну или хотя бы по количеству строк. Всем известно, что проекты на PHP и Java содержат большое количество маленьких файликов.

Кстати, есть полноценный аналог Bugzilla на PHP?

Skull ★★★★★
()
Ответ на: комментарий от KRoN73

> Действительно, цифры другие выходят ;)

Извини, но это бред. Одна строка на Perl не соответствует одной строке на PHP/Java практически никогда. Точнее, можно добиться, если на Perl писать как на PHP|Java, но это будет тем ещё уродством. Приведи пример на Java:

my @cards = sort {$b->get_card <=> $a->get_card} @{$self->{Cards}};

Ну и так далее. (я могу много привести подобных моментов). В Perl есть _много_ мелочей, которые позволяют писать код короче и понятнее [чем на PHP/Java]. Не могу сказать про Python, не знаю его.

Casus ★★★★★
()
Ответ на: комментарий от Skull

>Кстати, есть полноценный аналог Bugzilla на PHP?

Полно разных :)

Правда, я предпочитаю Trac на Питоне, хотя это не совсем то.

KRoN73 ★★★★★
()
Ответ на: комментарий от Casus

>Извини, но это бред. Одна строка на Perl не соответствует одной строке на PHP/Java

А про строки - это не я начал. Просто в ответ на мои примеры с числом файлов ответили примером с числом строк.

Как ещё сравнивать тёплое с мягким - не знаю :)

>my @cards = sort {$b->get_card <=> $a->get_card} @{$self->{Cards}};

А за такие вещи - нужно от программирования отлучать. Ибо через год ты сам будешь в коде таком путаться.

Есть элементарная культура программирования.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

> А за такие вещи - нужно от программирования отлучать.

А? А за использование STL в С++ может тогда кастрировать? Приведённый код _читабельный_. Более того, в реальном проекте всё прокомментировано. И, да, у меня есть проекты, которые приходится делать/сопровождать годами, и, как показывает практика, не путаюсь. А вот если расписать на отдельную функцию сравнения, да убрать её из экранной области видимости, тогда может стать и не читабельно, да.

В общем, как можно заметить, я не противник Python, я просто не понимаю его "прелестей", в сравнении с Perl, применительно к моим задачам. И какие-то суперпроекты, которые сделаны на Python, меня не впечатляют. Есть подозрение, что Python выбран как язык, который даёт меньше возможностей "прострелить себе ногу".

Casus ★★★★★
()
Ответ на: комментарий от Casus

>Есть подозрение, что Python выбран как язык, который даёт меньше возможностей "прострелить себе ногу".

Можно тогда поинтересоваться, почему ты предпочитаешь Перл а не, скажем, Ассемблер или даже Форт? :) Кстати, могу порекламировать мой JBForth. Работает, где-то, раз в 7 быстрее Перла, при этом несравнимо гибче и имеет доступ к методам JVM :)

KRoN73 ★★★★★
()
Ответ на: комментарий от Casus

>> my @cards = sort {$b->get_card <=> $a->get_card} @{$self->{Cards}};

>> Ну и так далее. (я могу много привести подобных моментов). В Perl есть _много_ мелочей, которые позволяют писать код короче и понятнее [чем на PHP/Java]. Не могу сказать про Python, не знаю его.

если это сортировка по ключу (насколько я понял), то на питоне это будет выглядеть так:

cards_by_key = sorted(self.cards, key=lambda a: a.get_card())

а если точно известно что все элементы списка -- объекты класса Card, то короче:

cards_by_key = sorted(self.cards, key=Card.get_card)

anonymous
()
Ответ на: комментарий от Casus

> Приведённый код _читабельный_

ну да, при известной привычке к идиомам языка.

после питона первое впечатление от чтения кода на перле -- очень много "синтаксического шума"

но лучше уж шум, чем бесконечные повторения ДлинныхСлов на яве

anonymous
()
Ответ на: комментарий от anonymous

> а если точно известно что все элементы списка -- объекты класса Card, то короче:
> cards_by_key = sorted(self.cards, key=Card.get_card)

Поскольку я подозревал, что в Python есть что-то подобное, то кивал в сторону PHP/Java,
которые были приведены как подходящие для "больших проектов" языки, и что с ними
сравнение сложности проектов построчно просто некорректно.

В Python мне в _первую_ очередь не нравится отсутствие специального синтаксиса для regexp. И отсутствие очевидных преимуществ перед Perl.
"Куча проектов на Python" для меня не очевидное преимущество.

Casus ★★★★★
()
Ответ на: комментарий от KRoN73

> Можно тогда поинтересоваться, почему ты предпочитаешь Перл а не, скажем, Ассемблер или даже Форт? :)

Исторически сложилось, что мне достаточно Perl + (C|C++) + (Oracle|MySQL). Когда мне надо "стрелять в ногу" -- я стреляю :) По поводу форта -- зачем он реально может быть мне нужен? JVM/платформонезависимость мне не нужны, мои задачи всегда конкретны, вплоть до того, что могу сказать на какой версии апача должно всё работать. Когда мне нужна независимость от платформы, то клиентское приложение будет работать или через браузер, или Flash, или ещё на чём-то. Но Java, Fort -- зачем они?...

Casus ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.