Почему интерпретируемые / скриптовые языки редко имеют многострочные комментарии?

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

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

6 ответов

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам