Язык программирования Perl создал Ларри Уолл (Larry Wall) в 1987 году, когда он работал системным программистом в американской компании Unisys. Цели, которые преследовал Ларри при разработке нового языка программирования, отражены в его названии — PERL, которое позднее стало расшифровываться как Practical Extraction and Report Language, то есть «практический язык извлечения „данных“ и „создания“ отчетов».

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

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


Ларри Уолл

На становление Perl повлияли языки Ada, Basic, Fortran, Lisp, Pascal и, конечно, язык C. Perl впитал в себя разные течения компьютерной науки: процедурное, модульное, функциональное и объектно-ориентированное программирование, макрообработку текста, а кроме этого — культуру ОС Unix, с ее богатым набором команд и утилит, стройной продуманной архитектурой и унифицированным подходом к представлению данных.

Наследие Unix


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

Для тех, кто знаком с операционной системой Unix, этот материал не будет новым. Но многим программистам, работающим с MS-DOS и Windows, важно познакомиться с принципами программирования, основанного на инструментальных средствах (softwaretools), которое зародилось и развивалось вместе с ОС Unix. О них написали замечательную книгу известные программисты Брайан Керниган (Brian W. Kernighan) и Филип Плоджер (Philip Plauger). Вот основные положения этого подхода.

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

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

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

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

• Объединение инструментальных средств в приложения производится средствами командного языка ОС: перенаправление ввода-вывода, создание программных конвейеров (направление выходного потока одной программы на вход другой).

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

• Для эффективной обработки слабо структурированной текстовой информации применяются регулярные выражения.

Благоприятные факторы


Язык быстро распространился среди пользователей сети Usenet. Несмотря на то, что в операционной системе (ОС) Unix, для которой был создан Perl, уже имелись многочисленные и разнообразные средства для обработки текстовой информации (awk, csh, grep, sed и другие), новый язык полюбился огромному числу системных администраторов и программистов. Он был легок в изучении и применении: синтаксис похож на С, Perl-программы не требовалось предварительно компилировать, исходные тексты было легко модифицировать. А самое главное — это был действительно очень практичный язык: с его помощью легко решалось большинство повседневных задач — от самых простых до очень сложных.



Активно пользуясь языком Perl, программисты из разных стран направляли Ларри Уоллу предложения добавить в него новые возможности или улучшить имеющиеся. Постепенно Perl превратился из средства обработки текстов в среде Unix в мощную универсальную систему программирования. В середине 1990-х годов, по мере развития интернета, Perl стал излюбленным инструментом web-мастеров для создания динамических сайтов и Internet-программирования.

Благодаря своим мощным встроенным средствам работы с текстовыми данными Perl широко используется для обработки информации в форматах HTML и XML.

Perl стал непременным компонентом любой поставки ОС семейства Unix (например, FreeBSD, Linux или Solaris). Кроме этого, к настоящему времени Perl реализован практически для всех современных аппаратных платформ (суперкомпьютеры, RISC, Macintosh, PC, наладонные компьютеры) и операционных систем (AIX, Linux, MacOS, MS-DOS, NetWare,OS/2, QNX, Solaris, Windows, VMS и так далее).

Это дает возможность легко переносить популярные Perl-программы из одного операционного окружения в другое.

Несомненно, его широкому применению способствовало и то, что он распространяется бесплатно на условиях одной из лицензий: либо GNU GeneralPublic License (GPL), либо Artistic License — на выбор. Но главное, что в нем есть все средства, чтобы отлично выручать профессионалов и неопытных программистов, когда требуется быстро решать разные системные и прикладные задачи — от самых простых до весьма сложных. В результате Perl стал одним из самых успешных проектов движения open source (с открытыми исходными кодами) — наряду с Apache, Linux, PHP и Python.

Необычный язык программирования


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

Во время обучения в университете Ларри Уолл получил лингвистическое образование. Кроме того, он занимался программированием и работал в университетском компьютерном центре.

Возможно, главная заслуга Ларри как автора Perl заключается в том, что ему удалось создать язык, учитывающий свойства и принципы естественного языка: ситуативную многозначность конструкций, разумную избыточность (и за счет этого стилевое разнообразие), максимальную адаптированность к различному уровню знаний носителей языка, гибкость и выразительность синтаксических средств. Все это придает особый творческий вкус самому процессу «сочинительства» на этом языке.

