私が知っているインタープリター言語 (Python、Perl、R、bash) では、通常、複数行のコメントには言語の別の機能 (複数行の文字列など) の誤用が含まれているようです。
インタープリターが行う解析の種類に固有のもので、複数行のコメントを難しくしているものはありますか? たとえば、複数行の文字列と大きく異なるべきではないようです。
私が知っているインタープリター言語 (Python、Perl、R、bash) では、通常、複数行のコメントには言語の別の機能 (複数行の文字列など) の誤用が含まれているようです。
インタープリターが行う解析の種類に固有のもので、複数行のコメントを難しくしているものはありますか? たとえば、複数行の文字列と大きく異なるべきではないようです。
実際、(ほとんどのパーサーがスクリプトの読み取り/実行に使用する方法に基づいて)任意の形式の複数行コメントを実装することに関しては、意味がないと確信しています。私の個人的な意見では、スクリプトは配布と説明のために最も多くの行のコメントを必要とします(ほとんどの高級言語は通常コンパイルされ、とにかくその一部だけがオープンソースです)。スクリプト言語であるLuaが複数行のコメントを提供していることを私は知っています。
--[==[
COMMENT
]==]--
多くの言語がこれをサポートしていないのはまぐれだと確信しています。通常、1行のコメントを使用して複数行のコメントを作成することは許容されます。
//*****************************************\\
//** **\\
//** JOHN SMITH **\\
//** COPYRIGHT 2008-2011 **\\
//** **\\
//*****************************************\\
多くの人はまた、1行のコメントを利用して、コメント文字を使用して画像を開始するクールな画像(ASCII ART)を作成します(上に表示されているものの種類//
、コメント文字/フレーズはどこにありますか)。
いいえ、スクリプト言語が複数行のコメントをサポートしない理由はありません。JavaScript、Groovy、Lua、PHP、REXX、Smalltalk、および Dart はすべて、複数行のコメントをサポートしています。
すべてのインタプリタ言語に複数行コメントがないわけではありません。たとえば、Rubyにはそれらがあります。
これは主に言語デザイナーの好みだと思います。複数行のコメントを必要な機能と見なさない人もいます。(最近の多くのコードエディタは、1行のコメントを使用してコードの大きなブロックをコメント化/コメント解除するショートカットを提供しています。)
また、複数行のコメントはパーサーを複雑にします。たとえば、ネストされたコメントの可能性に対処する必要があります。必要がないのに、なぜ複雑さを追加するのですか?
あなたの質問には2つの間違った仮定があります。
最初の間違った仮定は、「インタープリター/スクリプト言語には複数行のコメントがほとんどない」というものです。あなたは確証バイアスに苦しんでいます。単一行コメントを持つコンパイル済み言語 (例: Fortran、多くの Lisp 方言) と、複数行コメントを持つインタープリター言語 (例: Perl、Python) があります。
2 つ目の間違った仮定は、「別の機能の誤用」が関係しているということです。言語は全体としてより適切に設計されています。複数行のコメントに追加の機能を導入する必要はありません。とにかく存在する機能でうまくいくのであれば。たとえば、Python には複数行の文字列が存在し、文字列のみで構成される命令はノーオペレーションであるため、複数行の文字列は適切なコメントになります。Perl で複数行のコメントを作成する 1 つの方法は、ドキュメント形式であるPodを使用することです。コメントは一種のドキュメントなので、=pod … =cut
複数行のコメントを使用するのは非常に自然です (複数行の文字列は、ヒア ドキュメント <<'EOF'; … EOF
を介して、別の方法です)。
ちょっとした言語バイアスだと思います。C スタイルの複数行コメントは、C 風の言語で表示される傾向がありますが、他のほとんどの言語には同等のものはありません。
パーサー自体については。パーサーが複数行のコメントを実装していないと考える理由はありませんが、lang デザイナーが実装したくなかったということ以外にはありません。ほとんどのパーサー ジェネレーターは、この構造を簡単に処理できます。
Python では、単に複数行の文字列をコメントとして使用します。
1 つで済むのに、なぜ 2 種類の構文があるのでしょうか。