今まで色々なプログラミング言語を使ってきて思うのは、どうもJavaは
初めてプログラミングを学ぼうとする人には、あまり向いていないのでは
無いかということです。
- JavaはWrite Once, Run Anywhereを実現するために中間コード方式をとっているわけですが、そのためプログラミングそのものの前段階として環境を整備するための負荷が他の言語より大きくなっています。コンパイル環境を整えてjavacでコンパイルできるようになって、次に実行環境を整えてjavaで実行できるようになる(その間にはクラスパスという概念との戦いもあります)という2段階を経て初めて動くようになります。他のプログラミング言語の経験があればそれほどとも感じないこの過程が、プログラミングの初心者にとっては相当大きな障壁になってしまいます。特に最初に動くようになるまでの壁ですね。
- Javaではパッケージとディレクトリ構造が対応していますが、これが初心者にはわかり難いようです。パッケージ無しのときにはカレントディレクトリにファイルを置いていて良かったのが、パッケージ指定をした途端にコンパイルエラーが起きてしまって「どうして?」となるわけです。感の良い人なら一度説明してあげればわかるようですが、引っかかる人はいつまでも引っかかるみたいです。
- Javaはオブジェクト指向プログラミングができる言語です。このあたりは色々と意見があるようですが、とりあえずはご了承頂くとして、オブジェクト指向プログラミングがどうしても初心者の障壁になります。そもそもSmallTalkの時にあまり流行らなかったオブジェクト指向プログラミングに再び光があたったのは、ハードウェア性能の向上があったことに加え、オブジェクト指向プログラミングが規模の大きいシステムを開発する上で必要な性質(モジュール性やらインタフェースによるプログラムやら、カプセル化やら)を色々持っていたからです(これもご意見が色々あるでしょうけど)。ただこうしたオブジェクト指向プログラミングの機能は、初心者が小規模の簡単なプログラムを作るにはオーバースペックになります。ところがJavaはオブジェクト指向プログラミングとしての機能を除いた部分だけでプログラムを作るのがなかなか難しい(Javaを使う意味もなくなるし)のが実情です。このため初心者もオブジェクト指向プログラミングの勉強を行う必要があり、その分敷居が高く感じられます。
では初めてプログラミングを学ぶ人にとって最適な言語はなんでしょうか。これはなかなか難しい問題です。C言語は言語仕様がコンパクトでとっつきやすいのですが、実際にプログラムを書くには多くのライブラリの仕様を知らなければならない(大した事は無いのですが)のと、もともとマクロアセンブラだと言われる位で、言語の仕様レベルでなされるチェックが非常に甘くしてあるので、ハードウェアの仕組みやプログラムの動作の仕組みについてわかっていないと、泥沼に簡単にはまってしまいます。
C++はCより不適切です。FortranやCobolは言語仕様としても、今後の事を考えてもあまりお勧めできません。Lispやprologはそれで一つの世界ですが、特殊な世界でもあるので、やはりお勧めできません。68000アセンブリ言語が良いのでは無いか、という気もするのですが、まぁそれはおいておきましょう。
教育用として開発されたPascalは言語仕様もコンパクトで、多少癖はあるもののAlgol系の正統派ということで、やはり最初に勉強するプログラミング言語として良いと思います。ただ処理系が最近手に入るものというとDelphiということになるわけですが、オリジナルのPascalからの拡張がたっぷりなされているので、これはこれでちょっと問題です。ボーランドは往年のヒット作のTurbo Pascalをフリーで公開しているので、それを使うというのが一番良いかもしれません。