25

クリンゴン語についてのばかげた思索がこの記事に端を発した後、Lua バイトコードにコンパイルされるクリンゴン語プログラミング言語を作成する愚かな趣味のプロジェクトを始めました。言語設計の初期段階で、クリンゴン プログラマーに関する情報を調べたところ、次のクリンゴン プログラミング ルールが見つかりました。

真のクリンゴン戦士は自分のコードにコメントしません!

だから私は自分の言語はコメントをサポートしないと決めた.

現在、クリンゴンの方法の多くは、私たち人間のプログラマーには合理的ではないように見えますが、私の趣味の言語の設計と実装に手を出しているうちに、コメントに関するこのクリンゴンのルールは、素晴らしいとまではいかなくても、実際には非常に合理的であることに気付きました。

プログラミング言語からコメントする機能を削除したということは、例外なく、文芸的なコードを書かなければならないことを意味していました。

それで、コメントをサポートしていない言語が世の中にあるのではないかと思いました。

言語からコメントを削除しないことについて、本当に良い議論はありますか?

編集:必要なコメントの良い例はありますか?


PS> 上記の私の趣味の言語はとにかく部分的にばかげているので、一般的に必要なコメントの概念と同じくらい、私の実装にあまり集中しないでください.

4

32 に答える 32

24

何をしているのかではなく、なぜそれをしているのかをコメントしてください。

WHAT は、それをサポートする変数名を適切に選択した、クリーンで読みやすくシンプルなコードによって処理されます。コメントは、コード自体では表示できない (または表示するのが難しい) コードの上位レベルの構造を示します。

于 2008-12-24T05:27:19.473 に答える
23

すべてのコードが文書化されているわけではないため、「プログラミング言語からコメントする機能を削除することは、読み書き可能なコードを書かなければならないことを意味します。例外はありません」というステートメントの「持っている」に同意するかどうかはわかりません。私の推測では、ほとんどの人は読めないコードを書くでしょう。

もっと言えば、私は個人的に、自明なプログラムや API が実際の世界にあるという現実を信じていません。

私の論文の API 全体のドキュメントを手動で分析した経験から、署名だけでは伝えきれないほど多くの情報を保持しなければならないことが非常に多いことがわかります。あなたの言語からインターフェイス コメントを削除する場合、代替手段は何ですか? ドキュメンテーションなしはオプションではありません。外部ドキュメントは読まれる可能性が低くなります。

内部文書に関しては、文書を減らして人々にもっと良いものを書くよう説得したいというあなたの主張は理解できます。ただし、コメントは多くのコラボレーションと調整の目的に役立ち、物事の認識を高めることを目的としています。これらの詳細を外部の場所に追放することにより、ツールが優れていない限り、将来の読者がそれらの情報に気付く可能性を減らすことができます。

于 2008-12-24T05:19:03.637 に答える
13

うーん、テスト中に 1 行 (または複数の行) をすばやくコメント アウトできないのは、特にスクリプトを作成しているときに、私には面倒に思えます。

于 2008-12-24T06:00:33.680 に答える
9

一般的に、コメントは設計の悪さを示す疣贅です。特に、開発者がどこで何をしているのか見当がつかず、コメントを書くことでそれを補おうとしたことが明らかな長いとりとめのないコメントです。

コメントが役立つ場所:

  • 将来のプログラマーがビジネス要件を理解できるように、修正の横にチケット番号を残す
  • 特にトリッキーなハックを説明する
  • コード片のビジネス ロジックに関する解説
  • サードパーティが API を使用できるように、API ドキュメントの簡潔な説明

どのような状況でも、プログラマーは記述的なコードを書くよう努めるべきであり、不十分に書かれたコードを説明するコメントを書くべきではありません。そうは言っても、言語がコメントをサポートする必要がある、またはサポートしなければならない正当な理由はたくさんあると思います。

于 2008-12-24T05:21:36.643 に答える
7

