新しいプログラミング言語を学ぶときにやる5つの練習問題
こういうエントリに刺激されて、僕が普段新しい言語を勉強するときにやる練習問題も書いてみます。
- Hello Worldと表示する
- 「エラトステネスのふるい」を実装する
- Quick sortを実装する
- CSVファイルを読み込んで整形する
- 簡単なHTTPサーバを実装してみる
まあ目的が違うし、「初心者が」というよりも「ある程度いろんな言語に慣れた人」が、その言語の特徴をつかむために書く練習問題として列挙してみました。5種類も書けば十分ですね。
Hello WorldはI/O関連の動作確認と基本スタイルの確認のために必ず書くことが多いです。書いたこと自体も忘れてしまいますが。
人間には、ツァイガルニック効果というものがあると言われています。これは不完全なものをみると完成させたくなる、という性質です。パズルを見てクリアしようとしたり、集めていないアイテムを集めたくなるコレクターの心理にも近いものです。
Hello worldはあまりにも非力で、非力であるが故にその後の言語理解へ進もうとする強烈な欲望になります。
エラトステネスのふるいは、きわめて典型的なアルゴリズムをどのように表現できるか確認する意味で行います。
配列を使ったものをまず作り、次に配列を使わないものを作ってみるとまず思考のエクササイズになります。
Quick sortの実装では再起呼び出しと配列(リスト)の扱いを学ぶことができます。
間違ってもビルトインのQuick sortを使わないでください。
CSVファイルの読み込みと整形は、I/O操作の確認と、文字列操作の確認ができます。
また、整形というテーマは、たとえばテンプレートエンジンを使うなど、かなり応用ができるのでツァイガルニック効果が発露しやすいテーマとなります。これができると意外と嬉しいので、励みになります。
簡単なHTTPサーバは、ネットワークアクセスの基本が学べます。
HTTPサーバを作る前にHTTPクライアントを作った方が速いこともあります。
けど目的はあくまでHTTPサーバです。
HTTPサーバはマルチスレッドと、簡単な構文解析などなど、シンプルだけどいろいろな要素が絡んできます。したがってやりがいもあるというわけです。
きっとみなさん自分なりの「練習問題」があると思うので、上記は一例です。
他にも、「数あてゲームを作る」とか、「ビデオドラッグ風のエフェクトを作る」とか、テトリスを作るとか、プログラマによって独自の「これができたら解った」練習問題があるはずです。
そういうのを比べるのも面白いかもしれませんね。
コメント 0