JavaScriptとJavaは、違う言語である。それは間違いない。
しかし、「JavaScriptはもともとLiveScriptという名前だったのが、マーケティングの都合だけでJavaScriptに改名されたんです! その名前以外、Javaとは共通点は一つもありません!! JavaとJavaScriptはメロンとメロンパンくらい違う!!!」と言われると、それはそれでちょっとおかしいだろう、と思う。「JavaとJavaScriptはメロンとメロンパンくらい違う!!!」のところは、インドとインドネシアとか、すっかり大喜利状態になっているけれど、そんなふうに「まったく違う言語」と言い切るには、JavaScriptはJavaにあまりにも似すぎている。
togetter.comこれは、「どちらもC言語を先祖としているから……」といったレベルの話ではない。
JavaがCに類似する構文を持っているのと同程度に、JavaScriptとJavaの構文は似ています。しかし、JavaがCのサブセットではないように、JavaScriptもJavaのサブセットではないのです。
Cが先祖である、程度の理由で、文字列のメソッドのstartsWith()とかcharAt()とかlength()とか、そんなことまで一致するはずがない。JavaScriptはあからさまにJavaに似せて作られている。
「JavaScriptはもともとLiveScriptという名前でー! マーケティングの都合で―!!」と言いたがる人たちは、LiveScriptなる言語がいったいいつから存在したと思っているのだろう? LiveScriptは、そのさらに前にはMochaと呼ばれていて、Mochaが作られたのはJavaの登場より後だ。Mochaがコーヒーの名前であるあたり、明らかにJavaを意識している。このあたりの話は、JavaScriptの作者であるブレンダンアイク自身が、以下のように語っている(JavaScript Ten Years)。
Javaは、高価なコンポーネントやウィジェットのためであるのに対し、Mochaは、Webデザイナー向けの言語である、と言っているわけで、JavaScriptは「Javaのスクリプト言語版」であるという、メロンとメロンパンの人たちが否定する位置づけは、それなりには根拠があるように思える。何しろ、JavaScriptは、JavaのDateクラスの2000年問題のバグまでそっくり似せて作られている*1
確かに、JavaScriptは、関数がファーストクラスオブジェクトであったりレキシカルクロージャがあったりと、プログラミング言語の進化の系統樹からすれば、C→C++→Javaという系統よりも、Lispから取り入れたものが多い言語だとは思う(あとは、プロトタイプオブジェクト指向言語として、SELFとか)。しかし、それにしても、これほどあからさまに「似せて作られた」ことを無視して「メロンとメロンパン」とか「インドとインドネシア」とか言い募るのは、あまり誠実な態度とは言えないんじゃないですかね。
参考ページ:
https://www.markupdancing.net/archive/20081111-083300.html
――というようなことも、「完全初心者のためのプログラミング入門」には書いておりますよ! という宣伝でした。
*1:2021年現在、getYear()が121を返すことだと思われる。