コードには 2 つの異なる対象ユーザーがいます。

  • コンパイラ
  • 私たちのような人間

コメントを完全に削除することを選択した場合は、コンパイラのみに対応し、他には何も提供しないという前提になります。

もちろん、クリンゴン人であるあなたは人間ではないので、コメントは必要ないかもしれません。代わりに IL で話すことで、あなたの能力を明確に示すことができるでしょうか?

于 2008-12-24T05:24:58.650 に答える
5

リリース モードではすべてのアサーションがなくなるため、コードに 1 つのアサーションは必要ありません。しかし、C++ にアサーションが組み込まれていないとき、誰かが assert マクロを書き、それを置き換えました。

もちろん、多かれ少なかれ同じ理由で、コメントも必要ありません。しかし、コメントなしで言語を設計すると、人々は次のようなことを始めます。

HelperFunctionDoesNothing("This is a comment! Blah Blah Blah...");
于 2008-12-24T07:43:35.187 に答える
4

私は興味がある。誰かがコメントを含む静的文字列を宣言してから、残りのfunc / method / procedure / Battle /whateverの変数を無視するのをどのように阻止しますか?

var useless_comment = "Can we destroy our enemies?"
if (phasers on full) return Qapla'
于 2008-12-24T08:26:42.107 に答える
3

Am I the only one who comments out a couple of lines code for a number of purposes?

于 2008-12-24T09:33:00.803 に答える
3

言語にはコメントが必要です。コメントの少なくとも 95% は、より明確なコードに置き換えることができますが、まだ文書化する必要がある仮定があり、回避しようとしている外部の問題がある場合は絶対に文書化する必要があります。

コードを変更して必要性をなくすことができるかどうかを最初に検討せずにコメントを書くことは決してありませんが、できない場合もあります。

于 2008-12-24T05:17:51.037 に答える
3

すべてのソースコードはデフォルトで著作権で保護されています。多くの場合、次のことをお勧めします。

  1. ソースコードを読んでいる人に、それが著作権の対象であることを思い出させてください

  2. そのソース コード ファイルのライセンス条項を人々に伝える

  3. 保護された企業秘密を見ているかどうかを伝える

残念ながら、コメントがなければ、これを行うのは困難です。

于 2008-12-24T07:30:12.140 に答える
3

コメントが不可能な言語を作るのは、あなたが思っているより難しいでしょう。

if (false) {
    print("This is a comment. Chew on that, Klingons!")
}
于 2009-07-06T22:27:35.700 に答える
2

文芸的プログラミングは、コードほどコメントではありませんか?確かに、私が文芸的プログラミングについて見たものの多くは、それ以上のコメントではないにしても、コードと同じくらい多くの説明があります。

于 2008-12-24T06:27:16.153 に答える
2

人間がコードにコメントできるようにする必要があるのは事実ですが、言語がコメントを直接サポートしている必要はありません。ほとんどの言語では、1 行のコメントを削除するスクリプトを作成するのは簡単です (たとえば、 '#' またはその他の文字) を使用して、コンパイラを実行します。

しかし実際には、私のお気に入りの難解なプログラミング言語でさえコメントをサポートしていることを知って驚き、がっかりしています: Brainf**kWhitespace。これらの言語は読みにくいことを意図しているため、コメントをサポートすべきではないようです。(私のお気に入りの難解な言語であるLOLCodeとは対照的に、これは lolcats-speech で自己文書化することを目的としています)

この点については、他の回答者とは意見が異なります。クリンゴン語プログラミング言語のビジョンに忠実であり、コメントをサポートしないでください。

于 2008-12-24T05:27:25.853 に答える
2

コメントに対する注意点は、コードが時代遅れになることが多いということです。冗長性を追加するときはいつでも、この種の不整合のリスクがあります。

実際に私が見た興味深い研究がいくつかあります。あるグループが NLP を使用して大規模なシステムのロック コメントを分析し、それらを静的分析の結果と比較して、いくつかのバグを修正できたというものです。

