さすがにJavaやPHPはなかったけど、高級言語を先に学ぶというのは今にはじまったことじゃない。

304 Not Modified: プログラミング初心者はギークから学べるのか
そんな私が学んできてずっと思っていたことは、私はC言語から学び、Java、PHPと進んできたが、今の人はいきなりJavaやPHPから学ぶのである。構造化プログラミング言語からオブジェクト指向言語へと順を追うのではなく、いきなりオブジェクト指向言語を学ぶのだ。はっきりいって理解できるのか非常に疑問にう。
404 Blog Not Found:初心者向け言語もいろいろ
Computer Scienceをきちんと教えている学校の多くは、最初の一年の前半に scheme を教えて、後半に C と assembly language を教えている。私が教わったのは1980年代の終わりだけど、21世紀の今になってもこれは変わっていない。

そう。Schemeが先。高級言語、というよりソフトウェアを先に学んでハードウェアを学ぶ。少なくとも四半世紀前からそう。理由は簡単。その方がわかりやすいから。そしてなぜわかりやすいかといえば、現代のコンピューターのハードウェアは「そのままの具象」ではなく「機械のために簡素化された具象」という、むしろ抽象的なものだから。

404 Blog Not Found:オブジェクトは難しくない。難しいのはクラス
それでは、なぜ電脳においては抽象化が先になされていなければならなかったのか?そうでもしなければ、使い物にならなかったからだ。電脳は今でも根源的に0と1しか扱えない。しかも我々が普通に使っている電脳では、0と1を一個づつ扱うことも出来ず、最低でも8つまとめて扱う必要があったりする(これがbyte)。
だから、電脳における最初の仕事は、0と1から具象を作り出すことになる。0と1を32個まとめて「整数」をこさえたり、8つの0と1を文字に対応させ、それを並べて「文字列」をこさえたりといった作業だ。
こうした「再具象化」されたものを集めて、はじめて「人間向き」のオブジェクトが出来上がる。そして一旦出来上がったオブジェクトであれば、粘土や折紙を使うがごとく、それを「使う」ことができる。

小学生がどうやって算数を習うかを思い出してみよう。最初は「りんご2つとりんご3つ」という具合に、必ず具象に結びつけてあるはずだ。いきなり「2+3」とはならない。そしてオブジェクト指向というのは、先に具象 = objectがあって、それをメソッドで操作する。先に手続き = procedure = function があって、具象を後付けする手続き型の言語よりずっとわかりやすい。実際 Alan Kay は、「子供にもわかるように」と SmallTalk を作ったのだし。

304 Not Modified: プログラミング初心者はギークから学べるのか
1を学ばずに3から学んでいっていいの?って違和感。

むしろCをいきなり学ぶというのは、算数をすっとばして数論から入るようなものではないか。

あるいは、ガソリンエンジンの仕組みを学んでからでないと、車の運転を習ってはいけないというか。ところが、エンジンを電気モーターにかえても、車は運転できてしまうのである。そうでないとプリウスにのっている我が家は困ってしまう(笑)。

プロになるためには、確かに原理も知らなければならない。JavaやPHPしか知らない「プログラマー」には、私だって「スイーツ(笑)」と頭につけたくなる。しかし、それは原理から学ばなければならないということを全く意味しない。むしろ原理は、動作感覚を会得してからの方が学びやすいのだ。

むしろ問題は、JavaやPHPが「中途半端に難しい」ことにあるように思える。それゆえ私はどちらも初心者用の言語とは見なしていない。以前にも書いたが、昨今使われている言語の中で最も初心者向けなのは JavaScript だと考えている。なんといっても、ブラウザー上で実行できるというのが大きい。

404 Blog Not Found:私がJavaScriptを初心者用の言語として選んだわけ
プログラム:
出力:
エラー:

これと同じ事をJavaでやろうと思ったら、何行コードが必要なのでしょうか。JavaScriptならHTMLも含めて10行です。

数学に入る前に算数が必要なように、プログラミングはまず手でいじくりまわせる具象を備える程度の高級言語からはじめるべきなのではないだろうか。

Dan the Geek