URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 60651
[ Назад ]

Исходное сообщение
"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."

Отправлено opennews , 07-Ноя-09 10:52 
В сети все больше появляется пророчеств о скором забвении языка Perl и выдвижения таких языков как Python, PHP и Ruby в качестве современных решений. Чтобы опровергнуть данное мнение, ресурс Royal Pingdom
опубликовал (http://royal.pingdom.com/2009/11/06/perl-far-from-dead-more-.../) подборку крупнейших web-проектов, использующих для обеспечения своей работы язык Perl: Amazon.com, Livejournal.com, IMDB.com, Slashdot.org, Typepad.com, Guardian.co.uk, Salon.com, Ticketmaster.com, theregister.co.uk, BBC.co.uk. Из популярных инструментариев на Perl приводятся Bugzilla (http://www.bugzilla.org/), Catalyst (http://www.catalystframework.org/), Mason (http://www.masonhq.com/), SpamAssassin (http://spamassassin.apache.org/), Movable Type (http://www.movabletype.com/).


URL: http://royal.pingdom.com/2009/11/06/perl-far-from-dead-more-.../
Новость: http://www.opennet.me/opennews/art.shtml?num=24152


Содержание

Сообщения в этом обсуждении
"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено ffsdmad , 07-Ноя-09 10:52 
Скоро их админы и вебмастера вымрут или выйдут на пенсию или пересядут на python
и тогда не кому будет заниматься ведь и тогда же многие их программы будут нечитаемы
наверно perl тот самый язык, который умрёт с последним носителем этого языка
:)

"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Гога , 07-Ноя-09 11:23 
>Скоро их админы и вебмастера вымрут или выйдут на пенсию или пересядут
>на python
>и тогда не кому будет заниматься ведь и тогда же многие их
>программы будут нечитаемы
>наверно perl тот самый язык, который умрёт с последним носителем этого языка
>
>:)

Код на Perl кажется сложным только определенным группам людей, но никто не виноват, что у них именно такой IQ, какой есть.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено trdm , 07-Ноя-09 12:10 
>но никто не виноват, что у них именно такой IQ, какой есть.

кроме их самих, ибо IQ отлично тренируется.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено An , 07-Ноя-09 19:54 
>кроме их самих, ибо IQ отлично тренируется.

Тренируется не IQ, тренируется интеллект.

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

По поводу Перла. Да, чтобы писать на Перле обычно требуется особый склад интеллекта. Однако, чтобы создавать языки, которые могут использовать в нужное время и в нужном месте люди с интеллектом, таким же, как у большинства, для этого требуется еще более редкий склад интеллекта. Остальным приходится только ходить на этот склад, вооружившись IQ.

Кто-то ищет идеальный язык. Кто-то может пользоваться разными языками одновременно. А кто-то вообще умеет создавать нужные ему языки и не дожидаться, когда их одругие оценят или померяют их IQ.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Sphynkx , 08-Ноя-09 13:03 
>А IQ обычно нужен тем, кто испытывает постоянные комплексы по поводу собственного
>интеллекта. И поскольку понимание, что вообще такое интеллект, от этих людей
>обычно постоянно ускользает, для них и был придуман IQ, чтобы их
>хоть как-то успокоить и вселить им надежду, что интеллект можно измерить
>по линейной шкале. И чтобы им было за что бороться и
>что тренировать.

Абсолютно согласен с определением.
Судя по различным тестам и проверялкам, IQ отражает в большей степени развитость образного мышления и интеллектом в этих тестах и не пахнет. Разработчики этих тестов действительно плохо представляют себе что такое интеллект и вообще, каково это - иметь интеллект ;-)) Точно также, как и с бытующим мнением, об умности в следствии прочтения кучи книжек (прочитай всю Донцову и станешь умным!! =)) )

ЗЫ: "Прошел тест IQ - результат отрицательный..." - старая шутка ;-))


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Аноним , 07-Ноя-09 13:13 
Не обязательно iq, есть же еще -
Люди с гумманитарным складом ума,
Домохозяйки,
Пионеры,
Альтернативно одаренные

"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено аноним , 07-Ноя-09 13:18 
>Не обязательно iq, есть же еще -
>Люди с гумманитарным складом ума,
>Домохозяйки,
>Пионеры,
>Альтернативно одаренные

А вот у Ларри Уолл лингвист по образованию


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено аннон , 07-Ноя-09 22:10 
Лингвистам такой матан читают, что Вам и не снилось ;-)
RTFM

"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Name , 07-Ноя-09 15:56 
>>Скоро их админы и вебмастера вымрут или выйдут на пенсию или пересядут
>>на python
>>и тогда не кому будет заниматься ведь и тогда же многие их
>>программы будут нечитаемы
>>наверно perl тот самый язык, который умрёт с последним носителем этого языка
>>
>>:)
>
>Код на Perl кажется сложным только определенным группам людей, но никто не
>виноват, что у них именно такой IQ, какой есть.

Код на Perl не кажется сложным только определенным группам людей, которые пишут скрипты в которых сами не могут спустя пол-месяца разобраться, и при этом испытавают чуство глубокого удовлетворения от собственной умности и крутости, поскольку остальным без мата и ночного бдения, понять чего наваял такой "мастер" не возможно.  

Perl! Сделай простое сложным! И пускай весь мир матерится.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено docent , 07-Ноя-09 16:36 
Ты хочешь сказать что питон лучше?
Я вообще не могу понять, как может быть язык программирования, у которого блоки определяются количеством пробелов от начала строки.
Я как-то скопировал с сайта кусок питоновской проги, а потом долго разбирался в алгоритме, что бы правильно расставить пробелы.

"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Name , 07-Ноя-09 16:43 
>Ты хочешь сказать что питон лучше?

Я не "хочу сказать", я уже сказал.

>Я вообще не могу понять, как может быть язык программирования, у которого блоки >определяются количеством пробелов от начала строки.

Обычно с этого начинается, и этим же заканчивается вся критика языка python.
На такую критику всегда отвечают односложно: это предохранитель от нечитабельного кода,
не правильно оформленый код не выполняется.

>Я как-то скопировал с сайта кусок питоновской проги, а потом долго разбирался в алгоритме, >что бы правильно расставить пробелы.

Вы просто не владеете этим языком.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Дмитрий Ю. Карпов , 07-Ноя-09 20:18 
Существуют редакторы с возможностью автоматического правильного форматирования. Например, BBC-basic. Никто не мешает написать программу форматирования Perl-программ.

"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Аноним , 07-Ноя-09 21:29 
давно написан perltidy - замечательный форматер с кучей настроек.

"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено darkk , 08-Ноя-09 10:49 
Ну как бы была новость недавно, что perl не может быть статически проанализирован ввиду особенностей своей «грамматики». =)

"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено dq0s4y71 , 08-Ноя-09 02:18 
>>Я вообще не могу понять, как может быть язык программирования, у которого блоки >определяются количеством пробелов от начала строки.
>
>Обычно с этого начинается, и этим же заканчивается вся критика языка python.
>
>На такую критику всегда отвечают односложно: это предохранитель от нечитабельного кода,
>не правильно оформленый код не выполняется.
>

Чушь. Читабельный код - это код, в котором ПОНЯТНО, ЧТО ОН ДЕЛАЕТ, а не тот, где красиво расставлены табуляции. Можно и на Питоне писать нечитабельный код, и на Перле - вполне даже ничего. Более того, такой "предохранитель" может создать реальный геморрой. Запостил, например, кто-то кусок кода на сайте, где не поддерживается форматирование и кирдык, вы его не скомпилите даже если это ПРАВИЛЬНЫЙ код! Это же просто абсурд! Такой подход хорош в отношении к школьникам - кода лучше пусть правильный скрипт не запустится, чем запустится неправильный. Но для профессионала, который знает что делает, и у которого нет времени расставлять пробелы, а надо работать и кормить семью, такое неприемлемо.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Sphynkx , 08-Ноя-09 11:59 
>Я как-то скопировал с сайта кусок питоновской проги, а потом долго разбирался
>в алгоритме, что бы правильно расставить пробелы.

Объективности ради надо отметить, что пробельные символы - точно такие же символы, как и "{","}" к примеру. Так уж получилось, что в HTML-разметке (если не использовать теги <pre></pre>) пробельные символы могут автоматом преобразовываться. Если б к примеру фигурные скобки использовались в HTML-стандарте, либо тоже - "внезапно!!" преобразовывались, допустим, в круглые Х-)) Были бы проблемы и у Перла, и С и мн.др. языков. К слову, из той же серии: в ЖЖ есть проблемы с вводом угловых скобок - приходится вводить в виде кодов, иначе ругается...
Так что Ваши проблемы со скопированным кодом - следствие безалаберности опубликовавшего этот код. Хотя по большому счету, наверное всем питонщикам стало бы несравненно легче, если б в Питоне все же ушли от разметки блоков пробелами. Ну так уж получилось, что к пробелам сложилось меньше уважения - меняют табы на пробелы, сокращают пробелы итп ;-)) Все же было бы правильным считаться с уже сложившейся практикой.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Сергей , 07-Ноя-09 17:58 
> Код на Perl не кажется сложным только определенным группам людей, которые пишут скрипты в
> которых сами не могут спустя пол-месяца разобраться, и при этом испытавают чуство
> глубокого удовлетворения от собственной умности и крутости, поскольку остальным без
> мата и ночного бдения, понять чего наваял такой "мастер" не возможно.

Я работаю с перлом уже почти 10 лет, и никто из моих коллег никогда подобных глупостей не говорил.
Могу предположить, что вы не осилили даже прочитать perldoc и из всего богатства синтаксиса языка знаете только малюсенькое подмножество, эквивалентное синтаксису C - ну так вы просто неквалифицированный программист и это только ваша проблема. Либо учите язык, либо не пишите на Perl, это относится к абсолютно любому ЯП.
А Perl позволяет писать удивительно понятный, и при компактный код.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Name , 07-Ноя-09 18:26 
>Могу предположить, что вы не осилили даже прочитать perldoc и из всего богатства синтаксиса языка знаете только малюсенькое подмножество, эквивалентное синтаксису C - ну так вы просто неквалифицированный программист и это только ваша проблема.

Я вообще не программист --- сисадмин.  Документацию по perl естественно читал, ровно тогда когда изучал perl  --- на гране веков, с тех пор это все тотже perl5, и кстати ваше "малюсенькое подмножество эквивалентное языку С", говорит лишь о том что вы с С плохо знакомы, и это ваша проблема, и вашей квалификации, впрочем:

>Я работаю с перлом уже почти 10 лет

уже о многом говорит.

> Либо учите язык, либо не пишите на Perl, это относится к абсолютно любому ЯП.
>А Perl позволяет писать удивительно понятный, и при компактный код.

Позволять то позволяет (писать понятный код), но вот в то время когда я его изучал помнится был на подписку оформлен где пара детективов лабала однострочники на перле. И склоность у перлистов к такому сокращенному коду определенно есть что-нибудь из серии: "There's more than one way to do it" постоянно выкинут.  


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено аноним , 08-Ноя-09 00:20 
> Я вообще не программист --- сисадмин.  Документацию по perl естественно читал, ровно
> тогда когда изучал perl  --- на гране веков, с тех пор это все тотже perl5, и кстати
> ваше "малюсенькое подмножество эквивалентное языку С", говорит лишь о том что вы с С
> плохо знакомы, и это ваша проблема, и вашей квалификации

Да что вы? С C я работаю еще дольше, что-то конкретное у вас будет, или, как обычно, анонимный пук? Насчет синтаксиса, я в свое время пасал ansi-совместимый парсер C, так что о чем говорю знаю.

> уже о многом говорит.

И о чем же?

> Позволять то позволяет (писать понятный код), но вот в то время когда я его изучал
> помнится был на подписку оформлен где пара детективов лабала однострочники на перле.
> И склоность у перлистов к такому сокращенному коду определенно есть что-нибудь из серии:
> "There's more than one way to do it" постоянно выкинут.  

Вы для начала русский осильте. И склонность ... постоянно викинут, бгыгы.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Name , 08-Ноя-09 11:13 
>Да что вы? С C я работаю еще дольше, что-то конкретное у вас будет, или, как обычно, анонимный пук?

Конкретное? $aptitude search dev | wc -l  Процентов 60 это библиотеки на C. Нехилое такое подмножество, правда?


>Насчет синтаксиса, я в свое время пасал ansi-совместимый парсер C, так что о чем говорю знаю.

И как? НапАсли? Код взглянуть можно?


>Вы для начала русский осильте.

Что-то смущает?

>И склонность ... постоянно викинут, бгыгы.

Какие замечательные русские слова: "викинут" "бгыгы".


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено аноним , 08-Ноя-09 23:10 
> Конкретное? $aptitude search dev | wc -l  Процентов 60 это библиотеки на C. Нехилое такое подмножество, правда?

Что это? Вы вообще читаете, на что отвечаете? Что вы несете? Начнем с начала: я утверждаю, что если вы не понимаете, что написано на perl, причиною тому - банально ваше незнание языка. На это вы мне говорите что я не знаю C. Уже хорошо. Далее, я предлагаю вам показать конкретный непонятный, по вашему мнению, модуль, вы мне тычете каким-то aptitude. Извините, не имею опыта общения с "альтернативно одаренными". Попробуйте сформулировать конкретные претензии к языку и привести примеры реального кода, который не осилили, тогда будет о чем говорить. Пока все ваши высказывания можно заменить на "я не умею". Ну не умеете, дальше-то что?


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Ну типа имя , 10-Ноя-09 09:31 
>> Конкретное? $aptitude search dev | wc -l  Процентов 60 это библиотеки на C. Нехилое такое подмножество, правда?
>
>Что это? Вы вообще читаете, на что отвечаете?

Эта такая команда в Linux, конкретнее в Debian-based дистрибутивах, если вы этого не понимаете, то не читайте мне лекции по perl.

> Что вы несете? Начнем
>с начала: я утверждаю, что если вы не понимаете, что написано
>на perl, причиною тому - банально ваше незнание языка.

Я знаю perl.

> На это
>вы мне говорите что я не знаю C. Уже хорошо. Далее,
>я предлагаю вам показать конкретный непонятный, по вашему мнению, модуль, вы
>мне тычете каким-то aptitude.

Да, которая показывает примерно 3000 библиотек разработчика под C, и каждая со своими типами данных, своими функциями и своим синтаксисом. Если вы писали на C код для GTK или модуль ядра, у вас таки вопросов бы не возникло.  

>Извините, не имею опыта общения с "альтернативно
>одаренными". Попробуйте сформулировать конкретные претензии к языку и привести примеры реального кода, который не осилили, тогда будет о чем говорить. Пока все ваши  сказывания можно заменить на "я не умею". Ну не умеете, дальше-то что?

Однострочник на perl делающий rm -f отправил в даун не один компьютер людей разбирающихся в perl.



"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Добрый Дохтур , 07-Ноя-09 23:04 
>А Perl позволяет писать удивительно понятный, и при компактный код.

расскажите про многопоточное программирование на perl.
Сможете ли вы по памяти вспомнить, что из используемых в конкретном скрипте модулей CPAN потокобезопасными? Как там с передачей данных между потоками, обработкой исключений и переносимостью этого всего между различными ОС?

Ах, да... Что в перл с пулами подключений к БД?
Есть ли единообразный API для доступа к СУБД, есть ли ORM?

Насколько сложно интегрировать C/C++ с perl?


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено аноним , 08-Ноя-09 00:54 
Извините, на один любой вопрос я бы еще ответил, но на все - тут вам не школа.

Многопоточное программирование есть и замечательно работает, и мало чем отличается от оного в C, с точки зрения обработки исключений в том числе; работает во всех системах, где есть posix-совместимые потоки, из своего опыта могу сказать что во FreeBSD, Linux и Solaris все работает одинаково.

>Ах, да... Что в перл с пулами подключений к БД? Есть ли единообразный API для доступа к СУБД, есть ли ORM?

Ну это уж совсем детские вопросы. Скажите честно, зачем вам? Вы на perl, судя по всему, ничего не писали и не собираетесь. А если собираетесь, есть более вменяемые источники документации. Keywords: DBI, DBIx::Class, Class::DBI, Rose::DB:Object, SPOPS, Tangram, mod_perl, Apache::DBI.

> Насколько сложно интегрировать C/C++ с perl?

Посмотрите любой биндинг к C/C++ библиотеке, вопросы отпадут. Я, честно, ничего более удобного не видел.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Добрый Дохтур , 08-Ноя-09 02:40 
>Многопоточное программирование есть и замечательно работает, и мало чем отличается от оного
>в C, с точки зрения обработки исключений в том числе; работает
>во всех системах, где есть posix-совместимые потоки, из своего опыта могу
>сказать что во FreeBSD, Linux и Solaris все работает одинаково.

А Windows/Symbian?

Мои скрипты на python одинаково работают на Linux/Solaris/Windows без единой правки под конкретную платформу и хаков внутри скрипта.

Можете показать простейшую многопоточную вещь на perl, где главный поток кормит job'ми пул потоков?


