Home > コンピュータ > プログラミングをどのように勉強するか

プログラミングをどのように勉強するか

プログラマじゃない僕が言うのもあれですが、プログラムをどうやって勉強するべきかは いろんな論があると思う。とりあえず僕がどうやって勉強してきたか。

入門言語としての「JavaScript」

プログラムってのが何なのかを知らないうちに触った最初のプログラミング言語が 「JavaScript」。こいつは変数の型宣言も無いし、コンパイルもないので、 本質に近づくことは無かった。ともかくウェブに落ちてるサンプルプログラムを 見ながらどこを変えればここの色が変わるのかとか、そういう勉強で手一杯だった。 でも、手続き型の制御構造(ifやfor)を理解するには十分だった。

JSが優れている点は、ブラウザとメモ帳だけで開発環境が整うところと、すぐに GUIが扱えるというところだ。JSの前にちょっとだけHTMLを勉強しておけばよい。 また、他の言語にあるincludeとかimportみたいな謎の呪文無しに始められる点も良い。 誰もが最もなじみやすい言語で、制御文を最初に勉強できたことはよかったと思うね。

手続き型の究極「C」

次に触れたプログラミング言語が「C」。ある意味、JSとは対極にある言語だ。 高級言語ではあるけど、低級言語に最も近いところに位置するCは、変数の型、 コンパイル、ポインタという非常に重要な概念を理解しないと扱うことが出来ない。

JavaScript程度からこちらに使えることといえば、まさに制御構造くらい。他は 全く別物。でも、プログラミングをする上でC的な事項は理解しておく必要がある。 Cをやることによって、メモリとかプロセスとかそういうことが分かる様になってくる。 また、根源的にはCさえあれば何でもできるということを知った上で、他の 言語を使うことも大事だろう。どういう感じでラップがかかっているのかが 感覚として理解できるといいのかな。

オブジェクト指向の「Java」

次に触れたのが、Java。Javaは全てがクラスで出来ており、そもそも オブジェクト指向を理解しないと使いこなせない。手続き型に慣れた人には 最初はかなり意味不明だった。でも慣れてくると、クラスを作ってインスタンスで 物事を処理するというのがどれだけ効率がよいことか分かってくる。

Javaの場合、最初からたくさんのクラスが準備されているので、クラスを 使う訓練には丁度良かった。

そして、CとJavaの複合としての「C++」

んでもって、最終的にC++に行き着いた。近代的なプログラミングでは 明らかにオブジェクト指向が大事だということは分かっていても、 Cにしかライブラリが多くてなかなかJavaに移ることは難しい。特にハードウェア 絡みはCの方が圧倒的に強い。

そこで、Cをオブジェクト指向に拡張したのがC++だ。こちらは基本的にCなので、 Cでできることは全てできる。その上で、オブジェクト指向を使いたいときは使えばいいという なんともいいとこどりな感じ。最初からクラスが豊富なわけではないので、結構 自分でクラスを作ることもあった。Javaで既に使い方を学んでいるので、 それにならってクラスを作ればよいので比較的楽にできた。

Emacsを使ったりでちょっとだけ「Lisp」

プログラムをする上で、エディタにEmacsを使った関係上、Lispも少しだけ勉強した。 でも、関数型言語の本質は未だ不明のまま。まぁ必要とあらば理解するけど、 多分分かりにくいということは多数派にはならない。とりあえず文法だけ 理解して終了。ラムダ式は未だによく分からない。

スクリプト言語は…

ここまで来ておなか一杯になってしまった。正直、コンパイルはめんどくさい。 スピードが大事になる部分だけコンパイルにして、それ以外はインタプリタで いいんじゃないかと思う。というわけでスクリプト言語を勉強しようかなと 思ったあたりで、俺がプログラミングするよりももっと上手い人がいるよって 感じで急速に興味が失せていったのだった。

やっと最近になって、やっぱりプログラムぐらいしかやることがないということに 気づいて、何をやろうか考え出してきた。

スクリプトと言えば、昔はPerlだったけど、今流行りはRubyかPythonだろう。 愛するGoogleがPython中心ということもあり、やっぱりPythonかなとも思うが、 RailsのあるRubyも魅力的。どちらにするかはまだ結論でず、手を出していない。

さらに、クライアントサイドではやっぱりJSは必須だとdankogaiのブログを 見ていて思った。ので、JSはちょっとちゃんと勉強しようかなと思う。 きちんとプログラムのいろはを習った上で見るJSは、きっと中学校の頃に見たJSとは 全く違うものに見えるんだろうな。

こういう順番の習得はいかがでしょう?

ということで、全く意図してはいないけど、思った以上に効率のよいプログラム経験を したかなと思っています。いずれは完全にインタプリタ言語に移行するつもりですが、 やはり一度はコンパイル言語を触っておくことは重要。とは言え、プログラムってのが 何なのか分からない状態でいきなりやっても意味不明なはず。だから、まずは JSでifとforだけで何とかなるってことを経験しておいて、それから手続き型、オブジェクト 指向と進めばいいんじゃないかな。

問題はいつからこれを始めるかで、先の記事 でも書いたけど、 小学校からやっていくべき。そうしないとプログラマ、ギークは育たない。今より数を増やさないと ウェブ時代に日本は死ぬよ。別にNFL信者の僕は日本が死んだってどうでもいいけど、一応 今住んでるから考えてあげる。小学校からプログラムすべし。教えられる先生がいない? 何で先生が教える必要があるのさ。役に立たない先生に期待してもしょうがないから、 SEの新たな働き口としてプログラムの先生なんておもしろいと思う。小さい頃から 引きこもり経験者とかと触れ合うことは何気にいい効果をもたらすと思うよ。以上。

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://blog.riywo.com/2008/01/07/060019/trackback
Listed below are links to weblogs that reference
プログラミングをどのように勉強するか from As a Futurist...

Home > コンピュータ > プログラミングをどのように勉強するか

Tag Cloud
Amazon
Banners
フィードメーター - As a Futurist... Creative Commons License track feed スカウター : As a Futurist...

Return to page top