Gauche のプログラミングに手を出してみた.Gauche は Scheme の処理系の一つである.調べたことを 個人のWiki に載せた.
ここで,改めて,新たな言語を覚える際のプロセスについて考えてみた.
言語を覚えた気になるために必要な知識は,私は以下の3項目になると考える.
既に数種類の言語を扱える人にとっては,2番目までは恐らく1時間もかからないだろう.極端にマイナーな言語を覚えようとしない限り,今時Webを少し探せばこれらの情報は簡単に手に入る.極端な話,ここまでの知識でもプログラミングは何とか可能だ.
3番目の修得時間にはかなりの差がある.例えば,クラスの概念を知るため,大学の情報工学科では90分の授業を数回必要とする.一方,クラスに慣れている人は,短時間でJavaを使えるようになるだろう.クラスの概念をJavaのシンタックスに当てはめるだけで良いからだ.
3項目を達成すれば,その言語を使える気になっていると思う.という意味は,オープンソースなどのコードを,関数などを調べながら何とか読める,ということだ.より理解を深めるため,一部を改変してデバッグすることもできる.
その後は,理解よりも記憶の作業になる.例えばライブラリ関数を知るなどだ.これは,英語の語彙力を増やす作業に似ている.自分の知っておきたい分野の記事を読み,分からない単語を辞書で調べ,覚えていく.プログラムでも同じだ.興味のあるコードを落とし,読み,知見を増やす.この際,お気に入りのウェブサイトまたは本を持っておくとよい.分からない項目があれば,これで調べる.お気に入りの英和辞書を持っているように.私の場合,Java では Java™ Platform, Standard Edition 7 API Specification,Ruby では 逆引きRuby などだ.
このように,結局は,その言語を使って何をしたいか,が重要になる.これを強く認識しているほど,やるべきことも明確になり,理解も早まるのだろう.
ここで,改めて,新たな言語を覚える際のプロセスについて考えてみた.
言語を覚えた気になるために必要な知識は,私は以下の3項目になると考える.
- 基本的なシンタックス (変数,条件分岐,ループ,関数など)
- デバッグ方法 (Cで言えばprintf)
- その言語に特異な概念とシンタックス (クラス,マクロ,リストなど)
既に数種類の言語を扱える人にとっては,2番目までは恐らく1時間もかからないだろう.極端にマイナーな言語を覚えようとしない限り,今時Webを少し探せばこれらの情報は簡単に手に入る.極端な話,ここまでの知識でもプログラミングは何とか可能だ.
3番目の修得時間にはかなりの差がある.例えば,クラスの概念を知るため,大学の情報工学科では90分の授業を数回必要とする.一方,クラスに慣れている人は,短時間でJavaを使えるようになるだろう.クラスの概念をJavaのシンタックスに当てはめるだけで良いからだ.
3項目を達成すれば,その言語を使える気になっていると思う.という意味は,オープンソースなどのコードを,関数などを調べながら何とか読める,ということだ.より理解を深めるため,一部を改変してデバッグすることもできる.
その後は,理解よりも記憶の作業になる.例えばライブラリ関数を知るなどだ.これは,英語の語彙力を増やす作業に似ている.自分の知っておきたい分野の記事を読み,分からない単語を辞書で調べ,覚えていく.プログラムでも同じだ.興味のあるコードを落とし,読み,知見を増やす.この際,お気に入りのウェブサイトまたは本を持っておくとよい.分からない項目があれば,これで調べる.お気に入りの英和辞書を持っているように.私の場合,Java では Java™ Platform, Standard Edition 7 API Specification,Ruby では 逆引きRuby などだ.
このように,結局は,その言語を使って何をしたいか,が重要になる.これを強く認識しているほど,やるべきことも明確になり,理解も早まるのだろう.