JavaScript是如何流行的?


27

在古代历史中,Brendan Eich曾设计过一种语言,而在当今世界,JavaScript是一种在许多不同地方实现和使用的流行语言。

是什么导致该语言流行?是以前的程序员熟悉的类似C的语法吗?Netscape是否有足够的市场控制权来强制使用它?还是有更深层的原因使JavaScript流行而其他语言却不流行?

特别是,如果您必须使一种语言像JavaScript一样流行,那么您需要什么初始条件来重新获得其流行性?


2
JavaScript即将失效(+-2005),直到Google用Google地图将其复活。
Todd Moses

1
@ToddMoses我曾争论过,但是一些研究表明你是对的:AJAX在Gmail(2004)和google maps(2005)的启发下再次成为Javascript的主流。但是(这也与上述问题有关)javascript从未真正消失:Actionscript(用于Flash)大约在2000年出现,基本上是同一语言。在浏览器战争年代,Flash / Actionscript用于与Javascript / AJAX成为目前的技术相同的事物。我在2000年将Javascript技能带到了Actionscript,并在2008年将其重新带回Javascript :-)
Darren Cook

2
IMO,Ajax很重要,但信用过高。广泛使用DOM API和CSS2的浏览器半合规性使JS成为客户端上的强大工具。从2002ish IIRC左右开始。一旦有了用于处理HTML的适当工具,复杂UI功能的快速实现便成为了一个全新的游戏。但是,直到2005年左右,每个人才开始真正注意到这一点。我还要说,直到2005年左右,一个批判者才开始了解JS实际上是一种相当糟糕的通用语言。
Erik Reppen 2013年

Answers:


31

我在评论一个较早的答案,但是它越来越大,所以我想把它解决掉。

任何新语言只有在利用新兴计算领域的情况下才能成功。

先前的例子:

  • Unix用C
  • 适用于iOS的Objective-C
  • 后端Web 1.0的Perl和PHP
  • 适用于后端Web 2.0的Python和Ruby
  • 后端Internet支持企业的Java

为了回答您的问题,JavaScript是Netscape Navigator的主要语言,当时它是主要的浏览器。具体来说,它是动态前端开发的语言。

一个大的语言将要解决的另一个前沿。后端Web开发领域似乎仍然占有一席之地。此外,尽管苹果公司目前占据主导地位,但移动计算还没有完全解决。另外,多核和云计算的出现,许多语言都在尝试利用这种语言(例如并发语言(例如Erlang和Go或功能语言,例如Haskell和OCaml))。

企业家的表达大致是:“找到某人着火并向他出售消防水带”。因此,如果您想引入一种新的语言,您正在扑灭谁?计算的每个新领域都带来很多麻烦。因此,提供一些阿司匹林,您会变得很黄金。


4
我几乎同意,但是我不知道.NET平台如何如此流行?
Tomasz Nurkiewicz 2011年

5
@Tomasz微软推.NET是为Windows(仍然有绝大多数的台式机安装的)新的平台外,就停止VB 6去
chrisaycock

1
Perl和Python都没有真正将其最初的流行归功于网络。它们被用作分别用于快速为系统管理员或操作系统服务构建工具的语言,并且在这些领域中,它们在网络开发领域获得更大的关注之前已经取得了巨大的成功。
SingleNegationElimination 2011年

1
@TokenMacGuy:在Web 1.0起飞之前,这些域(包括CAD / CAE)相对较小。那时候书店的书架开始充斥着这些语言的书籍。
hotpaw2 2011年

2
@ hotpaw2:在家庭互联网完全普及之前的几年,Perl在UNIX上编写脚本非常受欢迎。
凯文·克莱恩

38

很简单:Netscape在他们的浏览器中使用了JavaScript引擎。如果你想要做的网站上的脚本,JavaScript是。Internet Explorer具有(并且仍然具有)JavaScript和VBScript,但是显然,如果您想在IE以外的环境中工作,别无选择,只能使用JavaScript。

JavaScript本身就是一种很棒的语言,但是如果不是因为它是您可以用来编写HTML脚本的唯一语言,那么它就不会像今天这样流行。


3
因此,通过piggy带需要高级语言的现有(流行)软件来进行?
Mathnerd314 2010年

7
@ Mathnerd314:不是那样的。JavaScript(感谢CRT:p先生)从来没有与浏览器分开:它是由Netscape开发的,专门用于他们的浏览器,因此,似乎并没有一个明智的决定来“ pi带” Netscape的流行度,以便使语言受欢迎。
Dean Harding

2
@ Mathnerd314与其说是as带,不如说是C作为Unix 的语言,它是新的计算领域的唯一真实语言。任何需要动态前端的人都必须使用JavaScript。
chrisaycock 2010年

4
为了重现成功,我需要找到全新的计算领域,并使新语言成为强制性的。我看到了…
Mathnerd314 2010年