Пишущие о языке Perl невольно употребляют термины «идиома», «метафора», «синоним», «контекст» и т.п., обычно применяемые к естественным языкам. А сам Ларри Уолл, описывая язык Perl, широко пользуется лингвистическими терминами: существительное, глагол, предложение, единственное и множественное число, местоимение.

Выдающийся лингвист Б.Л. Уорф заметил: «Язык формирует наш способ мыслить и определяет, о чем мы можем думать». Эту же мысль подтверждает Дж. Бентли в книге «Жемчужины творчества программистов», описывая случай, когда именно особенности языка программирования APL натолкнули разработчика на оригинальное решение задачи с массивами. В этом смысле Perl как язык для воплощения замыслов программиста, не сковывает фантазию разработчика, дает ему максимальную свободу самовыражения, а иногда даже подсказывает нестандартные решения.

В качестве недостатков языка упоминают:
  • отсутствие механизма статической типизации;
  • избыточность языковых средств;
  • отсутствие модульности;
  • «извращенную» реализацию ООП.

Лингвистические принципы Perl


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

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

Принцип смыслового подчеркивания в естественных языках служит для привлечения внимания к важной части высказывания. При этом выделяемая часть обычно ставится в начало предложения. В Perl программист может воспользоваться этим принципом для акцентирования смысла, выбрав простое предложение с модификатором или условную конструкцию, например:
$we->shall(do($it)) if $you->want($it); # или
if $you->want($it) { $we->shall(do($it)) }

Принцип свободы в естественных языках предполагает, что всегда есть несколько вариантов выражения одной и той же мысли. Как и в естественных языках, в Perl одного и того же результата можно достичь несколькими способами, используя различные выразительные средства языка. Это так называемый принцип TIMTOWTDI- сокращение читается «Тим Тоуди» и расшифровывается как «There is more than one way to do it»: «есть более одного способа сделать что-то». В соответствии с ним каждый разработчик выбирает тот вариант языковой конструкции, который больше подходит ему в конкретной ситуации, больше соответствует его стилю или уровню знания языка.

Подобный подход полностью противоположен строго формальному взгляду на языки программирования, когда главными целями разработки становятся однозначность и минимизация языковых конструкций. Но с точки зрения психологии и языкового мышления «лингвистический подход» во многом более продуктивен, как это ни парадоксально! Ведь он стимулирует творчество, привлекая человеческий опыт применения естественного языка, — и писать программы на Perl становится увлекательно и интересно. Наверное, поэтому программирующие на Perl так любят словечко «fun» (весело, забавно).

Первые версии и «Верблюжья книга»


Ларри Уолл начал разработку Perl в 1987 году, когда работал программистом в Unisys. Версия 1.0 была выпущена и анонсирована 18 декабря 1987 года как «„замена“ для awk и sed».

Perl 2 был выпущен в 1988 году. Основным нововведением в нём был переработанный механизм регулярных выражений.

Perl 3, выпущенный в 1989 году, получил возможность обрабатывать потоки двоичных данных.

Изначально, единственной документацией для Perl была единственная (огромной длины) man-страница. В 1991 году была выпущена книга «Programming Perl» (известная многим программистам как «Верблюжья книга» (Camel Book) из-за изображения на обложке), которая, де-факто, стала стандартом языка.



В то же самое время, версия языка была «поднята» до 4 й — не столько чтобы указать на значительные изменения, сколько чтобы обозначить, что эта версия языка документирована книгой. Perl 4 прошёл через серию релизов, остановившись на Perl 4.036 в 1993 году.

Perl 5


Разработка Perl 5 была начата в 1994 году. В то же время был создан список рассылки perl5-porters для координации работы над портированием Perl 5 на различные платформы. Он до сих пор остаётся основным форумом по разработке, обслуживанию и портированию Perl 5.

Perl 5.000 был выпущен 17 октября 1994 года. Он включал в себя полностью переписанный интерпретатор, а также много новых языковых возможностей, таких, как объекты, ссылки, локальные переменные (my $var_name) и модули. Особенно важной частью были модули, так как они предоставили механизм расширения языка без модифицирования интерпретатора. Это позволило стабилизировать интерпретатор, но при этом, дало возможность обычным Perl-программистам добавлять в язык новые возможности. Perl 5 находится в активной разработке по сей день.

Perl 5.001 был выпущен 13 марта 1995 года. Perl 5.002 увидел свет 29 февраля 1996 года с новой поддержкой прототипов. Это позволило авторам модулей создавать функции, которые вели себя так же, как и встроенные функции Perl. Версия Perl 5.003 появилась 25 июня 1996 года и устранила обнаружившиеся проблемы с безопасностью.

