Почему интерпретируемые / скриптовые языки редко имеют многострочные комментарии? - PullRequest
5 голосов
/ 20 мая 2011

Из интерпретируемых языков, которые я знаю (Python, Perl, R, bash), многострочные комментарии, как правило, связаны с некоторым неправильным использованием другой функции языка (например, многострочных строк).

Есть ли что-то присущее типу синтаксического анализа, который делают переводчики, что затрудняет многострочные комментарии? Не похоже, что это должно значительно отличаться, скажем, от многострочных строк.

Ответы [ 6 ]

1 голос
/ 04 декабря 2013

Нет, для языков сценариев нет причин не поддерживать многострочные комментарии.JavaScript, Groovy, Lua, PHP, REXX, Smalltalk и Dart поддерживают многострочные комментарии.

1 голос
/ 20 мая 2011

По правде говоря, я уверен, что нет никакого смысла в реализации какой-либо формы многострочных комментариев (основанных на методах, которые большинство синтаксических анализаторов используют для чтения / выполнения сценария). По моему личному мнению, сценарии нуждаются в многострочных комментариях в наибольшей степени из-за распространения и объяснения (большинство языков высокого уровня обычно компилируются, и в любом случае только часть их является открытым исходным кодом). Я знаю, что Lua, язык сценариев, предоставляет многострочные комментарии:

--[==[
COMMENT
]==]--

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

//*****************************************\\
//**                                     **\\
//**            JOHN SMITH               **\\
//**        COPYRIGHT 2008-2011          **\\
//**                                     **\\
//*****************************************\\

Многие люди также будут использовать однострочные комментарии для создания классного изображения (ASCII ART), используя символ комментария для запуска изображения (вид, показанный выше, где // - это комментирующий символ (ы) / фраза).

0 голосов
/ 21 мая 2011

В вашем вопросе есть два неверных предположения.

Первое неверное предположение заключается в том, что «языки интерпретации / написания сценариев редко имеют многострочные комментарии». Вы страдаете от предвзятости подтверждения. Существуют скомпилированные языки с однострочными комментариями (например, Fortran, многие диалекты Lisp) и интерпретируемые языки с многострочными комментариями (например, Perl, Python).

Второе неверное предположение заключается в том, что «злоупотребление другой функцией» связано. Языки лучше спроектированы в целом, нет необходимости вводить дополнительную функцию для многострочных комментариев, если какая-то функция, которая существует в любом случае, сработает. Например, в Python существуют многострочные строки, и инструкция, состоящая только из строки, является недопустимой, поэтому многострочные строки дают хорошие комментарии. В Perl одним из способов получения многострочных комментариев является Pod , формат документации; комментарии являются своего рода документацией, поэтому вполне естественно использовать =pod … =cut для многострочных комментариев (многострочные строки, через здесь документы <<'EOF'; … EOF, это другой метод).

0 голосов
/ 20 мая 2011

Я подозреваю, что это всего лишь небольшая языковая предвзятость. Многострочные комментарии в стиле C, как правило, отображаются на языках c-esque, но большинство других языков не имеют эквивалента.

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

0 голосов
/ 20 мая 2011

Не на всех интерпретируемых языках отсутствуют многострочные комментарии.В Ruby, например, они есть.

Я подозреваю, что это во многом предпочтение языкового дизайнера.Некоторые просто не видят многострочные комментарии как необходимую функцию.(Многие редакторы кода в наши дни предлагают ярлыки, которые комментируют / раскомментируют большие блоки кода, используя однострочные комментарии.)

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

0 голосов
/ 20 мая 2011

В Python мы просто используем многострочную строку в качестве комментария.

Почему есть два вида синтаксиса, когда один будет делать?

...