>Ну это уж совсем детские вопросы. Скажите честно, зачем вам? Вы на
>perl, судя по всему, ничего не писали и не собираетесь.

к сожалению, иногда приходится писать =(


>если собираетесь, есть более вменяемые источники документации. Keywords: DBI, DBIx::Class, Class::DBI,
>Rose::DB:Object, SPOPS, Tangram, mod_perl, Apache::DBI.

за кейворды - спасибо. но что тут делает mod_perl? А как дела с использованием одного пула соединений к БД из разных потоков?


>> Насколько сложно интегрировать C/C++ с perl?
>Посмотрите любой биндинг к C/C++ библиотеке, вопросы отпадут. Я, честно, ничего более
>удобного не видел.

Ба!

$ cat c_source.c
#include <stdio.h>
#include <string.h>


unsigned int ELFHash (char *str, unsigned int len)
{
        unsigned int hash = 0;
        unsigned int x = 0;

        for (unsigned int i = 0; i < len; str++, i++) {
                hash = (hash << 4) + (unsigned char)(*str);
                if ((x = hash & 0xF0000000L) != 0) {
                        hash ^= (x >> 24);
                        hash &= ~x;
                }
        }
        return hash;
}

$ gcc -O2 -shared -fPIC c_source.c -o hashes.so

$ cat ctypes_demo.py
#!/usr/bin/python
import os,sys
from ctypes import *

chash=CDLL("./hashes.so")
chash.ELFHash.restype=c_uint
line='test of hash functions'
print chash.RSHash(line,len(line))

$ ./ctypes_demo.py
1493074318

Айда показать такое же? Особенно на windows.
Ну и тяжелая артиллерия: http://tilarids.blogspot.com/2008/08/boost-python.html


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено аноним , 08-Ноя-09 23:40 
>А Windows/Symbian?

Не знаю. Попробуйте, расскажете.

>Мои скрипты на python одинаково работают на Linux/Solaris/Windows без единой правки под
>конкретную платформу и хаков внутри скрипта.

А на Perl, надо думать, приходится переписывать чуть более чем все. Думайте все-таки что пишете иногда.

>Можете показать простейшую многопоточную вещь на perl, где главный поток кормит job'ми
>пул потоков?

Thread::Pool::Simple

>за кейворды - спасибо. но что тут делает mod_perl?

Потому что Apache:: это чуть более чем полностью mod_perl.

>А как дела с использованием одного пула соединений к БД из разных потоков?

А в чем проблема?

>>Посмотрите любой биндинг к C/C++ библиотеке, вопросы отпадут. Я, честно, ничего более
>>удобного не видел.
>
>Ба!

Мы таки с питоном сравниваем, или просвещаем вас, неразумного, что в Perl все что вам может понадобиться есть, и намного больше? Если первое, то это не ко мне, этим занимайтесь с такими же закомплексованными пиписькомерами. Если второе, начните хотя бы с Inline::C, XSLoader и perdldoc perlembed. "Тяжелая артиллерия", боже...


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено dq0s4y71 , 08-Ноя-09 01:32 
>расскажите про многопоточное программирование на perl.
>...

А еще он кофе варить не умеет. Ё-моё! Ребят, да что вы в самом деле! Одному ООП на Перле подавай, другому - многопоточное программирование, третьему - чтоб сборщик мусора был, а четвертому кнопки на формочку лепить надо... Для всего этого есть специализированные языки/среды разработки. А Перл прежде всего _обработчик_текстов_. И в этом ему, возможно, нет равных.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Добрый Дохтур , 08-Ноя-09 03:04 
>>расскажите про многопоточное программирование на perl.
>>...
>
>А еще он кофе варить не умеет. Ё-моё! Ребят, да что вы
>в самом деле! Одному ООП на Перле подавай, другому - многопоточное
>программирование, третьему - чтоб сборщик мусора был, а четвертому кнопки на
>формочку лепить надо... Для всего этого есть специализированные языки/среды разработки. А
>Перл прежде всего _обработчик_текстов_. И в этом ему, возможно, нет равных.
>

нивапрос. задача: каталог, где лежат ~ 20тыс текстовых файлов. каждый файл - это 4-6 тыс строк, в основном с числами(на самом деле - это записи о вызовах: дата+время начала, номер A, номер B, длительность и ещё кое-какая служебная информация)

Ещё у вас есть на входе отдельный файл с шаблонами для поиска вида:

79132345432;79122345576;GOLD
79463468568;79157457458;BEEL

[и так строк 60]

т.е. по факту это набор регекспов. для тех, что на одной строке выполняется логическое "И".
Собрать строку в одно выражение нельзя - неизвестно, в какой последовательности это может встретиться.

задача проста: найди за один проход все подходящее под шаблоны и как можно быстрее.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено аноним , 08-Ноя-09 10:39 
открываем файл, читаем построчно и сравниваем с шаблонами.
в питоне это можно сделать как-то быстрее?

"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Добрый Дохтур , 08-Ноя-09 18:37 
>открываем файл, читаем построчно и сравниваем с шаблонами.
>в питоне это можно сделать как-то быстрее?

объявляем функцию, выполняющую интересующие нас действия над файлом и принимающую в кач-ве аргумента имя файла и список регулярок.
функция возвращает результат.

создаём пул из N-воркеров, читаем список файлов в интересующем нас каталоге, оставляем только файлы.
Говорим, что пул будет исполнять нашу функцию, в кач-ве списка аргументов - список файлов.
получаем результат работы в виде списка.

Воркеры могут быть не только на этой машине, но и на других(т.е. если есть некая сетевая фс, доступная на всех хостах - вообще сказка).

Народ так делает собственные имплементации Map/Reduce(когда использовать вещи вроде Hadoop/Disco - из пушки по воробьям).


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено анонимный аналитик , 09-Ноя-09 15:30 
Анонимные аналитики с ЛОРа сомневаются, что многопоточное чтение файлов, лежащих на одном физическом носителе с большим временем доступа (HDD), которые еще не закэшированы операционной системой в оперативную память, будет работать быстрее, чем последовательное чтение этих же файлов из одного потока. Объясните анонимным аналитикам с ЛОРА, зачем решать IO-bound задачу методами, которые подходят для решения CPU-bound задач?

"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Добрый Дохтур , 10-Ноя-09 17:33 
>Анонимные аналитики с ЛОРа сомневаются, что многопоточное чтение файлов, лежащих на одном
>физическом носителе с большим временем доступа (HDD)

идите в пень, друзья ЛОРовские. Там FC до EMC Symmetrix.

$ time dd if=/dev/zero of=testfile bs=4M count=512
512+0 records in
512+0 records out

real    0m7.528s
user    0m0.001s
sys     0m4.657s

, которые еще не закэшированы
>операционной системой в оперативную память, будет работать быстрее, чем последовательное чтение
>этих же файлов из одного потока. Объясните анонимным аналитикам с ЛОРА,
>зачем решать IO-bound задачу методами, которые подходят для решения CPU-bound задач?

потому что задача именно cpu-bound.
Даже на одном SATA-диске я ускорился почти в 2 раза(ибо dualcore).

Лучше бы анонимные аналитики с лора продемонстрировали перловый код с поиском по набору регекспов и утилизирующий несколько cpu.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено аноним , 08-Ноя-09 12:05 
есть желания помериться пиписьками? выложите ваши файлы в которых нужно искать и какой-нить файл с шаблонами.

а пока, покажите, плз, как будет выглядеть аналогичная программа на питоне, только не куском сюда кода, а полностью, что бы я мог выделить мышкой, скопировать, вставить в файл и у меня сразу заработало, без мозгового штурма.

#!/usr/bin/perl -w

my $s = ';lks5fl\ncs043sff';
$s =~ /^\D+(\d+)\D+(\d+)\D+$/;
print $1*$2."\n" if defined $1 and defined $2;

exit;


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Добрый Дохтур , 08-Ноя-09 17:43 
>#!/usr/bin/perl -w
>
>my $s = ';lks5fl\ncs043sff';
>$s =~ /^\D+(\d+)\D+(\d+)\D+$/;
>print $1*$2."\n" if defined $1 and defined $2;
>
>exit;

тююю....

#!/usr/bin/python
import re
s = ';lks5fl\ncs043sff'
exp=re.compile('^\D+(\d+)\D+(\d+)\D+$')
print reduce(lambda x,y:int(x)*int(y), filter(lambda x: len(x)>0 ,exp.split(s)))

А теперь покажите ваш вариант для произвольного количества чисел в строке :)


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено аноним , 08-Ноя-09 19:34 
>А теперь покажите ваш вариант для произвольного количества чисел в строке :)

#!/usr/bin/perl -w

my $s = ';l9348ks5fl\n414cs043sf68f';
my $r = '';
while ($s =~ /(.)/g){
    $c = $1;
    if ($c =~ /\d/){ $r .= $c
    }else{
        if ($r ne ''){
            print "$r\n"; $r='';
        }
    }
}

exit;



"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Добрый Дохтур , 08-Ноя-09 20:12 
#!/usr/bin/python
import re
s = ';l9348ks5fl\n414cs043sf68f'
exp=re.compile('\D+')
print filter(lambda x: len(x)>0 ,exp.split(s))
print reduce(lambda x,y:int(x)*int(y), filter(lambda x: len(x)>0 ,exp.split(s)))

только вы перемножить забыли. как видите, мой вариант короче, понятней и быстрее(т.к. регулярок у вас 2 и в процессе выполнения они каждый раз будут компилироваться).


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Денис , 08-Ноя-09 20:52 
#!/usr/bin/perl -w
my $s  = ';l9348ks5fl\n414cs043sf68f';
my $rc = 1;
foreach ( split( /\D+/, $s ) ) {
    $rc *= $_ if length $_ > 0;
}
print $rc;

Очевидно, такой код читается куда легче, хотя и не использует новомодных map/reduce, которые хотя и полезны, но не всегда :)


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Добрый Дохтур , 08-Ноя-09 21:33 
>#!/usr/bin/perl -w
>my $s  = ';l9348ks5fl\n414cs043sf68f';
>my $rc = 1;
>foreach ( split( /\D+/, $s ) ) {
>    $rc *= $_ if length $_ > 0;
>}
>print $rc;
>
>Очевидно, такой код читается куда легче, хотя и не использует новомодных map/reduce,
>которые хотя и полезны, но не всегда :)

foreach неэффективен на больших последовательностях. кроме того, если мы в цикле дернем модуль, который неявно использует $_, то кирдык.

как я понимаю, пример с параллельным исполнением кода на нескольких процессорах я не дождусь, ага?


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено аноним , 08-Ноя-09 22:17 
>как я понимаю, пример с параллельным исполнением кода на нескольких процессорах я
>не дождусь, ага?

http://search.cpan.org/search?query=Thread%3A%3AQu...


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Добрый Дохтур , 08-Ноя-09 22:57 
>>как я понимаю, пример с параллельным исполнением кода на нескольких процессорах я
>>не дождусь, ага?
>
>http://search.cpan.org/search?query=Thread%3A%3AQu...

вы пример кода покажите :) Ссылки кидать - ума много не надо. То что вы кинули - это в питоне multiprocessing.Queue



"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено аноним , 08-Ноя-09 23:41 
так там примеры есть :) что вам еще нужно?

"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Добрый Дохтур , 09-Ноя-09 01:10 
>так там примеры есть :) что вам еще нужно?

так ведь говорил уже :)
есть каталог с текстовыми файлами. надо в файлах найти все строки, удовлетворяющие хоть одному шаблону из набора. Т.е. надо ещё и сохранить информацию о том, какие строки в каком файле были найдены.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено anonymous , 09-Ноя-09 00:47 
Очевидно что вы не сталкивались и даже не пробовали писать нечто аналогичное на перле. Во-первых foreach достаточно эффективен в данном случае. "Большие последовательности" это за сотни миллионов, а в таком случае для сплита понадобятся гигабайты оперативной памяти.

Насчет $_. Абсолютно очевидно что вы ниразу даже не пробовали сделать что либо с этой переменной. Начиная с какой-то версии перлы (непомню точно, но кажется 5.8) переменные в цикле локализируются. Посему однострочник perl -e 'for ("a".."c") { print; for ("A".."C") { print; for (1..2) { print } } print "\n" }' выдаст абсолютно предсказуемый результат. А функции типа chop, chmop при неуказании аргумента работают над $_. А горе-програмистам за то что исполюзуют нелокализированые версии глобальных переменных необходимо руки отрывать. Я думаю что такие люди и на питоне фигню пишут, просто на перле таких горе-писак было больше просто в силу возраста языка. Когда питону будет столько же тогда уже можно будет обсуждать процент горе-писак и восприятия языка людьми.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено freefd , 09-Ноя-09 18:54 
Вы удивитесь, но разница в возрасте у них порядка 3 лет в пользу perl.

"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено аноним , 08-Ноя-09 21:15 
хотите короче, пожалуйста:

#!/usr/bin/perl -w
my $s = ';l9348ks5fl\n414cs043sf68f';
my $r = '';
while ($s =~ /(.)/g){ $c = $1;
    if ($c =~ /\d/){ $r .= $c
    }else{ if ($r ne ''){ print "$r\n"; $r='' } }
}

или даже:

#!/usr/bin/perl -w
my $s = ';l9348ks5fl\n414cs043sf68f'; my $r = ''; while ($s =~ /(.)/g){ $c = $1; if ($c =~ /\d/){ $r .= $c }else{ if ($r ne ''){ print "$r\n"; $r=''}}}

:)

понятнее? мне кажется что не сокращенный перловый код длиннее, но понятнее и в любом случае, думаю не станете спорить, что самый первый пример с двумя числами на перле и компактнее и понятнее.

насчет быстрее... модифицирую код, что бы происходило перемножение чисел:
#!/usr/bin/perl -w

my $s = ';l9348ks5fl\n414cs043sf68f';
my $r = '';
my $sum = 1;
while ($s =~ /(.)/g){
    my $c = $1;
    if ($c =~ /\d/){ $r .= $c
    }else{
        if ($r ne ''){
             $sum *= $r; $r='';
        }
    }
}
print "$sum\n";

exit;

и зпускаю:
# time repeat 1000 ./test.pl > /dev/null
1.206u 2.122s 0:02.68 123.8%    60+567k 0+0io 0pf+0w

# time repeat 1000 ./test.py > /dev/null
9.739u 7.605s 0:17.27 100.3%    1203+1134k 0+0io 0pf+0w

может конечно интерпретатор питона так долго раскачивается...


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено аноним , 08-Ноя-09 21:56 
хотя если циклы поставить в коде:

my $s = ';l9348ks5fl\n414cs043sf68f';
for ($i=0; $i < 1000000; $i++){
my $r = '';
my $sum = 1;
while ($s =~ /(.)/g){
    my $c = $1;
    if ($c =~ /\d/){ $r .= $c
    }else{
        if ($r ne ''){
             $sum *= $r; $r='';
        }
    }
}
print "$sum\n";
}


и:

import re
s = ';l9348ks5fl\n414cs043sf68f'
for i in range(1000000):
        exp=re.compile('\D+')
        filter(lambda x: len(x)>0 ,exp.split(s))
        print reduce(lambda x,y:int(x)*int(y), filter(lambda x: len(x)>0 ,exp.split(s)))


имеем:

# time ./test.pl > /dev/null
26.338u 0.000s 0:26.36 99.8%    5+1297k 0+0io 0pf+0w

# time ./test.py > /dev/null
27.281u 0.022s 0:27.34 99.8%    1287+1224k 0+0io 0pf+0w

разница теперь не такая большая.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Name , 08-Ноя-09 22:17 
Я вам мерялку упрощу:

http://zw0rk.blogspot.com/2009/11/blog-post_08.html


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Аноним , 09-Ноя-09 00:47 
Не совсем справдливое сравнение. В этом примере перл компиллирует регексп только 1 раз, а питон -- 1000000 раз. Кроме того, почти уверен, что без лямбд питон будет работать ещё быстрее. В питоне вызов функции -- сравнительно дорогое удовольствия из-за локальности переменных (чего нет в перле).

"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Sphynkx , 08-Ноя-09 12:47 
>А Perl позволяет писать удивительно понятный, и при компактный код.

Вот именно. Желающим повыпендриваться или интеллектуально поупражняться - перл предоставляет такую возможность. Если же задача в том, чтобы написать понятный и работающий код - ничто не мешает сделать и это. На http://ioccc.org/ лежит много хитроумного С-кода, но ведь никто ж не объявляет С устаревшим, ужасным, непонятным и пр. прозвучавшими тут эпитетами...


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено phaoost , 08-Ноя-09 16:56 
да просто домохозяек стали учить программированию, вот они и кудахтают. перл им видишь ли не читается и не пишется.

"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Name , 08-Ноя-09 22:29 
>>А Perl позволяет писать удивительно понятный, и при компактный код.
>
>Вот именно. Желающим повыпендриваться или интеллектуально поупражняться - перл предоставляет такую возможность.
>Если же задача в том, чтобы написать понятный и работающий код
>- ничто не мешает сделать и это. На http://ioccc.org/ лежит много
>хитроумного С-кода, но ведь никто ж не объявляет С устаревшим, ужасным,
>непонятным и пр. прозвучавшими тут эпитетами...

