Почему надо постоянно обновляться до новых версий Perl

20 май 2013 13:57


В Perl5 как наверно ни в одном другом языке программирования нет такой тщательной заботы об обратной совместимости. Многие модули CPAN отлично работают на самых древних версиях интерпретатора Perl, вышедших ещё в прошлом тысячелетии. Более того, некоторые авторы с большим удовольствием сообщают в ChangeLog, что в новом релизе исправлены проблемы совместимости с версиями Perl, например, 5.6. Всё это может создавать ложное ощущение у программиста, что выпускаемые новые версии Perl - это не более чем косметические изменения и настоящему труъ хакеру нужен только 5.8.1 или даже 5.6.1 - ведь они стабильны как скалá (не путать со Scala), работают быстрее чем новомодные релизы, да и CPAN продолжает их поддерживать. На самом деле, всё это конечно не так. Развитие кода в рамках старого интерпретатора — это процесс, которые со временем приводит к возрастанию сложности проекта, поскольку помимо кода самого проекта возникает задача тянуть поддержку старого интерпретатора и его багов, а вырваться из этой ловушки со временем становиться всё труднее.

Дальше


Комментарии 0


Баг libgd #177

19 апр 2013 12:08


Разбирался с ошибкой в тесте Perl модуля GD. Сравните картинки, которая должна быть и какую в реальности формирует третий тест в t/GD.t.

Как видно, не происходит заполнение одной из областей синим цветом. Удивительно, но баг воспроизводится только на 32-битной платформе x86. В чём же дело?

Дальше


Комментарии 0


Спектральный анализ сигнала в Perl

05 фев 2013 15:39


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

Оказывается на CPAN есть модуль, который может помочь нам сделать это без особого труда - Math::FFT

Дальше


Комментарии 0


MurmurHash - новая хэш-функция в Perl 5.17.6

21 ноя 2012 22:01


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

Дальше


Комментарии 0


Сигнатура функции в Perl 5

29 окт 2012 16:08


Сигнатура функции ( Subroutine Signature ) - это способ описания параметров и их типов, с которыми вызывается данная функция. Она содержит имя функции, параметры и их типы, и возвращаемое значение. Также это ещё называют прототипом функции. Сигнатура функции в разной форме применяется в строго-типизированных языках, применяется и во многих динамических языках.

В Perl 5 на сегодняшний день существует механизм прототипов функции, когда описывается количество и вид передаваемых переменных. Это бывает полезно при написании подпрограмм, выглядящих как встроенные функции (например, grep или open), где не требуется обособлять параметры функции скобками, также выполняется проверка количества и вида передаваемых параметров, что позволяет выявлять ошибки на этапе компиляции.

Но данный механизм имеет ряд ограничений, например, проверка параметров не происходит, если вы вызываете подпрограмму как &mysub() или $subref->(), что мешает использовать его в модулях для описания прототипов методов.

В CPAN есть модули , которые в разной степени реализуют подобный функционал, но недавно в рассылке p5p появилось сообщение от Peter Martini о реализации сигнатуры функции для включения в базовый Perl, в виде экспериментальной возможности.

Дальше


Комментарии 0


Perlbrew

13 окт 2012 12:30


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

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

Дальше


Комментарии 2


Скринкаст о GearRepo

25 сен 2012 00:12


Записал скринкаст о сборке rpm-пакетов в системе GearRepo для систем на базе ALTLinux на примере Perl-модуля Dancer::Plugin::EscapeHTML.

Наверно это надо было сделать ещё год назад, когда велась активная разработка, но руки так и не доходили.

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

Дальше


Комментарии 8


xsubpp строгого режима

29 авг 2012 16:35


В состав perl 5.16 включён модуль ExtUtils::ParseXS версии 3.16 (в 5.14 была версия 2.2210). Модуль был подвергнут основательной переработке и впервые смог запускаться под прагмой use strict. Эта особенность, как оказалось, имеет побочные эффекты и некоторые особо продвинутые XS-модули перестали собираться.

Дальше


Комментарии 0


Исправить SmartMatch нельзя оставить как есть

22 авг 2012 12:11


"Папа" Ricardo Signes в своей булле объявляет II-ой крестовый поход на SmartMatch . Оператор умного сравнения впервые появился в версии Perl 5.10 и с тех пор неоднократно подвергался критике за обилие магии, неочевидность и ошибки. От версии к версии он дорабатывался и текущая таблица умного соответствия включает 23 случая, кроме того when, который использует SmartMatch, добавляет ещё 10 исключений, за что его ещё называют SmartSmartMatch. Сложность оператора приводит к тому, что им проще не пользоваться, чем пытаться найти ошибку в коде с его использованием.

В новом предложении для SmartMatch таблица из всего 7 вариантов для соответствия, 1 вариант решений для 10 исключений when и полная предсказуемость и очевидность работы операторов.

Дальше


Комментарии 1


Perl Benchmarks

29 июн 2012 00:31


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

Два теста являются показательными: sudoku (решение 20-ти сложнейших судоку) и patmch (поиск строк по регулярному выражению). В первом тесте Perl проигрывает в скорости компилируемым языкам на два порядка (тут уместно говорить о порядках, т.к. даже статистическая погрешность в замерах может быть значительной). Второй пример демонстрирует превосходство Perl в скорости над всеми другими языками. Стало интересно, как можно объяснить такой различие в скорости работы.

Дальше


Комментарии 1