2008年02月20日 16:00 [Edit]

私がJavaScriptを初心者用の言語として選んだわけ

アマグラマーのすすめが止まっていて一部の読者を絶望させて申し訳ありません。他の本を先に出さないといけないというのがその理由なのだけど、いい機会なので、

2008-02-20 - きしだのはてな
デブサミでid:amachangが、初心者がプログラムを勉強するための言語としてJavaScriptがいいと言っていて、ぼくも同じような理由でいいと思って初心者の勉強にJavaScriptを使ってみたことがあるのだけど、実際にやってみるとかなり難しいと思ったので、そのことをまとめておきます。

への返答の形で、なぜ私がJavaScriptを選んだのかをまとめておくことにします。


まず比較的明らかな理由。

  1. インストール不要の開発環境

    ブラウザーのないパソコンというのは今やないに等しい。これはダントツに一番の理由。

  2. コンパイル不要の実行環境

    javaはこの点Cよりひどい。実行するときすらjava foobarってどんだけ。

この二つはid:nowokayさんも指摘しているところですが、加えて以下の「他の言語と比べてみてわかる」理由があります。

  1. 融通が比較的利かないこと

    例えば明示的にreturnを書かなくてはならないとか、obj.methodは問答無用でプロパティで、実行するにはobj.method()と括弧を付けなくてはならないとか。

    これは仕事言語としては欠点ですが、教育言語としては利点です。

  2. closureが使える事

    これを早期に学べるのと学べないのでは格段の差が出ます。

  3. 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

この記事へのトラックバック
さすがにJavaやPHPはなかったけど、高級言語を先に学ぶというのは今にはじまったことじゃない。 304 Not Modified: プログラミング初心者はギークから学べるのかそんな私が学んできてずっと思っていたことは、私はC言語から学び、Java、PHPと進んできたが、今の人はいきな....
いきなりCの方がよっぽど難しい【404 Blog Not Found】at 2008年12月17日 12:34
腱鞘炎になっちゃったので、数日キーボード等にあまり触れないようにしてたんですけど、手を使わなければすぐ治るというものでもないらしいですね。諦めて文章やプログラムを書きはじめたんですが、我慢していた反動か、もう全然止まらなくて困ってます。アホみたいにのめり....
普通の人がプログラミングについて誤解してること【ぺったんぺったん】at 2008年08月26日 19:54
矢野様より献本御礼。 Head First JavaScript Michael Morrison / 豊福剛訳 [原著:Head First JavaScript] 今JavaScriptを使った本を複数発注受けてるオレ、ちょっと涙目。 404 Blog Not Found:SELECT * from sqlbooks WHERE fun = 1 -- 書評 - Head First S...
if (you.learn('JavaScript')) Books.toread[0] = this; // 書評 - Head First JavaScript【404 Blog Not Found】at 2008年08月08日 14:43
プログラム初心者用言語は何がいいか?がブログで話題になっています。 最もタメにな...
最もためになる初心者用のプログラム言語はWSH(JScript)です。【DQN起業日記】at 2008年02月22日 05:06
プログラム初心者用言語は何がいいか?が話題になっています。 Windowsユーザ...
初心者用のプログラム言語としてのWSH(JScript)のゆ推薦します。【DQN起業日記】at 2008年02月22日 04:46
404 Blog Not Found:私がJavaScriptを初心者用の言語として選んだわけ この記事を読んで初心者用の言語は何がいいのか考えてみた。 始めに決めての..
プログラマー初心者の入門言語は何がいいのか?【読断と変見】at 2008年02月21日 22:23
この記事へのコメント
読ませていただきました。
大変参考になりました。
これからも、良い情報の発信をしていだければと思います。
ありがとうございました。
仕様書作成係
Posted by 仕様書作成係 at 2009年04月25日 12:12
チョッと話がそれてしまうかもしれませんが、
入門用言語としてはExcelVBAが最適ではないでしょうか。