Одно из важнейших событий в истории Perl 5 случилось за пределами собственно языка и было следствием поддержки модулей. 26 октября 1995 года начала свою работу CPAN (Comprehensive Perl Archive Network — «всеобъемлющая сеть архивов Perl»), которая стала репозиторием модулей Perl, а также исходного кода самого языка. На данный момент сеть насчитывает более 25 000 модулей, созданных более чем 8000 программистами.

Perl 5.004 был выпущен 15 мая 1997 года и содержал, кроме всего прочего, пакет UNIVERSAL, который давал языку основной объект, от которого автоматически происходили все классы. Была также включена возможность запрашивать версию модулей. В дополнение к этому Perl стал поддерживать Microsoft Windows, а также ряд других операционных систем.

Perl 5.005 увидел свет 22 июня 1998 года. Этот релиз включал в себя несколько улучшений процессора регулярных выражений, новые перехваты в бэкенд с помощью модулей B::*, оператор кавычек qr// для регулярных выражений, большой выбор других новых модулей, а также поддержку ряда операционных систем, в частности, BeOS.

2000-е годы


Perl 5.6 был выпущен 22 марта 2000 года. Главные изменения включали поддержку 64-битных систем, представление строк в стандарте Юникод, поддержку больших файлов (файлы больше 2 Гб) и ключевое слово our. Во время разработки Perl 5.6 было принято решение изменить схему наименования версий на более близкую к другим проектам с открытым исходным кодом. За версией 5.005_63 следовала версия 5.5.640; согласно плану, версиям в разработке должны были присваиваться нечётные номера, стабильным версиям — чётные.

В 2000 году Ларри Уолл выступил с призывом к сообществу активно обсуждать предложения к следующей версии Perl. Результатом этого обсуждения стал 361 документ RFC (Request for Comments — «запрос комментариев»), которые были использованы в разработке Perl 6.

В 2001 году была начата работа над окончательным документом, подводящим итог предложениям к созданию нового поколения Perl. Результат был представлен не в виде формального документа, а в качестве сводки всех RFC. К этому времени Perl 6 существовал исключительно в виде описания языка.

Perl 5.8 был впервые выпущен 18 июля 2002 года и с этого времени получал ежегодное обновление. Последняя версия Perl 5.8, под номером 5.8.9, увидела свет 14 декабря 2008 года. Perl 5.8 улучшил поддержку Юникода, добавил новую реализацию ввода-вывода, добавил поддержку многопоточности, увеличил числовую точность и добавил несколько новых модулей.

В 2004 году началась работа над Синопсисом (Synopsis) — первоначально задуманном как ряд документов, подводящих итоги окончательного документа, упоминавшегося выше. Однако постепенно этот ряд документов и стал спецификацией Perl 6. В феврале 2005 года Отриус Тан начала работу над Pugs — интерпретатором Perl 6, написанном на Haskell. Это было первой настоящей попыткой воплотить Perl 6 в реальность. Эта попытка заглохла в 2006 году.

Когда тебе за 20


18 декабря 2007 года, в день 20-летней годовщины Perl 1.0, была выпущена версия Perl 5.10.0. Эта версия содержала в себе ряд заметных нововведений, приближающих её к Perl 6. Одними из таких нововведений стали новые операторы switch (названных «given»/«when»), обновление регулярных выражений, а также «умный» оператор совпадения «~~».


«Жемчужный» юбилей

Примерно в это же время всерьёз началась разработка новой реализации Perl 6, известной как Rakudo Perl, разработанной в связке с виртуальной машиной Parrot. С ноября 2009 года Rakudo Perl регулярно обновляется каждый месяц и является на данный момент самой полной реализацией Perl 6.

Значительное изменение процесса разработки Perl 5 произошло после появления Perl 5.11. Сообщество разработчиков перешло на ежемесячный цикл выпусков, с планированием даты выпуска на три месяца вперёд.

12 апреля 2010 года Perl 5.12.0 был представлен общественности. Выдающиеся нововведения включают в себя поддержку нового синтаксиса package NAME VERSION, оператор Yada Yada (служащего для маркировки кода-заполнителя, который ещё не реализован), полное решение «проблемы 2038 года» (Y2038), перегрузку операторов регулярных выражений, поддержку DTrace (фреймворка динамической трассировки), а также полную поддержку стандарта Unicode 5.2.

