2008年02月20日 16:00 [Edit]
私がJavaScriptを初心者用の言語として選んだわけ
アマグラマーのすすめが止まっていて一部の読者を絶望させて申し訳ありません。他の本を先に出さないといけないというのがその理由なのだけど、いい機会なので、
2008-02-20 - きしだのはてなデブサミでid:amachangが、初心者がプログラムを勉強するための言語としてJavaScriptがいいと言っていて、ぼくも同じような理由でいいと思って初心者の勉強にJavaScriptを使ってみたことがあるのだけど、実際にやってみるとかなり難しいと思ったので、そのことをまとめておきます。
への返答の形で、なぜ私がJavaScriptを選んだのかをまとめておくことにします。
まず比較的明らかな理由。
- インストール不要の開発環境
ブラウザーのないパソコンというのは今やないに等しい。これはダントツに一番の理由。
- コンパイル不要の実行環境
javaはこの点Cよりひどい。実行するときすら
java foobarってどんだけ。
この二つはid:nowokayさんも指摘しているところですが、加えて以下の「他の言語と比べてみてわかる」理由があります。
- 融通が比較的利かないこと
例えば明示的に
returnを書かなくてはならないとか、obj.methodは問答無用でプロパティで、実行するにはobj.method()と括弧を付けなくてはならないとか。これは仕事言語としては欠点ですが、教育言語としては利点です。
- closureが使える事
これを早期に学べるのと学べないのでは格段の差が出ます。
- evalがあること
これも早期に学ぶべきこと。プログラムは所詮文字列で、これを評価するという過程を経てはじめてプログラムとなるというのは、コンパイラーでは充分実感できるとは言えません。
で、id:nowokayさんへの反論。
開発環境JavaならNetBeansやらEclipseやら、構文エラーをタイムリーに表示して、ヘルプも簡単に見れるという環境が手軽に整えれるのに、JavaScriptにはそれがない。あるとしても、NetBeansインストールの方が楽で高機能。
「Eclipseが手軽」と言っている時点で卒倒もの。起動に何分もかかる開発環境が重荷というのは初心者だけではありません。また、構文エラーはFirefoxのError Consoleだけでもかなり饒舌ですし、それで不満ならFireBugだってあります。
「ヘルプが充実していない」というのは、仕事言語としては私もかなり不満なのですが、教育言語としては実はそれほどの欠点じゃない。むしろヘルプがないと覚えきれないほど覚えることが多い方が問題で、この点JavaScriptは覚えることがずっと少ない。
入門書がないJavaScriptで、ホームページ上にちょっとしたエフェクトをつけるための入門書は掃いて捨てるほどありますが、JavaScriptでプログラムを勉強するための入門書はほとんどありません。
確かにこれは喫緊の課題で私にも耳が痛い。ですがJavaによるプログラミング入門書というのは玉石混淆、というか今のところは石しか見た事がありません。これぞという本があればぜひ推薦を。
ちなみに、アルゴリズム本で比較した場合、「C言語による最新アルゴリズム事典」は名著でしたがその後継である「javaによるアルゴリズム事典」はクソ本でした。詳しくは
を参照のこと。
HTML/DOMの理解が必要そして、これが最大の理由なのですが、JavaScriptでブラウザ上で気の利いたことをやろうとすると、必ずHTML/DOMの理解が必要になります。いまからプログラムを勉強しようという人にとって、これはかなり敷居が高いです。
これこそが、最大の誤解です。HTML/DOMなしでも、プログラミング入門としてJavaScriptを使うことは出来ます。「シェル」を用意してしまえば済むのですから。こんな具合に。
404 Blog Not Found:アマグラマーのすすめ - 下ごしらえより- プログラム:
- 出力:
- エラー:
これと同じ事をJavaでやろうと思ったら、何行コードが必要なのでしょうか。JavaScriptならHTMLも含めて10行です。
要は、
404 Blog Not Found:初心者向け言語もいろいろで、メタから下りて少しマジレスすると、Computer Scienceをきちんと教えている学校の多くは、最初の一年の前半に scheme を教えて、後半に C と assembly language を教えている。私が教わったのは1980年代の終わりだけど、21世紀の今になってもこれは変わっていない。このことはもう少し注目されてもよいのではないか。
のschemeの代わりにJavaScriptは充分なる、ということです。
むしろ悩みは、C+Assemblerに相当する部分をどうするか、ということですね。初心者向けなのだから端折ってもいいというのも答えにはなりえますが、フラットなメモリーがあって、それをレジスターに読み込んでいじくってメモリーに戻すという今のコンピューターの簡単なしくみをJavaScriptで再現するのはかなり無理がある。しかし私にとっての初心者本は、これもある程度はおさえておきたい。少なくとも触れておきたい。
Javaはこの点でも中途半端で、この点に関してはむしろポインターが欲しいのです。
JavaScriptを学んでからJavaを学ぶのと、Javaを学んでからJavaScriptを学ぶのとでは、前者の方が絶対効率がいいと思うのですが。仕事言語は、後から仕事で学べばいいのです。
Dan the JavaScripter
この記事へのトラックバックURL
ただ、ぼくは、まったくの初心者の場合は、まずお仕事用言語でプログラムに慣れてから、コンピュータサイエンスの勉強を始めたほうがいいんじゃないかと思ってます。特に、独習の場合。JavaScriptは、プログラムに慣れるためには、まだ環境(IDEではなくリアルな)が整ってないかなと。
本当はお仕事用言語でそのままコンピュータサイエンスの勉強に入れればいいんで、Java言語じゃなくScalaがJVM用言語の標準にならないかなと思ってます。
ちなみに、ぼくの書いてる入門書「創るJava」は、実務のための入門書で、プログラミング入門書としていい本とは言いがたいです。
おっしゃる通りなのですが、
HTML/DOMを利用して見栄えの良いページを作ることができる点こそがJavaScriptの(初心者向け)魅力なのでは。
そして、ここでのボトルネックはクロスブラウザの実現。
実にばかばかしい。IEがなんぼのもんじゃーい!
[object Error]としか言ってくれないとか。
「インストール不要の開発環境」とは言い切れないように感じています。
うちのEclipseは5秒で起動します。ただの先入観では?
あれ?Javaにはポインターがあるよ。
まぁ、Cとまったく同じではないけど・・・
初心者に誤解されてしまいますよ。
ちょっと前まではPHPが良いと言われていたけど、5.2になってからインストールと設定が面倒で仕方が無い。その点インストールが無いJavaScriptは確かに敷居が低いですね。
本当に使ったことあるの?
いちゃモンなら、たち悪すぎw
JavaScriptは圧倒的に足りてないと思います。
なんかどうですかね?
まぁ、Cとまったく同じではないけど・・・
初心者に誤解されてしまいますよ?
こんな事を書いたら初心者は、JavaとJavaScriptが関係あると誤解する。
入門書としてもいいんじゃないでしょうか
僕は「JavaScriptプログラミング入門 第2版」で勉強しました。他の本と比較をしたわけではないので、いいかどうかは分からないですが、「言語としてのJavaScript」を教えてくれるレアな本です。
怪しげなパーサーですが、構文エラーは見つけてくれるようです。
シェル:http://www.h4.dion.ne.jp/~unkai/js/js_shell.html
説明:http://www.h4.dion.ne.jp/~unkai/js/jsc03.html
php統合環境というものを求めてeclipseはちょっとインストールしてみたけど、そもそも統合環境というものを使ったことがない私には、このあとどこをどうすりゃいいのかわからなかった。エディタでゴリゴリ書いて、ローカルにインストールしたXampp環境で即実行っていうのと比べてそんなに便利か?と思ってしまった。
そういうphpアマグラマにとってこの話はよくわかる。
私はLISP等の関数言語が好きなんだけど、初心者に関数言語を言ってもね・・・
それに、ユーザが多いと思われるWindowsでシェルスクリプトもちょっと無理がある。
でもVistaならば、シェルスクリプトを学ぶのはいいかもね。
入門用言語としてはExcelVBAが最適ではないでしょうか。
大変参考になりました。
これからも、良い情報の発信をしていだければと思います。
ありがとうございました。
仕様書作成係