JavaScriptはどのようにして人気を博しましたか?


27

古代の歴史では、Brendan Eichには言語設計があり、今日の世界ではJavaScriptはさまざまな場所で実装および使用されている人気のある言語です。

言語が人気を博した原因は何ですか?以前のプログラマーに馴染みのあるCのような構文でしたか?Netscapeは、市場の使用を強制するのに十分な市場の支配権を持っていますか?または、JavaScriptが人気で他の言語が人気がないというより深い理由がありますか?

特に、JavaScriptと同じくらい人気のある言語を作成する必要がある場合、人気の成長を再現するにはどのような初期条件が必要ですか?


2
JavaScriptがGoogleマップで復活するまで、JavaScriptは死にかけていました(+-2005)。
トッドモーゼズ

1
@ToddMoses私は議論に行きましたが、いくつかの研究はあなたが正しいことを示しました。ただし(これは上記の質問にも関連しています)javascriptは決して消えませんでした:Actionscript(Flashで使用)は2000年頃から登場し、基本的には同じ言語です。ブラウザ戦争の時代、Flash / ActionscriptはJavascript / AJAXが今のところ最先端のテクノロジーであるのと同じことのために使用されていました。私は2000年のActionScriptに私のJavascriptのスキルを取って、2008年に戻ってJavaScriptにそれらをもたらした:-)
ダレン・クック

2
Ajaxは重要ですが、IMOの信用過剰です。ブラウザがDOM APIとCSS2に広く準拠していることが、JSをクライアント側の強力なツールにするのに役立ちました。それは2002年頃のIIRCでさらに始まりました。HTMLをいじるのに適切なツールがあれば、複雑なUI機能の迅速な実装はまったく新しい球技でした。しかし、誰もが実際に注目し始めたのは2005年頃までではなかったかもしれません。また、JSが実際にはかなり悪い一般的な言語であることを批判的な集団が理解し始めたのは、2005年頃までではなかったと思います。
エリックReppen

回答:


31

私は以前の回答についてコメントしていましたが、大きくなっていたので、これをスピンアウトすると思いました。

新しい言語は、コンピューティングの新たなフロンティアを活用する場合にのみ成功できます。

前の例:

  • CのUnix
  • iOS用のObjective-C
  • バックエンドWeb 1.0用のPerlおよびPHP
  • バックエンドWeb 2.0用のPythonおよびRuby
  • バックエンドのインターネット対応企業向けのJava

あなたの質問に答えるために、JavaScriptはNetscape Navigatorが支配的なブラウザだった頃の言語でした。具体的には、動的フロントエンド開発用の言語でした。

次の大きな言語は別のフロンティアを解決する必要があります。バックエンドのWeb開発スペースには、まだ土地がつかんでいるようです。さらに、アップルの現在の優位性にもかかわらず、モバイルコンピューティングは完全には解決されていません。また、マルチコアおよびクラウドコンピューティングの出現があります。これは、多くの言語が活用しようとしているものです(ErlangやGoのような同時言語、HaskellやOCamlのような機能言語など)。

起業家は「火のついた人を見つけて消防ホースを売る」という表現を持っています。だから、新しい言語を導入したい場合、誰の火を消していますか?コンピューティングのすべての新しいフロンティアは、多くの頭痛の種をもたらします。アスピリンを補給すれば金色になります。


4
私はほぼ同意しますが、.NETプラットフォームがどのように人気を博したのかわかりませんか
トマスヌルキエヴィチ

5
@Tomasz Microsoftは、.NETをWindowsの新しいプラットフォーム(まだデスクトップインストールの大部分が残っている)として
プッシュし、

1
PerlとPythonのどちらも、Webに対する最初の人気のおかげではありません。それらは、それぞれシステム管理者またはオペレーティングシステムサービス用のツールを迅速に構築するための言語として意図されたものであり、Web開発でさらに注目を集める前にそれらのドメインで大成功を収めました。
SingleNegationElimination

1
@TokenMacGuy:これらのドメイン(CAD / CAEを含む)は、Web 1.0が登場するまで比較的小さかった。そのとき、書店の棚にはこれらの言語の本があふれ始めました。
hotpaw2

2
@ hotpaw2:自宅のインターネットアクセスが一般的になる数年前に、PerlはUNIXでのスクリプト作成で非常に人気がありました。
ケビンクライン

38

NetscapeはブラウザーでJavaScriptエンジンを使用しました。Web上でスクリプトを作成したい場合は、JavaScriptがそれでし。Internet ExplorerにはJavaScriptとVBScriptの両方があります(まだあります)が、明らかにIE以外で作業したい場合は、JavaScriptを使用する以外に選択肢はありません。

