ようこそ!浜村拓夫の世界へ

    ブログ内検索

    最近の記事

    ブックマーク数の多い記事

    Blog Translation

    Powered By FC2ブログ

    Powered By FC2ブログ
    ブログやるならFC2ブログ


    FC2ブログ LOGIN

    with Ajax Amazon

    プログラムのコメント

    このエントリーを含むはてなブックマーク はてなブックマーク - プログラムのコメント あとで読む
    コンピューターのプログラムを書くときに、コメント(注釈文)の量は、どれくらい付けているだろうか?

    【SORD】M5の話でもマタ~リとしようよ2【タカラ】

    65 :ナイコンさん:2008/11/15(土) 12:25:08
    余談だがマイクロソフトBASIC(ゲイツが書いた奴)は
    コメントの量>実際のコード量だったそうで、
    移植性・可読性を重視してたんだろう。多分。

    一方日本ではソースの可読性はかなりおざなりにされてた気もするなぁ。



    ビルゲイツが書いたコードは、コメントが多かったらしい。
    自分もコメントはなるべく多く付けるように心がけている。

    コメントは、コードの可読性を高めるために役に立つことはあっても、阻害することはないだろう。
    コメントを重用するプログラミングのスタイルは、自分に合っている。

    文芸的プログラミング - Wikipedia

    文芸的プログラミングではドキュメントとソースを併記したWEBと呼ばれるメタソースを記述し、そこからドキュメントとソースコードをそれぞれ生成させることで情報の一体性を高めている(これらのメカニズムをWEBシステムと呼ぶ)。



    Web上での「文芸的プログラミング」

    「文芸的プログラミング」とは、スタンフォード大学のDonald Knuthが提唱している、プログラムの作成とその文書化を同時に行なう手法で、プログラムとその解説文書をひとつのファイルに混在させながら追加したり修正したりして同時に開発していくことにより、完全に整合性のとれた文書とプログラムを開発しようというものである。



    文芸的プログラミング (ASCII SOFTWARE SCIENCE Programming Paradigm)文芸的プログラミング (ASCII SOFTWARE SCIENCE Programming Paradigm)
    (1994/03)
    ドナルド・E. クヌース

    商品詳細を見る


    インテンショナルプログラミング - Wikipedia

    インテンショナルプログラミング(英: Intentional programming)とは、プログラミングにおいて、ソースコードに intention(意図、意向)と呼ばれる正確な情報を反映させるコンセプトの集合である。
    インテンション (intention) とは、プログラマが構想を練る際に頭の中に生じる概念をさす。
    プログラマの思考と抽象化のレベルをうまく一致させ、ソースコードの閲覧とプログラムの保守を容易にする。

    マイクロソフトに長く勤めたチャールズ・シモニーが提唱したコンセプトである。
    彼はMicrosoft Researchで、この概念を実証する IP と名づけた統合開発環境の開発を指揮した。
    理由は不明だが、マイクロソフトはインテンショナルプログラミングに関する作業を止めさせたため、IP の開発は2000年代初期に中止された。



    ジェネレーティブプログラミング (IT Architects’Archive CLASSIC MODER)ジェネレーティブプログラミング (IT Architects’Archive CLASSIC MODER)
    (2008/04/23)
    クシシュトフ・チャルネッキウールリシュ・W・アイセンアッカ

    商品詳細を見る


    ・コメントを多く付けることは、自分の備忘録として有用だし、コードを読む他人への親切でもある。

    一緒に仕事をしていたプログラマーの人から教えてもらったことだが、他人に向けたコメントなら、「仕様が分かるようなコメントを書いておく」と良いという。
    =特に仕様書、ドキュメントが不備のコードをメンテナンスするとき、非常に助かる。

    仕様が分かるようなコメントの書き方は、ドキュメントジェネレーターのコメント記述規約のような細かい、厳密な記述は必要ではない。
    仕様書や設計書と対比できるマークアップ程度のものであり、さらには仕様書がない場合でも、設計の意図が伝わるような書き方が理想である。

    javadoc - Java API ドキュメントジェネレータ

    Java ソースファイルから、API ドキュメントの HTML ページを生成します。



    Python - PEP8

    コメント
    ソースコードと矛盾するコメントは、コメントが無いよりも問題である。
    ソースコードを変更したときには、コメントを更新することを優先するように。

    インラインコメントは控えめに使う。
    インラインコメントは、文と同じ行に入れるコメントである。
    インラインコメントは、控えめに使うべきである。
    コメントは、文から少なくともスペース2個分離しておき、# とスペース1個で始まるようにするべきである。
    分かりきったことを書くくらいなら、インラインコメントは不要で、むしろ気が散るものである。



    ・コメントを有用であるが、コメント量があまりにも多すぎる冗長な記述は、読んでいて辟易する。
    =的確なコメントというものは、必然的にシンプルになるだろうし、分かりきったことを書かなければ、コメント量が無駄に膨張することはない。

    ・数学において、美しい数式はシンプルである場合が多い。
    =プログラムコードのコメントにも、数式のような美しさが求められるのではないか?

    ●コメントは擬似コードと役割が違う
    一般的に、プログラミングは
    1.人間が思考の中で、プログラムの仕組みを検討する。
    2.それを実際のプログラムコードに置き換えていく。
    という順番で行われる。
    (リファクタリングのような作業の場合は、逆にコードが先に存在している。)

    1.から2.に移行する段階で、擬似コードを生成することができる。
    擬似コードまで用意したら、その後の実装は自動化することも可能だろう。

    擬似コード - Wikipedia

    擬似コード (ぎじこーど)は、アルゴリズムの構造を記述する際に用いられる擬似的な言語のことである。
    Pseudocode、Pseudo-Codeとも表記される。
    擬似コードは、多くの場合、既存のプログラミング言語の文法に似せて表現される(Pascal、FORTRAN、C言語など)。



    MDA等のアプローチで、実装の自動化を図る場合、途中の過程で、擬似コードを経る段階が必ず存在するだろう。

    モデル駆動型アーキテクチャ - Wikipedia

    モデル駆動型アーキテクチャ(Model-Driven Architecture、MDA)とは、Object Management Group (OMG) が2001年に公式に発表したソフトウェア設計手法である。

    モデル駆動型アーキテクチャ (MDA) は、モデルとして表現される構造的仕様のガイドラインを提供するソフトウェア開発手法である。
    MDAでは、システムの機能はまず適切なドメイン固有言語を使ってプラットフォーム独立モデル (PIM) として定義する。
    CORBAや .NET といったプラットフォーム定義モデル (PDM) が与えられると、PIM は別のドメイン固有言語や汎用のプログラミング言語(Java、C#、Python など)に対応したプラットフォーム特化モデル(PSM)へと変換される。
    PIMとPSMとの変換は通常、モデル変換ツールなどの自動化されたツールを使って行われる(例えば OMG が標準化したQVT)。



    ●チューリング完全
    計算可能なもの、つまり機械で扱える作業は機械でやってもいい。
    人間の思考(アイデア)→言葉として表現(ドキュメント)→実装コード、へと置き換えていく作業がスムーズにできれば、生産性が上がる。

    メタプログラミング - Wikipedia

    メタプログラミング (metaprogramming) とはプログラミング技法の一種で、ロジックを直接コーディングするのではなく、あるパターンをもったロジックを生成する高位ロジックによってプログラミングを行う方法、またその高位ロジックを定義する方法のこと。
    主に対象言語に埋め込まれたマクロ言語によって行われる。
    代表的なメタプログラミングの例はLISPのマクロである。



    人間は、唯物論者が考えるような単純な物質の集合体=機械ではない。
    人間が作った機械は、人間の役割を完全に代替することはできない。

    Humanity programming ~ 生命体の人間と、非生命体の機械の差異は、どこにあるのか?
    実装の自動化を推し進め、無駄なものを削ぎ落としても、なお人間にとって役立つものとして、コメントは欠かせない。
    生産性、可読性を高める指標として、プログラムのコメントの多さを、価値あるものにしていきたい。
    関連記事

    コメント

    コメントの投稿


    管理者にだけ表示を許可する

    トラックバック

    トラックバックURL:
    http://hamamuratakuo.blog61.fc2.com/tb.php/275-afd40bdf

    FC2Ad