А как же известный мем про "программку на перле"

http://lurkmore.ru/%D0%9F%D1%80%D0&...


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Sphynkx , 08-Ноя-09 22:58 
>А как же известный мем про "программку на перле"

Я ж написал выше:
>>Желающим повыпендриваться или интеллектуально поупражняться - перл предоставляет такую возможность.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено аноним , 09-Ноя-09 02:46 
>А как же известный мем про "программку на перле"

А что вы думаете, сложно написать то же самое на C? Пистоне? Shell?


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Ну типа имя , 10-Ноя-09 09:57 
>>А как же известный мем про "программку на перле"
>
>А что вы думаете, сложно написать то же самое на C? Пистоне?
>Shell?

Сложно? Невозможно!


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Sphynkx , 07-Ноя-09 13:33 
>наверно perl тот самый язык, который умрёт с последним носителем этого языка

:)
Если ситуация в окажется по Вашему - это будет означать, что цивилизация стремительно деградирует, а со смертью последнего перловода - прошла точку невозврата ;-))


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Банзай , 07-Ноя-09 22:43 
>Скоро их админы и вебмастера вымрут или выйдут на пенсию или пересядут
>на python
>и тогда не кому будет заниматься ведь и тогда же многие их
>программы будут нечитаемы
>наверно perl тот самый язык, который умрёт с последним носителем этого языка
>
>:)

Никто никогда с перла никуда не пересядет.
Скорее подтянутся новички.

Ибо
1. Скорость, производительность _РАЗРАБОТКИ_, на Питоне вам сто дней пилять моих сто строк на перле.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Добрый Дохтур , 08-Ноя-09 03:23 
>1. Скорость, производительность _РАЗРАБОТКИ_, на Питоне вам сто дней пилять моих сто
>строк на перле.

тююю...

перерисуйте на перле:

#!/usr/bin/env python
import sys,re
print filter(lambda line: filter(lambda re: re.search(line), [re.compile(i) for i in sys.argv[2:]]) , open(sys.argv[1],'rb').readlines())

1й аргумент - имя файла, остальные - набор регекспов.
на выходе - массив строк, подпадающих хоть под один из регекспов.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Zulu , 08-Ноя-09 13:52 
Надеюсь это шутка такая? 8))))

#!/usr/bin/perl
open(F,shift @ARGV);
for $l (<F>) { for (@ARGV) { print $l and last if ($l =~ $_) } };

Это короче и без grep {} / map {}.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Добрый Дохтур , 08-Ноя-09 16:11 
>Надеюсь это шутка такая? 8))))
>
>#!/usr/bin/perl
>open(F,shift @ARGV);
>for $l (<F>) { for (@ARGV) { print $l and last if ($l =~ $_) } };
>
>Это короче и без grep {} / map {}.

Тю... а вы скорость своего чуда видели?? :))

берем http://lib.ru/BULGAKOW/master97_engl.txt

размножаем (например for i in `seq 10`; do cat master97_engl.txt >> multi.txt ; done )

Смотрим:

$ time ./test.pl multi.txt Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris > /dev/null

real    0m30.982s
user    0m30.659s
sys     0m0.116s

~/code$ time ./test.py multi.txt Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris > /dev/null

real    0m19.833s
user    0m19.653s
sys     0m0.047s

Так что пилите, они золотые.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено dq0s4y71 , 08-Ноя-09 16:51 
>
>Тю... а вы скорость своего чуда видели?? :))
>

Так вам же пишут:

>...производительность _РАЗРАБОТКИ_...

Слово "разработки" даже большими буквами выделено чтобы все правильно поняли. :) Если вам нужна высокая скорость _ВЫПОЛНЕНИЯ_, пишите на Си. А кофе лучше варить кофеваркой, ага. :)

Кстати, у меня разница не такая большая получилась:

real    0m45.511s
user    0m45.419s
sys     0m0.056s

real    0m38.111s
user    0m38.038s
sys     0m0.048s

Так что, все правильно - увеличение скорости разработки ведет, как правило, к некоторому снижению скорости выполнения.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Добрый Дохтур , 08-Ноя-09 17:06 
ну-ну. у меня почему-то скорость выполнения не падает от увеличения скорости разработки :)
и это... С вашего кода в реальной программе пользы 0.
Результат работы моего кода можно вернуть/передать из/в функции.

Покажите такое же на perl:

$ cat test2.py
#!/usr/bin/env python
import os,sys,re,multiprocessing

def matcher(args):
return [args[0], filter(lambda line: filter(lambda re: re.search(line), args[1]) , open(args[0],'rb').readlines())]

if __name__ == '__main__':
elist=[re.compile(i) for i in sys.argv[2:]]
pool = multiprocessing.Pool(processes=4)
dirlist=[[os.path.join(sys.argv[1], f), elist] for f in os.listdir(sys.argv[1]) if os.path.isfile(os.path.join(sys.argv[1], f))]
print dict(pool.map(matcher, dirlist))

Что он делает? 1й аргумент - это каталог с файлами, остальное, как и ранее - набор регекспов.

На выходе - массив, содержащий хеши, где ключ - имя файла, а значение - список строк в файле, подходящих под шаблон.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено dq0s4y71 , 08-Ноя-09 17:37 
>ну-ну. у меня почему-то скорость выполнения не падает от увеличения скорости разработки
>:)

Бывает. И что? Будем делать обобщения?

>и это... С вашего кода в реальной программе пользы 0.

Нет. Это с ВАШЕГО кода в реальной программе пользы 0. ВЫ его первым предложили. :) Если хотите серьезного разговора, не надо приводить несерьезных примеров.

>Покажите такое же на perl:

Так, то есть, по первому примеру у вас претензий больше нет?


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Добрый Дохтур , 08-Ноя-09 18:09 
>>и это... С вашего кода в реальной программе пользы 0.
>Нет. Это с ВАШЕГО кода в реальной программе пользы 0. ВЫ его
>первым предложили. :) Если хотите серьезного разговора, не надо приводить несерьезных
>примеров.

если вам не доводилось _МНОГО_ работать с текстом - это не мои проблемы.
Есть такая вещь - CDR'ы. У телефонистов пользуются популярностью.
Часто - это ASN.1, но для удобства это конвертят в csv, жмут архиватором и кладут на ленточные архивы для хранения(ибо по закону в РФ положено 3 года).

И вот есть у вас список пар номеров, надо найти все звонки по этому списку за последние 3 месяца.
За месяц в распакованном виде это счастье весит 20-25Гб. Там порядка 48-53тыс файлов.
А надо за 3. В вашем распоряжении - 4х процессорная машина с 1Гб памяти и быстрой дисковой подсистемой.

>>Покажите такое же на perl:
>
>Так, то есть, по первому примеру у вас претензий больше нет?

Уберите из результатов работы вашего примера строки длиннее 5 символов.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено аноним , 08-Ноя-09 20:01 
>Уберите из результатов работы вашего примера строки длиннее 5 символов.

поправьте строку:

for $l (<F>) { for (@ARGV) { print $l and last if ($l =~ $_) } };

так:

for $l (<F>) { for (@ARGV) { print $l and last if (($l =~ $_) && (length $l < 5)) } };


у меня разница еще меньше и равно 10%:

# time ./test.py multi.txt Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris > /dev/null
20.745u 0.007s 0:20.75 99.9%    1288+1224k 0+0io 0pf+0w

# time ./test.pl multi.txt Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris > /dev/null
22.703u 0.007s 0:22.71 99.9%    5+28755k 0+0io 0pf+0w


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Добрый Дохтур , 08-Ноя-09 23:20 
>[оверквотинг удален]
>for $l (<F>) { for (@ARGV) { print $l and last if (($l =~ $_) && (length $l < 5)) } };
>
>
>у меня разница еще меньше и равно 10%:
>
># time ./test.py multi.txt Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris > /dev/null
>20.745u 0.007s 0:20.75 99.9%    1288+1224k 0+0io 0pf+0w
>
># time ./test.pl multi.txt Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris > /dev/null
>22.703u 0.007s 0:22.71 99.9%    5+28755k 0+0io 0pf+0w

Если я распараллелюсь и заюзаю jit - это будет нечестно? :)


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено anonymous , 09-Ноя-09 01:11 
Небольшое "увеличение" перлового варианта (что б не компилировать регэкспы много раз):
#!/usr/bin/perl

open my $f, shift @ARGV;
my @re = map { qr/$_/ } @ARGV;
for my $l (<$f>) { for (@re) { print $l and last if $l =~ $_ } };

и не нужно никакого распаралеливания:

перл:
real    0m9.032s
user    0m7.924s
sys     0m0.028s

питон:
real    0m31.792s
user    0m28.753s
sys     0m0.030s


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено anonymous , 09-Ноя-09 01:16 
Даже если в питоне тоже вынести компиляцию то он не догоняет перл:

real    0m8.691s
user    0m8.297s
sys     0m0.091s

real    0m10.663s
user    0m10.267s
sys     0m0.086s


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Добрый Дохтур , 09-Ноя-09 02:51 
>Даже если в питоне тоже вынести компиляцию то он не догоняет перл:

$ time ./test.pl multi.txt Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris > /dev/null                                                                                                                                                                              

real    0m27.446s
user    0m26.965s
sys     0m0.150s

$ time ./test3.py multi.txt Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris > /dev/null

real    0m14.922s
user    0m27.880s
sys     0m0.489s

$ cat test3.py
#!/usr/bin/env python

import os,sys,re,multiprocessing

exp=[re.compile(i) for i in sys.argv[2:]]

def matcher(lines):
elist=exp
return filter(lambda line: filter(lambda re: re.search(line), elist) , lines)

if __name__ == '__main__':
chunk = lambda ulist, step:  map(lambda i: ulist[i:i+step],  xrange(0, len(ulist), step))
pool = multiprocessing.Pool(processes=8)
data=open(sys.argv[1],'rb').readlines()
dlist=chunk(open(sys.argv[1],'rb').readlines(),int(len(data)/64))
print pool.map(matcher, dlist)


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Добрый Дохтур , 08-Ноя-09 17:54 

>Слово "разработки" даже большими буквами выделено чтобы все правильно поняли. :) Если
>вам нужна высокая скорость _ВЫПОЛНЕНИЯ_, пишите на Си. А кофе лучше
>варить кофеваркой, ага. :)

Ещё раз: мне нужна и скорость выполнения, и скорость работы. Вы мне для обработки текстов предлагаете инструмент чуть выше ассемблера.
Если меня не устраивает скорость работы какого-либо куска кода на python - я пишу его на C(если там совсем немного) и втаскиваю через ctypes(пример импорта разделяемой библиотеки и вызова из неё функции мне так и не показали), либо заморачиваюсь с Boost.Python
В последнем варианте мне доступны из плюсов как объекты python, так и из питона доступны плюсовые объекты. Втаскивание плюсового кода в Perl - это веселое развлечение с extern "C" итп(привет, объектная модель!!!).

>Кстати, у меня разница не такая большая получилась:
>real    0m45.511s
>user    0m45.419s
>sys     0m0.056s
>
>real    0m38.111s
>user    0m38.038s
>sys     0m0.048s

Оно зависит об объема памяти, числа регекспов и размера файлов. ну и ессно от cpu.
на машине с 16Гб памяти и быстрыми дисками разница еще больше.



"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Zulu , 09-Ноя-09 02:37 
>Ещё раз: мне нужна и скорость выполнения, и скорость работы. Вы мне
>для обработки текстов предлагаете инструмент чуть выше ассемблера.
>Если меня не устраивает скорость работы какого-либо куска кода на python -
>я пишу его на C(если там совсем немного) и втаскиваю через
>ctypes(пример импорта разделяемой библиотеки и вызова из неё функции мне так
>и не показали), либо заморачиваюсь с Boost.Python

Я думаю на этой мажорной ноте дискуссию можно завершать, всем уже все понятно.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Zulu , 09-Ноя-09 02:34 
Fat chance.

Теперь внимательно следим за руками...

zulu@ubivaj:~$ time  ./1.pl master97_engl.txt Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris | md5sum
ac6be5f73a40e52d868609be26343bc1  -

real    0m3.571s
user    0m3.570s
sys    0m0.000s

zulu@ubivaj:~$ time  ./2.pl master97_engl.txt Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris | md5sum
ac6be5f73a40e52d868609be26343bc1  -

real    0m0.717s
user    0m0.700s
sys    0m0.020s

Как несложно заметить, результаты те же за в 5 раз меньшее время. А какая разница между скриптами?

zulu@ubivaj:~$ diff -c 1.pl 2.pl
*** 1.pl    2009-11-09 00:26:33.058344645 +0100
--- 2.pl    2009-11-09 00:31:51.240868198 +0100
***************
*** 1,3 ****
  #!/usr/bin/perl
  open(F,shift @ARGV);
! for $l (<F>) { for (@ARGV) { print $l and last if ($l =~ $_) } };
--- 1,4 ----
  #!/usr/bin/perl
  open(F,shift @ARGV);
! @a = map { qr{$_} } @ARGV;
! for $l (<F>) { for (@a) { print $l and last if ($l =~ $_) } };

Говорите, питон на 30% быстрее? Догоняйте теперь пятикратный отрыв. Целую))


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Добрый Дохтур , 09-Ноя-09 03:49 
$ time ./test3.py multi.txt Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation > /dev/null

real    0m11.180s
user    0m21.634s
sys     0m0.493s

$ time ./test.pl multi.txt Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation > /dev/null

$ time ./test.pl multi.txt Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation > /dev/null

real    0m23.168s
user    0m22.727s
sys     0m0.121s

$ cat test.pl
#!/usr/bin/perl

open(F,shift @ARGV);
my @a = map { qr{$_} } @ARGV;
for $l (<F>) { for (@a) { print $l and last if ($l =~ $_) } };


#!/usr/bin/env python

import os,sys,re,multiprocessing

expr=[re.compile(i) for i in sys.argv[2:]]

def matcher(lines):
elist=expr
return [line for line in lines if [exp for exp in elist if exp.search(line)]]

if __name__ == '__main__':
chunk = lambda ulist, step:  map(lambda i: ulist[i:i+step],  xrange(0, len(ulist), step))
pool = multiprocessing.Pool(processes=8)
data=open(sys.argv[1],'rb').readlines()
dlist=chunk(open(sys.argv[1],'rb').readlines(),int(len(data)/128))
print pool.map(matcher, dlist)

вообще, тут уже бенчи libpcre.
37M 2009-11-09 02:42 multi.txt


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Аноним , 07-Ноя-09 12:16 
наворотить делов можно и на питоне, при чём тут перл?

"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено trdm , 07-Ноя-09 12:23 
А причем тут питон, если месага о перле?

"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Аноним , 07-Ноя-09 13:27 
кстати, код отлично читается:
print "Hello world!\n" if $debug;
найдите одного идиота, который не способен понять, о чем программа.

А на конструкции типа
s/^(\d+)(\w{5,7}).+/$1\t$2/;
можно не таращиться, они, зачастую, интересны только в процессе написания кода и редко содержат потребность в исправлении.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Аноним , 07-Ноя-09 13:38 
Почти у каждого питониста наступит когнитивный диссонанс при виде символа $

"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено СуперАноним , 07-Ноя-09 15:52 
Точно. Этим же грешен и PHP.

"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено sHaggY_caT , 07-Ноя-09 14:51 
На sed/awk и bash иногда более страшные "перлы"(сорри за каламбур) попадаются, да и писать приходится :)
Иногда жалела, что не знаю Perl, сейчас выбрала все-таки Питон, как-то он по-современее, что ли, выглядит...

"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Name , 07-Ноя-09 16:06 
>А на конструкции типа
>s/^(\d+)(\w{5,7}).+/$1\t$2/;
>можно не таращиться, они, зачастую, интересны только в процессе написания кода и
>редко содержат потребность в исправлении.

Вот-вот в этом то никто разбираться и не будет, по новой код напишут.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено docent , 07-Ноя-09 16:40 
>>А на конструкции типа
>>s/^(\d+)(\w{5,7}).+/$1\t$2/;
>>можно не таращиться, они, зачастую, интересны только в процессе написания кода и
>>редко содержат потребность в исправлении.
>
>Вот-вот в этом то никто разбираться и не будет, по новой код
>напишут.

А причем тут вообще перл? Это регулярное выражение, которое вообще не привязано к языку программирования, оно на всех языках так будет выглядеть.

И вообще, хорош тот язык, который знаешь, а если не знаешь, то нехрен хаять то, в чем не соображаешь.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Name , 07-Ноя-09 16:48 
>>>А на конструкции типа
>>>s/^(\d+)(\w{5,7}).+/$1\t$2/;
>>>можно не таращиться, они, зачастую, интересны только в процессе написания кода и
>>>редко содержат потребность в исправлении.
>>
>>Вот-вот в этом то никто разбираться и не будет, по новой код
>>напишут.
>
>А причем тут вообще перл? Это регулярное выражение, которое вообще не привязано
>к языку программирования, оно на всех языках так будет выглядеть.

