WebプログラミングでJavaScriptを使用する歴史的根拠は何ですか?


9

私は科学生物学のバックグラウンドを持っており、Pythonもよく使用しています。

私はWeb開発から始めたので、JavaScriptがWeb上の主要なクライアント側言語であるのはなぜなのかと、いつも疑問に思っています。

JavaScriptの優位性は歴史的な事故なのか、それとも他の何かなのか また、Pythonをクライアント側のスクリプトに統合する際にハードルがあるかどうか知りたいのですが。


これにはmeta.programmers.stackexchange.com/questions/363/…に基づくモデレーターの注意が必要ですか?
Rein Henrichs、

@Rein- vote to closeこれがトピックから外れていると感じる場合は、そうすることができます。他の人が同じように感じる場合、彼らまたはモデレーターがあなたのリードに従います。
jmort253

@ jmort253(おそらくメタに移動する必要があります)リンクされたスレッドにコンセンサスがなく、私はあいまいです。:(
Rein Henrichs、

@Rein-コメントの思考プロセスは大丈夫です(それが道標として機能するため、理由またはそうでない理由に関して、コミュニティは投稿に対して行動を起こすことを決定しました。合意がない場合は、あなたが最善だと思うことを行ってください。)個人的には、この履歴情報は、JavaScriptの言語としての未来を理解し、なぜこの言語を理解して採用することが重要なのかを理解するのに役立つと思います。
jmort253

回答:


16

JavaScriptは、人気のあるWebブラウザーで利用できるようになった最初のスクリプト言語だったので、ほぼ普遍的に実装されました。すべての一般的なブラウザで使用できる唯一のプログラミング言語であるため、クライアント側のプログラミング言語が主流になる以外に選択肢はありませんでした。

Internet Explorerは、プラグイン可能なスクリプトエンジンを可能にする方法でJavaScriptを実装しました(VBScriptおよびJScriptに付属)。PerlScriptまたはPythonScriptでコードを記述したい場合は(私が行ったように)できますが、すべてのクライアントでそのスクリプト言語をインストールし、IEを使用する必要がありました。これは社内プロジェクトで実行できますが、インターネットで機能する方法はありません。


他に興味深いと思ったのは、python-to-javascriptコンパイラを作成するプロジェクトです(例:Pajamas pyjs.org)
rd108

「Pyjamasは、Webとデスクトップの両方のリッチインターネットアプリケーション(RIA)開発プラットフォームです。Python-to-JavaScriptスクリプトコンパイラ、AJAXフレームワーク、ウィジェットセットAPIが含まれています。パジャマは、Google Web ToolkitのPythonポートとして開始されました。 Java-to-Javascriptコンパイラー。FAQと機能のリストを読んでください。」
rd108 '10年

何かをJavaScriptに変換するコンパイラはたくさんあります。CoffeeScript、TypeScript、ClojureScript、LispyScriptなど
Florian Margaine

7

JavaScriptはもともとBrendan Eichによって作成されました。それは、1995年9月にLivescapeとしてNetscape Navigator 2.0のベータリリースとともに最初に出荷されましたが、1995年12月にSun Microsystemsとの共同発表でJavaScriptに名前が変更されました。JavaScriptがEcma Internationalに提出されて、ついに標準化されたECMAScript。

現在の市場支配は主に歴史的な慣性によるものです。

出典:http : //en.wikipedia.org/wiki/JavaScript#History


2

確かではありませんが、軽量のクライアントサイドスクリプト言語です。その起源は初期のNetscapeブラウザにあったと思います(私が間違っている可能性もあります)。実際、Javaとは何の関係もありませんでしたが、リリース前にその名前が「java」という単語を含むように変更されました。当時人気を得るための迅速な戦術でした。


1

歴史と関係があると思います。

しかし、ウェブサイトでブラウザのpythonなどのフル機能のプログラミング言語を実行できないようにしたいと思います。セキュリティへの影響は、そのようなサイトから私を怖がらせます(または、ブラウザのサンドボックスが気密であると確信している必要があります)。


それは意味がありません。ITは、プログラミング言語で使用できるAPIを決定する環境に依存しています。もちろん、Pythonがブラウザーで出荷された場合、JavaScriptが現在持っているのと同じAPI(DOMなど)にアクセスできるため、損傷を与える方法はありません。
Andrea

@Andrea-言語はその構文とセマンティクスと同じくらい標準ライブラリであると主張できます。Javascriptには、ファイルI / O用の標準ライブラリがありません。これは、セキュリティ上の理由から意図的なものです。Pythonには、ファイルI / O、およびセキュリティの問題と見なされる可能性のあるその他の多くの標準ライブラリがあります。これらを許可しないと、おそらくあなたはもはやPythonを扱っていません。昔、Pythonにはサンドボックスがありました-バージョン1.5の周りにあったのを覚えていますが-十分に使用されておらず、気密性に優れていなかったため、IIRCから削除されました。
Steve314、

JavaScriptでのI / Oの標準ライブラリが作成されています。もちろん、これらはブラウザでは利用できません。もしブラウザにPythonが実装されていれば、安全でないライブラリは利用できないだろうと私は言っています。そして、おそらくあなたはそれらを逃さないでしょう、なぜならそれらはウェブサイトで使用することを意図していないからです。
アンドレア

-2

「JavaScriptの優位性は歴史的な事故なのか、それとも他の何かなのか?」

JSの成功は多くの人がこれまでと同じようにデザインの問題であり、偶然ではなく、単に遊び場で最初の子供だったという事実が原因で、JSの成功はそれを認めるのを嫌がっています。

Java開発者にアピールするように命名され、Java開発者にもアピールするためにJavaのCベースの構文のように構文化されていますが、Brendan Eichは、wwwの歴史において最も悪質な決定の1つを行いました。これは、Java開発者があまり気に入っていないように思えるインスピレーションです(非常に面白いと思います)。

JavaScriptはOOPに非常に柔軟な/細かいプロトタイプ継承を使用します。クロージャーがあり、型は100%動的です。関数自体はファーストクラスであり、他のオブジェクトやデータ型と同じように渡され、さまざまなコンテキストで再利用できます。オブジェクトが最初から実際のオブジェクトメンバーとして宣言されているかのように、その場でオブジェクトに適用されます。大量の独自仕様のガベージを正規化したり、非常に非線形のUI問題を処理したりする必要があるイベント駆動型アーキテクチャーに使用することは、実質的に悲鳴を上げています。

Webの夜明けの終わりに、NetscapeとIEが意図的に異なることを試みた後、10年以上のブラウザーが続いた実際のブラウザー戦争を通じて、ブラウザーを正規化するタスクに真剣に取り組んできた唯一の言語です。 MSが怠惰で正当な愚かな反競争的慣習に自己定着してブラウザーの停滞を引き起こし、今やブラウザーがHTMLに関して同じ一般的な仕様に最終的に同意し始めている世界であるIE CSSとDOM APIとIEは、IEのパフォーマンス数値を非常に悲惨なMSが適切に最新化することに恥をかかせたGoogleとMozillaがJITコンパイラーを破壊したため、最新の開発よりも2〜3年遅れています。IE9は、DOM APIサポートを2000年代にNetscapeがサポートしていたレベルに実際に真剣にアップグレードした最初のものです。

JSは、JavaアプレットとAdobeのFlash対応ActionScriptの形で競争を繰り広げてきました。それは真剣な競争の前線でそれについてです。MSはVBをプッシュしようとしましたが、...ええと... VBのために惨めに失敗しました。また、独自仕様。実際には、ほとんどの人が理解しているよりもはるかに多くのFlashサイトがありました。あなたはただ検索エンジンで愚かなことを見つけることができませんでした。アプレットは独自の処理を行い、醜いものでした。本当に醜い。JSは、一致するはずの仕様を誰が設定するのかについて同意しない人々が複数のブラウザーのコンテキスト内で作業するという問題に本当に取り組む唯一の言語でした。

近年、JSははるかに広い範囲のアプリケーションに急増しています。他のすべてのWebテクノロジーと組み合わせると、基本的に他のすべてのソリューションをモバイルの最前線で打ち負かすことができます。1つのアプリを作成してすべてに機能させる場合、Webテクノロジーが現在唯一の現実的な選択肢であるためです。

だから、いやいや、私は大ファンですが、ブラウザの外で爆発的に人気を博していることが事故と見なされるほど、クライアント側の他のすべての候補者を偶然に台無しにしたとは思いません。JSの前は、主に学術的ではないSchemeのような言語はあまりありませんでした。JSにはいくつかの強力な利点があり、クライアント側の固有のニーズにより、これらの利点をゆっくりと明確にすることが可能になりました。


JSがどのようにSchemeに関係するかは言うまでもなく、Schemeを2回言及します。確かに、JSにはマクロ、S式、末尾再帰、継続、その他のSchemeの特徴的な機能はないと思いますか?
Gabe

@Gabe。テキストの4番目のブロックを確認します。クロージャ、動的型付け、ファーストクラスの関数はかなり主要です。JSがcのような構文を使用するという事実は、Schemeマクロの使用を許可しません。これは、Schemeの機能ごとのコピーではありませんが、確かに影響を受けます。
mike30

それで、クロージャと動的型付けは言語をSchemeのようにしますか?それは、C#がSchemeに似ているということですか?Ruby、Python、Perlはどうですか?そして、なぜLispや他の同様の言語ではなく、Schemeなのか?
Gabe

@Gabe私はSchemeのエキスパートではありませんが、カジュアルなウィキペディアでは、字句スコープ、ファーストクラスの関数、およびクロージャーの組み合わせが、JSをJavaよりもSchemeに非常に近づけている3つだと思います。それ以外の場合、私はブレンダンアイヒの言葉をそのまま採用しており、適切なファーストクラスの機能が主要なものであると想定していました。
Erik Reppen

それで、JSには、Schemeのようなクロージャー(ファーストクラスの関数と字句スコープを意味する)と動的型付けがあります。C#にはクロージャー、動的型付け、限定された形式のS式があるため、それはC#がJSよりもSchemeに似ていることを意味しますか?
Gabe
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.