В чем причина отсутствия более простого многострочного комментария в Perl?

Я знаю разные способы введения многострочных комментариев в Perl. Но я хочу знать, почему у него нет чего-то более простого многострочного комментария, такого как /* comment */, который сделал бы его намного проще.

В настоящее время я подписан на http://www.perlmonks.org/?node_id=560985, чтобы достичь нескольких -строчные комментарии. Планируется ли в ближайшее время включить эту функцию в Perl?


person Ravikiran    schedule 16.02.2011    source источник
comment
Хорошо, что Perl настолько тривиален для чтения, что для каждого утверждения вам действительно потребуется несколько строк комментариев!   -  person jdehaan    schedule 16.02.2011
comment
@Brad: Это сломает код вроде s/\s*/ /g :)   -  person bdonlan    schedule 16.02.2011
comment
@bdonlan Я просто показывал, что уже есть способ делать многострочные комментарии.   -  person Brad Gilbert    schedule 17.02.2011


Ответы (4)


Комментарии в стиле C сопряжены с рядом сложных проблем, включая невозможность закомментировать комментарии. Кроме того, удобный синтаксис для однострочного кода способствует краткому написанию, что облегчает чтение кода. Отсутствие 10-строчных блоков «Автор: ... Ввод: ... Вывод: ... Любимый цвет: ...», которые вы время от времени видите в C и C++, является еще одним преимуществом.

Многострочные комментарии поощряют длинные тексты, которые лучше выразить более кратко или в виде документации, поэтому Perl поощряет это с помощью своих операторов # и =pod (соответственно).

Наконец, если у вас возникли проблемы со стилем комментирования Perl, вам следует настроить редактор для редактирования программ, а не текста. В Emacs, если вы начнете писать что-то вроде # this is a comment that is getting longer and longer and longer and oh my goodness we are out of space on this line what to do now и наберете M-q, Emacs автоматически вставит # в начало каждой создаваемой строки.

Если вы просто хотите закомментировать блок кода, вам не нужно ничего искать дальше, чем M-x comment-region и M-x uncomment-region, которые закомментируют область практически на любом языке; включая Перл.

Не беспокойтесь о синтаксисе комментариев; это работа компьютера!

person jrockway    schedule 16.02.2011
comment
Я думаю, вы имеете в виду M-q, а не C-q. - person Sean; 16.02.2011
comment
Для тех из нас, кто находится по другую сторону Великой священной войны редакторов, vim также может автоматически вставлять # в начало строк комментариев, а также будет делать это при повторном размещении текста с помощью gq. - person Dave Sherohman; 16.02.2011
comment
-1 за оспу на обоих на ваших домах! Как насчет решения Падре? - person DVK; 16.02.2011
comment
Я все еще считаю, что /* */ исключительно удобен, чем # или =pod. Это просто недостаточно интуитивно для меня, или, может быть, это мой личный выбор. - person Ravikiran; 17.02.2011

Это обсуждалось в списке рассылки [email protected]. Хотя, в конце концов, обсуждение было безрезультатным, резюме, размещенное здесь, представляет интерес для чтения. .

person Ted Hopp    schedule 16.02.2011
comment
да, я видел это, до сих пор не могу поверить, почему они не кивнут. - person Ravikiran; 17.02.2011

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

например, C использует /* как открытие и */ как закрытие. Как многострочная система комментариев обрабатывает комментарии внутри комментариев? C потерпит неудачу, если вы попытаетесь прокомментировать блок, который уже прокомментирован.

Обратите внимание, что у строковых комментариев (например, // комментариев C++) этой проблемы нет.

person Foo Bah    schedule 16.02.2011

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

q{This text won't do anything.
Neither will this.};

Это имеет неприятный побочный эффект срабатывания предупреждения:

Useless use of a constant in void context at - line 4.

Другой вариант — использовать heredoc в пустом контексте — по какой-то причине это не вызывает предупреждения:

<<ENDCOMMENT;
Foo comment bar.
ENDCOMMENT

Как видите, проблема не в отсутствии синтаксиса как такового (комментарии в документации на python выглядят отдаленно похожими на метод q{} на самом деле), а скорее в том, что сообщество программистов на Perl остановилось на строчных комментариях, используя # и POD. Использование другого метода на этом этапе просто запутает людей, которым позже придется читать ваш код.

person bdonlan    schedule 16.02.2011
comment
Пожалуйста, никогда не делайте ничего из этого в реальном коде. Цель кода — удобочитаемость, а не то, что я не могу понять, как пользоваться своим текстовым редактором, так что идите на хуй. - person jrockway; 16.02.2011