Этот код привели в качестве примера. Вы еще спрашиваете "причем?".
Кстати в python эта регулярка будет выглядеть по другому.

>И вообще, хорош тот язык, который знаешь, а если не знаешь, то
>нехрен хаять то, в чем не соображаешь.

А если знаешь несколько языков?


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено аноним , 07-Ноя-09 22:28 
>А на конструкции типа
>s/^(\d+)(\w{5,7}).+/$1\t$2/;
>можно не таращиться, они, зачастую, интересны только в процессе написания кода и
>редко содержат потребность в исправлении.

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


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Sphynkx , 07-Ноя-09 13:30 
Забвение предрекают некоторые люди сугубо в отместку - в связи с индивидуальными сложностями восприятия перла ;-))

"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено drew , 07-Ноя-09 14:12 
причем скорый конец предрекют как раз те кто не пользуется перлом по причине того что не смогли в нем разобратся

"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено astoon , 07-Ноя-09 15:59 
>причем скорый конец предрекают как раз те кто не пользуется перлом по
>причине того что не смогли в нем разобратся

Никто ему скорый конец не предрекает.
Просто все поотказывались от него, вот и все. Тысячи программистов. Именно, работавшие с ним плотно и разобравшиеся в нем достаточно досканально.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено ffsdmad , 07-Ноя-09 23:12 
>Забвение предрекают некоторые люди сугубо в отместку - в связи с индивидуальными
>сложностями восприятия перла ;-))

сами то слышите что говорите?
оказывается, для перла нужна индивидуальная предрасположенность
верно, в точку именно из-за этого он и уйдёт в историю
на перлу приходится писать раз в год, исключительно ради XBase
и эти дни для меня странная смесь садизма и мазохизма


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено аноним , 08-Ноя-09 00:55 
>оказывается, для перла нужна индивидуальная предрасположенность

А теперь быстро показал где ты это прочитал.
Нет, просто не нужно индивидуальной непереносимости, а оная, бывает, встречается у недоучек.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Sphynkx , 08-Ноя-09 12:10 
>>Забвение предрекают некоторые люди сугубо в отместку - в связи с индивидуальными
>>сложностями восприятия перла ;-))
>
>сами то слышите что говорите?
>оказывается, для перла нужна индивидуальная предрасположенность

Слышу ;-)) Я бы говорил скорей об индивидуальной непредрасположенности ;-)) Что ж , каждому свое.

>верно, в точку именно из-за этого он и уйдёт в историю
>на перлу приходится писать раз в год, исключительно ради XBase

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


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Аноним , 07-Ноя-09 14:14 
У перла есть существенные недостатки в таких ключевых системах, как управление памятью (можно почитать тут http://michurin.com.ru/python-vs-perl.shtml особенно часть "Под капотом"). Кроме того, Perl просто старенький, когда он разрабатывался было ещё не ясно для чего будут использоваться скриптовые языки (исторический экскурс можно почитать тут http://michurin.com.ru/python-vs-perl-2.shtml)

"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено dq0s4y71 , 07-Ноя-09 15:33 
> Кроме того, Perl просто старенький когда он разрабатывался было ещё не ясно для чего будут использоваться скриптовые языки...

Вот какраз для чего создавался Перл было ясно. Он был задуман как инструмент для обработки текста и для системного администрирования. А вот для чего создавался Питон - не понятно, наверное, для обучения школьников индентации...


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено docent , 07-Ноя-09 16:43 
+1

"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Name , 07-Ноя-09 17:26 
>Вот какраз для чего создавался Перл было ясно. Он был задуман как
>инструмент для обработки текста и для системного администрирования.

Это у вас отсебятина

Perl название языка представляет собой аббревиатуру, которая расшифровывается как Practical Extraction and Report Language «практический язык для извлечения данных и составления отчётов»

Никаким сис.админством тут не пахнет.


> А вот для
>чего создавался Питон - не понятно, наверное, для обучения школьников индентации...
>

Python ([ˈpaɪθən]; па́йсон, па́йтон, пито́н) — высокоуровневый язык программирования общего назначения с акцентом на производительность разработчика и читаемость кода. Синтаксис ядра Питона минималистичен. В то же время стандартная библиотека включает большой объём полезных функций.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено dq0s4y71 , 07-Ноя-09 18:46 
>Perl название языка представляет собой аббревиатуру, которая расшифровывается как Practical Extraction and Report Language «практический язык для извлечения данных и составления отчётов»
>Никаким сис.админством тут не пахнет.

Это вы по аббревиатуре определили? :) Вы бы хоть какую-нибудь книжку по основам Перла до конца прочитали.

http://www.linux.org/lessons/interm/c1618.html

What is Perl

Perl is a general purpose language that can be used for system administration. In fact, it was created by Larry Wall specifically for that purpose.

>Python ([ˈpaɪθən]; па́йсон, па́йтон, пито́н) — высокоуровневый язык программирования общего назначения с акцентом на производительность разработчика и читаемость кода.

Это мы знаем. Язык для быстрого написания читабельного кода...


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Name , 07-Ноя-09 19:38 
>Это вы по аббревиатуре определили?

Да, уважаемый, именно по аббревиатуре.  Practical Extraction and Report Language «практический язык для извлечения данных и составления отчётов».

Я думаю из названия достаточно ясно для чего создавался язык? Как замена sed и awk.

То что сейчас используется в сис. администрировании это другое дело, но вопрос стоял для чего он создавался и расшифровка аббревиатуры вполне себе отвечает на даный вопрос.

> :) Вы бы хоть какую-нибудь книжку по основам Перла до конца прочитали.

Читал, дорогой, до конца читал, не одну, читал.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Oles , 07-Ноя-09 19:58 
>Да, уважаемый, именно по аббревиатуре.  Practical Extraction and Report Language

Да не для этого он создавался. Он создавался как язык сам для себя, а не язык для людей, включая программистов. Ларри Вол он же лингвист, сферический в вакууме. Это был его эксперимент, творчество. С миру по нитке вот и получился пЭрл. Но элита человечества программеры любят создавать из всего культ спасения мира, вот и из перла сделали культ. Надо же себя как-то освящать.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено dq0s4y71 , 07-Ноя-09 22:54 
>Но элита человечества программеры любят создавать из всего культ спасения мира, вот и из перла сделали культ.

По-моему, это как раз про Питон. У Перла изначально была более или менее конкретная задача - обработка текста. А вот автор Питона, похоже, в своем детище пытался воплотить собственные представления о "правильном" программировании.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено dq0s4y71 , 07-Ноя-09 22:35 
>
>Я думаю из названия достаточно ясно для чего создавался язык? Как замена
>sed и awk.
>

A awk расшифровывается как Aho, Weinberger & Kernighan. Вам из этого названия тоже ясно для чего создавался этот язык? Не откажите в удовольствии, сообщите нам цепь своих рассуждений. ;)

>
>Читал, дорогой, до конца читал, не одну, читал.

Ога. Я понял.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Name , 08-Ноя-09 12:34 
>>
>>Я думаю из названия достаточно ясно для чего создавался язык? Как замена
>>sed и awk.
>A awk расшифровывается как Aho, Weinberger & Kernighan. Вам из этого названия
>тоже ясно для чего создавался этот язык?

В даном случае (awk), в аббревиатруе зашифровано не  для чего создавался, а  имена его создателей. А к примеру sed расшифровывается как поточный редактор.

>Не откажите в удовольствии,
>сообщите нам цепь своих рассуждений. ;)

О нет не смогу, если ты себя во множественном числе пишешь, то не смогу, это к психиатору нужно.

>>
>>Читал, дорогой, до конца читал, не одну, читал.
>
>Ога. Я понял.

Молодец. Хоть что-то дошло.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Дмитрий Ю. Карпов , 07-Ноя-09 20:22 
> Perl название языка представляет собой аббревиатуру, которая расшифровывается как Practical Extraction and Report Language «практический язык для извлечения данных и составления отчётов»
> Никаким сис.админством тут не пахнет.

Попробуйте с трёх попыток угадать, кто занимался извлечением данных и генерацией отчётов по ним. Даже дам подсказку: это были не программисты баз данных.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено анонимус , 07-Ноя-09 20:02 
>> Кроме того, Perl просто старенький когда он разрабатывался было ещё не ясно для чего будут использоваться скриптовые языки...
>
>Вот какраз для чего создавался Перл было ясно. Он был задуман как
>инструмент для обработки текста и для системного администрирования. А вот для
>чего создавался Питон - не понятно, наверное, для обучения школьников индентации...
>

+1
Я пользуюсь обоими указанными языками.
На Питоне обучаю студентов основам программирования,
А на Перле пишу скрипты.
ИМХО - Питон - это универсальый язык, и писать на нем скрипты удобно разве что по сравнению с бэйсиком. Как замена шела он_не_пригоден.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Юниксоид , 07-Ноя-09 20:45 
Скажите это google, у них везде java и python :-)

Наверное, они такие тупые, ещё про perl не прочитали :-)


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено dq0s4y71 , 07-Ноя-09 23:09 
>Скажите это google, у них везде java и python :-)
>
>Наверное, они такие тупые, ещё про perl не прочитали :-)

Yahoo тоже на PHP. Но, тем не менее, Дейвид Файло, считает, что без Перла Yahoo никогда бы не возник. Он даже Ларри Уолла за это отблагодарил :) http://www.salon.com/21st/feature/1998/10/cov_13feature.html


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Zulu , 09-Ноя-09 00:39 
Перла у них выше крыши тоже. Привет Мухосранску, который о гугле _слышал_)))

"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Name , 07-Ноя-09 20:51 
>Как замена шела он_не_пригоден.

Если вам нужно что-нибудь в духе:

#!/bin/sh
#$1 = ip

iface=`ifconfig  | grep -C1  $1 | awk '{print $1}' | tr '\n' ' ' | awk '{print $1}'`
ifconfig $iface down

#end

И подобную мелочь, которая пишется за минуту. То скорее всего да, python для этого мало пригоден. Как только появляется потребность сделать что-то действительно сложное, вот тут ему и место.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Zulu , 09-Ноя-09 02:40 
>iface=`ifconfig  | grep -C1  $1 | awk '{print $1}' |
>tr '\n' ' ' | awk '{print $1}'`

не знаю говорил ли я это или нет, но в свое время за такое я программистов сначала предупреждал, а потом прощался. два элемента из множества (tr, sed, grep, awk) соединенные пайпами это желтая карточка.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Sphynkx , 09-Ноя-09 03:13 
>за такое я программистов сначала предупреждал, а потом прощался. два элемента
>из множества (tr, sed, grep, awk) соединенные пайпами это желтая карточка.

Это чем же Вам пайпы не угодили??


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Name , 11-Ноя-09 19:06 
>>за такое я программистов сначала предупреждал, а потом прощался. два элемента
>>из множества (tr, sed, grep, awk) соединенные пайпами это желтая карточка.
>
>Это чем же Вам пайпы не угодили??

Ну он в чем-то прав, можно короче. Например сходу поменять первую пару awk/tr и тогда второй awk не поднадобиться, потом просто все после grep заменить на awk.

С другой стороны оптимизация того, что пишется в командной строке с той скоростью с которой набирается текст и выполняется в течении нескольких нескольких абсолютно некритичных милисекунд это фетишь и право не стоит на это обращать внимание.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Heckfy , 09-Ноя-09 21:01 
>не знаю говорил ли я это или нет, но в свое время за такое я программистов сначала предупреждал, а потом прощался.

не знаю, кто как, но я десятками подобных конструкций, набираемых прямо в командной строке, решаю быть или не быть. А в это время наши программисты целыми днями пишут на дотнете, пишут и тестируют. Тестируют и исправляют. А потом отдают пользователям, которые находят это НЕВОЗМОЖНЫМ к использованию.
А мои красные карточки реально работают. И они все одноразовые как пластиковая вилка. А я бы и рад их не писать, эти строчки в командной строке, но кто же тогда заставит работать всю систему в целом? Тем более, что я эти "скрипты" пишу, обычно, менее 30 секунд. А если кто-то приходит разглядывать конструкцию, трёт глаза и переспрашивает, я вздыхаю и начинаю ваять скрипт по мотивам этой командной строки. Скрипт получается на пару-тройку страниц, его прочитать может даже уборщица. Но время на написанию этого скрипта я убиваю уже как те самые дотнетовские программисты. Разница только в том, что моё работает без доработок и исправлений.

Кстати, я бы остерегся других конструкций в пайпах, но это лишь потому, что я их не умею использовать.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Name , 07-Ноя-09 17:53 
>У перла есть существенные недостатки в таких ключевых системах, как управление памятью
>(можно почитать тут http://michurin.com.ru/python-vs-perl.shtml особенно часть "Под капотом"). Кроме того, Perl
>просто старенький, когда он разрабатывался было ещё не ясно для чего
>будут использоваться скриптовые языки (исторический экскурс можно почитать тут http://michurin.com.ru/python-vs-perl-2.shtml)

У перла существенных недостаков всего 2:

1. Нет ООП.
2. Perl6 --- 10 лет в разработке (Вы еще спрашиваете почему же его хоронят?).  


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено dq0s4y71 , 07-Ноя-09 19:03 
>У перла существенных недостаков всего 2:
>
>1. Нет ООП.

А, может быть, это как раз достоинство? Кстати, ООП у Перла таки есть. Вы все же не пренебрегайте советом, почитайте что-нибудь про Перл кроме Википедии. :)

>2. Perl6 --- 10 лет в разработке (Вы еще спрашиваете почему же его хоронят?).

Все юзают 5-й Перл. Кстати, 3-й Питон тоже никак не допилят и все спокойно юзают 2-й и никому это не мешает.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Name , 07-Ноя-09 19:52 
>>У перла существенных недостаков всего 2:
>>
>>1. Нет ООП.
>
>А, может быть, это как раз достоинство?

Нет дорогой, это недостаток. Причем для такого языка большой недостаток.

> Кстати, ООП у Перла таки
>есть. Вы все же не пренебрегайте советом, почитайте что-нибудь про Перл
>кроме Википедии. :)

Мы все знаем какое там ООП, и через какое место оно реализовано. Это не ООП.

>>2. Perl6 --- 10 лет в разработке (Вы еще спрашиваете почему же его хоронят?).
>Все юзают 5-й Перл. Кстати, 3-й Питон тоже никак не допилят и
>все спокойно юзают 2-й и никому это не мешает.

Python 3 вышел года 2 как назад, идет постепенный преход (библиотеки переежают), на моей машине к примеру он стоит, и в репозитариях давно обитает.  Perl6 проект начат в 2000 и по настоящее время срок релиза не известен.  Есть смысл сравнивать?


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено dq0s4y71 , 07-Ноя-09 22:19 
>
>Нет дорогой, это недостаток. Причем для такого языка большой недостаток.
>

Огромный. Как для собаки отсутствие пятой ноги.

>
>Мы все знаем какое там ООП, и через какое место оно реализовано.
>Это не ООП.
>

Сочувствую. А есть языки, в котрых ООП даже не предусмотрено. Разрыв шаблона, да?

>Python 3 вышел года 2 как назад, идет постепенный преход (библиотеки переежают),
>на моей машине к примеру он стоит, и в репозитариях давно
>обитает.  Perl6 проект начат в 2000 и по настоящее время
>срок релиза не известен.  Есть смысл сравнивать?

Ну, если он на вашей машине стоит, тогда другое дело...


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Name , 08-Ноя-09 11:25 
>>
>>Нет дорогой, это недостаток. Причем для такого языка большой недостаток.
>>
>
>Огромный. Как для собаки отсутствие пятой ноги.

Огромный как, например, нельзя сделать нормальные бидинги к ООП языкам и библиотекам на них написанным --- Qt к примеру, и программным платформам.

>Сочувствую. А есть языки, в котрых ООП даже не предусмотрено. Разрыв шаблона,
>да?

Да есть такие языки, со своей нишей. Разыва не получилось.

>Ну, если он на вашей машине стоит, тогда другое дело...

Он как бы в репозитариях давно есть, и литература по нему давно есть, а моя машина тут не причем.



"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено dq0s4y71 , 08-Ноя-09 13:18 
> Да есть такие языки, со своей нишей.

У Перла _тоже_ _своя_ _ниша_. Сюрприз?

>Он как бы в репозитариях давно есть, и литература по нему давно есть, а моя машина тут не причем.

Ну вот. То при чем, то ни при чем... Вы уж разберитесь как-нибудь.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Name , 08-Ноя-09 21:00 
>> Да есть такие языки, со своей нишей.
>
>У Перла _тоже_ _своя_ _ниша_. Сюрприз?

... в которой он с легкостью сливает и python и теперь даже ruby.

>>Он как бы в репозитариях давно есть, и литература по нему давно есть, а моя машина тут не причем.
>
>Ну вот. То при чем, то ни при чем... Вы уж разберитесь
>как-нибудь.

Мне разбираться не нужно. А вот для вас я повторю:

