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

    ブログ内検索

    最近の記事

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

    Blog Translation

    Powered By FC2ブログ

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


    FC2ブログ LOGIN

    with Ajax Amazon

    しゃべるようにプログラミングする方法

    このエントリーを含むはてなブックマーク はてなブックマーク - しゃべるようにプログラミングする方法 あとで読む
    「簡単にできることを、複雑にやる必要はない。」
    ~プログラミングを行なっていると、いつもそう痛感する。

    プログラミングで、ストレスなく、思いのままにコードを書く方法を会得したいと思っていた。
    「リーダブルコード」という本の中に、参考になる話があった。

    リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
    Dustin Boswell
    オライリージャパン
    2012-06-23
    2520円


    (p.158)

    おばあちゃんがわかるように説明できなければ、本当に理解したとは言えない。
                       ――アルバート・アインシュタイン

     誰かに複雑な考えを伝えるときには、細かいことまで話しすぎると相手を混乱させてしまう。
    自分よりも知識の少ない人が理解できるような「簡単な言葉」で説明する能力が必要だ。
    自分の考えを凝縮して、最も大切な概念にすることが必要になる。
    これは誰かに理解してもらうだけでなく、自分の考えをより明確にすることにもなる。
     コードを読み手に「プレゼント」するときにも、これと同じ能力を使うべきだ。
    ソースコードというのは、プログラムの動作を説明する最も大切な手段だとぼくたちは考えている。
    つまり、コードも「簡単な言葉で」書くべきなのだ。
     本章では、コードをより明確にする簡単な手順を使う。

     1. コードの動作を簡単な言葉で同僚にもわかるように説明する。

     2. その説明のかなで使っているキーワードやフレーズに注目する。

     3. その説明に合わせてコードを書く。



    擬似コードは、話し言葉として、理解できるレベルの内容だ。
    擬似コードで語られる内容も、分かりやすくて、シンプルにすべきと。

    擬似コード - Wikipedia

    擬似コード (ぎじコード、英: pseudocode)とは、アルゴリズムを、自然言語を用いてプログラミング言語のように記述したものである。擬似コードは、多くの場合、既存のプログラミング言語の文法に似せて表現される(Pascal、Fortran、C言語など)。



    関数型言語に使う擬似コードは、数式が良いだろうか?

    プログラムのコメント - 浜村拓夫の世界

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



    人間の思考(アイデア)→言葉として表現(ドキュメント)→実装コード、へと置き換えていく作業がスムーズにできれば、生産性が上がる。



    ●話すことの意義
    人間の行動機序は、3層のレイヤーで説明できる。

    (1) 「心」(=思考)

    (2) 「言葉」(=外部への吐露/共有)

    (3) 「体」(=行動)

    インプットではなく、アウトプットの方向に着目すると、
    内側から順に、(1)心→(2)言葉→(3)体、という具合に、
    抽象的なレベル(無形の思考)から、具体的なレベル(有形の行動)に、表出される。

    効率化プログラミング - Google検索

    プログラミングで行き詰まったときは、(2)の部分を改善すると良い場合があるだろう。
    →言葉でぶつぶつと、実装すべき機能、アルゴリズムについて語ってみる。
    →できれば、独り言ではなく、対話形式=誰かに説明するつもりでやる。

    (2)の可視化の作用によって、(1)から(3)へ至る流れの滞りが解消されるはずだ。

    (p.165)

     この「簡単な言葉で説明する」手法は、コードを書くこと意外にも適用できる。
    例えば、ある大学の計算機センターにはこんな方針があった。
    プログラムのデバッグに悩む学生は、部屋の隅に置かれたテディベアに向かって最初に説明しなければいけないのである。
    驚くべきことに、問題を声に出して説明するだけで、学生は解決策が見つかるのだ*
    この技法は「ラバーダッキング**」とも呼ばれている。
     問題や設計をうまく言葉で説明できないのであれば、何かを見落としているか、詳細が明確になっていないということだ。
    プログラム(あるいは自分に考え)を言葉にすることで明確な形になるのである。

    * 訳注 『プログラミング作法』(ブライアン・カーニハン、ロブ・パイク著、福崎俊博訳、アスキー)に登場する話。

    ** 訳注 『達人プログラマー―システム開発の職人から名匠への道』(アンドリュー・ハント、デビッド・トーマス著、村上雅章訳、ピアソンエデュケーション)では、「18 デバッグ」に「ゴムのアヒルちゃん」として登場している。



    プログラミング作法

    ブライアン カーニハン
    アスキー
    2000-11
    2940円


    達人プログラマー―システム開発の職人から名匠への道
    アンドリュー ハント
    ピアソンエデュケーション
    2000-11
    3990円


    ラバーダッキングとは - はてなキーワード

    プログラマが問題解決の手段として使用する「問題を物に話しかけることで、話しているうちに頭の中で問題が整理され、解決法が導かれる」というテクニック。

    ゴム製のアヒルのおもちゃ(ラバーダック)に話しかけるというところから「ラバーダッキング(Rubber Ducking)」という名がついた。実際には、相手はテディベアでもロボットでも構わない。

    そもそも、誰かに問題を話す、という行為自体によって問題が整理され、解決法が導かれるというのがポイント。話しかけることが重要なので、相手が人間である必要はない。



    ぶつぶつと独り言を言っていると、傍から見たら、不審な人物に映るかもしれない。

    ・誰もいないところでやる。
    ・ペアプログラミングで対話する。
    ・BGMを流して独り言をかき消す。

    プログラミングが、真にクリエイティブな行為になるのであれば、他人の目なんか、気にする必要ないけどね?

    「言葉に出すことによって、思考を明確にする」
    「呼吸をするように、軽やかにコードを紡ぎ出す」

    まるで、ピアノを弾くように、リズミカルにキーボードを叩く。
    プログラミングとは、もっとエレガントな営みであるべきだ、と考える。

    ~よし、これで行ってみよう!(・∀・)



    「めざめ」伊集加代
    関連記事

    コメント

    コメントの投稿


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

    トラックバック

    トラックバックURL:
    http://hamamuratakuo.blog61.fc2.com/tb.php/901-4e63e292

    FC2Ad