7 сентября 2010 года был выпущен Perl 5.12.2, а 21 января 2011 — Perl 5.12.3. Эти выпуски содержат обновление модулей, а также некоторые изменения в документации. Версия 5.12.4 выпущена 20 июня 2011. Последняя версия этой ветви, 5.12.5, выпущена 10 ноября 2012.

Крайняя пятилетка


14 мая 2011 выпущен Perl 5.14. Поддержка JSON стала встроенной, начиная с версии 5.14.2. Последняя версия этой ветви, 5.14.4, выпущена 10 марта 2013.

20 мая 2012 выпущен Perl 5.16. Значимым новшеством является возможность указать нужную версию Perl, которую надо эмулировать, позволяя пользователям обновить Perl, но сохранить работоспособность старых скриптов, которые иначе стали бы несовместимыми с новой версией. Ядро Perl 5.16 поддерживает Unicode 6.1.

18 мая 2013 выпущен Perl 5.18. Значимые нововведения включают новые зацепки dtrace, лексические функции, увеличение числа включенных в ядро функций, пересмотр реализации хешей из соображений безопасности, поддержка Unicode 6.2.

27 мая 2014 года была выпущена новая стабильная версия — Perl 5.20.0. Разработка велась примерно 12 месяцев, начиная с Perl 5.18.0, и содержит примерно 470 000 изменённых строк среди 2900 файлов от 124 авторов.

В декабре 2015 года вышел Perl 5.22.1. Разработка велась 6 месяцев.

9 мая 2016 года была выпущена новая стабильная версия языка программирования Perl 5.24.0. Разработка велась примерно 11 месяцев, начиная с Perl 5.22.0, и содержит примерно 360 000 изменённых строк среди 1800 файлов от 77 авторов.

Согласно данным на июль 2016 года, индекс TIOBE, который измеряет рост популярности языков программирования, показал, что Perl занимает 9 место:


Это на 2 позиции выше, чем в прошлом году.

Perl 6


Как отмечается в «Википедии», Perl 6 — очередная версия языка программирования Perl (с точки зрения строения, Perl 6 удобнее рассматривать как самостоятельный язык программирования). Является революционным развитием языка, последний написан практически «с чистого листа». Впервые за всю историю Perl разработка новой версии была начата с написания спецификаций, которые претерпевают изменения и по сей день.

Perl 6, компилируя программу, создаёт байт-код, который в дальнейшем исполняет виртуальная машина. Тот же подход применяется в технологиях Java и .NET Framework.

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

Разработка Perl 6 началась в 2000 году и продолжается и по сей день.

Изначально Perl задумывался, как инструмент, по быстродействию сравнимый с откомпилированными Unix-утилитами. Быстрота работы должна была обеспечиваться за счет того, что исполняющая система Perl читает исходный текст Perl-программы и компилирует его «на лету», затем сразу интерпретирует откомпилированную программу.

Ларри Уолл в шутку провозгласил три главных добродетели программиста: лень, нетерпение и самомнение. По его мнению, Perl спроектирован так, чтобы соответствовать этим качествам разработчика.
Поделиться с друзьями
-->