Python3 существует и это объективная реальность. Его можно поставить, посмотреть, "пощупать", программу написать, и она будет работать,  можно документацию почитать, можно даже книжку бумажную купить. Уже (начиная с версии 3.1.1) можно и проектах его использовать.

Perl6 не существует, это уже 10 лет концепция, без четких сроков и ТЗ --- "Мы что-нибудь напишем, когда-нибудь".

Что тут сравнивать?


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено аноним , 08-Ноя-09 00:57 
>Мы все знаем какое там ООП, и через какое место оно реализовано.
>Это не ООП.

Это ООП, причем намного лучше, например, питоньего.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Name , 08-Ноя-09 11:26 
>>Мы все знаем какое там ООП, и через какое место оно реализовано.
>>Это не ООП.
>
>Это ООП, причем намного лучше, например, питоньего.

Чем лучше?  


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Stanislaus , 08-Ноя-09 13:53 
>>>Мы все знаем какое там ООП, и через какое место оно реализовано.
>>>Это не ООП.
>>
>>Это ООП, причем намного лучше, например, питоньего.
>
>Чем лучше?

Да хватит вам про ООП спорить. ООП - понятие АБСТРАКТНОЕ. Какая разница как это понятие реализуется. На вкус и цвет товарищей нет.



"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Stanislaus , 08-Ноя-09 16:01 
>Python 3 вышел года 2 как назад, идет постепенный преход (библиотеки переежают),
>на моей машине к примеру он стоит, и в репозитариях давно
>обитает.  Perl6 проект начат в 2000 и по настоящее время
>срок релиза не известен.  Есть смысл сравнивать?

Не забываем, что такое Perl6. Смысла сравнивать Perl6 с Python3 действительно НЕТ.

Perl 6 is the "Super-Perl" successor of Perl 5

"We're really serious about reinventing everything that needs reinventing." — Larry Wall (2000).
"The Perl 6 design process is about keeping what works in Perl 5, fixing what doesn't, and adding what's missing. That means there will be a few fundamental changes to the language, a large number of extensions to existing features, and a handful of completely new ideas. These modifications, enhancements, and innovations will work together to make the future Perl even more insanely great...." — Damian Conway (2003).
"Perl 6 and Parrot have some extremely ambitious goals, and it’s my belief that the value and impact of our hard work and patience is going to play out for a very long time — that is, over at least many decades." — Patrick Michaud (2006).


Во-вторых, http://rakudo.org/status

В-третьих, Parrot 1.0 was released March 17th 2009! Try it! (Rakudo Perl 6 use the Parrot VM)

Те, кто создал Perl5 способны на революцию.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Гога , 08-Ноя-09 13:53 
>>У перла есть существенные недостатки в таких ключевых системах, как управление памятью
>>(можно почитать тут http://michurin.com.ru/python-vs-perl.shtml особенно часть "Под капотом"). Кроме того, Perl
>>просто старенький, когда он разрабатывался было ещё не ясно для чего
>>будут использоваться скриптовые языки (исторический экскурс можно почитать тут http://michurin.com.ru/python-vs-perl-2.shtml)
>
>У перла существенных недостаков всего 2:
>
>1. Нет ООП.

Вижу Вы "специалист" с большой буквы! ;) http://www.iinteractive.com/moose/ - это Вам не ООП?

>2. Perl6 --- 10 лет в разработке (Вы еще спрашиваете почему же
>его хоронят?).

Всему свое время. Он вберет в себя лучшее из руби, питон и явы. ;)


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Stanislaus , 08-Ноя-09 13:58 
>Всему свое время. Он вберет в себя лучшее из руби, питон и
>явы. ;)

+1... Тоже с нетерпением жду Perl6. Очень многообещающий и необычный эксперимент.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Name , 08-Ноя-09 22:48 
>[оверквотинг удален]
>>>(можно почитать тут http://michurin.com.ru/python-vs-perl.shtml особенно часть "Под капотом"). Кроме того, Perl
>>>просто старенький, когда он разрабатывался было ещё не ясно для чего
>>>будут использоваться скриптовые языки (исторический экскурс можно почитать тут http://michurin.com.ru/python-vs-perl-2.shtml)
>>
>>У перла существенных недостаков всего 2:
>>
>>1. Нет ООП.
>
>Вижу Вы "специалист" с большой буквы! ;) http://www.iinteractive.com/moose/ - это Вам не
>ООП?

Честно? Читал не так давно на хабре, в реальном коде это не видел.

>>2. Perl6 --- 10 лет в разработке (Вы еще спрашиваете почему же
>>его хоронят?).
>
>Всему свое время. Он вберет в себя лучшее из руби, питон и
>явы. ;)

Надеюсь.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено phaoost , 08-Ноя-09 17:06 
>У перла существенных недостаков всего 2:
>1. Нет ООП.
>2. Perl6 --- 10 лет в разработке (Вы еще спрашиваете почему же
>его хоронят?).

1 - для меня это - достоинство. оно там есть кстати, но можно без него обойтись.
а допилят или нет 6й мне как-то пофигу. 5й вполне так неплохо работает.


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Oles , 07-Ноя-09 14:58 
Тото в ЖЖ постоянно что то ломается.
А по поводу что оно где-то "ещё используется", я вам открою тайну, ещё во многих очень крупных компаниях и 7-я и 8-я соляра стоит. Но ведь не говорят что 7-я соляра живее всех живых? :) Вы лучше приводите статистику _новых_ проектов которые на перле создаются.

"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено mma , 07-Ноя-09 15:31 
На чем писать скрипты администрирования, веб-интефейсы cgi'шные?  на питон чтоли?  чегото не под него не наблюдается что-то похожее на CPAN по объему? У perl  есть своя ниша и не стоит его позиционировать как универсальный

"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено astoon , 07-Ноя-09 15:54 
скрипты администрирования лучше писать на пайтон.

"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено mma , 07-Ноя-09 16:14 
а где под питон богатый набор различных библиотек реализующих те или иные задачи - тут главное скорость написания, и Perl  за свои года скопил не мало полезного кода

"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Аноним , 07-Ноя-09 16:43 
Это от перла так мозг усыхает, что уже не догадаться на python.org зайти?
http://pypi.python.org/pypi?%3Aaction=browse

"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено анонимус , 07-Ноя-09 20:07 
>скрипты администрирования лучше писать на пайтон.

А ты сам пробовал?


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Name , 07-Ноя-09 20:25 
>>скрипты администрирования лучше писать на пайтон.
>
>А ты сам пробовал?

Что значит пробовал, на них все и есть, чуть-чуть еще баша, но это уже другая история.


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Name , 07-Ноя-09 16:22 
>На чем писать скрипты администрирования, веб-интефейсы cgi'шные?  на питон чтоли?  

Скрипты администрирования лучше всего писать на python и bash, рекомендую вот эту книжку http://oreilly.com/catalog/9780596515829  

,  cgi лучше не использовать (да и рассуждения на чем писать cgi особого смысла не имеют --- хоть на чём.),  fastcgi много лучше по производительности, и тут приходим к тому что у python уже есть куча готовых и богатых своими возможностями веб-фреймворков, наиболее известный из которых http://www.djangoproject.com/    

>чегото не под него не наблюдается что-то похожее на CPAN по
>объему?

По количеству библиотек perl и python примерно на одинаковом уровне, а вот по их разнообразию python уж очень сильно обходит perl.

>У perl  есть своя ниша и не стоит его
>позиционировать как универсальный

Python же можно так позиционировать.



"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено mma , 07-Ноя-09 19:49 
>fastcgi много лучше по производительности

Зачем интерфейсу администрирования производительность - тут нужна максимальная простота, и уж джанга тут незачем, это не сайты ведь.

>По количеству библиотек perl и python примерно на одинаковом уровне, а вот по их разнообразию python уж очень сильно обходит perl.

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

>Python же можно так позиционировать.

Да можно, но например прикладной софт на перл никто никогда не догадается писать потомучто он для этого не подходит, но однако в узконаправленности и кроются преимущества перла

Грубо говоря - код который должен крутиться постоянно на перл лучше не писать, код же который является вспомогательным и требует разового но частого выполнения в частности по обработке и анализу текстовых данных(особенно если кол-во запросов на его выполнение велико) эфективнее будет работать на перл чем на питон(хотябы за счет времени запуска)

Хотя это все относительно


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Name , 07-Ноя-09 20:22 
>>fastcgi много лучше по производительности
>
>Зачем интерфейсу администрирования производительность - тут нужна максимальная простота, и уж джанга
>тут незачем, это не сайты ведь.

О как. Теперь тема сменилась c "cgi" на "интерфейс администрирования" , так вот чего вы собрались администрировать?

Пример?

P.S. Джанга (даже ее админка) вполне подойдет к примеру для администрирования базы данных, тем более на разворачивание уйдет минут 20 (вместе с созданием базы данных, если структура уже известна)

>>По количеству библиотек perl и python примерно на одинаковом уровне, а вот по их разнообразию python уж очень сильно обходит perl.
>
>Давайте решим о каких библиотеках идет речь? Когда речь идет нисколько о
>библиотеках как таковых сколько о модулях реализующих тот или иной функционал
>востребованный при администрировании то перл попрежнему держит лидерство

Пример такого модуля?  

Текст (чем так гордится perl), python делает стандартной библиотекой. БД - любые (+ тройку ORM могу назвать сходу), с сетью вообще проблем нет и в стандартной библиотеке, уже не говоря о twisted... , GUI - легко и непренуждено, расчеты любой сложности (scipy), с поддержкой распараллеливания на кластер.    


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Stanislaus , 07-Ноя-09 21:28 
Вот GUI и на Perl и на Python один сплошной костыль.

Я очень рад, что вам нравится Python. Но я бы не стал его позиционировать как универсальный язык. Все имеет свою нишу.


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Name , 08-Ноя-09 11:39 
>Вот GUI и на Perl и на Python один сплошной костыль.

Пишу и на qt и qtk , в каком месте это костыль?
Вот например "простое окошко на qt4", по сути скелет приложения:

#!/usr/bin/env python
#-*-coding:utf8-*-
from PyQt4 import  QtGui
import sys

class SampleWindow(QtGui.QWidget):
    '''Класс окна'''
    def __init__(self,parent=None):
        QtGui.QWidget.__init__(self,parent)
        self.setWindowTitle(u'Наше тестовое окно')

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    myapp = SampleWindow()
    myapp.show()
    sys.exit(app.exec_())        
  

В каком месте это костыль?

>Я очень рад, что вам нравится Python. Но я бы не стал
>его позиционировать как универсальный язык. Все имеет свою нишу.

Я не знаю как вы хотите его позиционировать, но факт в том что это язык универсальный.


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Stanislaus , 08-Ноя-09 13:17 
>В каком месте это костыль?

Ну, про что я и говорил. И насколько сложный GUI у вас таким способом получится написать? На С++ писать не пробовали?

#include <QApplication>
#include <QMainWindow>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QMainWindow mainWin;
    mainWin.setWindowTitle("И это для Питошников называется каркасом приложения? Хе-хе...");
    mainWin.show();
    return app.exec();
}

>Я не знаю как вы хотите его позиционировать, но факт в том что это язык универсальный.

Да, завтра начинаю писать на Python драйвер для жесткого диска.


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено dq0s4y71 , 08-Ноя-09 17:01 
>На С++ писать не пробовали?

+1
А на (о, ужас!) Делфи вообще писать ничего не надо. Оно окошечко само создает при запуске среды. Hint: не надо ругать микроскоп за то, что он плохо приспособлен для забивания гвоздей.

>Да, завтра начинаю писать на Python драйвер для жесткого диска.

Ну да, это же "универсальный язык". ;)


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Добрый Дохтур , 08-Ноя-09 17:10 
>>В каком месте это костыль?
>
>Ну, про что я и говорил. И насколько сложный GUI у вас
>таким способом получится написать? На С++ писать не пробовали?

ну-ну. удачи в написании переносимых приложений.



"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Stanislaus , 08-Ноя-09 17:32 
Ну хреново у Python и Perl c написанием ХОРОШИХ, КАЧЕСТВЕННЫХ GUI приложений. Я сам на своей шкуре это испытал и 2 года переносил одно из своих приложений с Python на C++, ибо его уже поддерживать было нереально.

И потом, есть такая классная программулинка, Task Coach называется. Так вот, эта программулинка не работает на кириллическом Windows из-за какой-то тухленькой Python'овской либы, и автор с этим уже очень много времени справиться не может. И кто еще будет тут что-либо говорить о переносимости.


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Name , 08-Ноя-09 21:23 
>И потом, есть такая классная программулинка, Task Coach называется. Так вот, эта
>программулинка не работает на кириллическом Windows из-за какой-то тухленькой Python'овской либы,

Какой конкретно? Код открыт?

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

10 минут на изучение сборки в py2exe хватит? Вперед!



"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Stanislaus , 08-Ноя-09 23:01 
>Какой конкретно? Код открыт?

http://www.taskcoach.org/

  File "ntpath.pyo", line 102, in join
UnicodeDecodeError: 'ascii' codec can't decode byte 0xf5 in position 1: ordinal not in range(128)
Traceback (most recent call last):
  File "taskcoachlib\gui\mainwindow.pyo", line 315, in onClose
  File "taskcoachlib\gui\mainwindow.pyo", line 281, in quit
  File "taskcoachlib\gui\iocontroller.pyo", line 258, in close
  File "taskcoachlib\gui\iocontroller.pyo", line 350, in __saveUnsavedChanges
  File "taskcoachlib\gui\iocontroller.pyo", line 167, in save
  File "taskcoachlib\gui\iocontroller.pyo", line 215, in _saveSave
  File "taskcoachlib\persistence\taskfile.pyo", line 310, in save
  File "taskcoachlib\persistence\taskfile.pyo", line 292, in acquire_lock
  File "taskcoachlib\thirdparty\lockfile\lockfile.pyo", line 540, in FileLock
  File "taskcoachlib\thirdparty\lockfile\lockfile.pyo", line 309, in __init__
  File "ntpath.pyo", line 102, in join
UnicodeDecodeError: 'ascii' codec can't decode byte 0xf5 in position 1: ordinal not in range(128)
Traceback (most recent call last):
  File "taskcoachlib\gui\mainwindow.pyo", line 315, in onClose
  File "taskcoachlib\gui\mainwindow.pyo", line 281, in quit
  File "taskcoachlib\gui\iocontroller.pyo", line 258, in close
  File "taskcoachlib\gui\iocontroller.pyo", line 350, in __saveUnsavedChanges
  File "taskcoachlib\gui\iocontroller.pyo", line 167, in save
  File "taskcoachlib\gui\iocontroller.pyo", line 215, in _saveSave
  File "taskcoachlib\persistence\taskfile.pyo", line 310, in save
  File "taskcoachlib\persistence\taskfile.pyo", line 292, in acquire_lock
  File "taskcoachlib\thirdparty\lockfile\lockfile.pyo", line 540, in FileLock
  File "taskcoachlib\thirdparty\lockfile\lockfile.pyo", line 309, in __init__
  File "ntpath.pyo", line 102, in join
UnicodeDecodeError: 'ascii' codec can't decode byte 0xf5 in position 1: ordinal not in range(128)

>10 минут на изучение сборки в py2exe хватит? Вперед!

Я уже год не программирую на Python, ибо нужды такой не возникало.
Буду очень благодарен, если поможете автору. Очень полезная программулька.


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Ну типа имя , 10-Ноя-09 15:31 
>[оверквотинг удален]
>  File "taskcoachlib\thirdparty\lockfile\lockfile.pyo", line 309, in __init__
>  File "ntpath.pyo", line 102, in join
>UnicodeDecodeError: 'ascii' codec can't decode byte 0xf5 in position 1: ordinal not
>in range(128)
>
>>10 минут на изучение сборки в py2exe хватит? Вперед!
>
>Я уже год не программирую на Python, ибо нужды такой не возникало.
>
>Буду очень благодарен, если поможете автору. Очень полезная программулька.

У меня виндусу нет. А ошибка простая 'UnicodeDecodeError: 'asci codec can't decode byte 0xf5' и лечится просто: добавьте в начало файла ntpath.py строчку #-*-сoding:utf8-*-


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено dq0s4y71 , 08-Ноя-09 17:53 
>ну-ну. удачи в написании переносимых приложений.

А когда вам скажут, что этот код скомпилится на любой платформе, где есть gcc + Qt, вы скажете: "А у него нет блек-джека", да? :) Вы уж разберитесь, ЧТО вам нужно: чтобы оно быстро разрабатывалось, быстро работало, было портабельным, или таки умело варить кофе? Поймите: ни один язык не реализует ВСЕ эти возможности одинаково хорошо, даже Питон как бы вы свято в него не верили. Всегда что-то одно идет за счет чего-то другого. Именно поэтому любой мастер пользуется в своей работе разными инструментами, и только дилетант делает все кувалдой.