JavaScriptはそれ自体素晴らしい言語ですが、HTMLをスクリプト化するために使用できる唯一の言語であるという事実がなければ、今日ではそれほど人気が​​ありません。


3
それで、より高いレベルの言語を必要とする既存の(人気のある)ソフトウェアに便乗することによって?
Mathnerd314

7
@ Mathnerd314:そんな感じではありません。JavaScript(ありがとう、Mr。CRT:p)はブラウザから切り離されることはありませんでした。Netscapeがブラウザで使用するために特別に開発したものです。人気のある言語。
ディーンハーディング

2
@ Mathnerd314これは、CがUnixの場合と同じように、コンピューティングの新しいフロンティアにとって唯一の本当の言語だったので、便乗ではありません。動的なフロントエンドが必要な人は、JavaScriptを使用する必要がありました。
chrisaycock

4
成功を再現するにコンピューティングのまったく新しいフロンティアを見つけ、新しい言語を必須にする必要があります。なるほど...
Mathnerd314

2
@ Mathnerd314現在の新興フロンティアには、マルチコアおよびクラウドコンピューティングが含まれます。実際、これはアーランのような言語が活用できるものです。(別の例としては、スマートフォンの出現によるObjective-Cの台頭があります。これは、Appleがその分野で非常に大きなプレーヤーであるためです。)
chrisaycock

7

クライアントサイドWebでのJSの出現は、長年にわたっていくつかの重要なポイントで誤解されてきたと思うので、これに更新を追加します。

アヤックスではなかった

JSを言語として理解するための進化にとってAjaxは重要ではなかったとは言いませんが、クライアント側のブラウザーの優位性をめぐる戦いは、Ajaxという用語が生み出されるずっと前に終わりました。

町で唯一のゲームだったからではありません

Javaアプレット、Flash、VBScriptがありました。90年代には他のスクリプトオプションもあると聞きました(ただし、プラグインIIRCが必要です)。Javaは非常に人気がありますが、アプレットは悲惨な失敗でした。それらはく、多くの場合セキュリティスイスチーズでしたが、さらに重要なことは、後で説明する理由からJavaが適しているとは思わないことです。Flashは非常に人気があり、長年にわたって強力な足場を築きましたが、ついにFlashにSEOオプションがついたとしても、それらは通常使用されず、Flashサイトだけを発見することは非常に困難になりました。今でも、私たちのほとんどは定期的にFlashを更新して映画を見ることができますが、それは本当のアキレス腱です。ブラウザの独自技術は迷惑です。そしてもちろん、IEでしか動作しないVBなので、ありません。

適切なタイミングで適切な場所が重要ですが、全体の答えではありません

はい、乗るウェブの波がなければ、JavaScriptやそのような一般的な用法の言語を見たことがないかもしれません。それとも...

最終的には問題領域に最適なツールになりました

2000年頃には次の問題が発生したと思います。

  • IEとNetscapeは、同じDOM APIとCSSの標準に参加することでうまくプレイし始めることに同意したばかりで、それ以来、管理しやすくなり始めたばかりの古いJSクロスブラウザの問題に対処しなければなりませんでしたIE8以降のjQueryのようなJS DOM正規化ツールの支援なし
  • まったく新しい世代のWeb開発者/デザイナーがいましたが、プログラマーがポスト.com-バブルバーストを改善しようとしているのに、必ずしも重量級であるとは限りませんでした。基本的なHTMLリテラシーといくつかのフォトショップスキルよりも。
  • 最終的にDHTML、(より適切には)DOMスクリプティング、(現在は不適切)HTML5(zomghtml5!)と呼ばれるものの興味深い可能性を提供するこの新しいCSS子供が町にいました。

そのため、クライアント側でポータブル/再利用可能なコンポーネントを使用して、高度なアプリを実際に構築および設計する機能を提供するだけでなく、多くのことを知らず、必要なことだけが必要な人にもアクセス可能な言語が必要でしたボタンをクリックすると表示/再表示されます。

さらに、MSは、彼らが時々そうであるように、非競争的/無能な、および/または反競争的慣行を介して支配する獣であるため、何十年もの間、非準拠のDOM API実装に実際に触れることができませんでした。 IE8で元のXHRオブジェクトやquerySelectorsのような時折のものを追加します。

