在古代历史中,Brendan Eich曾设计过一种语言,而在当今世界,JavaScript是一种在许多不同地方实现和使用的流行语言。
是什么导致该语言流行?是以前的程序员熟悉的类似C的语法吗?Netscape是否有足够的市场控制权来强制使用它?还是有更深层的原因使JavaScript流行而其他语言却不流行?
特别是,如果您必须使一种语言像JavaScript一样流行,那么您需要什么初始条件来重新获得其流行性?
在古代历史中,Brendan Eich曾设计过一种语言,而在当今世界,JavaScript是一种在许多不同地方实现和使用的流行语言。
是什么导致该语言流行?是以前的程序员熟悉的类似C的语法吗?Netscape是否有足够的市场控制权来强制使用它?还是有更深层的原因使JavaScript流行而其他语言却不流行?
特别是,如果您必须使一种语言像JavaScript一样流行,那么您需要什么初始条件来重新获得其流行性?
Answers:
我在评论一个较早的答案,但是它越来越大,所以我想把它解决掉。
任何新语言只有在利用新兴计算领域的情况下才能成功。
先前的例子:
为了回答您的问题,JavaScript是Netscape Navigator的主要语言,当时它是主要的浏览器。具体来说,它是动态前端开发的语言。
在一个大的语言将要解决的另一个前沿。后端Web开发领域似乎仍然占有一席之地。此外,尽管苹果公司目前占据主导地位,但移动计算还没有完全解决。另外,多核和云计算的出现,许多语言都在尝试利用这种语言(例如并发语言(例如Erlang和Go或功能语言,例如Haskell和OCaml))。
企业家的表达大致是:“找到某人着火并向他出售消防水带”。因此,如果您想引入一种新的语言,您正在扑灭谁?计算的每个新领域都带来很多麻烦。因此,提供一些阿司匹林,您会变得很黄金。
很简单:Netscape在他们的浏览器中使用了JavaScript引擎。如果你想要做的网站上的脚本,JavaScript是它。Internet Explorer具有(并且仍然具有)JavaScript和VBScript,但是显然,如果您想在IE以外的环境中工作,别无选择,只能使用JavaScript。
JavaScript本身就是一种很棒的语言,但是如果不是因为它是您可以用来编写HTML脚本的唯一语言,那么它就不会像今天这样流行。
我要对此进行更新,因为多年来,我认为在客户端Web上JS的出现被误解了。
不是阿贾克斯
我并不是说Ajax对JS作为一种语言的理解的发展并不重要,但是争取客户端浏览器优势的斗争已经很久了,这个术语是在Ajax诞生之前。
不是因为那是镇上唯一的游戏
有Java Applet,Flash和VBScript。我听说90年代甚至还有其他脚本选项(但需要使用IIRC插件)。Java非常流行,但是applet却是惨败。它们是丑陋的,而且常常是安全性低劣的奶酪,但是更重要的是,出于以后我将要讨论的原因,我认为Java不适合。Flash非常流行,并且已经站稳脚跟了很多年,但是即使Flash最终拥有SEO选项,也很少使用它们,这使得Flash网站很难被发现。即使是现在,我们大多数人也会定期更新Flash,以便我们可以观看电影,但这才是真正的致命弱点。浏览器中的专有技术很烦人。当然还有只能与IE一起使用的VB,所以没有。
在正确的时间正确的位置是相关的,但不是全部答案
是的,如果没有网络浪潮的推动,我们可能从来没有像现在这样看到过JavaScript或流行语言。也许我们会...
最终成为问题领域的完美工具
我会说大约2000ish我们有以下问题:
因此,我们需要一种深度的语言,能够实际构造和构建具有客户端可移植/可重用组件的更高级的应用程序,并且还可以让不了解很多但只需要一些东西的人访问单击按钮时出现/重新出现。
此外,MS有时是笨拙的/不称职的和/或通过反竞争实践计划占主导地位的野兽,尽管他们确实设法在IE8中添加偶尔的内容,例如原始XHR对象和querySelectors。
需要注意的重要一点是,到2005年左右,我们已经设法完全掩盖了处理跨浏览器问题所涉及的复杂性,以至于在JavaScript方面,它不再是一个严重的问题。只要它们确实不能正确支持CSS2,就会造成更多的痛苦。要了解大量问题的深度,建议您查看quirksmode.org。我认为这不是在Java的许多库中都能顺利实现的壮举,当然不是在VB中实现,也绝对不是通过任何插件策略来实现的,而后者的目标是通过成为一个全新的软件来回避整个问题有点麻烦。
对UI有意义的其他语言功能:
一流的功能:根据我的经验,没有什么比使其功能一流的语言更适合异步处理和事件驱动的范例了。UI工作中会定期解决这两个问题。
动态类型:强制转换和类型检查是JavaScript中非常罕见的需求,它有助于保持代码的简洁和精简。UI问题很快就会变得复杂和混乱。保持代码紧密并绝对清楚数据流对于理解和修改/维护数据至关重要。
不是保护主义者:多年来,有人一直在讲道,您需要保护自己免受错误和其他人可能会对代码造成的愚蠢影响,方法是使代码构造高度僵化,不灵活且不可能与原始意图混为一谈。与创作并有很多人在听。我不会说他们总是错的(可能会想),但我会说这是Web UI的错误方法,我相信这是我们一直在努力开发,维护和修改的一种现象,比过去通常以限制性更强的语言来完成这种工作的速度更快,更轻松的方式提供了更方便的方式。能够快速,轻松地动态更改事物,使动态/流体体系结构方案变得更加容易,这些方案不需要大量的间接和抽象开销,最终使您更容易了解代码中的地狱状态并更干净地抢占或处理异常。仅通过纯粹的优点就可以轻松进行维护,因为它可以使您所做的每件事都更加直接,并且使用的代码比使用其他哲学所需要的代码少得多。
JS是如何流行的?它已经证明自己是一次又一次地工作的出色工具。这不是我们被“迷住”的语言,而是可能激发了流行语言整体发展的一种语言。因此,您可以感谢Brendan Eich和任何帮助将这个想法付诸实践的同时代人,因为他将Scheme视为一种适合解决当前问题的设计灵感,而不是他喜欢Java。
正确的时间,正确的地方。而且并没有完全糟透了。
这是facebook获胜的同样原因。
我认为Java语言之所以受欢迎是因为它得到了很好的支持。
首先,它是当时Netscape和IE的唯一语言。建立“ javascript社区”并变得稳定之后,没有人会想到需要从头开始构建的“另一种好处”。他们只是为使它变得越来越好做出了贡献。
如果要构建一种新的流行语言,我首先想到的是必须确定谁使用该语言。最初的客户总是很难获得,您必须以某种方式使您的语言优于javascript。甚至在受限的领域/受限的程序员社区中,例如,“更好/更快的iPhone移动JavaScript引擎”可能也是一个不错的选择。
此外,您的语言应该易于使用,并可以按社区进行自定义,因为由社区来决定哪种语言可以生存。
我真的认为这与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#将来可能有很多优点。
由于AJAX和良好的检查工具(例如Firebug),JavaScript变得流行起来。当然,它可以在所有主要浏览器上使用并且仅是DHTML的唯一方式这一事实有所帮助。
基本上,要使最丑陋的语言成功,它必须能够做其他语言无法做到的真正有用的事情。另外,您还需要提供一些工具,使程序员能够真正感觉到他们控制了什么语言,而Firebug之前的javascript并非如此。