JavaScriptについて
言語としてのJavaScriptについてのアレコレ、およびJavaScriptアプリケーション(書きかけ)
JavaScript雑感
JavaScriptが結構出来るようになりました。
世間での印象
JavaScriptは世間的にはJavaっぽい簡易言語だと思われています(さらに知らない人になるとJavaとの混同が始まりますが)。
JavaScriptをある程度使ったことのある人は、世間で思われているよりはいろいろなことができると思うようですが、単に出来の悪いオブジェクト指向言語だと思ってしまうようです。
誤解されていることの多い言語だと思います。
私の印象
私はなんとなくこんな印象をもっています。
- 見た目はJava/Cっぽい
- 基本的な構文はJava/Cのような言語。だから、一見ほぼ同一の言語に見える。
- 一般のオブジェクト指向言語とは違う。
- いわゆる一般のオブジェクト指向言語ではなく、別の思想に沿って作られている。ので、一般のオブジェクト指向言語と同じように使おうとすると不便を味わうことになる。その結果「出来の悪いオブジェクト指向言語」だと思われてしまう。しかし、プロトタイプ指向という呼び名にも何か違和感を感じる。
- Lispのようである
- Lispが全てリストであるように、全てのデータが連想リスト。そして「ラムダ」を持ち、高階関数やクロージャなども扱える。いろんなことがラフでダイナミックであり、evalもできるし、ソースに戻すこともできる。「オブジェクト」についてもLispのようである。
- しかしLispでもない
- しかしながら文法はCやJavaのような言語なので、Lispのようなことはやりつらい。リストではなくて連想配列ではないという決定的違い。
- ぎこちない
- どうやら最初に言語を作り始めた人がいろんなことをちゃんと考えられなかったようで、利用していてあちこちにぎこちなさを感じる。
- JavaScriptに無理をさせるべきではないが
- 自由度が高い言語でもあるので、言語を無理に拡張することができてしまう。無理に通常のオブジェクト指向言語のように扱えるようにしようとしたり、関数型言語の何かに無理に近づけてみたりすることもできる。しかしそれは別の世界での自然なスタイルなので、JavaScriptとして自然なスタイルでの利用を心がけたいと私は思うが、無理もできる。
- 言語自体の互換性は悪くないようだ
- IEとNNでブラウザ戦争をしていたころには互換性での配慮が必要なこともあったようですが、現在では、言語自体については互換性は悪くないようです(互換性がないのは、ブラウザとのインタフェース)。
言語自体は割と良い感じで使えると思うのですが、言語そのもの以外の外部とお話しようとしたとたんに(外部のインタフェースの出来が悪いので)面倒が増えるという印象がどうしてもします。
誤解されて使われているため、JavaScriptの良さを学ぶための良い本は非常に少ない気がします。実際、これらの私の印象は私自身の試行錯誤によるものです(手本はなかった)。
このウェブサイトはまだ編集中です。URLが変わることがあるので、ブックマークをされる場合にはトップページにもお願いします。リンクは歓迎します。