Программы
Почему я использую Perl

Почему я использую Perl

Пара слов о замечательных особенностях Perl

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

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

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

Мало семантики, много букв.

И вряд ли кому придёт в голову заняться мета-программированием Python’а.

С другой стороны — Perl — язык сложный и неоднозначный (не только в смысле синтаксиса, но и политически). Но за сложностью зачастую стоит и красота.

Мне нравится выразительность Perl’а — если ты видишь $ — значит общаешься с переменной в скалярном контексте, если @ — то в списковом, % — привет хешам! Так гораздо понятнее, чем «If it quacks like a duck and swims like a duck then it’s a duck». Если видишь map — значит меняют список, если grep — значит что-то ищут!

Жутко не нравятся языки без точек с запятой в конце мысли. Это же как знак «ага, вот теперь мы закончили — переходим дальше». Да, я пишу питоний код с «;» в конце, но зачастую надо читать и чужой код…

Некоторые жалуются, что фигурные скобки засоряют код. То есть постоянные отступы и «\» в конце строчек — это не проблема?

my $a = Model::Article->new (
           name => 'Гоша',
           blog => 'http://gosha.bugov.net'
        );
   $a->save;

Кстати, да, будь благословлён, use strict;

Ещё один замечательный факт: Perl язык мультипарадигменный, в то время как Python уж сильно ушёл в ООП. Это не плохо и для тысяч программистов это даже прекрасно. Но ограничивает кругозор.

А если не объекты, то что же является атомарным объектом (в этом случае объект — не термин ООП) в Perl? На мой взгляд, это данные. И здесь появляются ещё 2 замечательные особенности Perl’а — операция разыменования, дающая нам работать и с функциями как с переменными и функция tie, позволяющая привязать к скаляру абсолютно любое поведение.

Ну и в конце хочется упомянуть главную особенность Perl’а — магию. Зависимость от контекста, специальные переменные — всё то, что раздражает новичков — всё это делает Perl не просто инструментом в руках ремесленника, а языком, на котором составляются заклинания. Это отражается и на программистах, пишущих на нём. Вместо

# Some initional code
sub AUTOLOAD {

Зачастую можно увидеть

# "These old doomsday devices are dangerously unstable.
# I'll rest easier not knowing where they are."
sub AUTOLOAD {
Также может быть вам интересно:

20 советов по повышению безопасности сервера Linux

Безопасность сервера – не просто так!

Читать »

Программист на PHP

Кто идёт программировать на PHP? Почему PHP так популярен в мире?

Читать »
Фото Как настроить отправку почты из Django

Как настроить отправку почты из Django

Письма об ошибках, отчёты на почту, восстановление паролей - всё это полезно при работе с сайтом. Django предоставляет удобный способ это сделать с минимумом настроек!

Фото Добавляем поддержку медиа-файлов в Django проект

Добавляем поддержку медиа-файлов в Django проект

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

Фото Настройка журналирования (логирования) в Python с примерами

Настройка журналирования (логирования) в Python с примерами

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

Фото Так ли безопасен Linux? Несколько коммитов с уязвимосятми в stable

Так ли безопасен Linux? Несколько коммитов с уязвимосятми в stable

Исследователи сумели пройти code-review с реквестами в ядро Linux, заведомо содержащими добавление уязвимостей.

Фото Пример своей консольной команды в Django проекте

Пример своей консольной команды в Django проекте

Если вы работали с Django проектом, то, скорее всего, запускали команды из консоли (manage.py). В Django есть простой способ писать свои команды для управления проектом.

Фото Разграничение прав доступа на Django сайте

Разграничение прав доступа на Django сайте

Почти на любом веб-сайте необходимо разделять пользователей на группы и предоставлять им разные возможности. В Django есть довольно серьёзная система прав доступа для пользователей - давайте её рассмотрим!

Фото Пользователи и их создание в Django - своя регистрация на сайте

Пользователи и их создание в Django - своя регистрация на сайте

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

Фото Как на Bash посчитать число строк в проекте (директории)

Как на Bash посчитать число строк в проекте (директории)

Ниже будет представлен однострочник, решающий данную задачу на Bash + пошаговое описание его работы.