2007年09月16日 04:30 [Edit]

LiveCodingに学ぶプログラミングの三原則

Mozilla24のLiveCodingの解説をやってきました。参加された方、お疲れさまでした。ほんと楽しかった。


言語もC++ありJavaありJavaScriptありActionScriptありPerlありとまちまちで、Editorもemacsありvimあり秀丸ありとまちまちでしたが、それでも全LiveCoderの共通項がはっきり見えたので、それを書き留めておきます。これらの共通項には私も含まれます。

コピペを恐れるな(don't be afraid to be a copycat)

参加者の一人として、100%フルスクラッチで書いていた人はいませんでした。たいていは関数単位でコピーし、それを適宜書き換えるというやり方をしていました。学校のテストでは反則もいいところですが、大人の世界ではこちらこそ標準です。

さらに効率を上げる方法としては、自分用のひな形を用意しておくなんてのもいいでしょう。例えばperlなら

#!/usr/local/bin/perl
use strict;
use warnings;

というのはほぼ全ソースに共通ですから、コピペどころかひな形をcpしてしまえばいい。似たような作品がすでにあればそれをcpして不要部分を消してそこから始めるなんてのもあります。

もちろん共通部分が多ければ、それをさらにライブラリ化するのもありですが、ライブラリ化は、コピペすら面倒になってからでも遅くはないように思われます。

いつも手元にリファレンス(keep your reference handy)

参加者のだれ一人として、エディタしか開いていないという人はいませんでした。ほぼ全てのLiveCoderが、リファレンスをWebページで開いていました。なかにはさらに不明点をぐぐる人も。もちろんそこからコピペできるsnippetは遠慮なく。

これが自然にできるようになっただけでも、現代の超高性能パソコンマンセーというものです。分厚い紙のリファレンスを片手にえっちらおっちらだったのはそれほど昔の話ではないのですから。

一つ書いては一つ動かせ(poco a poco)

多分一番重要なのは、ここ。最初の約束したプログラムをいきなり最後まで書き下ろしたLiveCoderも皆無で、だいたい関数を一つ書いてはその挙動を動かしてチェックしていました。

これのどこがいいかというと、達成感を得る回数がそれだけ増える事。5つの部分からなる一つのプログラムを一気に書くと、達成感は一度しか得られませんが、部分ごとにチェックを入れるようにすれば、小さな達成感5つと大きな達成感1つを得る事ができます。どちらが時間がかかるかといえば、理想的には一気書きですが、どちらが気持ちよくプログラムを書けるかと言えば「ちょこまか」プログラミングの方。ましてや一発できちんと動くプログラムを書く事はまず不可能なことを考えれば、プログラムは少しずつ書いた方がぜったいいい。

「少しずつ」「参考書を見ながら」「真似していいところは真似をして」というのは、プログラミング以外でも使える原則なのですが、学校教育ではこの逆を行っています。受験勉強的な学習法の効用も否定しませんが、もう少し娑婆でも使える「前に進むやりかた」を子供のうちから取り入れられないものでしょうかねえ。

Dan the Coder


この記事へのトラックバックURL

この記事へのトラックバック
Uge.jpというリファレンス作成サイトをリリースしました。 http://uge.jp Uge.jpとは、独自のリファレンスを作成・編集・公開することができるサービスです。 簡単にいうと、カテゴリ分けのできるメモツールです。 利用例 コンセプト Uge.jpのコンセプトは、「いつもWebにリ
[Uge.jp]リファレンス作成サイト「Uge.jp」リリース【ichiichininiblog】at 2009年06月16日 08:58
熱もやっと引いてきたので。 中途半端に優秀なプログラマが「正しいプログラミングテクニック」だと妄信しがちな3つポイント - 分裂勘違い君劇場 ちょっと囓っただけの素人が自分を過信して陥る三つの罠? - カレーなる辛口Javaな転職日記
そろそろ3つのポイントについて「弾言」しとくか【404 Blog Not Found】at 2008年10月27日 18:45
プログラミングに関する最新ブログ、ユーチューブ、ネットショッピングからマッシュアップした口コミ情報を提供しています。
【 プログラミング 】について最新のブログの口コミをまとめると【プレサーチ】at 2007年09月26日 01:50
http://blog.livedoor.jp/dankogai/archives/50913182.html え、これってそんなに特別なことなんでしょうか? 僕は全くここに書いてあるままのスタイルなんですが。 独学で、しかも厨房だと自然とこうなってしまうような…
2007-09-18【チラ☆裏】at 2007年09月24日 01:39
既にさまざまな場所で記事になっているので、ここでは記憶に残っていることと、思ったことをつらつらと。 細部の記憶はかなりあいまいに付き、事実と異なる場合や内容の順序が前後している場合があります。おかしな部分がありましたら遠慮なくご指摘ください。 撮影した動画
[event][mozilla]mozilla24の覚え書き。【「 Firefox ×?=!」を考えてみる、ブログ。】at 2007年09月21日 23:31
プログラミングには集中力が必要である。しかしそのことをクライアントに理解してもらうことは必ずしも簡単な作業ではない。
プログラミングスタイルの参考になるエントリ【from area BOOT4】at 2007年09月19日 01:37
はるばる滋賀から帝都におりたち、Mozilla24に参加してきました。参加したみなさんおつかれさまでしたー。いろんな方面からきたいろんな人がいて、とてもおもしろかった。 名刺持って行かなかくて申し訳なかったんですが、”はこべ”とか”hakobe”とか id:hakobe932とか名...
[技術]Mozilla24でLiveCodingしてきました【はこべにっき#】at 2007年09月16日 20:16
一五一十部落 | My1510 (tags: blog media...
links for 2007-09-16【気になる記事の書き出し帳】at 2007年09月16日 18:21
小飼弾さんのblog「LiveCodingに学ぶプログラミングの三原則」を読んで。 5つの部分からなる一つのプログラムを一気に書くと、達成感は一度しか得られませんが、部分ごとにチェックを入れるようにすれば、小さな達成感5つと大きな達成感1つを得る事ができます。 ああ、なる
[日記]poco a poco【mtoyoshiの日記】at 2007年09月16日 10:21
404 Blog Not Found:LiveCodingに学ぶプログラミングの三原則でLiveCodingに言及されていたので、ウチのまとめ記事を紹介。上の動画は今や懐かしき第一回の様子。 と言っても、キーワード検...
LiveCodingもメジャーになってきたなぁ【Think and Win】at 2007年09月16日 08:42
この記事へのコメント
「一つ書いては一つ動かせ」
「部分ごとにチェックを入れるようにすれば、小さな達成感5つと大きな達成感1つを得る事ができます。」
というのは名言ですね。
気持ちよく書けるという以外でも、関数(部品)を信頼しやすくなるので時間的にも短く出来るはずだと思いました。

モチベーションを保てるほうが重要ですが(^_^;;;)
Posted by march at 2007年09月29日 08:43
最後の一節が無ければ、何の誤解もなく読めるいいエントリだと思うのですが、
これを書いてこそのKogai節なんでしょうかw

LiveCodingの実践のレポート、勉強させていただきました。
また、最終段の御懸念に関しては、大学教育のレベル未満では、不要だと思います。
要領「だけ」を身につける教育はどのみち為になりませんし、どちら側に倒すかと言えば、「愚直」側に倒す判断のほうが好感が持てます。
Posted by john at 2007年09月17日 21:40
自分「達」、つまりリターンの見込めない人間以外の利権まで考えてる
人間を見たことが無い。
Posted by モンカショーに限らす at 2007年09月16日 16:21
まぁ学校は所詮お役所仕事だから仕方がありませんよ。
文部省は教育ではなく自分達の利権しか考えていないのですから。
Posted by 未記入 at 2007年09月16日 10:11