"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Добрый Дохтур , 08-Ноя-09 18:15 
>[оверквотинг удален]
>
>А когда вам скажут, что этот код скомпилится на любой платформе, где
>есть gcc + Qt, вы скажете: "А у него нет блек-джека",
>да? :) Вы уж разберитесь, ЧТО вам нужно: чтобы оно быстро
>разрабатывалось, быстро работало, было портабельным, или таки умело варить кофе? Поймите:
>ни один язык не реализует ВСЕ эти возможности одинаково хорошо, даже
>Питон как бы вы свято в него не верили. Всегда что-то
>одно идет за счет чего-то другого. Именно поэтому любой мастер пользуется
>в своей работе разными инструментами, и только дилетант делает все кувалдой.
>

там, где есть gcc+qt - есть и python.
и речь не c++ vs python. речь о perl vs python.


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено dq0s4y71 , 08-Ноя-09 20:24 
>и речь не c++ vs python. речь о perl vs python.

Тогда зачем вы упоминаете здесь ООП, многопоточность и скорость выполнения? Ну, не для создания многопоточных сверхбыстрых ООП-приложений Перл предназначался, понимаете?


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Добрый Дохтур , 08-Ноя-09 23:02 
>>и речь не c++ vs python. речь о perl vs python.
>
>Тогда зачем вы упоминаете здесь ООП, многопоточность и скорость выполнения? Ну, не
>для создания многопоточных сверхбыстрых ООП-приложений Перл предназначался, понимаете?

о, как. а у меня почему-то на python это получается. причём, из того что я тут показывал, мне ни разу не понадобились внешние модули(привет, cpan).

смотрим сюда: http://blog.doughellmann.com/2009/04/implementing-mapreduce-...


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Sphynkx , 08-Ноя-09 19:06 
>Да, завтра начинаю писать на Python драйвер для жесткого диска.

Не надо мелочиться - лучше сразу ядро. Язык-то универсальный, производительный ;-))


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Name , 08-Ноя-09 21:10 
>[оверквотинг удален]
>#include <QMainWindow>
>
>int main(int argc, char *argv[])
>{
>    QApplication app(argc, argv);
>    QMainWindow mainWin;
> mainWin.setWindowTitle("И это для Питошников называется каркасом приложения? Хе-хе...");
>    mainWin.show();
>    return app.exec();
>}

И? Да это каркас и кода в нем больше, чем в плюсах. А дальше с каждым добавленным элементом, плюсы начинают набухнуть, а уж если где хотя бы строчку текста обработать нужно, али еще чего, вот тут начинается .

>>Я не знаю как вы хотите его позиционировать, но факт в том что это язык универсальный.
>
>Да, завтра начинаю писать на Python драйвер для жесткого диска.

Успехов вам.


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Stanislaus , 08-Ноя-09 21:20 
>а уж если где хотя бы строчку текста обработать нужно, али еще чего, вот тут начинается.

Что начинается? =) Вы меня простите, но ваша любовь к Python превышает все разумные для человека пределы. Я не спорю, что он очень хороший язык, но он не для больших, серьезных, долгосрочных проектов.

Наверное мы с вами друг-друга немного не понимаем по одной простой причине - я программист, а вы сисадмин. Я пишу программы, которые используются лэйманами и если они будут работать медленно или плохо, мне начнут выносить мозг. А вы пишете программы, которые сами же и используете и можете их подправить в любой момент.

>Успехов вам.

Мне "Успехов вам." написать драйвер не поможет.


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Name , 08-Ноя-09 21:29 
>>а уж если где хотя бы строчку текста обработать нужно, али еще чего, вот тут начинается.
>
>Что начинается? =) Вы меня простите, но ваша любовь к Python превышает
>все разумные для человека пределы. Я не спорю, что он очень
>хороший язык, но он не для больших, серьезных, долгосрочных проектов.

Чёрт, сайт презедента на python... когда власть сменится? Ви что-то знаете ?

>>Успехов вам.
>
>Мне "Успехов вам." написать драйвер не поможет.

Драйвера на интерпритируемых языках не пишутся. Зачем же вы приводите неразумные примеры? Системное программирование оставьте для С и асма. Для прикладного уровня python язык универсальный.


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Stanislaus , 08-Ноя-09 21:33 
>Чёрт, сайт презедента на python...

Откуда такая информация? Принимали участие? =)



"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Name , 08-Ноя-09 21:46 
>>Чёрт, сайт презедента на python...
>
>Откуда такая информация? Принимали участие? =)

Факт известный. Django. Нет участия не принимал.


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено аноним , 08-Ноя-09 22:03 
в гос. секторе вообще все через одно место: как правило закрытые разработки, в куче продуктов до сих пор не могут отделаться от доса, баги разработчики правят по году, да о чем там говорить если базы на аксессе!

"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Name , 08-Ноя-09 22:53 
>в гос. секторе вообще все через одно место: как правило закрытые разработки,
>в куче продуктов до сих пор не могут отделаться от доса,
>баги разработчики правят по году, да о чем там говорить если
>базы на аксессе!

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


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Stanislaus , 08-Ноя-09 22:04 
Ммммм... Что-то больно много следов от Drupal в "новом дизайне"...

Его случайно не переделывали?


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Name , 08-Ноя-09 23:17 
>>а уж если где хотя бы строчку текста обработать нужно, али еще чего, вот тут начинается.
>
>Что начинается? =)

Вам рассказать на чем лучше обрабатывать текст, на C++ или любом скриптовом языке?
По вашему вопросу, все что может Qt может и PyQt и Gui рисовать любой сложности, и остальные части это фреймворка использовать.

>Вы меня простите, но ваша любовь к Python превышает
>все разумные для человека пределы.

Какая любовь... рабочий инструмент, один из...

> Я не спорю, что он очень
>хороший язык, но он не для больших, серьезных, долгосрочных проектов.

Yotube --- полностью на python. Google, Yandex --- частично. Поддержка большая
от Google, от Canonical от IBM. launchpad.net --- на python. Gui в Ubuntu административные по большей части на python, вплоть до установщика. На Django крутятся много серьезных сайтов. Да список слишком долгий чтобы все это продолжать. С чего вы взяли что для серьезных проектов python не подходит? По мне так perl с его игрушечными возможностями, и не понятной ситуацией с развитем, на данный не подходит для крупных проектов (хотя когда-то --- да был фаворитом).


>Наверное мы с вами друг-друга немного не понимаем по одной простой причине
>- я программист, а вы сисадмин.

Сегодня сисадмин, завтра программист или наоборот какая разница?

>Я пишу программы, которые используются
>лэйманами и если они будут работать медленно или плохо, мне начнут
>выносить мозг.
>А вы пишете программы, которые сами же и используете
>и можете их подправить в любой момент.

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


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Stanislaus , 08-Ноя-09 23:47 
Я думаю, лучше закрыть эту полемику...

Я имел в виду приложения для управления предприятиями, складами, бух.учет, навигационное оборудование, ПО для диспетчерских аэропортов.


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Аноним , 07-Ноя-09 15:04 
opennet кстати тоже на Perl: http://www.opennet.me/guide.shtml#hw



"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено astoon , 07-Ноя-09 15:51 
Код на perl5 нормально читаемый, если аккуратно написан.
Но perl5 неряшливо организован, как снаружи, так и внутри. Слишком диагональный. Каша мала в интерпретаторе, и, как следствие, в самом языке. И, несмотря на то, что в кэмэл-буке этим хвалятся, такая неряшливость и диагональность - оказалась минусом, а не плюсом. В этом признавался и сам Ларри.
С крупными проектами все понятно - никто не начинает их на perl5.
Но и на малом скриптовании от тоже сдал свои позиции - со всеми подобными задачами Пайтон лучше справляется.
Есть одна вещь, где он однозначно лучше - если много скриптов часто запускать - у perl5 старт наиболее быстрый.
Тем не менее, в душе продолжаю любить perl5.
И кстати, еще на perl5 работают тысячи биллинговых систем по всему миру :)

"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Аноним , 08-Ноя-09 02:58 
Благодаря вылизанности пятой  ветки, считаю перл скриптовым языком, на котором стоит начинать web-проекты средней и большой сложности, если нужна быстрая разработка, высокая производительность и надежность. А по-настоящему большие проекты лучше писать на яве. :)
А питон ... Единственный его плюс - пара фреймворков, но это плюс этих самых фреймворков, а не языка. У питона нет четкой области применения - поэтому он вроде как и подходит для всего, но только по чуть-чуть :)

А microsoft использует ASP.net, они наверное тоже дураки и не знают про питон :)
Мне непонятна фанатичность некоторых людей, отстаивающих питон, перескакивая с одной области применения на другую, это всего лишь язык :)


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Добрый Дохтур , 08-Ноя-09 03:45 
>Мне непонятна фанатичность некоторых людей, отстаивающих питон, перескакивая с одной области применения
>на другую, это всего лишь язык :)

на этом языке приятно писать. всё делается просто и изящно.
покажите, как на перле будет выглядеть выборка из БД результата запроса порциями по 2к записей.

На питоне такое делается просто и изящно через генератор.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено аноним , 08-Ноя-09 10:46 
может вы уже пойдете изучать perl, если вам так хочется узнать как это выглядит на perl?

"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Name , 08-Ноя-09 12:36 
>может вы уже пойдете изучать perl, если вам так хочется узнать как
>это выглядит на perl?

То есть код вы привести не можете, но ляпнуть это завсегда?


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено аноним , 08-Ноя-09 13:53 
могу, проблем с этим нет, но вот у питонщиков жуткий батхерт по поводу своего любимого языка. я спорил с питонщиками ни раз, и, честно, уже поднадоело. всегда начинается: "а ты вот так сделать можешь?", после показа кода опять: "ну это ладно, а вот так?", делаешь так, и снова слышишь: "ну а вот это можно?". Питонщики, успокойтесь, те куски кода, что вы ваяете на питоне, отнюдь не являются чем-то уникальным, самобытным и вехой программирования.

"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено dq0s4y71 , 08-Ноя-09 17:26 
>могу, проблем с этим нет, но вот у питонщиков жуткий батхерт по
>поводу своего любимого языка. я спорил с питонщиками ни раз, и,
>честно, уже поднадоело. всегда начинается: "а ты вот так сделать можешь?",
>после показа кода опять: "ну это ладно, а вот так?", делаешь
>так, и снова слышишь: "ну а вот это можно?". Питонщики, успокойтесь,
>те куски кода, что вы ваяете на питоне, отнюдь не являются
>чем-то уникальным, самобытным и вехой программирования.

+1
Я давно понял, что Питон - это не язык программирования, а религия. :) Конечно, у любого языка есть фанатики, но Питон, по-моему, как никакой другой способствует фанатизму, т.к. его создание не преследовало какой-то конкретной цели, но вместо этого навязывается некий принципа программирования, который позиционируется как единственно правильный.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Добрый Дохтур , 08-Ноя-09 18:26 
>могу, проблем с этим нет, но вот у питонщиков жуткий батхерт по
>поводу своего любимого языка. я спорил с питонщиками ни раз, и,
>честно, уже поднадоело.

так покажите код =) в чём проблема то? там, на верху страницы есть код, который берет файлы из каталога и проходится по ним набором регекспов. Код умеет утилизировать сразу несколько процессоров. На написание этого у меня ушло несколько минут. При этом код одинаково работает на Windows/Linux/Solaris.



"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Name , 08-Ноя-09 21:20 
>могу, проблем с этим нет,

Если бы вы сказали, например, что это легко делается при помощи SQL, я бы вас понял, но вы действительно не понимаете о чем речь. Речь была о том что в перле нет понятия генераторов, а штука действительно очень удобная.

>но вот у питонщиков жуткий батхерт по
>поводу своего любимого языка.

Аналогично у перлистов.

>я спорил с питонщиками ни раз, и,
>честно, уже поднадоело.

А зачем тогда вы лезете... Ну раз не охота?


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Stanislaus , 08-Ноя-09 13:31 
>На питоне такое делается просто и изящно через генератор.

Думаешь на Perl аналог генератора сложно сделать? Дробим средствами СУБД большой бинарник блоками во временную таблицу и по блоку выгружаем. Какие проблемы то? Я такое делал и на Perl, и на Python и на С...

Тут успех зависит от решения и от возможностей СУБД, а не от наличия или отсутствия ВСТРОЕННОГО генератора.



"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Добрый Дохтур , 08-Ноя-09 17:24 
>Думаешь на Perl аналог генератора сложно сделать? Дробим средствами СУБД большой бинарник
>блоками во временную таблицу и по блоку выгружаем. Какие проблемы то?

ну-ну. если у вас права только на select и вы не можете создавать объекты в базе.
Да и то, что вы предложили - пустая трата ресурсов.

>Тут успех зависит от решения и от возможностей СУБД, а не от
>наличия или отсутствия ВСТРОЕННОГО генератора.

Пример:
http://code.activestate.com/recipes/137270/

работает на sqlite, mysql, postgres, oracle, mssql, Firebird.
без лишнего копирования и создания временных объектов в БД.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Stanislaus , 08-Ноя-09 18:05 
Я вообще-то немного другое имел в виду. Выгрузку БОЛЬШИХ БИНАРНЫХ ОБЪЕКТОВ.

Тем не менее, .fetchmany() действительно положительная черта Python, но с другой стороны, курсоры - это все же особенность БД и они тут играю основную роль.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Добрый Дохтур , 08-Ноя-09 18:19 
>Я вообще-то немного другое имел в виду. Выгрузку БОЛЬШИХ БИНАРНЫХ ОБЪЕКТОВ.
>
>Тем не менее, .fetchmany() действительно положительная черта Python, но с другой стороны,
>курсоры - это все же особенность БД и они тут играю
>основную роль.

безусловно. я же не говорю, что курсоры БД доступны только в python. Я лишь прошу показать код на perl.


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Oles , 08-Ноя-09 11:44 
У перла много проблем.
Глобальные переменные в функциях по-умолчанию, ужасные массивы и сложные структуры, зависимость возвращаемого значения от контекста, кривейший "do", идиотские шеловские eq, gt, ne для сравнения, вообще имена многих функций - заклинания и матюки из двух-трёх букв. За "bless" вообще нужно предавать казни - это слово в человеческих языках не обозначает никакого действия меняющего хоть что-нибудь в реальности. Ну и главное - многообразие языка, где теперь каждый профи извращается как же ещё можно сделать то-же самое другим путём, а потом ребята сидят и парят себе голову "что он этим хотел сказать". Вобщем язык не для людей а для Ларри Вола, ибо крут он.

"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Stanislaus , 08-Ноя-09 13:35 
>У перла много проблем.

У Perl нет проблем. Так же как их нет и у Python. Проблемы есть у людей, которые ленятся читать документацию к языку и к его либам.

Для меня Perl == Python. Вот C++ это другое дело. Действительно УНИВЕРСАЛЬНЫЙ язык.


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Moosh , 09-Ноя-09 06:44 
Ассемблер, вот действительно универсальный язык!

"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Stanislaus , 09-Ноя-09 14:36 
Согласен. Но это уже другая история. =)

"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Аноним , 08-Ноя-09 15:17 
Это уже право максимализм. Определять кому на чем писать, исходя из ваших представлениях об удобстве. Вы игнорируете огромное число кода написанного на перле, и того , который пишется сейчас и будет создаваться в ближайшее время и придирветесь к каким-то раздражающим(вас) мелочам в синтаксисе, которые есть в любом языке. Такой криетрий оценки языка не объективен.

"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Добрый Дохтур , 09-Ноя-09 10:01 
Товарищи перлисты, а покажите реализацию массива, сохраняющего имена функций из которых к нему обращались с сохранением порядка.

Ессно, кроме полезного payload'а.


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Аноним , 09-Ноя-09 10:38 
Товарищ питонист, а покажите реализацию цикла for в стиле С.

Ессно, кроме насилования while'а.


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Добрый Дохтур , 09-Ноя-09 11:29 
>Товарищ питонист, а покажите реализацию цикла for в стиле С.
>
>Ессно, кроме насилования while'а.

а чем for i in xrange(0,100) не нравится?
И в какой ситуации так уж безумно нужно C-style for?
А покажите мне способ получения последовательностей случайной длины.


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Аноним , 09-Ноя-09 13:01 
>> а чем for i in xrange(0,100) не нравится?

Потому что есть обычная итерация с условием(часто шаг нужно делать не +/- 1, нередко встречаются множественные условия, а не только проверка переменной-счетчика), а есть проход по последовательности элементов. И в каждом случае удобнее использовать один из них.

>> И в какой ситуации так уж безумно нужно C-style for?

И в какой же ситуации так уж безумно нужен "способ получения последовательностей случайной длины" ? Безумно не нужно, ничего, в том числе от ЯП, если нужно значит что-то в жизни надо поменять к лучему :)

Да и в каком контесте подразумевается случайная последовательность ? Вам нужен цикл со случаым числом итераций или множество элементов случайной длины ?


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Добрый Дохтур , 09-Ноя-09 14:31 
>>> а чем for i in xrange(0,100) не нравится?
>Потому что есть обычная итерация с условием(часто шаг нужно делать не +/-
>1,
>>> [i for i in xrange(0,20,2)]          

[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

>>> [i for i in xrange(20,0,-3)]

[20, 17, 14, 11, 8, 5, 2]

>нередко встречаются множественные условия, а не только проверка переменной-счетчика)

практически всегда эта переменная-счётчик нужна для последовательного доступа к элементам массива. Вы покажите пример, где жизненно необходим C-style for.
Вон, в ruby тоже нет C-style for, там вообще 100.times { тело цикла }

>И в какой же ситуации так уж безумно нужен "способ получения последовательностей
>случайной длины" ? Безумно не нужно, ничего, в том числе от
>ЯП, если нужно значит что-то в жизни надо поменять к лучему
>:)

простой пример: вам нужно последовательность в виде m положительных полупериодов синуса.
про случайную последовательность случайной длины взято http://www.ibm.com/developerworks/ru/library/l-pycon/index.html

У меня был более жизненный пример. Представьте, что у вас есть некий большой набор измерений за сутки (M) и есть некая величина(v), рассчитываемая на основе этих данных.
Задача: рассчитать допустимый процент потерь исходных данных (M) при известном проценте отклонения для конечного результата(v) и получить данные для диаграммы погрешность v от процента потерь.

>Да и в каком контесте подразумевается случайная последовательность ? Вам нужен цикл
>со случаым числом итераций или множество элементов случайной длины ?
>Предположим, мы хотим получить поток случайных чисел меньших единицы, которые подчиняются обратному ограничению. А именно: мы хотим, чтобы каждое следующее число было по крайней мере на 0.4 больше или меньше предыдущего. Более того, сам поток не бесконечен, а заканчивается после случайного числа шагов. Например, мы прервем его, как только появится число меньшее 0.1. Описанные ограничения несколько схожи с теми, что можно найти в алгоритме "случайного блуждания", причем условие окончания напоминает "локальный минимум", но, определенно, эти требования мягче, чем при решении реальных задач.

И вообще... перл, такой чудный перл:

#!/usr/bin/perl

my $global="string!";

sub foo { print "foo called!\n"; $global="5"; }

$foo="haha";

print "foo=$foo\n";
print "global=$global\n";
print "wow!\n" if defined foo;
print "global=$global\n";
print "foo=$foo\n";

$ ./test.pl      
foo=haha
global=string!
foo called!
wow!
global=5
foo=haha

Ахренеть... я хотел проверить существование переменной, зачем вызывать функцию?
Расскажите, как узнать, что функция уже определена, но без её вызова?
И как узнать, что нам вернула некая функция: строку, число, список, хеш или функцию?


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Добрый Дохтур , 09-Ноя-09 14:40 
>Ахренеть... я хотел проверить существование переменной, зачем вызывать функцию?

upd: забыл $ перед foo. Однако, остаётся открытым вопрос:

>Расскажите, как узнать, что функция уже определена, но без её вызова?
>И как узнать, что нам вернула некая функция: строку, число, список, хеш
>или функцию?


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Stanislaus , 09-Ноя-09 15:06 
>>Расскажите, как узнать, что функция уже определена, но без её вызова?
>>И как узнать, что нам вернула некая функция: строку, число, список, хеш
>>или функцию?

defined(&func);

СПИСОК = ХЕШ = МАССИВ, ХЕШ - АБСТРАКЦИЯ, это контекст либо списковый, либо скалярный.

Можно узнать на что указывает ссылка: ref $ref;

SCALAR, ARRAY, HASH, CODE, GLOB, REF, LVALUE, IO::Handle ...

Вот отличить строку от числа сложнее, но можно воспользоваться third-party классами, но нафиг это нужно.

http://www.perlmonks.org/?node_id=766000

Ну, вспоминая все это ненароком понимаешь, что С/C++ программисту, например, Python будет ближе к сердцу. Perl слишком "другой" язык. Там заложены другие идеи.


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Stanislaus , 09-Ноя-09 14:41 
Может всетаки print "wow!\n" if defined *foo;

"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Аноним , 09-Ноя-09 15:53 
>> [i for i in xrange(0,20,2)]          
>> [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
>> [i for i in xrange(20,0,-3)]
>> [20, 17, 14, 11, 8, 5, 2]

А если шаг меняется в процессе цикла ? :P

>> Вы покажите пример, где жизненно необходим C-style for.

Да что ж вам везде мерещится жизненная необходимость ? Итерация или смерть ... Вы знакомы с понятием удобства ? Вот мне например удобней написать конструкцию вида
for ($i=0; ($i < 100) && (-e "$i.txt"); $i++) {}

чем делать лишний if в цикле

>простой пример: вам нужно последовательность в виде m положительных полупериодов синуса.
>про случайную последовательность случайной длины взято http://www.ibm.com/developerworks/ru/library/l-pycon/index.html

Мой день всегда начинается с чашки кофе и расчета последовательности в виде m положительных полупериодов синуса. И знаете, я очень страдаю, что мне приходится писать это на перле...

>У меня был более жизненный пример. Представьте, что у вас есть некий
>большой набор измерений за сутки (M) и есть некая величина(v), рассчитываемая
>на основе этих данных.
>Задача: рассчитать допустимый процент потерь исходных данных (M) при известном проценте отклонения
>для конечного результата(v) и получить данные для диаграммы погрешность v от
>процента потерь.

... к вечеру у меня часто накапливается некий большой набор изменений за сутки(M), и сразу же, как назло, появляется некая величина(v) которую нужно рассчитать на основе этих данных. И что бы вы думали - я опять мучаюсь с перлом.

>>Предположим, мы хотим получить поток случайных чисел меньших единицы, которые подчиняются обратному ограничению. А именно: мы хотим, чтобы каждое следующее число было по крайней мере на 0.4 больше или меньше предыдущего. Более того, сам поток не бесконечен, а заканчивается после случайного числа шагов. Например, мы прервем его, как только появится число меньшее 0.1. Описанные ограничения несколько схожи с теми, что можно найти в алгоритме "случайного блуждания", причем условие окончания напоминает "локальный минимум", но, определенно, эти требования мягче, чем при решении реальных задач.

Предположим это вы хотите получить список случайных величин с подобными ограничениями. За 8 лет программирвоания мне ни разу не понадобилось ничего подобного
$a[0] = rand;
for ($i=rand, $len = 1; $i > 0.1; $i=rand) {
    if (abs($a[$len-1] - $i) > 0.4) {
    push(@a, $i);
    $len++;
    }
}


>И вообще... перл, такой чудный перл:

use strict;

>Ахренеть... я хотел проверить существование переменной, зачем вызывать функцию?
>Расскажите, как узнать, что функция уже определена, но без её вызова?

Только после того как расскажете зачем писать такой код.

>И как узнать, что нам вернула некая функция: строку, число, список, хеш
>или функцию?

perldoc -f ref


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Добрый Дохтур , 09-Ноя-09 17:41 
>А если шаг меняется в процессе цикла ? :P

для такого крайне редкого случая я просто напишу генератор, где один из аргументов - функция, задающая закон по которому меняется шаг.

>Да что ж вам везде мерещится жизненная необходимость ? Итерация или смерть
>... Вы знакомы с понятием удобства ? Вот мне например удобней
>написать конструкцию вида
>for ($i=0; ($i < 100) && (-e "$i.txt"); $i++) {}
>чем делать лишний if в цикле

ох... что ж у перлистов кругом грязные хаки... а где проверки на то что это не каталог?

Ваше:

def somework(fname)

[somework(file) for i in xrange(0,100) if os.path.isfile("".join(['./',str(i),'.txt']))


>$a[0] = rand;
>for ($i=rand, $len = 1; $i > 0.1; $i=rand) {
>    if (abs($a[$len-1] - $i) > 0.4) {
> push(@a, $i);
> $len++;
>    }
>}

чуть-чуть поправим условия:

#!/usr/bin/perl

$a[0] = rand;
for ($i=rand, $len = 1; $i > 0.000000001; $i=rand) {
    if (abs($a[$len-1] - $i) > 0.0000001) {
    push(@a, $i);
    $len++;
    }
}

и оно поедает всю память.


>>Ахренеть... я хотел проверить существование переменной, зачем вызывать функцию?
>>Расскажите, как узнать, что функция уже определена, но без её вызова?
>
>Только после того как расскажете зачем писать такой код.

легко. например узнать, сколько у нас функций в программе, узнать какие функции появляются после импорта модуля, итп...


>>И как узнать, что нам вернула некая функция: строку, число, список, хеш
>>или функцию?
>perldoc -f ref

гыгыг... а слабо показать все методы класса?

#!/usr/bin/perl

@arr=("1","50","10","5");
foreach $i (@arr) { print "$i\n"; }
print "-------------------\n";
@arr=sort(@arr);
foreach $i (@arr) { print "$i\n"; }

print "===============\n";

@arr=(1,50,10,5);
foreach $i (@arr) { print "$i\n"; }
print "-------------------\n";
@arr=sort(@arr);
foreach $i (@arr) { print "$i\n"; }

гыгы... числа==строки :)

А покажите мне вот такое:

#!/usr/bin/python

import inspect


def job():
for i in inspect.stack():
  print i

def foo():
job()

def bar():
job()

foo()
bar()

выхлоп:

$ ./stack.py      
(<frame object at 0xa29a804>, './stack.py', 7, 'job', [' for i in inspect.stack():\n'], 0)
(<frame object at 0xa2ab564>, './stack.py', 11, 'foo', [' job()\n'], 0)
(<frame object at 0xa2889b4>, './stack.py', 16, '<module>', ['foo()\n'], 0)
(<frame object at 0xa29a804>, './stack.py', 7, 'job', [' for i in inspect.stack():\n'], 0)
(<frame object at 0xa2c0d0c>, './stack.py', 14, 'bar', [' job()\n'], 0)
(<frame object at 0xa2889b4>, './stack.py', 17, '<module>', ['bar()\n'], 0)


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Аноним , 09-Ноя-09 19:50 
>> для такого крайне редкого случая я просто напишу генератор, где один из аргументов - функция, задающая закон по которому меняется шаг.

Все ваши примеры для меня не просто редкие, они уникальные можно сказать, и более того, сложные или ресурсоемкие вычисления я бы не доверил скриптовому ЯП.

>> ох... что ж у перлистов кругом грязные хаки... а где проверки на то что это не каталог?
>> Ваше:
>> def somework(fname)
>> [somework(file) for i in xrange(0,100) if os.path.isfile("".join(['./',str(i),'.txt']))

Действительно где :) Я наверное ещё забыл проверить доступность на чтение и день недели :)
Вся индентация питона летит к черту. Оператор -f (именно для проверки файл ли это и существует ли он) намного лаконичней os.path.isfile(для которого ещё нужно импортировать что-то). Join же для такого случая вообще фееричен: я-то думал в питоне есть интерполяция строк...

>> чуть-чуть поправим условия:

Изменение точности на 8 знаков - это незначительное изменение условий ? :)
Ну так давайте чуть-чуть поправим язык:

#!/usr/bin/python
import random
import math

arr = list()
arr.append(random.random())
i = random.random()
while i > 0.000000001:
    i = random.random()
    if math.fabs(arr[len(arr) - 1] - i) > 0.0000001:
        arr.append(i)


И вы таки совершенно правы! Оно поедает всю память.

>> легко. например узнать, сколько у нас функций в программе, узнать какие функции появляются после импорта модуля, итп...

Не приходилось таким заниматься, но даже если бы и пришлось, то код бы писался так, чтобы не было таких неоднозначностей при сборе статистики. Ну а если достанется чужой кривой код, то тут даже питон не спасет с его драконовским синтаксисом :)


>> гыгыг... а слабо показать все методы класса?

Слабо. Предпочитаю читать для этого документацию.

>> гыгы... числа==строки :)

perl - слаботипизированный язык О_О. Какие потрясения вы мне преподносите ближе к вечеру, а ведь мне ещё считать некую величину(v) ...
А вообще-то для этого случая просто  в sort добавляется свой критерий сравнения

>> А покажите мне вот такое:

Довольно интересно, но мне хватает возможностей Log4perl.


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Добрый Дохтур , 09-Ноя-09 23:36 

>[оверквотинг удален]
>arr = list()
>arr.append(random.random())
>i = random.random()
>while i > 0.000000001:
>    i = random.random()
>    if math.fabs(arr[len(arr) - 1] - i) > 0.0000001:
>        arr.append(i)
>
>
>И вы таки совершенно правы! Оно поедает всю память.

птичко обломинго стучицца к вам:

#!/usr/bin/python
import random,math

def generation():
last, rand = 1, random.random()
while rand > 0.000000001:
    if math.fabs(last - rand) > 0.0000001:
     last=rand
     yield rand
    rand = random.random()
yield rand

for elem in generation():
print elem


>Не приходилось таким заниматься, но даже если бы и пришлось, то код
>бы писался так, чтобы не было таких неоднозначностей при сборе статистики.

иногда полезно узнать, есть ли у класса некий метод.

>>> гыгыг... а слабо показать все методы класса?
>Слабо. Предпочитаю читать для этого документацию.

см выше :)

>perl - слаботипизированный язык О_О. Какие потрясения вы мне преподносите ближе к
>вечеру, а ведь мне ещё считать некую величину(v) ...
>А вообще-то для этого случая просто  в sort добавляется свой критерий
>сравнения

да-да-да! а если у нас вперемешку строки/числа/списки/хеши...


#!/usr/bin/python

def gen(start,stop):
for i in xrange(start+2,stop+3):
  def closure(x): return reduce(lambda a,b:a*x, xrange(1,i))
  yield closure

for pow in gen(0,5):
  print pow(2),pow(3),pow(4)

выхлоп:

1 1 1
2 3 4
4 9 16
8 27 64
16 81 256
32 243 1024

Дабы было понятно: на каждой стадии итерации pow - это функция, возводящая в степень [0;5]
На перле такое покажете?


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено phaoost , 10-Ноя-09 01:24 
>[оверквотинг удален]
>1 1 1
>2 3 4
>4 9 16
>8 27 64
>16 81 256
>32 243 1024
>
>Дабы было понятно: на каждой стадии итерации pow - это функция, возводящая
>в степень [0;5]
>На перле такое покажете?

#!/usr/bin/perl -w

$,=' ';
$\="\n";
for $i(0..5) {
print 2**$i,3**$i,4**$i;
}

имхо так короче и читать проще. а в вашей проге я запутался.


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Добрый Дохтур , 10-Ноя-09 10:08 
>[оверквотинг удален]
>>в степень [0;5]
>>На перле такое покажете?
>
>#!/usr/bin/perl -w
>
>$,=' ';
>$\="\n";
>for $i(0..5) {
> print 2**$i,3**$i,4**$i;
>}

фигню вы написали. аналог вашему - это вот такое:

#!/usr/bin/python
for i in xrange(0,5): print 2**i,3**i,4**i


>имхо так короче и читать проще. а в вашей проге я запутался.

у меня на каждой итерации elem - это функция. её можно передать в другую функцию, можно скормить map'у, итд.



"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено phaoost , 10-Ноя-09 01:28 
да, кстати:
phaoost@warp:~$ time perl aa.pl
1 1 1
2 3 4
4 9 16
8 27 64
16 81 256
32 243 1024

real    0m0.004s
user    0m0.000s
sys     0m0.004s
phaoost@warp:~$ time python aa.py
1 1 1
2 3 4
4 9 16
8 27 64
16 81 256
32 243 1024

real    0m0.013s
user    0m0.008s
sys     0m0.004s


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Аноним , 10-Ноя-09 02:46 
>>птичко обломинго стучицца к вам:

Не понимаю, чем вы так не удовлетоврены, если ваш язык вас полностью устраивает...
Вы поменяли задачу, воспользовавшись(уже дважды) абстрактной формулировкой.

package seqgen;

my ($old, $new);
sub new {
    $old = rand;
    my    $self = {};
    bless $self, 'seqgen';
    return $self;
}

sub getNext {
    do {
    $new = rand;
    return undef if ($new < 0.000000001)
    } until (abs($new - $old) > 0.0000001);
    $old = $new;
    return $new;
}
1;

package main;
my $generator = seqgen->new;
while (my $nextval =$generator->getNext) {
    print "$nextval\n";
}

Это по-длиннее, но с лихвой компенсируется временем, которое я сэкономлю за счет человеческой интерполяции, которой, увы, в питоне нет, и которая в отличие от генераций последовательностей мне нужна постоянно. и модули не надо подключать на каждый чих.

>> иногда полезно узнать, есть ли у класса некий метод.

Мне кажется слишком рискованным такой метод исследования неизвестного класса, я бы предпочел использовать:
cat module.pm | egrep "^[ ]*sub[ ]*"

чтобы выяснить его методы.

>>да-да-да! а если у нас вперемешку строки/числа/списки/хеши...

значит нужно просто написать другую функцию сравнения для sort ...
но я бы посоветовал вам избегать неопределенности в принимаемых и возвращаемых параметрах функций - в длине кода выигрышь небольшой, зато сопровождающие будут долго вникать.

>> выхлоп:

вот именно, что выхлоп. Вы странно подбираете задачи, если хотите меня переспорить. Питон скриптовой язык, и значит будет заведомо проигрывать компилируемым или той же яве в скорости вычислений. Так что всякие yield здесь как собаке боковой карман.
Напишите мне лучше как вы реализуете поиск уникальных записей в файле, содержащем 2-3 миллиона строк.


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Stanislaus , 10-Ноя-09 13:26 
>Мне кажется слишком рискованным такой метод исследования неизвестного класса, я бы предпочел
>использовать:
>cat module.pm | egrep "^[ ]*sub[ ]*"
>
>чтобы выяснить его методы.

На самом деле, в Perl можно легко узнать все, что угодно о разобранной программе в памяти. Мне просто интересно, докапается до этого ДобрыйДохтур самостоятельно в доках? Авось так всю документацию изучит и станет лучше понимать с чем спорит.


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Добрый Дохтур , 10-Ноя-09 19:09 
>На самом деле, в Perl можно легко узнать все, что угодно о
>разобранной программе в памяти. Мне просто интересно, докапается до этого ДобрыйДохтур
>самостоятельно в доках? Авось так всю документацию изучит и станет лучше
>понимать с чем спорит.

Уважаемый Stanislaus!
Чтобы понять, что в perl плохо, достаточно посмотреть что будет изменено/добавлено в perl6.

http://www.perlfoundation.org/perl6/index.cgi?the_long_perl_...

Да, интроспекция в perl есть, но в зачаточном состоянии.
Узнать, что нам передали в кач-ве аргумента в perl можно, но крайне геморройно.
Отсутствие возможности указать типы аргументов(позвать функцию, вычисляющую факториал с аргументом "vasya") и отсутсвие единообразного способа итерации по последовательностям сильно усложняют написание кода и отладку.

класс + ручное дергание getNext() как тут показывали - весьма забавный костыль.
Отсутствие функций с переменным числом аргументов, именнованных аргументов, аргументов по умолчанию, нормального механизма исключений.

-----
Even if the Perl 5 codebase did follow a specification, its design is inelegant in many places. It's also very difficult to expand. Many good ideas that would make code easier to write and maintain are too impractical to support. It's a good prototype, but it's not code that you would want to keep if you had the option to do something different.

From the language level, there are a few inconsistencies, as well. For example, why should sigils change depending on how you access internal data? (The canonical answer is "To specify context of the access," but there are other ways to mark the same.) When is a block a block, and when is it a hash reference? Why does SUPER method redispatch not respect the currently dispatched class of the invocant, but only the compiled class? How can you tell the indirect object notation's method name barewords from bareword class or function names?

It can be difficult to decide whether the problem with a certain feature is in the design or the implementation. Consider the desire to replace a built-in data structure with a user-defined object. Perl 5 requires you to use tie and overload to do so. To make this work, the internals check special flags on every data structure in every opcode to see if the current item has any magical behavior. This is ugly, slow, inflexible, and difficult to understand.
------



"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Добрый Дохтур , 10-Ноя-09 18:05 
>Это по-длиннее,

этот вариант уже лучше.
но показывает, что про ленивые вычисления вы не в курсе :)

>но с лихвой компенсируется временем, которое я сэкономлю за счет
>человеческой интерполяции, которой, увы, в питоне нет, и которая в отличие
>от генераций последовательностей мне нужна постоянно. и модули не надо подключать
>на каждый чих.

неявные преобразования типов - большое зло. а модульность - это как раз очень хорошо.
в перле регекспы прибиты гвоздями к libprcre.

Смотрим сюда: http://softwareramblings.com/2008/08/c-regular-expression-pe...

Мне достаточно написать обертку над boost:regex или boost::expressive,
сказать import mynice_regexlib as re
и понеслось. больше нигде править не нужно.

>Мне кажется слишком рискованным такой метод исследования неизвестного класса, я бы предпочел
>использовать:
>cat module.pm | egrep "^[ ]*sub[ ]*"
>чтобы выяснить его методы.

omg...


>>>да-да-да! а если у нас вперемешку строки/числа/списки/хеши...
>значит нужно просто написать другую функцию сравнения для sort ...
>но я бы посоветовал вам избегать неопределенности в принимаемых и возвращаемых параметрах
>функций - в длине кода выигрышь небольшой, зато сопровождающие будут долго
>вникать.

гм... совершенно неверно. формат/тип возвращаемых данных диктуется данными.

>>> выхлоп:
>
>вот именно, что выхлоп. Вы странно подбираете задачи, если хотите меня переспорить.
>Питон скриптовой язык, и значит будет заведомо проигрывать компилируемым или той
>же яве в скорости вычислений.

расскажите это про numpy.
И вообще:
http://koldunov.net/?p=268
http://koldunov.net/?p=317
http://koldunov.net/?p=168
http://koldunov.net/?p=179
http://koldunov.net/?p=230


Так что всякие yield здесь как
>собаке боковой карман.

как раз нет. функции, сохраняющие свое состояние между вызовами значительно упрощают жизнь.

>Напишите мне лучше как вы реализуете поиск уникальных записей в файле, содержащем
>2-3 миллиона строк.

легко. давайте определимся, что такое "уникальная запись"?
что за файл? в общем случае, пишется генератор, принимающий на вход имя файла и при каждом вызове возвращающий следующую запись.
Далее for i in generator:somehash[i]=0

на выходе будет набор уникальных данных.


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Аноним , 10-Ноя-09 19:52 
>> этот вариант уже лучше.
>> но показывает, что про ленивые вычисления вы не в курсе :)

В курсе, я даже в курсе, что в перле их нет.
Зачем они мне в web-программировании, системном админситрировании, датапроцессинге? Кстати замыкания я тоже не использую, хотя они и есть в перле ;)

>> неявные преобразования типов - большое зло.

Вы обвиняете перл в том, что не читали документацию по преобразованиям, оригинально-с :)

>> а модульность - это как раз очень хорошо.

как концепция - да, но в питоне она реализована убого. запихнуть базовую математику и IO в модули - извращение.

>> в перле регекспы прибиты гвоздями к libprcre.

И благодаря этому я регулярно встраиваю перл в свои C++ проги, не теряя ничего. Ещё один влевок в сторону питоновской модульности. Хотя вам же циферки дробить надо ...

>> гм... совершенно неверно. формат/тип возвращаемых данных диктуется данными.

Формат данных дикутется алгоритмом, для обработки которых он написан. Но наверное в питоне есть искусстенный интеллект, который может принять данные абсолютно любого фрмата и сам решить что с ними делать. В противном случае вы так и не читали документацию по ref

>> расскажите это про numpy.

рассказываю: вы загоняете своим numpy данные в векторы или матрицы, все тем же numpy их транспонируете, обрезаете, еще как-то преобразовываете. А потом , когда дело доходит до сколько-нибудь нешаблонного алгоритма, в котором есть хотя бы один питоновский оператор, питон ... сливает компилируемому языку по скорости, в силу своей скриптовой природы.

А numpy - всего лишь обычная матричная библиотека, в perl для тех же нужд есть GSL. только мне опять таки не нужны быстросчтающиеся матрицы. :)

>> функции, сохраняющие свое состояние между вызовами значительно упрощают жизнь.

На придуманных задачах да. Я не нашел для себя замыканиях ничего полезного. Вся функциональщина не находит широкого использования уже полвека. Python просто скопировал куски практически никому не нужной парадигмы и выдает из за фичи. Жаль, что вы на это повелись.

>>в общем случае, пишется генератор, принимающий на вход имя файла и при каждом вызове возвращающий следующую запись.

Достаточно.
На каждый чих подключается модуль.
На каждый случай пишется генератор.
На любую мелочь пишется замыкание.
Python - язык на котором можно все, но который нормально не подходит ни под одну задачу.

Если Вам это удобно, то пишите на Питоне, дробите цифры, почаще вспоминайте о ребятах из гугла. Иными словами занимайтесь мазохизмом дальше. :)


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Добрый Дохтур , 11-Ноя-09 01:14 
>В курсе, я даже в курсе, что в перле их нет.
>Зачем они мне в web-программировании, системном админситрировании, датапроцессинге?

это личное дело каждого.

>Кстати замыкания я тоже
>не использую, хотя они и есть в перле ;)

я по необходимости. бывают ситуации, когда они упрощают код.

>>> неявные преобразования типов - большое зло.
>Вы обвиняете перл в том, что не читали документацию по преобразованиям, оригинально-с
>:)

читал.

#!/usr/bin/perl

sub f {
my($x, $y) = @_;
print "Called with $x, $y\n";
return ($x / $y);
}

my $bx=2;
my $by=4;
my $a="1200";
my $b="$bx$by+$bx.$by+$by.$bx";
print "$b\n";
print f($a,$b),"\n";

пока язык допускает те ужасы, как определена $b - всё будет плохо.
пока нет разницы между строкой и числом - тоже плохо.
Ибо заставляет либо втыкать кучу проверок входных параметров, либо получаем рабочий код, но не всегда работающий правильно.
(заменяем $a="1200" на $a="perl" и имеем 0 на выходе).
Это отвратительное поведение, т.к. когда стек вызовов большой, ловить ошибку становится крайне трудно.

>>> а модульность - это как раз очень хорошо.
>как концепция - да, но в питоне она реализована убого. запихнуть базовую
>математику и IO в модули - извращение.
>>> import java
>>> dir(java)

['__name__', 'applet', 'awt', 'beans', 'io', 'lang', 'math', 'net', 'nio', 'rmi', 'security', 'sql', 'text', 'util']


>>> в перле регекспы прибиты гвоздями к libprcre.
>И благодаря этому я регулярно встраиваю перл в свои C++ проги, не
>теряя ничего.

и какая связь embedded perl с libpcre? python можно как расширять модулями на C/C++, так и встраивать в свой код на C/C++
И в ваших "прогах" используется сторонние модули? или вы их статически линкуете?


>рассказываю: вы загоняете своим numpy данные в векторы или матрицы, все тем
>же numpy их транспонируете, обрезаете, еще как-то преобразовываете. А потом ,
>когда дело доходит до сколько-нибудь нешаблонного алгоритма, в котором есть хотя
>бы один питоновский оператор, питон ... сливает компилируемому языку по скорости,
>в силу своей скриптовой природы.

а что, в perl как-то иначе?
я вроде бы уже писал: где мне нехватает производительности, я пишу экстеншн на C/C++
но такие случаи - экзотика.

>А numpy - всего лишь обычная матричная библиотека, в perl для тех
>же нужд есть GSL. только мне опять таки не нужны быстросчтающиеся
>матрицы. :)

Ну GSL есть и в python.
Однако, я почему-то больше встречал тех, кто пользуется numpy/scipy/matplotlib, а не gsl.


>На придуманных задачах да. Я не нашел для себя замыканиях ничего полезного.
>Вся функциональщина не находит широкого использования уже полвека.

расскажите это ejabberd/rabbitmq/couchdb/facebook/etc

>Python просто скопировал
>куски практически никому не нужной парадигмы и выдает из за фичи.

Ой ли... а зачем тогда замыкания в перле? зачем там map/filter?
Опять же, стоит смотреть на то, что будет в perl6.

>Жаль, что вы на это повелись.

я использую это там, где удобно.

>Достаточно.
>На каждый чих подключается модуль.

в java/smalltalk/ruby так же. если вам так нравится комбайн, где есть всё сразу - вам в php. Там 3000+ функций в глобальном пространстве имен. и namespaces там только-только появились.

>Python - язык на котором можно все, но который нормально не подходит
>ни под одну задачу.

ой ли... то-то django/pylons идут семимильными шагами.

PS: а пример поиска строк в файле по набору регекспов, утилизирующего несколько cpu никто так и не показал.
Перлисты кичатся CPAN'ом, хотя там дофига протухшего или нерабочего(под 5.10).



"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Аноним , 11-Ноя-09 05:57 
>>    пока язык допускает те ужасы, как определена $b - всё будет плохо.
>>    пока нет разницы между строкой и числом - тоже плохо.
>>    Ибо заставляет либо втыкать кучу проверок входных параметров, либо получаем рабочий код, но не всегда работающий правильно.
>>    (заменяем $a="1200" на $a="perl" и имеем 0 на выходе).
>>    Это отвратительное поведение, т.к. когда стек вызовов большой, ловить ошибку становится крайне трудно.

Подобные ужасы допускаете вы, а язык только позволяет. Мне страшно представить какую кашу вы пишите на "строгом" питоне, если типизация перла вызывает у вас такую реакцию.

>> и какая связь embedded perl с libpcre? python можно как расширять модулями на C/C++, так и встраивать в свой код на C/C++
>> И в ваших "прогах" используется сторонние модули? или вы их статически линкуете?

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


>> а что, в perl как-то иначе?

так никто и не позиционирует перл как числодробилку, кроме самых упоротых гиков.

>> я вроде бы уже писал: где мне нехватает производительности, я пишу экстеншн на C/C++
>> но такие случаи - экзотика.

Для меня все ваши примеры - ещё большая экзотика.


>> ну GSL есть и в python.
>> Однако, я почему-то больше встречал тех, кто пользуется numpy/scipy/matplotlib, а не gsl.

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


>> расскажите это ejabberd/rabbitmq/couchdb/facebook/etc

я могу это рассказать всем функциональщикам вместе взятым, но даже после их бурных и аргументированных возражений их парадигма так и будет уделом маргиналов(а не элиты, как некоторые склонны думать) :)

>> Ой ли... а зачем тогда замыкания в перле? зачем там map/filter?

Хороший вопрос... Ну ладно, в этих 2 функциях это и правда удобно :)

>> Опять же, стоит смотреть на то, что будет в perl6.

Опять же стоит смотреть кому чтонужно от perl6.


>> в java/smalltalk/ruby так же. если вам так нравится комбайн, где есть всё сразу - вам в php. Там 3000+ функций в глобальном пространстве имен. и namespaces там только-только появились.

В яве по крайней мере есть ради чего мучаться. smalltalk и ruby ... уж лучше питон. А php мне нравиться, но для моих задач подходит редко.

>> ой ли... то-то django/pylons идут семимильными шагами.

все идут и идут .....

>> PS: а пример поиска строк в файле по набору регекспов, утилизирующего несколько cpu никто так и не показал.

Ну так покажите.

>> Перлисты кичатся CPAN'ом, хотя там дофига протухшего или нерабочего(под 5.10).

Кичаться питонщики, стоит только сделать намек на сравнение любых скриптовых языков :)
А в CPAN действительно много поезных вещей, но старье 10 летней давности тоже попадается.
Полезного там больше. Под 3 ветку питона рабочих модулей ещё меньше ;)


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено szh , 09-Ноя-09 13:45 
Python сильно сливает Perl-у в regexp-ах
для меня это killer feature;  (ООП не ООП, отступы иль скобки мне лично все равно)

http://snowplow.org/martin/rebench/


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Oles , 09-Ноя-09 14:55 
Кстати, если уж пошла такая пьянка, хотелось бы видеть пример на перле вот такой штуки обычной для пхп.

function rec_something($xxx) {
    if (is_array($xxx)) {
        foreach($xxx as $x=>$y)
            $xxx[$x] = rec_something($y);
    }
    return something($xxx);
}

Т.е. в результате обработана сущность данных неизвестно насклько сложной структуры.


"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Oles , 09-Ноя-09 14:56 
return забыл но не важно для сути :)

"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Васько Чапаев , 10-Ноя-09 04:17 
Я офигиваю, уже почти 200 сообщений в теме про Perl, и кто после этого будет утверждать, что язык умирает раз он вызывает такую бурю эмоций? :)))


"Язык Perl еще далек от забвения, несмотря на заявления 'анал..."
Отправлено Stanislaus , 10-Ноя-09 13:16 
Perl жил, жив и будет жить вечно. Что тут происходит - больше похоже на столкновение вкусов, подходов.

Я для себя например из всего выше понял, что мой Milter по прежнему будет работать на Mimedefang (Perl, работает на высоконагруженном почтовом хайве, быстро, качественно, надежно). Сложные процедуры для PostgreSQL я по прежнему буду писать на PLPerl (Все, что я писал на PLPython работало на порядок медленнее, и синтаксис Pythona там доставляет массу неудобств). И для разработки Web-приложений, я буду использовать mod_perl, ибо он давно мне доказал свою надежность и гибкость (терпеть не могу CMS, любые, так как все мои Web-проекты приходилось интегрировать в существующую ИТ-инфраструктуру предприятий без швов).

Не спорю, в Python есть некоторые приятные особенности, которые отсутствуют в Perl, но могут быть заменены другими конструкциями. И в Perl есть приятные особенности, которые можно синтезировать в Python.

Вот единственный минус Python, или даже программистов Python, это то, что они пытаются лезть в области применения, где интерпретируемым языкам делать нечего и плодят глючный софт с километровыми баг-репортами.


":-D"
Отправлено Andrey Mitrofanov , 10-Ноя-09 14:48 
""Незабвенный Perl"" - спрашивайте уникальный сборник стихов и воспоминаний современников, в аптеках города!

"Язык Perl еще далек от забвения, несмотря на заявления "
Отправлено Jaris , 17-Апр-10 12:19 
Читаю и улыбаюсь!
Неужели, вам не пофигу на чём быдлокодят остальные???
Сидите, ваяйте свои нетленки... а то устроили холивар тут)