于 2008-12-24T05:39:23.690 に答える
1

Uriの回答には同意しますが、私もコメントのない言語を作成しました。(ichbins。)言語は、独自のコンパイラーをきれいに表現できる一方で、可能な限り単純にする必要がありました。コメントなしでそれを行うことができるので、彼らは投棄されました。

私はコメントをサポートするリビジョンに取り組んでいますが、少し異なります。コードに埋め込まれたコメントの代わりにテキストにネストされたコードを使用した文芸的プログラミングスタイルです。また、ファーストクラスの言語機能として、後で例/テストケースを取得する場合もあります。

クリンゴンのハッキングで頑張ってください。:-)

于 2008-12-24T06:24:27.250 に答える
1

コメント内で設定するのが本当に簡単なJavadocにどれほど感謝しているかはわかりません。つまり、コメントが役立つ少なくとも1つの意味です。

于 2008-12-24T06:28:02.657 に答える
1

コメントは多くの状況で必要だと思います。

たとえば、アルゴリズムのことを考えてみてください。巡回セールスマン問題を解決する C で記述された関数があるとします。この問題を処理するために使用できるさまざまな手法があります。そして、コードは通常、その性質上不可解です。

使用するパラメーターとアルゴリズムをコメントを使用して明示的に記述しないと、このコードを再利用することはほとんど不可能です。

于 2008-12-24T09:32:48.947 に答える
1

あなたの言語で書いている開発者は、明確なコードを書くために余分な努力をするだろうと思うかもしれませんが、実際には、非常に表現力豊かな言語を設計する責任はあなたにあります。地獄、英語でさえそのようなものではありません (まだ括弧で囲んでいます!)。あなたの言語がそれほど設計されていない場合は、Brainfuck と同じくらい使いやすく、Brainfuck の人気と尊敬を享受できます。

リンクを追加する必要がありますか、それともリンクはコメントのように見なされますか?

さらに、必要に応じて、文字列をハイジャックし、変数名を誤用することで、コメントを追加する方法を見つけることができます (コメントの代わりになるだけです)。ゲーデル・エッシャー・バッハを読んだことがありますか?

于 2008-12-24T05:11:15.837 に答える
1

いいえ、もちろん、言語にコメントが必要なわけではありません。しかし、(便利な)プログラムにはコメントが必要です...読み書きのできるコードにはコメントがないというあなたの考えには同意しません。非常に優れたコードの中には、コメントがあれば簡単に理解できるものもありますが、コメントなしでは困難です。

于 2008-12-24T07:03:23.693 に答える
1

コメント機能を完全に削除するのは悪い考えです。確かに、開発者は最小限のコメントでコードを書くこと、つまり自己文書化コードを書くことを学ばなければなりませんが、何かがそのように行われている理由を説明しなければならない場合がたくさんあります。次のケースを考慮してください。

  • 新しい開発者がコードの保守を開始し、元の開発者がプロ​​ジェクトから脱退した
  • 仕様または市場の要件の変更は、直感に反するものにつながります
  • 特にオープンソースの場合はコピー権に注意してください(一部のオープンソースライブラリではこれを行う必要があります)

また、私の経験では、新しいプログラマーはより多くのコメントをする傾向があり、専門知識を習得するにつれて、コードは自己文書化され、簡潔になる傾向があります。一般に、コメントは、どのように、または何についてではなく、なぜについてのものであるべきです。

于 2008-12-24T05:29:02.073 に答える
1

いいえ -- コメントを必要とするプログラミング言語は 1 つもありません。

言語はコンピューター用です。コメントは人間用です。コメント0%でプログラムを書くことができます。正しくても間違っても実行されます。100% のコメントでプログラムを書くことはできません。コンパイルされないか (main() がないなど)、スクリプト言語の場合はまったく何もしません。

さらに、実際のプログラマーは自分のコードにコメントを付けません。クリンゴンのように。

