LINUX.ORG.RU

Perl мертв. Да здравствует Perl!


0

0

JT Смит, президент Plain Black, создатель WebGUI, и однин из незамеченных, но успешно использующих Perl в бизнесе, недавно послал мне это эссе. Он дал мне(O'Reilly) разрешение издать это полностью здесь.

Каждый день, я задумываюсь о том, почему я пишу на Perl а не на PHP, Java, C#, Ruby, Python, или [подставте ваш любимый язык сюда]? Люди говорят что, "Perl не используется больше" или, "Рубин - рулез..."

Есть миллионы программистов Perl во всем мире. Perl 5 активно поддерживается, и Perl 6 находится в развитии. Больше чем 3000 Модулей Perl были выпущены в 2006г, и вдвое больше должны быть выпущены в этом году. Действительность состоит в том, что Perl является совсем не мертвым.

>>> Взято с сайта =>



Проверено: Shaman007 ()

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

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

Извращенец. Выход из цикла это всегда исключение?? Это некрасиво, нечитабельно, и вообще костыль. Гораздо лучше это реализовано на руби. Смотрите выше.

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

> сам язык очень гибкий, красивый и функциональный

Первый раз слышу, чтобы Перл называли _функциональным_ ЯП :-).

> идеология перла - быстрое ленивое программирование

О, и Lazy Evaluations там же? 8-O

Мня, Хаскель просто нервно курит в сторонке... :-)

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

> Выход из цикла это всегда исключение?? Это некрасиво, нечитабельно, и вообще костыль.

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

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

> Perl - это язык-клей, изначально задуманный для сшивания shell-скриптов, и этим всё сказано.

Ого! Язык для склеивания кусочков клея -- это что-то с чем-то :-).

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

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

> Опять же, зачем в Руби механизм кидания палок, если это не исключения? Эклектика?

Это чтобы отделить обработку ошибок от обычного безусловного перехода.

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

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

/me с интересом представил себе запись определенного интеграла на Perl... Особенно, с использованием юникода...

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

> на практике никто, почему-то, для Тьюринг-машин не пишет.

Почему не пишет? Скубенты пишут. Причем, как раз на практике... :-)

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

>Ну ... как это по русски называется, например 5 % 2 даст тебе 1. И с % это пример просто удобности синтаксиса, в языке подобных мелочей дохрена, вкупе это дает очень "широкую гибкость" и мощь :=)

Ты что смеешся? Это называется деление по модулю. Это есть во всех языках, даже в С.

anonymous
()

Если взять популярный сай по поиску работы и сделат поиск к примеру по США, то плучатся след. результаты:
Ruby: 355
http://jobsearch.monster.com/Search.aspx?q=ruby&cy=us&brd=1&re=0&...

Python: 823
http://jobsearch.monster.com/Search.aspx?q=python&cy=us&brd=1&re=...

Perl: 3506
http://jobsearch.monster.com/Search.aspx?q=perl&cy=us&brd=1&re=0&...

Я думаю что даже "патриоты" признают что рынок труда IT в США как минимум не меньше чем России.

Или в европе(UK):
Perl: 324
Python: 88
Ruby: 22

Учитывая что возраст Питона и Пела отличаются мало, несложно догадаться, что в обозримом будущем ни питон ни руби не смогут догнать Перл.
К сожалению эти языки мёртворождённые, так же как и Smalltalk, Lisp и т.д.
BTW, сам я достаточно часто Scheme и изучаю Haskell, но это только для развлечения.

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

> Учитывая что возраст Питона и Пела отличаются мало

Причем Перл старше :)

> в обозримом будущем ни питон ни руби не смогут догнать Перл

Выводы сделаны на основании динамики спроса, конечно же? :)

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

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

Да, то как используются слова catch и throw в Руби, вообще то грубо нарушает принцип наименьшей неожиданности. Подобных странностей там немало, что меня лично оттолкнуло от Руби. Например, я так и не смог привыкнуть, что пустое множество имеет истинное значение. Как то это весьма странно.. К тому же приходится всё время писать: if x.empty? bla-bla-bla. А уж запись: if !x.empty? - вообще уродство (знаю про not, но многие почему то упорно пишут именно так).

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

Товарищ, проснитесь, Гвидо отпустил бороду!

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

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

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

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

Перловоды, они такие..

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

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

Вы про перл-то? Ну я бы не стал так драмматизировать.

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

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

Для полной объективности нужно сравнивать даты выхода Perl 5.0 (1994 год) и Python 2.0 (2000 год). Разрыв весьма существенен.

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

>Вы про перл-то? Ну я бы не стал так драмматизировать.
Нет, я про Питон и про озлобленное поведение питонщегов в темах о Перл, напоминающее поведение КДЕшнегов в темах о Гноме

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

> Ели язык за 16 смог завоевать вниние только фанатегов, которые только и умет, что флудить в темах о Perl

Ну почему же, мы еще и немножко шьем :) А если серьезно, то Перл просто был лучше готов к Интернет-буму - он уже был довольно хорошо известен. 4 года разницы в то время - это серьезная фора.

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