2
@ Mathnerd314当前新兴的领域包括多核和云计算。确实,这是像Erlang这样的语言可以利用的。(另一个例子是由于智能手机的出现,Objective-C的兴起,因为苹果在该领域
发挥

7

我要对此进行更新,因为多年来,我认为在客户端Web上JS的出现被误解了。

不是阿贾克斯

我并不是说Ajax对JS作为一种语言的理解的发展并不重要,但是争取客户端浏览器优势的斗争已经很久了,这个术语是在Ajax诞生之前。

不是因为那是镇上唯一的游戏

有Java Applet,Flash和VBScript。我听说90年代甚至还有其他脚本选项(但需要使用IIRC插件)。Java非常流行,但是applet却是惨败。它们是丑陋的,而且常常是安全性低劣的奶酪,但是更重要的是,出于以后我将要讨论的原因,我认为Java不适合。Flash非常流行,并且已经站稳脚跟了很多年,但是即使Flash最终拥有SEO选项,也很少使用它们,这使得Flash网站很难被发现。即使是现在,我们大多数人也会定期更新Flash,以便我们可以观看电影,但这才是真正的致命弱点。浏览器中的专有技术很烦人。当然还有只能与IE一起使用的VB,所以没有。

在正确的时间正确的位置是相关的,但不是全部答案

是的,如果没有网络浪潮的推动,我们可能从来没有像现在这样看到过JavaScript或流行语言。也许我们会...

最终成为问题领域的完美工具

我会说大约2000ish我们有以下问题:

  • IE和Netscape刚刚同意通过遵循相同的DOM API和CSS标准开始玩得开心,并且我们不得不处理大量遗留的JS跨浏览器问题,此后才开始变得可管理。无需jQuery IE8之类的JS DOM标准化工具的帮助
  • 新一代的Web开发人员/设计人员并不一定都是重量级人物,因为程序员在停止向您展示像样的薪水时不再希望给您带来可观的薪水,因此他们希望改善他们的游戏体验。而不是基本的HTML素养和一些photoshop技能。
  • 镇上有一个新的CSS小孩,为最终被称为DHTML(更合适)的DOM脚本(现在不合适)为HTML5(zomghtml5!)提供了有趣的可能性。

因此,我们需要一种深度的语言,能够实际构造和构建具有客户端可移植/可重用组件的更高级的应用程序,并且还可以让不了解很多但只需要一些东西的人访问单击按钮时出现/重新出现。

此外,MS有时是笨拙的/不称职的和/或通过反竞争实践计划占主导地位的野兽,尽管他们确实设法在IE8中添加偶尔的内容,例如原始XHR对象和querySelectors。

需要注意的重要一点是,到2005年左右,我们已经设法完全掩盖了处理跨浏览器问题所涉及的复杂性,以至于在JavaScript方面,它不再是一个严重的问题。只要它们确实不能正确支持CSS2,就会造成更多的痛苦。要了解大量问题的深度,建议您查看quirksmode.org。我认为这不是在Java的许多库中都能顺利实现的壮举,当然不是在VB中实现,也绝对不是通过任何插件策略来实现的,而后者的目标是通过成为一个全新的软件来回避整个问题有点麻烦。

对UI有意义的其他语言功能:

  • 一流的功能:根据我的经验,没有什么比使其功能一流的语言更适合异步处理和事件驱动的范例了。UI工作中会定期解决这两个问题。

  • 动态类型:强制转换和类型检查是JavaScript中非常罕见的需求,它有助于保持代码的简洁和精简。UI问题很快就会变得复杂和混乱。保持代码紧密并绝对清楚数据流对于理解和修改/维护数据至关重要。

  • 不是保护主义者:多年来,有人一直在讲道,您需要保护自己免受错误和其他人可能会对代码造成的愚蠢影响,方法是使代码构造高度僵化,不灵活且不可能与原始意图混为一谈。与创作并有很多人在听。我不会说他们总是错的(可能会想),但我会说这是Web UI的错误方法,我相信这是我们一直在努力开发,维护和修改的一种现象,比过去通常以限制性更强的语言来完成这种工作的速度更快,更轻松的方式提供了更方便的方式。能够快速,轻松地动态更改事物,使动态/流体体系结构方案变得更加容易,这些方案不需要大量的间接和抽象开销,最终使您更容易了解代码中的地狱状态并更干净地抢占或处理异常。仅通过纯粹的优点就可以轻松进行维护,因为它可以使您所做的每件事都更加直接,并且使用的代码比使用其他哲学所需要的代码少得多。

JS是如何流行的?它已经证明自己是一次又一次地工作的出色工具。这不是我们被“迷住”的语言,而是可能激发了流行语言整体发展的一种语言。因此,您可以感谢Brendan Eich和任何帮助将这个想法付诸实践的同时代人,因为他将Scheme视为一种适合解决当前问题的设计灵感,而不是他喜欢Java。


2

最初使用的一种策略是名称-“ JavaScript”旨在利用Java的流行,而Java的流行已经有一段时间了。


1

并不是唯一的跨浏览器客户端脚本语言吗?它的受欢迎程度似乎与网络的增长步调一致,这是有道理的。



0

我认为Java语言之所以受欢迎是因为它得到了很好的支持。

首先,它是当时Netscape和IE的唯一语言。建立“ javascript社区”并变得稳定之后,没有人会想到需要从头开始构建的“另一种好处”。他们只是为使它变得越来越好做出了贡献。

如果要构建一种新的流行语言,我首先想到的是必须确定谁使用该语言。最初的客户总是很难获得,您必须以某种方式使您的语言优于javascript。甚至在受限的领域/受限的程序员社区中,例如,“更好/更快的iPhone移动JavaScript引擎”可能也是一个不错的选择。

此外,您的语言应该易于使用,并可以按社区进行自定义,因为由社区来决定哪种语言可以生存。


重要的是如何使其流行“足够”。然后它将自行工作。
晃龙

0

您不会相信我的,但是Flash和(在Java Java Applet之前有一点点)对javascript的流行和语言本身的发展做出了巨大贡献。

当Flash出现时,这是第一个证明Web应用程序值得考虑的证据。

从某种意义上说,与插件竞争,不断地尝试展示-看看没有插件我们能做些什么,使javascript成为一种具有更广泛应用范围的语言,因此变得流行起来。


-1

我曾一度认为人们认为Javascript必须与Java一起工作。

(就像今天一样,所有内容都以“ i”开头)

营销/宣传策略确实起着重要作用。


-1

我真的认为这与C形语法有关。根据Wikipedia的说法,Javascript于95年问世。那时C的空前高涨,而Java是下一个即将到来的语言。我认为该语法确实很吸引人(当时),并且它与下一个主要语言Java的名称关联为它提供了优势。

那时,它使C程序员可以轻松地适应动态语言。

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

紫罗兰指数

如果我要重新创造Javascript的成功,我将研究困扰现代程序员的问题,并为他们提供一种使用熟悉的语法的解决方案。

IMO并行编程是程序员面临的下一个大问题。我认为功能语言确实在克服这一障碍方面做得很好。如果要创建下一个Javascript,则可以使用通用平台创建功能语言。另外,我认为它必须具有足够的灵活性以成为一种脚本语言,而又要具有强大的功能以成为具有静态框架的静态类型语言。

尽管并非所有人都同意,但是在这种情况下,我认为F#将来可能有很多优点。


2
@先生。CRT:Turbo Pascal的创建者Anders Hejlsberg对C#和.NET框架产生了重大影响。因此,如果Netscape采用Pascal,我将不会打折Pascal。仍然有大量的Delphi开发者对此发誓。
snmcdonald 2010年

3
抱歉,在您回复之前删除了我的评论-无论如何这都是讽刺,因此并不是特别有用。我应该说,尽管确实有助于使现有的程序员“涉足水中”,但类似C的语法并不能保证成功。考虑一下Objective-C:相对默默无闻的十年,然后苹果购买了NeXT,并使其成为各种有趣的小玩意的基础……
Shog9

1
@先生。CRT。非常有趣的评论。语法绝对不是万能的,尽管,我认为它对现有程序员很重要。Objective-C在我看来并不像C。也许这就是为什么它最初没有起飞的原因。然而,可能与下一个即将出现的技术的关联才使它变得相关,例如90年代的Java。至于语法,我认为下一代程序员对功能性和动态语言的适应程度更高。
snmcdonald 2010年

@先生。CRT:或者是Google的Python等。。。我想说的是,“受欢迎程度”(与普遍存在的语言)通常与语言本身无关(毕竟,有很多奇妙的语言并不十分流行[例如,Haskell (Erlang)等非常丑陋且非常受欢迎的其他语言(例如PHP))
Dean Harding 2010年

@Dean Harding:有趣的评论,因为我真的很喜欢PHP。我很欣赏这些库函数名称与C库相似,但仍采用类似Perl的语法,而不会被复数形式所掩盖。同时,我理解了批评,因为我将Perl和PHP中的OO实现视为最后一刻。PHP具有与C和Perl(也许更多的语言)相似的语法,这是许多程序员都熟悉的,但它是为非常流行的领域设计的。我真的认为这是语法和流行技术的结合。
snmcdonald 2010年

-1

由于AJAX和良好的检查工具(例如Firebug),JavaScript变得流行起来。当然,它可以在所有主要浏览器上使用并且仅是DHTML的唯一方式这一事实有所帮助。

基本上,要使最丑陋的语言成功,它必须能够做其他语言无法做到的真正有用的事情。另外,您还需要提供一些工具,使程序员能够真正感觉到他们控制了什么语言,而Firebug之前的javascript并非如此。


2
JavaScript借助AJAX(可以说是Firebug,虽然我认为是次要的)获得了新的生命,但是它在开始(和将近15年前)之前就赢得了战争,因为它的领域没有竞争。
wyatt 2010年

-4

Javascript是一种流行的黑客工具,它可以克服HTML标记的缺点,以使网页看起来像设计师希望它们出现一样。没有Javascript,所有网页将看起来像HTTP 1.1。几乎没有使用gopher协议。


2
协议!=设计!=脚本。您可以使用HTTP 1.0在没有Javascript的情况下制作漂亮的页面。
2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.