重要なことは、2005年頃までに、クロスブラウザの問題の処理に伴う複雑さを完全に埋めることができたため、JavaScriptの面ではもはや深刻な問題ではなくなったことです。CSS2を適切にサポートできなかった場合、かなりの苦痛が生じました。膨大な量と問題の深さについては、quirksmode.orgを確認することをお勧めします。これは、Javaのライブラリと同じくらいスムーズに、VBではなく、完全に新しいものになることで問題全体を回避することを目的とするプラグイン戦略では間違いなく達成できる偉業だとは思いません。迷惑のようなもの。

UIに多くの意味をなすその他の言語機能:

  • ファーストクラス関数:私の経験では、関数をファーストクラスにする言語ほど、非同期処理とイベント駆動型のパラダイムに適しているものはありません。両方の懸念は、UIの作業で定期的に対処されています。

  • 動的型:キャストと型チェックはJavaScriptで非常にまれな必要性であり、コードを簡潔で無駄のないものにするのに役立ちました。UIの懸念事項は、すぐに複雑で煩雑になります。コードを厳しく保ち、データの流れについて完全に明確にすることは、それを理解し、変更/維持するために重要です。

  • それは保護主義者ではありません:長年にわたって、誰かがあなた自身の間違いや他の人があなたのコードで行うかもしれない愚かなことから自分を守る必要があると説教してきました。で作成され、多くの人が聞いています。私はそれらが常に間違っているとは言いません(それを考えるかもしれません)が、それはウェブUIへの間違ったアプローチだと言います、そして、私はそれがクライアントをクランクアウトし、維持し、修正している現象の何かであると信じますサイドGUIは、以前はより制限の多い言語で一般的に達成されていた作業よりもはるかに速いペースで、非常に簡単に実行できます。その場で物事を迅速かつ簡単に変更できるため、コードで地獄が何をしているのかを最終的に見やすくするために、途方もない量の間接性と抽象化のオーバーヘッドを必要としない動的/流体アーキテクチャスキームがはるかに簡単になります例外をよりきれいに先取りまたは処理します。他の哲学を考えた場合よりもはるかに少ないコードで、あなたがするすべてのことをより直接的に行えるようにするという単純な美徳によって、簡単に維持するのは簡単です。

JSはどのようにして人気を博しましたか?それは何度も何度も仕事のための優れたツールであることが証明されています。それは私たちが「立ち往生している」言語ではありません。一般的に一般的な言語の大幅な進化に影響を与えた可能性のある言語です。そして、そのために、Brendan Eichと彼の頭にアイデアを入れるのを助けた同時代人に感謝します。彼がJavaを好むよりも、手近な問題に合ったデザインのインスピレーションとしてSchemeが好きだったからです。


2

最初に使用された戦術の1つは名前でした。「JavaScript」はJavaの人気に乗ることを目的としており、Javaはしばらくの間上昇していました。


1

クロスブラウザのクライアント側スクリプト言語だけではありませんか?その人気は、Webの人気と足並みをそろえて成長しているようです。


1

適切なタイミングで適切な場所。そして、それは完全に残念ではありませんでした。

それはFacebookが勝っているのと同じ理由です。


0

私の意見では、Javascriptはよくサポートされているため人気があります。

まず、当時のNetscapeとIEの両方で唯一の言語です。「javascriptコミュニティ」が確立されて安定した後、ゼロから構築する必要がある「もう1つの良い」ことを誰も考えられなくなりました。彼らは単にそれをより良くするために貢献しています。

新しい人気のある言語を構築したい場合、私が最初に考えるのは、その言語を使用するユーザーを決定する必要があるということです。最初の顧客を獲得するのは常に困難であり、何らかの方法であなたの言語をjavascriptよりも優れたものにしなければなりません。たぶん、制限された分野/プログラマーの限られたコミュニティでさえ、「iPhoneモバイル用のより良い/より速いjavascriptエンジン」が良い選択かもしれません。

さらに、言語は使いやすく、コミュニティごとにカスタマイズできる必要があります。これは、どの言語が生き残ることができるかを決定するのはコミュニティだからです。


重要なことは、それを「十分に」人気にする方法です。その後、それ自体が動作します。
ホアンロング

0

あなたは私を信じるつもりはありませんが、フラッシュと(少し前のJavaアプレットで)JavaScriptの人気の成長と言語自体の進化に大きな貢献をしました。

Flashが登場したとき、それはWebアプリケーションが考える価値のあることの最初の証拠でした。

プラグインとのある意味での競争では、見せようとする絶え間ない試み- プラグインなしで何ができるかを見て、javascriptをより広範なアプリケーションの言語にし、それによってそれを普及させました。


-1

私は、人々はJavascriptがJavaで何かをしなければならないと考えていたと思う。

(最近のように、すべてが「i」で始まります)

マーケティング/宣伝戦略は重要な役割を果たします。


