- 日記と JavaScript (1)

2004/09/28/Tue.日記と JavaScript (1)

理系に行くか文系に行くかで悩み、理系と決めた後も、生物に行くか情報処理に行くかで悩み、しかし破滅的に物理ができなかったために生物へと落ち着いた T です。こんばんは。

誤植というものは根絶が難しい。俺も気を付けて日記を書いているつもりだが、必ず一つや二つはミスがある。ご承知の通り、この日記は翌日には「Diary」のページに移動する。いつもコピーするついでに見直すのだが、修正しない日の方が少ない。ほとんどは助動詞をいじるなどの簡単な手直しだが、それでも自分にとっては満点ではないわけで、文章を全うするのがいかに難しいかを日々痛感する。

JavaScript 日記

とまあ、誤植が気になるのは、週末から JavaScript の勉強を始めたからという理由もある。JavaScript は簡単なスクリプトだが、それでも一応プログラム言語ではあるわけで、1文字のミスで動作しなくなる。自分のブラウザで確認しながらコーディングしているわけだが、何度強制終了をかけたことか。自分でブラウザ・クラッシャーを作ってどうする。それでもなかなか面白いものだ。

本格的なプログラミングの経験はないが、高校生のとき以来、いくつかのスクリプト言語を触ってきた。リファレンスを引きながら1行ずつコードを書くという作業は、チマチマしているが非常に楽しい。昨日からコーディングしているのは、過去に作った一連のトランプゲームのリメイク版である。手始めに、最も移植が容易そうな「七並べ」を書き換えているのだが、それでも結構難しい。見事完成したら、ここで公開するのも良いなあ。

思考錯誤

俺がエラそうな口をきけたものではないが、プログラミングするときに必要とされる発想は、やはり独特である。例えば「トランプをシャッフルする」という動作、これを数学的に記述するとどうなるか。暇があれば少し考えてみてほしい。単純なようで、割と途方に暮れる。

さて、考えた末に道筋が見えてきたら、今度はそれを文法に則した方法で記述しなければならない。ここで泣きそうになる。正しく書いているつもりでもエラーが出る。どこが間違えているのかわからない。分厚いリファレンスを引っ繰り返し、あるいは他の書き方を試み、そして夜は更けていく。

試行錯誤

で、苦労する割には、望むことは 10行程度のコードで実現したりする。まだ JavaScript に慣れていないということもあるが、たかだかそれだけのコーディングに結構な時間を費やした。こうやってしか、プログラミングは覚えられないからなあ。

参考までに、トランプのシャッフル・エンジンを載せてみる。こんな感じ。様々なやり方があると思うが、あくまで我流。より良いアルゴリズムを追及するのも、プログラミングの終わりなき課題である。

/* shuffling */
var cardSet=new Array
(0, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 999);
for(i=52; i>=1; i--) {
cardNum=Math.ceil(Math.random()*i);
if(cardNum==0) cardNum++;
card.push(cardSet[cardNum]);
cardSet1=cardSet.slice(0, cardNum);
cardSet2=cardSet.slice(cardNum+1);
cardSet=cardSet1.concat(cardSet2);
}

プログラミングは面白いよなあ。JavaScript には金がかからないし、それで手慰みに始めてみたのだが、ハマりそうで怖い。高校時代の気分が蘇ってきて、かなり愉快だ。