于 2008-12-24T05:38:01.727 に答える
1

コードにコメントを付けなくても生きていけるでしょうか? 確かに、しかしそれはライブを容易にするものではありません。

于 2008-12-24T10:34:54.623 に答える
1

コメントは、あなたのコードを読んでいる人 (おそらく「将来のあなた」) に、あなたが彼女の福祉について考えたことを安心させるので、役に立ちます。

于 2009-07-06T22:22:31.543 に答える
0

プログラミング言語にはコメントが必要ですか?

いいえ。壮大な計画では、コンパイラーはコメントをあまり気にすることができず、コードをより低い最小公分母に粉砕することを望んでいます。

プログラミング言語がコメント構造を提供することは有用ですか?

はい。コメントはプログラマーにとって非常に役立ち、彼らが何をしているのかを知っているように偽造するだけでなく、デバッグや文書化にも役立ちます。

于 2008-12-24T06:19:18.273 に答える
0

「コードはプログラマーが利用できる優れたドキュメントにすぎません。ただし、これは非常に理想的な条件であり、すべての人が常に優れたコードを作成するわけではありません。したがって、将来のコメントで不適切に記述されたコードを適切にするために、必要。

于 2008-12-24T06:27:22.003 に答える
0

Perfect code needs zero comments. It should be simple, and understandible by complete novices.

于 2008-12-24T09:35:52.013 に答える
0

コードは 1 回書かれますが、その存続期間中に何度も読み取られます。したがって、読みやすさを最適化する価値があります。定数からクラスまで、すべての明確で一貫した名前付けが必要ですが、この目的を達成するには十分である場合とそうでない場合があります。そうでない場合は、ギャップをコメントで埋め、コードと同じように維持します。

于 2008-12-26T06:11:42.003 に答える
0

質問は、コメントのない言語はどの程度自己完結型になるのでしょうか? たとえば、他のコード内で使用される DLL にコンパイルされる場合、必要なもの、変更されるもの、および返されるものに関して、関数シグネチャ以外のことをどのように知るのでしょうか? たとえば、Visual Studio 内のオブジェクト ブラウザーなどでドキュメントとして使用できる関数の上のコメントで非常に簡単に実行できることを表現しようとするために、関数名を数十文字にしたくはありません。

于 2008-12-24T05:17:07.260 に答える
0

私はかつてコメントなしで VB アプリ (モノポリーに触発されたばかげたボード ゲーム) を書きました。しかし、私は先生を怒らせるためだけにそれを行いました.

于 2008-12-24T06:58:20.257 に答える
0

もちろん!!

主な理由は、初心者の開発者です。誰もが文芸的なコードの書き方を知っているわけではありません。実際には、NullPointerException が表示されたときに NullPointerException を取得しない人が何百万人もいます。

私たちは皆、ある時点から始めます。

しかし、「専門家」の開発者のみをターゲットにしている場合は、そもそも言語にこだわる必要はありません。あなたは蝶を使うべきです!!! それが実際の開発者が使用するものです。

コメントは必須です。必要に応じて難しくしてみてください ( #//##/ シーケンスを使用してコメントなどを作成するなど) が、省略しないでください。

:)

于 2008-12-24T05:30:33.710 に答える
0

どのコードにもコメントが必要です。私は、1 行または 2 行ですべての関数の理由と動作を説明するようにしています。

自分自身を説明するコードは完璧な世界にしか存在しません。適切な方法ではなく、奇妙なハックや、手早く汚いことをする理由が常にあります。覚えておくべき最善のことは、なぜコードが何をするのかをコメントすることです。良いコードは、99% の確率で何をするのかを説明します。

数独パズル (3 つのかなり単純な while ループ) を解くことができるコードのような単純なものを書き、3 か月後にそれを読んでみてください。正確に明確ではないものをすぐに見つけることができます。

于 2008-12-24T10:01:34.613 に答える