Сегодня сообщество разработчиков празднует (http://news.perlfoundation.org/2012/12/the-first-twenty-five... двадцать пятый день рождения языка программирования Perl. Ровно двадцать пять лет назад, 18 декабря 1987 года, увлекающийся программированием лигвист Ларри Уолл (http://ru.wikipedia.org/wiki/Larry_Wall) (Larry Wall), уже известный в то время созданием программы patch, представил первый публичный релиз интерпретатора Perl. Язык Perl унаследовал некоторые черты языков Си и AWK, был ориентирован изначально на эффективную обработку текстов и списков, и отличался интегрированной в язык поддержкой регулярных выражений и удобных в использовании хэшей. Позднее Perl вышел за рамки специализированного решения для обработки тестовых данных и был превращён в язык общего назначения, оказавший впоследствии значительное влияние на развитие многих популярных ныне скриптовых языков программирования.URL: http://news.perlfoundation.org/2012/12/the-first-twenty-five...
Новость: http://www.opennet.me/opennews/art.shtml?num=35626
Да уж. Perl - мой первый язык. Поздравляем :3
что ж, поздравы автору и всем, кто на нем лабает :)это единственный известный мне скриптовый язык, в котором есть явные указатели на объекты :)
Хороший язык, в главное готовить на нём можно рецептурно благо есть хорошие поваренные книги!
> увлекающийся программированием лингвист Ларри УоллИнтересный факт. Не знал, что он лингвист.
>> увлекающийся программированием лингвист Ларри Уолл
> Интересный факт. Не знал, что он лингвист.Это ещё фигня.
До программирования он с женой переводил библию.[сообщение отредактировано модератором]
>> До программирования он с женой переводил библию.на perl? чтоб никто не догадался?
Нет, переводил для бедных
>Интересный факт. Не знал, что он лингвист.Дык! Я где-то читал, он все мечтал создать письменность для какого-нибудь малоизвестного африканского языка.
Надо сказать, примерно это и получилось.
Это круто повлияло (и влияет до сих пор) на дизайн перла - он напоминает естественный язык в том плане, что в нем масса исключений и синтаксического сахара, делающих то или иное выражение работающим именно так, как кажется на первый взгляд - и чем дальше тем больше.
Long live Perl!
Столько не живут. Да и тенденция очевидна: Perl постепенно уходит.
> Столько не живут. Да и тенденция очевидна: Perl постепенно уходит.Как и Linux :D
> Столько не живут.А вам, мой юный друг, сколько лет?
Поздравляю всех любителей изящного синтаксиса.
Write once, read never.
Не видели вы хорошие проекты на перле :-) Читаемо, ещё и как.
> Write once, read never.There is more than one way to do it.
> назад, 18 декабря 1987 года, увлекающийся программированием лигвист Ларри Уоллувлекающийся, дооо. двадцать лет с лишним оттоптать кодером в джейпиэль и юнисис - а все "увлекающийся программированием леньгвист". опеннетовские сочинители новостей совсем уже умом скорбные стали с вашими википедиями.
вы еще про Столлмана напишите "увлекающийся программированием биолог".
>> назад, 18 декабря 1987 года, увлекающийся программированием лигвист Ларри Уолл
> увлекающийся, дооо. двадцать лет с лишним оттоптать кодером в джейпиэль и юнисисГоворите, в 1987 году он уже 20 лет как там работал? А сейчас, наверное, стаж уже к полувековому подкатывает.
>>> назад, 18 декабря 1987 года, увлекающийся программированием лигвист Ларри Уолл
>> увлекающийся, дооо. двадцать лет с лишним оттоптать кодером в джейпиэль и юнисис
> Говорите, в 1987 году он уже 20 лет как там работал? А
> сейчас, наверное, стаж уже к полувековому подкатывает.дададад. я же говорю, GPL придумал увлекающийся программированием биолог.
>> назад, 18 декабря 1987 года, увлекающийся программированием лигвист Ларри Уолл
> увлекающийся, дооо. двадцать лет с лишним оттоптать кодером в джейпиэль и юнисис
> - а все "увлекающийся программированием леньгвист". опеннетовские сочинители новостей
> совсем уже умом скорбные стали с вашими википедиями.
> вы еще про Столлмана напишите "увлекающийся программированием биолог".Вам, наверное, трудно на уроках истории и литературы, если такие обороты речи не осиляете.
Имелось в виду, что он был увлекающимся программированием лингвистом в 1987 году.
>>> назад, 18 декабря 1987 года, увлекающийся программированием лигвист Ларри Уолл
>> увлекающийся, дооо. двадцать лет с лишним оттоптать кодером в джейпиэль и юнисис
>> - а все "увлекающийся программированием леньгвист". опеннетовские сочинители новостей
>> совсем уже умом скорбные стали с вашими википедиями.
>> вы еще про Столлмана напишите "увлекающийся программированием биолог".
> Вам, наверное, трудно на уроках истории и литературы, если такие обороты речи
> не осиляете.
> Имелось в виду, что он был увлекающимся программированием лингвистом в 1987 году.а вам, наверное, трудно на уроках чтения.
но я вам помогу. всего за $100/час почитаю вам верблюд-книгу, с выражением.
> увлекающийся, дооо. двадцать лет с лишним оттоптать кодером в джейпиэль и юнисис
> - а все "увлекающийся программированием леньгвист". опеннетовские сочинители новостей
> совсем уже умом скорбные стали с вашими википедиями.Он в то время писал диссертацию по лингвистике, подрабатывая программистом. Но вместо диссертации написал Perl :-)
> Он в то время писал диссертацию по лингвистике, подрабатывая программистом. Но вместо
> диссертации написал Perl :-)щаз. Ларри тащемта еще когда в универе академку брал, программером фулл-тайм работал.
> вы еще про Столлмана напишите "увлекающийся программированием биолог".судя по принятому кодинг стайлу в GNU проектах именно так и хочется про него сказать.
http://ompldr.org/vZ29zNA
use v5.16; # :)
почему на perl не пишут кроссплатформенный софт?
> почему на perl не пишут кроссплатформенный софт?Вы так говорите, как будто на перле навалом нового прибитого к оси софта.
Вообще-то всё, что сложнее хелловорлда и использует треды или манипулирует файловыми путями.Т.е. вот хочу я написать софт, который обрабатывает файлы в каталоге.
Аргументом он принимает файл с конфигом(путь до директории с файлами, всякие настройки).
Т.к. процессоров несколько, крайне желательно параллелиться(или не параллелиться, если машина одноядерная).Костылить придётся:
1)вышеупомянутые операции с путями(на posix/win32)
2)определение числа имеющихся cpu
3)job controlИли половину CPAN выкачивать?
Вы точно сейчас про перл?Я где-то уже читал эту цитату то ли про JAVA, то ли про PYTHON.
Perl видели только на картинках? Вообще-то в стандартной поставке идут кроссплатформенные модули работы с файлами. Они знают как работать с путями в ОС, названия которых вы, скорее всего, даже не слышали. Желание определить программой количество процессоров глупое, за такое надо по рукам бить. Что вы имеете ввиду под job control загадка, если форки, посылку сигналов и прочий IPC, то все это тоже на месте в стандартной поставке. Проблемные места описаны в соответствующих манах, которые тоже идут все в той же стандартной поставке.Некоторые проблемы при переносе в винду есть, но они есть и у других языков.
> Perl видели только на картинках?конечно. o'reilly.
> Вообще-то в стандартной поставке идут кроссплатформенные
> модули работы с файлами. Они знают как работать с путями в
> ОС, названия которых вы, скорее всего, даже не слышали.экзотика интересна маргиналам. posix/win32 покрывает почти все используемые платформы.
или вы одепт os/2?> Желание определить программой количество процессоров глупое, за такое надо по рукам бить.
что глупого в желании знать сколько worker'ов запустить для утилизации всех доступных ресурсов?
> Что вы имеете ввиду под job control загадка,У вас пачка файлов в каталоге. пачка - это примерно 300-400 тысяч. Над каждым файлом надо провести однотипные действия(допустим, грепнуть по набору регекспов из конфига) и результат записать в лог. Всё это лежит на каком-нибудь EMC Clarion, который подключен по двум FC линкам(т.е. упираемся только в cpu, а не диски).
Вам надо раздавать задания рабочим процессам и собирать от них результаты работы.
Напоминаю, что всё это без модификаций должно работать на win32/posix.>если форки, посылку сигналов
> и прочий IPC, то все это тоже на месте в стандартной
> поставке. Проблемные места описаны в соответствующих манах, которые тоже идут все
> в той же стандартной поставке.fork() не поддерживается на windows. Про perlfork в курсе, но эмуляция unsupported семантики - верный путь к граблям.
Напоминаю, что результат должен работать на posix/win32 и тянуть за собой минимум зависимостей.> Некоторые проблемы при переносе в винду есть, но они есть и у
> других языков.Вы забыли рассказать про XS, интеграцию с кодом на C/C++ и вызовом функции из внешней библиотеки.
Вы выдвинули интересные задачи.
А какой язык, по вашему, обладает достаточной переносимостью для этого?
Это задача из реальной жизни.
> Это задача из реальной жизни.Я не сказал нереальные.
Я сказал интересные.Какой язык, по вашему, обладает достаточной переносимостью для решения этих задач на posix/win?
> конечно. o'reilly.Это типа юмор или незнание инглиша?
> экзотика интересна маргиналам. posix/win32 покрывает почти все используемые платформы.
> или вы одепт os/2?Я угадал - вы даже названия не слышали. Кстати, желание запускать один и тот же код на posix и win32 тоже кому-то может показаться маргинальным.
> что глупого в желании знать сколько worker'ов запустить для утилизации всех доступных
> ресурсов?Множество причин, большую часть все равно не поймете, явно не ваш уровень. Достаточно будет одной: пользователь вовсе не обязательно желает отдать все ресурсы машины вашему скрипту, поэтому запускать надо столько копий, сколько скажет пользователь, а не пытаться навязать ему свое видение.
> Вам надо раздавать задания рабочим процессам и собирать от них результаты работы.
> Напоминаю, что всё это без модификаций должно работать на win32/posix.
> Напоминаю, что результат должен работать на posix/win32 и тянуть за собой минимум
> зависимостей.man perlipc. Там несколько кроссплатформенных вариантов без всяких зависимостей. Кстати, а чем вас так пугают зависимости?
> Вы забыли рассказать про XS, интеграцию с кодом на C/C++ и вызовом
> функции из внешней библиотеки.Вы про это не спрашивали.
>Это типа юмор или незнание инглиша?Это про http://oreilly.com/perl/
>Я угадал - вы даже названия не слышали.
Ок, как давно и при каких обстоятельствах вы сталкивались с VOS или VMS(или OpenVMS)?
FYI: мы обсуждаем perl, а не мою персону.>Кстати, желание запускать один и тот же код на posix и win32 тоже кому-то может показаться маргинальным.
Какой смысл тогда в интерпретируемом языке, если мы получаем те же грабли, что и в С/C++, теряя при этом в скорости?
>Множество причин, большую часть все равно не поймете, явно не ваш уровень.
Вы - телепат? Ставите диагноз по фото?
>Достаточно будет одной: пользователь вовсе не обязательно желает отдать все ресурсы машины вашему скрипту
Всего одна опция в конфиге/аргумент командной строки с числом worker'ов(и автодетект по умолчанию).
>man perlipc. Там несколько кроссплатформенных вариантов без всяких зависимостей.
Show your code! Ведь это же легко. Банальный grep по всем файлам в каталоге, раскладывающйся по нескольким CPU.
Всё что я прошу, это аналог ls *.txt | xargs -n1 -P8 egrep 'sometext'
на perl, работащий на windows/posix.
> Это про http://oreilly.com/perl/Таки петросян.
> Какой смысл тогда в интерпретируемом языке, если мы получаем те же грабли,
> что и в С/C++, теряя при этом в скорости?Может я открою для вас Америку, но кроссплатформенность никогда не была козырем интерпретируемых языков.
> Вы - телепат? Ставите диагноз по фото?
По фото - нет. По вашим постам - вполне можно.
> Всего одна опция в конфиге/аргумент командной строки с числом worker'ов(и автодетект по
> умолчанию).Захват всего по умолчанию это очень плохой вариант. Но чисто на всякий случай, вы вообще в курсе, что количество ядер может поменяться прямо в процессе работы?
> Show your code! Ведь это же легко. Банальный grep по всем файлам
> в каталоге, раскладывающйся по нескольким CPU.
> Всё что я прошу, это аналог ls *.txt | xargs -n1 -P8
> egrep 'sometext'
> на perl, работащий на windows/posix.Я конечно мог бы показать код, но
а) мне не пять лет, на слабо брать не надо
б) у меня нет желания выполнять за вас вашу работу
в) задача упирается в IO(в том числе и памяти), смысла в распараллеливании нет.
>Может я открою для вас Америку, но кроссплатформенность никогда не была козырем интерпретируемых языков.Вы про все интерпретируемые языки сразу говорите? Или же хотите рассказать про RAD?
>вы вообще в курсе, что количество ядер может поменяться прямо в процессе работы?
В чём проблема то? Ну поменяется, что плохого случится?
>а) мне не пять лет, на слабо брать не надо
Задача пустяковая, причём тут "на слабо"?
>б) у меня нет желания выполнять за вас вашу работу
Вообще-то я её сделал. Уже лет 5 назад.
Даю её кандидатам на собеседованиях, т.к. при своей простоте позволяет более-менее понять что с мозгами у человека.>в) задача упирается в IO(в том числе и памяти), смысла в распараллеливании нет.
Элементарно же проверяется:
# find /usr/src/linux-3.7/ -type f -name *.c > filelist
# time egrep '\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b' `cat filelist`
real 0m3.555s
user 0m3.389s
sys 0m0.156s# time cat filelist | xargs -n4096 -P4 egrep '\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b'
real 0m0.910s
user 0m3.195s
sys 0m0.185s
На единственном sata-диске всё действительно упрётся в i/o.
В там, где такая задача возникла изначально файлы лежали в zip-архивах.
Работы - минут на 10-15.
Странный вы.
Сначала спрашиваете "почему на perl не пишут кроссплатформенный софт?".
А потом описываете свои попытки написать такой софт)
Ну не умеете - не беритесь.
Да, и интеграция с внешним кодом на C(и C++ особенно) - очень много боли.
Позвать функцию из shared library(опять же, posix/win32) без внешних костылей - это фантастика.
Так и помрешь сержантом. А в академии подавал надежды...
> почему на perl не пишут кроссплатформенный софт?так же можно спросить: почему на вижуал басик пишут только кросплатформенный софт?
> почему на perl не пишут кроссплатформенный софт?Не пишут те, кто не умеют.
Вы уже перестали пить коньяк по утрам?
> Вы уже перестали пить коньяк по утрам?И бить жену)
> и отличался интегрированной в язык поддержкой регулярных выраженийдо 4 версии (91 год) их там не было. про хэши не помню, но, вероятно, они тоже не сразу появились
>> и отличался интегрированной в язык поддержкой регулярных выражений
> до 4 версии (91 год) их там не было. про хэши не
> помню, но, вероятно, они тоже не сразу появилисьРегулярные выражения были с самого начала, но в версии 2.0 их капитально переделали.
Из http://perldoc.perl.org/perlhist.html
Perl 0 introduced Perl to my officemates.
Perl 1 introduced Perl to the world, and changed /\(...\|...\)/ to
/(...|...)/. \(Dan Faigin still hasn't forgiven me. :-\)
Perl 2 introduced Henry Spencer's regular expression package.
Perl 3 introduced the ability to handle binary data (embedded nulls).
Perl 4 introduced the first Camel book. Really. We mostly just
switched version numbers so the book could refer to 4.000.
Perl 5 introduced everything else, including the ability to
introduce everything else.