Комментарии (40)


  1. ivanych
    11.07.2016 17:25

    > Поддержка JSON стала встроенной, начиная с версии 5.14.2.

    Где прочитать подробно?


    1. hurricup
      11.07.2016 17:34

      Думаю, имеется ввиду добавление JSON::PP как core-модуля. Только это произошло в 5.14.0. А почитать, как всегда, можно в http://perldoc.perl.org/perl5140delta.html


      1. ivanych
        11.07.2016 17:41

        JSON::PP не входит в core-модули. Обратно удалили?


        1. cynovg
          11.07.2016 20:27
          +1

          Почему вы решили, что он не входит?

          perl -MModule::CoreList -le 'print $Module::CoreList::version{5.024}{JSON::PP}'
          


          1. ivanych
            12.07.2016 11:04

            Хм. А тут пусто — http://perldoc.perl.org/index-modules-J.html


            1. cynovg
              12.07.2016 11:46

              Да, тоже обратил внимание. Можно предположить, что не успевают? А может быть просто профакапили :)


              1. ivanych
                12.07.2016 11:49

                Не успели с 2014 года == профакапили:)


        1. noize
          12.07.2016 00:50

          ~ $ corelist JSON::PP

          Data for 2014-01-09
          JSON::PP was first released with perl v5.13.9


  1. ivanych
    11.07.2016 17:41

    del


  1. cadmi
    11.07.2016 20:16
    +6

    Крайними бывают плоть, Север, мера, срок и необходимость (с)


    1. FirsofMaxim
      11.07.2016 20:25
      +1

      нужду забыли


      1. cadmi
        11.07.2016 23:29

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


    1. bolk
      11.07.2016 21:29
      +3

      Что угодно бывает крайним. Это всё что с краю. Другое дело, что это не синоним «последнему». В любом ряду первые и последний элемент — крайние.


    1. FreakII
      12.07.2016 00:50
      +4

      «Крайняя пятилетка» — это, конечно, новая, невиданная ранее высота! Выше только «Крайнее танго в Париже»


      1. cadmi
        14.07.2016 12:43

        Воскресные парашютисты (уже целый один раз прыгнувшие в тандеме с инструктором) очень обожают это слово, которое дарит им чувство сопричастности к…


  1. taulatin_one
    11.07.2016 20:55
    +2

    Покойся с миром Perl!


  1. evseev
    11.07.2016 21:12
    +4

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


    1. AVX
      11.07.2016 22:17

      А есть где-то обзор или сравнение возможностей perl/python?
      Как-то давно приходилось переделывать довольно большой массив скриптов (вроде Psychostats называлась штука) под свои задачи, не помню на чём было сделано (всё-таки perl, да), но смог доработать код под себя, вовсе не зная его. Знал тогда только bash, vb/vbs, pasca/delphi, и немного c++/asm. Помню только, что потом попалось что-то схожее, но весьма похоже и тоже скрипты, но другой язык — наверное питон. Почему-то там уже не осилил.


      1. evseev
        12.07.2016 06:48

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

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

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


  1. Pilat
    12.07.2016 01:02
    +1

    Если на Perl писать аккуратно, ограничивая себя в применении принципа TIMTOWTDI, то это вполне хороший язык. Но если программист начинает злоупотреблять разнообразием, привлекает метапрограммирование, то язык превращается в неподдерживаемый квест.
    Но сейчас Perl дествительно мёртв. Не потому что он плох, а потому что сообщество вокруг Perl даже на западе сокращается год от года, а в России его вообще нет. Сложные библиотеки, например Rose::DB::Object или Mail::Box, не развиваются. Документация и примеры крайне запутаны. Все хорошие библиотеки написаны одиночками и не изменяются годами. И происходит это из-за отсутствия пользователей — тематические группы пустые и максимум изучают вопросы организации очередных собраний.
    Крайне печальное положение дел в моём любимом языке.


    1. ivanych
      12.07.2016 11:47
      +1

      К сожалению, да. Я много лет пишу на Перле, меня нанимали для разработки на Перле, я сам набирал людей для разработки на Перле… В общем, в курсе ситуации.

      И да — Перл умирает. К примеру, на hh.ru сейчас висит всего 21 вакансия перл-программиста (для сравнения — питон занимает кучу страниц, лень считать), из них 20 — в Москве, и одна в Питере. Из этих 21 вакансии, насколько я могу судить, есть только один новый проект (ncloudtech пилят облачный офис), всё остальное — поддержка легаси.

      На недавней конференции YAPC::2016 народу было человек 50. И по-моему, это всё те же лица, что и на других конференциях. Из 10 докладчиков шестеро — сотрудники Мейл.ру, где и проходила конференция.

      Журнал ПрагматикПерл в этом году не вышел ни разу. Уж на что там упорные ребята, а и то — безнадега.


      1. Pilat
        12.07.2016 12:29

        Вот непонятно что случилось. В прошлом году выходил регулярно. Что в этом году такого, что не выходит?
        И это именно сейчас, когда перл наконец доведён до вменяемого состояния.


      1. cynovg
        12.07.2016 23:47

        Surfingbird и Relap.io на Perl. Их можно считать новыми?


        1. ivanych
          13.07.2016 12:56

          Наверное, нет. Первый запустили 5 лет назад. Второй недавно, но это, я так понимаю, просто расширение первого.


          1. afarber
            13.07.2016 17:26

            И я согласен, что Perl умер.

            А я его так любил когда ровно 20 лет назад начал зарабатывать им себе на жизнь. Регулярно читал newsgroup (английскую) и отвечал на простые вопросы (в русской), покупал книги, ездил на недорогие и дорогие конференции…

            Но сейчас когда что-нибудь нужно — увы приходится брать PHP, Java, JavaScript.

            Например пишу сейчас как хобби HTML5 игру на вебсокетах — искал модули на Perl, есть один, неудобный. Ладно, стал хоть его устанавливать — ни на макбуке, ни на CentOS 7 Linux (мой «production server»), не установился, оставил кучу странных модулей. Плюнул и взял Jetty.


          1. cynovg
            15.07.2016 12:10

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


            1. ivanych
              15.07.2016 12:45

              Вероятно, да.


  1. Cheater
    12.07.2016 01:08

    «Язык юниксоидов-одиночек» «Лучший glue language!» «ОМГ, он ещё жив?» (с) коллеги

    Вообще очень классный язык — простой как пробка, с юниксовой ламповостью и с отличными учебниками, где очень много внимания уделяется общей культуре разработки, а не просто языку. (Та же «Perl Debugged» прям стартует с этого, не приступив даже ещё к собственно инструментарию).

    За себя скажу, что почти 100% моих задач по разработке на ПК — это разнообразная математика (формальные лог. системы и нейросети) и я давно пишу всё на перле. До сих пор лень изучать питон, тк не возникало необходимости, хотя уже не раз слышал оды numpy и scipy…

    > if $you->want($it) { $we->shall(do($it)) }

    Здесь синтаксическая ошибка, тк в префиксном «if» условие необходимо брать в скобки. :) Одна из странностей Perl.


    1. evseev
      12.07.2016 07:09

      Я не думаю, что вам есть смысл изучать Python. Сам по себе он крайне медленный. Если сравнивать с С++ или Java, то он медленнее обоих где-то в 1000 раз. Его сильная сторона — быстрая и простая разработка.

      Я интересовался «научными» расширениями для жены. Она занимается математическим моделированием. Так вот по большому счету зная Python быстро начать писать на них не получиться. Это практически отдельный диалект, слегка напоминающий Python. Это как русский, украинский и белорусский. Зная только русский, украинский понять можно с огромным трудом.

      Из языков общего пользования лично я бы переходил на Java. А вообще для научных расчетов идеальным, наверное, является Matlab. Он простой, мощный, с огромным сообществом, с великолепными библиотеками и, что самое странное, очень быстрый. Я уже молчу про легкость обработки результатов. Добавим, что он стыкуется с большинством языков общего пользования. Что еще желать?


      1. spooph
        12.07.2016 11:09

        Почему из языков общего пользования вы бы выбрали Java?


        1. evseev
          12.07.2016 22:57

          Прежде всего потому, что он быстрый. Что бы про него не говорили, а он в научных расчетах с С++ идет ноздря в ноздрю. Я как смотрю как моя жена запускает модели, которые работают часами, а то сутками начинаю понимать, что скорость важна. Этот язык хорошо распространен, а значит найти помощь в случае чего будет легче. Его просто учить. Один только Хорстман чего стоит. Ну и IDE для него всегда найдется. JetBrains например расстарались. Ну и не стоит забывать, что Java поддерживается во всевозможных пакетах. Например в Matlab.

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


      1. ramzai
        12.07.2016 11:09

        На настоящий момент в обработке данных, машинном обучении и смежных областях идёт выбор по факту между R (+CRAN) и Python (+numpy, scipy, pandas, scikit-learn). В критических местах там везде С, на производительность особо никто не жалуется.


        1. playermet
          12.07.2016 15:56

          А что насчет LuaJIT (+torch)?


          1. ramzai
            12.07.2016 19:08

            Про Deep Learning не скажу, здесь я несколько отстал от жизни. В мире python конкурентом будет theano/keras, вроде бы. Я понимаю, что цель Torch может быть и более общая, но вне контекста нейронных сетей я что-то не видел упоминаний.


        1. evseev
          12.07.2016 23:05

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

          И да. На сколько я понял есть правда в ваших словах.


      1. LongNowhere
        12.07.2016 15:56

        чего-нибудь дешевле чем Matlab?


        1. Gryphon88
          12.07.2016 17:30

          Octave


        1. evseev
          12.07.2016 23:17

          Он не зря является пакетом №1 в ВУЗах всего мира. Если говорить о дешевле, то оно будет и несколько другое. Ведь Matlab силен своими тулбоксами. Если ли нужное вам в той-же octave нужно смотреть.

          Но тут еще вопрос в удобстве использования. Я ставил octave на домашнем сервере для жены. Графическую оболочку она отмела сразу. Слишком корявая. А писать без IDE все-таки не всегда удобно. Особенно если программа сложная.


  1. perfect_genius
    14.07.2016 16:48

    Оффтоп.
    В этом индексе TIOBE меня всегда удивляет позиция Assembly language — у кого-нибудь есть этому объяснение?
    Микроконтроллеры?