Posted by afdsa at 2008年03月01日 10:09
Emacs使いやVim使いのハッカーな人にとっては、統合開発環境そのものに価値を見出せないのでしょう。起動が早くなったとは言え、確かにeclipseは遅すぎる。軽快に開発をしたいのなら、統合開発環境は駄目で、その結果初心者には、JavaScriptしか残らないのでしょうね。
私はLISP等の関数言語が好きなんだけど、初心者に関数言語を言ってもね・・・
それに、ユーザが多いと思われるWindowsでシェルスクリプトもちょっと無理がある。
でもVistaならば、シェルスクリプトを学ぶのはいいかもね。
Posted by 未記入 at 2008年02月23日 12:26
「起動にたどり着くまでの」でもあると思う。
php統合環境というものを求めてeclipseはちょっとインストールしてみたけど、そもそも統合環境というものを使ったことがない私には、このあとどこをどうすりゃいいのかわからなかった。エディタでゴリゴリ書いて、ローカルにインストールしたXampp環境で即実行っていうのと比べてそんなに便利か?と思ってしまった。
そういうphpアマグラマにとってこの話はよくわかる。
Posted by fjsk at 2008年02月22日 17:40
Javascriptのコード片を試すのは意外と面倒なので、シェルはいいですね。でも、スクリプトが長くなると文法エラーを探すのが面倒なので以前作ったJavascript(ただしくはECMA Script)のパーサーを組み込んでみました。
怪しげなパーサーですが、構文エラーは見つけてくれるようです。
シェル:http://www.h4.dion.ne.jp/~unkai/js/js_shell.html
説明:http://www.h4.dion.ne.jp/~unkai/js/jsc03.html
Posted by hypzwm at 2008年02月22日 02:17
>入門書
僕は「JavaScriptプログラミング入門 第2版」で勉強しました。他の本と比較をしたわけではないので、いいかどうかは分からないですが、「言語としてのJavaScript」を教えてくれるレアな本です。
Posted by 渋川 at 2008年02月21日 22:06
自分的にはオライリーのJavaScriptがとても参考になりました
入門書としてもいいんじゃないでしょうか
Posted by 通りすがり at 2008年02月21日 21:29
eclipseは少し古いPCだと普通に起動だけで数分掛かるよ。まあ仮に30秒で起動できてもブラウザだけのJavaScriptが楽なのは否定できないと思う。ドキュメント点は確かにあるけど、そもそもJavaみたいなヘルプがJavaScriptには必要ない感じもする。
Posted by 774 at 2008年02月21日 17:39
eclipseの起動とインストールを間違っていませんか?インストールなら数分(十数分かも)です。起動は、、、多く見積もっても1分?illustratorの2分の一くらいのスピードといったらわかりやすいでしょうか
Posted by aburafia at 2008年02月21日 14:29
些細な疑問だけど、別にJavaと比べる必要が無いと思う。
こんな事を書いたら初心者は、JavaとJavaScriptが関係あると誤解する。
Posted by 未記入 at 2008年02月21日 07:54
あれ?Javaにはポインターがあるよ。
まぁ、Cとまったく同じではないけど・・・
初心者に誤解されてしまいますよ?
Posted by coolfile at 2008年02月21日 07:53
ドキュメントに関しては、http://www.microsoft.com/japan/msdn/scripting/
なんかどうですかね?
Posted by anon at 2008年02月21日 07:15
両方の言語使っているものとしては、開発環境とドキュメントについては
JavaScriptは圧倒的に足りてないと思います。

Posted by gnety at 2008年02月21日 05:03
てんてー、仕事言語を学ぶための初学な言語ってなんですか?><
Posted by don ohajiki at 2008年02月21日 02:43
>起動に何分もかかる開発環境が重荷

本当に使ったことあるの?
いちゃモンなら、たち悪すぎw
Posted by   at 2008年02月21日 00:46
でもJavaScriptは初心者にはいいかもしれない。
ちょっと前まではPHPが良いと言われていたけど、5.2になってからインストールと設定が面倒で仕方が無い。その点インストールが無いJavaScriptは確かに敷居が低いですね。
Posted by 未記入 at 2008年02月20日 23:15
>Javaはこの点でも中途半端で、この点に関してはむしろポインターが欲しいのです。

あれ?Javaにはポインターがあるよ。
まぁ、Cとまったく同じではないけど・・・
初心者に誤解されてしまいますよ。
Posted by 未記入 at 2008年02月20日 23:13
>起動に何分もかかる開発環境が重荷

うちのEclipseは5秒で起動します。ただの先入観では?
Posted by え at 2008年02月20日 22:29
前にもコメントさせていただきましたけど、IEのエラー表示がひどいのですよ。
[object Error]としか言ってくれないとか。
「インストール不要の開発環境」とは言い切れないように感じています。
Posted by worris at 2008年02月20日 20:50
>HTML/DOMなしでも、プログラミング入門としてJavaScriptを使うことは出来ます。「シェル」を用意してしまえば済むのですから

おっしゃる通りなのですが、
HTML/DOMを利用して見栄えの良いページを作ることができる点こそがJavaScriptの(初心者向け)魅力なのでは。

そして、ここでのボトルネックはクロスブラウザの実現。
実にばかばかしい。IEがなんぼのもんじゃーい!
Posted by もにょもにょ at 2008年02月20日 20:49
ブラウザもいいけど、Windowsの場合、WSHでJavaScriptが動くというのが魅力的だと思っています。本当にセットアップなしで開発できます。
Posted by もょもと at 2008年02月20日 20:37
コンピュータサイエンスの入門としては、JavaScriptはいいですね。
ただ、ぼくは、まったくの初心者の場合は、まずお仕事用言語でプログラムに慣れてから、コンピュータサイエンスの勉強を始めたほうがいいんじゃないかと思ってます。特に、独習の場合。JavaScriptは、プログラムに慣れるためには、まだ環境(IDEではなくリアルな)が整ってないかなと。
本当はお仕事用言語でそのままコンピュータサイエンスの勉強に入れればいいんで、Java言語じゃなくScalaがJVM用言語の標準にならないかなと思ってます。
ちなみに、ぼくの書いてる入門書「創るJava」は、実務のための入門書で、プログラミング入門書としていい本とは言いがたいです。
Posted by きしだ at 2008年02月20日 18:58
「プロが教えるJavaScriptデザインブック」は如何でしょうか??
Posted by ばっしー at 2008年02月20日 17:17