Критический анализ языка perl
Вообще говоря, то, что автор написал так много, определенно заслуживает уважения. То, что в глаза не бросаются орфографические ошибки (я пока не видел, хотя прочитал еще не все) — заслуживает вдвойне.
Наверное, могу выразить общее мнение: первое впечатление — негативное. Однако, думаю, не все так просто. Попробуйте перед прочтением чуть помедитировать и забыть свое истинное отношение к Perl. Представьте, что вы к нему равнодушны. Встаньте, наконец, на точку зрения автора. Попробуйте. Просто для эксперимента. Помогает.
Многое, что там написано, правильно. Многое правильно лишь идеологически (но не практически). Многое неправильно вовсе. Но... многие аспекты «правильности» часто при более детальном рассмотрении превращается просто в не очень хорошую осведомленность автора. Тем не менее, то, что он все-таки при таком уровне знания Perl решил написать столь объемный труд, очень похвально. На ошибках учатся. Не все же такие Перл-гуру, как arto (-;
Читая (а я решил прочитать это все), буду здесь помечать моменты, которые автору следовало бы чуть подучить.
Ну вот, что я бы сделал на месте автора той статьи...
http://ivtcom.newmail.ru/perl170102/token.htm
Комментарии. «Апокалипсисы» Ларри о том, что, даже используя многострочные комментарии, в 99% случаях применяют их так же, как многострочные. С неудобством POD (нужно везде расставлять пустые строки) я лично согласен.
Идентификаторы. Числа. Изучить, что такое perl -w и use strict (правда, ради справедливости надо сказать, что в конце автор ссылается на эти директивы; однако утверждать, что «они не спасают от самых главных недостатков perl», — все равно, что обвинять Паскаль в том, что программы на нем можно набирать по cat >prog.pas; это лишь вопрос удобства). Большинство описанных в этом разделе проблемы надуманы (по указанной только что причине).
Строки. Ошибочные рассуждения о неудобстве интерполяции переменных (вероятно, просто недостаток опыта). Ошибочное преувеличение замедления от регулярных выражений (это не самое узкое место в Perl, на практике экономия на спичках в большинстве случаев). Прочитать MRE.
#3
Скаляры. Почитать про sprintf и проблему Y2K (-;
Массивы. Медлительность массивов — не самое узкое место (как правило). Путаница понятий «массив» и «список» (это очень существенный недочет).
#4
Операции и выражения. Много провокаций, но, в общем-то, много и справедливой критики. Чрезмерно объемное и однобокое рассмотрение деления с остатком (нужно смотреть на практическую применимость этой операции — например, «наложение текстуры черепицы», — а не на математическую).
Операции сравнения. Неверные (с практической точки зрения) рассуждения о приоритетах и скобках (сравните Си и Паскаль).
Прочие операции. Болезненная боязнь большого числа уровней приоритетов (честно говоря, мне не удается понять, почему много приоритетов — это плохо, ведь в случае сомнений всегда можно использовать скобки). В теории правильно про ?:, однако на практике Perl (когда нужно обязательно указывать фигурные скобки) действительность несколько искажается.
Операторы безусловного перехода. Почитать, как работают next и last (ошибка в тексте). Я также не согласен с неправомерностью использования break/continue (между прочим, Кнут писал только про «плохость» goto с меткой). Про goto &subroutine — явная нехватка квалификации (бывают ситуации, когда без этого оператора просто не обойтись, никак).
Область видимости идентификаторов. Просто ошибочные рассуждения (с практической точки зрения). local чаще всего используют вовсе не так, как пишет автор, а для сохранения чего-либо (например, элемента хэша) с гарантированным восстановлением (даже в случае исключения или ошибки). Вложенность областей видимости как ничто другое полезно для вызова деструкторов объектов (чем Perl славен, как и C++).
#8
Тут я буквально порадовался конструктивности критики.
Вообще, мне кажется, что все-таки (и в бОльшей, нежели в меньшей, степени) автор прав. Конечно, ему не мешало бы еще чуть поработать, чтобы окончательно разделить помидоры и пирамиды.
P.S.
Друкса только к нему не подпускайте — разорвет (-;
очень похоже, что человек мало писал в свое время на Си и толком не может привыкнуть к некой "оригинальности" Перл... ну и о чем тогда говорить ?? не нравится ему, ну и пусть гребет по своей реке :-)
![[logo]](/site/images/logo.jpg)