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
「部分ごとにチェックを入れるようにすれば、小さな達成感5つと大きな達成感1つを得る事ができます。」
というのは名言ですね。
気持ちよく書けるという以外でも、関数(部品)を信頼しやすくなるので時間的にも短く出来るはずだと思いました。
モチベーションを保てるほうが重要ですが(^_^;;;)