:D а как насчет динамики спроса? ;)

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

> Нет, я про Питон и про озлобленное поведение питонщегов в темах о Перл

Напомнить еще раз, кто первым помянул Питон в этом топике?

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

> Нет, я про Питон и про озлобленное поведение питонщегов в темах о Перл, напоминающее поведение КДЕшнегов в темах о Гноме.

А кто первый в этой ветке сказал "питонщики - казлы, гнать их отселя!" - напомнить? ;)

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

>Теперь потрудитесь показать как это делается в быдлоперле.

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

а в перле надо массив @ISA объекта переприсвоить примерно так же как ты __bases__ присвоил

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

>А кто первый в этой ветке сказал "питонщики - казлы, гнать их отселя!" - напомнить? ;)
Это сказали вы, можете не напоминать. поиск по "питонщики - казлы" показал ваше сообщение.

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

>Все, кто учился в начальной школе, называют это "остаток от деления". Что характерно, оператор "%" для вычисления остатка используется ещё и в Awk, B, C, C#, C++, D, E, Io, Java, JavaScript, PHP, Pliant, Pike, Python, Ruby, REXX, Tcl, Yorick. Чем тут перл выделяется - непонятно.

%-) люблю лор, тут так на провокации ведутся легко %)

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

>Первый раз слышу, чтобы Перл называли _функциональным_ ЯП

Эт ниче. Все когда нить в первый раз узнаешь, а еще он мультипарадигменный, императивный, объектно-ориентированный %)

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

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

А у перловиков работают их скрипты вместо них %) Чего и вам, питонофилам, желаем %)

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

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

А перл просто работает. Как линукс - не самая лучшая ОС, но рабочая лошадка, которая тащит на горбу дохрена всего, вместо пустых слов. Ругать его - это какое то святотатство просто, имхо %)

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

> Все когда нить в первый раз узнаешь, а еще он мультипарадигменный

Ну, тогда Лисп тоже нервно курит в сторонке.

А вообще, был когда-то еще один такой язык, в котором были все мыслимые на тот момент парадигмы. Вы помните, что с ним в конце-концов произошло? ;-)

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

> А перл просто работает. Как линукс - не самая лучшая ОС, но рабочая лошадка, которая тащит на горбу дохрена всего, вместо пустых слов. Ругать его - это какое то святотатство просто, имхо %)

http://www.linux.org.ru/jump-message.jsp?msgid=2068951&cid=2069703

Плагиатствуем помаленьку? ;-)

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

> А у перловиков работают их скрипты вместо них %) Чего и вам, питонофилам, желаем %)

Мне кажется, что человек, к которому ты обращался, перловик %)

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

> А у перловиков работают их скрипты вместо них %)

Удивительно, но и у меня мои питоновые скрипты работают за меня. Что я делаю не так?

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

>> а как насчет динамики спроса? ;)

> Кста, там выше была ссылка, где Питон едет вниз.

Точно была? Видать, я ее пропустил.

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

> А узнавая его глубже наступает просветление, знаешь в каком я был воссторге когда прочитал про то что дает my $a = $b % $c; :-)

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

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

> Кста, там выше была ссылка, где Питон едет вниз.

Ага, зато Кобол поднимается :) Выходит, Кобол более перспективный язык программирования? :D

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

> Ага, зато Кобол поднимается :) Выходит, Кобол более перспективный язык программирования?

Гм, Кобол, вроде бы, остался на своем 16 месте, а мимо него стремительно пронеслась Lua (кстати, занятная динамика), вытеснив с 15 места Лисп...

А в целом, кстати, динамика Кобола отрицательная...

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

> Да, list comprehensions всяко приятнее монструозных регекспов. Думается мне, любители Перла сильно недооценивают возможности Питона.

Шутишь? Где же ты в оригинальном сообщении (#2071881) увидел регекспы? Конструкция grep { condition } @list безмерно фундаментальна. А если кому нравятся операции над стрингами по типу Java или Python или другого языка, то на CPAN есть не то что десятки модулей осуществляющие всевозможные интерфейсы к String и List, а сотни. Сам пишу новые интерфейсы, когда чего-то специфично оптимального хочется. Благо в Perl очень легко ввести новый синтаксис, прекрасно сочетающийся с встроенными конструкциями для (списка) и "стринга".

> Хотя некоторые питоновские ограничения меня тоже бесят.

"Некоторые" это слабо сказано. :)

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

>А вообще, был когда-то еще один такой язык, в котором были все мыслимые на тот момент парадигмы. Вы помните, что с ним в конце-концов произошло? ;-)

Ты про PL/1 ? Вроде он юзается до сих пор где-то, особенно на мейнфреймах, хотя может просто впадлу переписывать то что работает на другое, хз

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

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

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

%)))

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

> на http://www.tiobe.com/tpci.htm пугающая статистика, посмотрите на динамику роста си шарпа...

Совершенно не пугающая, я думал C# как минимум №3, а оно еще PHP не догнало.

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