-1

Cのような構文に関係していると本当に思いますウィキペディアによると、Javascriptは'95年に登場しました。当時、Cはかつてないほど高く、Javaは次世代の言語でした。シンタックスは(当時)本当に魅力的であり、その名前と次の大きな言語であるJavaとの関連性が優位になったと思います。

そのとき、Cプログラマーが動的言語に適応するための簡単なクロスオーバーが可能になりました。

Programming Language    Dec 2010    Dec 2005    Dec 1995        Dec 1985
Java                    1           1           -               -
C                       2           2           1               1

Tiobeインデックス

Javascriptの成功を再現する場合、現代のプログラマを悩ませている問題を調べ、使い慣れた構文を使用してソリューションを提供します。

IMO並列プログラミングは、プログラマが直面する次の大きな問題です。関数型言語は本当にその障害を克服するのに素晴らしい仕事をしていると思います。次のJavascriptを作成する場合、共通プラットフォームで関数型言語を作成します。それに加えて、私は、優れたフレームワークを備えた、切り抜き言語になるのに十分な柔軟性があるが、静的に型付けされた言語になるのに十分に強力である必要があると思います。

誰もが同意するわけではありませんが、こうした条件下では、F#には将来多くのメリットがあると思います。


2
@氏。CRT:Turbo Pascalの作成者であるAnders Hejlsbergは、C#と.NETフレームワークに大きな影響を与えました。したがって、NetscapeがPascalを採用していた場合、Pascalを割り引くことはできませんでした。周囲にはまだ多くのDelphi開発者がいます。
snmcdonald

3
申し訳ありませんが、返信する前に私のコメントを削除しました-それはとにかく皮肉であるため、特に有用ではありませんでした。私は、既存のプログラマーに「自分の足を水に浸す」のに確かに役立ちますが、Cに似た構文は成功を保証するものではありません。Objective-Cを検討してください。10年以上、比較的あいまいで、AppleはNeXTを購入し、あらゆる種類の楽しい小さなガジェットの基盤にしています...
Shog9

1
@氏。CRT。非常に興味深いコメント。構文は間違いなくすべてではありませんが、既存のプログラマーにとって重要だと思います。Objective-Cは私にはあまりCに似ていません。おそらくそれが最初に離陸しなかった理由です。しかし、90年代のJavaのように、関連性を高めるのは、次世代のテクノロジーとの関連かもしれません。構文については、次世代のプログラマーが関数型言語と動的言語に慣れてきていると思います。
snmcdonald

@氏。CRT:またはGoogleを使用したPythonなど...「人気」(など)は、一般的に言語自体とはほとんど関係がないと言えます(結局、あまり人気のない多くの素晴らしい言語があります[たとえば、Haskell 、Erlang]およびその他の非常に人気のある[eg PHP])
Dean Harding

@Dean Harding:面白いコメントです。PHPが本当に好きだからです。ライブラリ関数の名前はC-Libraryと類似しているが、複数のシギルで曖昧にすることなく、Perlのような構文を採用していることに感謝します。同時に、私は、PerlとPHPの両方でのオブジェクト指向の実装を最後の考えとして見ているので、批判を理解しています。PHPの構文はCとPerl(おそらく他の言語)の両方に似ており、多くのプログラマーに馴染みがあり、非常に人気のあるドメイン向けに設計されています。構文と一般的なテクノロジーの組み合わせだと思います。
snmcdonald

-1

JavaScriptは、AJAXとFirebugなどの優れた検査ツールのために人気を博しました。もちろん、すべての主要なブラウザーで機能し、DHTMLを実行する唯一の方法であるという事実が役立ちました。

基本的に最もgliい言語でさえ成功させるためには、他の言語ではできない本当に便利なことを行える必要があります。また、Firebugの前のjavascriptには当てはまらなかった言語が何をしているのかをプログラマが本当に感じることができるツールを提供する必要があります。


2
JavaScriptは、AJAX(そしておそらく間違いなくFirebug、それは二次的だと思いますが)で新たな生命を獲得しましたが、そのスペースに競争がなかったため、開始する前(そしてほぼ15年前)に戦争に勝っていました。
ワイアット

-4

Javascriptは、デザイナーが表示したいようにWebページを表示するためのHTMLマークアップの欠点を克服するためのハックとして人気があります。JavaScriptがなければ、すべてのWebページはHTTP 1.1のようになります。Gopherプロトコルからのわずかなステップアップ。


2
プロトコル!=デザイン!=スクリプト。HTTP 1.0を使用して、Javascriptなしで非常に美しいページを作成できます。
10
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.