> на http://www.tiobe.com/tpci.htm пугающая статистика,

А, я почти прав - на N3 у нас как раз .NET, только VB.NET. Опаньки. А вы говорите - C#...

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

> люблю лор, тут так на провокации ведутся легко

люблю лор, здесь каждый обосравшийся пионер под провокатора косит :]

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

>> Не знаю что такое палки, может это исключения? Эта конструкция не использует исключения. 

>Зато Питону ничто не мешает использовать для этих целей исключения. 

>Опять же, зачем в Руби механизм кидания палок, если это не исключения? Эклектика? 

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

>> вот это тоже жирный плюс руби. Почему до этого не додумались другие?? 

>В Эйфеле это было за десяток лет до руби. Однако, возвратные исключения (если я правильно припоминаю смысл конструкции) очень прожорливы по быстродействию, а без стройной системы контрактов -- еще и бесполезны. 

>Хотя задумка, не скрою, весьма полезная...

Да нет, вы наверно не поняли.  Это просто синтаксический сахар, который я считаю очень логичен и красив.  Вот например сиплюснутый

try{}
catch{}

В руби имеет вид
begin
    blabla
rescue
    blabla
end

Но можно и так
def method
    blabla
rescue
    blabla
end

Просто и красиво, не так ли?

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

>> Выход из цикла это всегда исключение?? Это некрасиво, нечитабельно, и вообще костыль.

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

Ого, например? Интересно для общего развития :)

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

>Учитывая что возраст Питона и Пела отличаются мало, несложно догадаться, что в обозримом будущем ни питон ни руби не смогут догнать Перл. >К сожалению эти языки мёртворождённые, так же как и Smalltalk, Lisp и т.д. >BTW, сам я достаточно часто Scheme и изучаю Haskell, но это только для развлечения.

В Японии всё же ruby используется чаще perl. Может и у нас так получится? Ruby вроде не быдлоязык, а напротив, имеет фичи smalltalk, lisp, даже немного perl.

anonymous
()

Кстати, не самопеара ради, а развития флейма для.

Почему бы любителям Перла не показать всю мощу своего языка в рамках все того же ЛОР-контеста? Я как-то предлагал рубистам сделать то же, они даже ссылки на условия просили, но на том все и заглохло. Или я чего пропустил?

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

В принципе, конкурс сводится к написанию трех этюдных задач:

- база данных для набора имен файлов (наличие приличного ORM);

- игра-лабиринт (сетевые протоколы, ввод-вывод, метаязыки и немножко ИИ, точнее, реализация волнового алгоритма);

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

Основная цель -- решение всех трех задач с наименьшим количеством лексем в программе. Вспомогательные цели -- минимизация числа ключевых и неключевых слов по отдельности.

Ну что?

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

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

>Да, то как используются слова catch и throw в Руби, вообще то грубо нарушает принцип наименьшей неожиданности. Подобных странностей там немало, что меня лично оттолкнуло от Руби. Например, я так и не смог привыкнуть, что пустое множество имеет истинное значение. Как то это весьма странно.. К тому же приходится всё время писать: if x.empty? bla-bla-bla. А уж запись: if !x.empty? - вообще уродство (знаю про not, но многие почему то упорно пишут именно так).

Не истинное значение имеет только false и nil. А запись if x.empty? вроде как более читабельна чем if x. Даже if !x.empty? можно переписать еще так: unless x.empty?

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

> Ого, например? Интересно для общего развития :)

Ну, на самом деле я немножко соврал. Для красного словца :-). Однако,

=====================================================================

Настоящей жемчужиной Lua можно по достоинству считать идею fallbacks (перевести это идиоматическое выражение трудно). По сути она напоминает механизм исключительных ситуаций в традиционных языках программирования -- когда в ходе выполнения программы происходит "что-то не то" (исключительная ситуация), вызывается соответствующая подпрограмма -- обработчик этой ситуации. Но само название "исключительная ситуация" говорит о том, что это событие, которого не должно быть. Fallback, напротив, является очень даже ожидаемым событием (а в некоторых случаях -- единственно возможным): когда интерпретатор Lua в ходе выполнения программы "сталкивается" с попытками применить какую-либо операцию к данным недопустимого типа, или же прочитать запись из таблицы по ключу, которого в таблице не существует, или даже вызвать для выполнения содержимое переменной, на деле не являющееся функцией, -- ничего страшного не происходит. На каждую fallback-ситуацию существует свой обработчик (по умолчанию просто сообщающий об ошибке), который может быть изменен программистом и реализован как на Lua, так и сторонней функцией на C. С помощью соответствующих обработчиков fallback, ассоциативных таблиц, определяемых пользователем типов и функций -- величин первого класса, из Lua можно сделать... любой язык. Какой угодно, и при этом максимально "привязанный" к конкретной прикладной области.

======================================================================

(C) http://itc.ua/article.phtml?ID=4114

В общем, если не сама Lua, то наверняка некоторые DSL на ее основе могут быть таковыми :-)))

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