在网络编程中使用Javascript的历史基础是什么?


9

我来自科学生物学背景,我们也经常使用Python。

现在,我开始进行Web开发,我一直发现自己想知道为什么JavaScript是Web上主要的客户端语言。

JavaScript的优势是历史事故还是其他原因?另外,我很好奇是否将Python集成到客户端脚本中是否有障碍?



@Rein- vote to close如果您觉得这是题外话,可以这样做。如果其他人也有同样的感觉,他们或主持人将跟随您。
jmort253

@ jmort253(也许我应该移至meta)链接的线程中没有共识,我很矛盾。:(
Rein Henrichs

@Rein-意见中的思考过程是可以的(因为它充当路标,就为什么或为什么不做出决定,社区决定对某个帖子采取行动。如果没有达成共识,则尽您所能。)我个人认为,这些历史信息可以帮助其他人理解JavaScript作为一种语言的未来,以及理解和采用这种语言的重要性。
jmort253

Answers:


16

JavaScript是在流行的Web浏览器中提供的第一种脚本语言,因此几乎是通用的。作为所有流行浏览器中唯一可用的编程语言,别无选择,只能将其作为主要的客户端编程语言。

Internet Explorer以允许可插入脚本引擎的方式实现了JavaScript(VBScript和JScript随附)。如果您愿意(像我一样)用PerlScript或PythonScript编写代码,则可以,但是所有客户端都必须安装该脚本语言,并且他们必须使用IE。您可以为内部项目执行此操作,但是它不可能在Internet上运行。


我发现其他有趣的事情是编写python-to-javascript编译器的项目,例如Pajamas pyjs.org
2011年

“ Pyjamas是一个针对Web和桌面的富Internet应用程序(RIA)开发平台。它包含一个Python到Java的编译器,一个AJAX框架和一个Widget Set API。睡衣作为Google Web Toolkit, Java到Java的编译器。请阅读FAQ和功能列表。”
rd108 2011年

有大量的JavaScript编译器。CoffeeScript,TypeScript,ClojureScript,LispyScript等等等
Florian Margaine 2012年

7

JavaScript最初是由Brendan Eich创建的。它最初于1995年9月随Netscape Navigator 2.0的Beta版一起发布为LiveScript,但在1995年12月与Sun Microsystems联合宣布更名为JavaScript。直到后来(1996年),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的使用率不够而被IIRC弃用了,而且还远远不够气密。
Steve314 2011年

正在编写Javascript中用于I / O的标准库。当然,这些在浏览器中不可用。我只是说如果浏览器中实现了Python,那么不安全的库将不可用。大概您不会错过它们,因为它们并不打算在网站上使用。
安德里亚(Andrea)

-2

“ JavaScript的优势是历史事故还是其他?”

我个人认为,JS的成功与设计一样多,并且将继续不愿意承认,而不仅仅是偶然的事故,或者仅仅是因为它是操场上的第一个孩子。

尽管布伦丹·艾希(Brendan Eich)的名字是为了吸引Java开发人员,并且像Java的基于C的语法一样吸引了Java开发人员,但它还是www历史上最糟糕的决定之一,该决定主要取材于Scheme的实际语言机制灵感,这是Java开发人员似乎根本不喜欢的东西(我觉得这很有趣)。

JavaScript对OOP使用高度灵活的/粒状原型继承,它具有闭包,类型为100%动态,函数本身是一流的,因此它们像任何其他对象或数据类型一样可以被传递,并可以在不同的上下文中重复使用,甚至快速地应用于对象,就好像它们从一开始就被声明为实际对象成员一样。实际上,用于需要标准化大量专有垃圾或处理高度非线性UI问题的事件驱动体系结构的想法令人大跌眼镜。

在网络曙光的尽头,这是唯一一种通过实际的浏览器大战认真完成浏览器标准化任务的语言,在这种浏览器大战中,Netscape和IE试图故意做不同的事情,随后的10多年浏览器休战IE所做的事情有所不同,因为MS懒惰并根深蒂固地陷入了一些愚蠢的反竞争做法,导致浏览器停滞不前,如今,浏览器终于​​开始就HTML的同一通用规范达成共识, IE的CSS和DOM API仅比最新的开发落后2-3年,而不是10年,这是由于Google和Mozilla淘汰了JIT编译器,使IE的性能数字看起来如此可怜,MS最终被羞耻地适当改造了该死的浏览器。IE9是第一个真正将DOM API支持严重升级到Netscape在2000ish支持的级别的服务器。

JS以Java Applets和Adobe的Flash ActionScript形式出现了竞争。在认真的竞争者方面就此。MS试图推动VB,但失败了,因为...好吧... VB。另外,专有。实际上,Flash网站的数量比大多数人想象的要多。您只是无法通过搜索引擎找到愚蠢的东西。小程序做了自己的事,这很丑。真丑。JS是唯一真正解决由多个人在不同浏览器环境中工作的语言,这些人不同意谁在设置他们应该匹配的规范。

近年来,JS已经扩展到更广泛的应用领域。如果您确实想编写一个应用程序并使它能够在所有应用程序上使用,则它+ Web技术实际上是当前唯一可行的选择,它与其他Web技术相结合,可以在移动方面彻底解决所有其他解决方案。

因此,不,是的,我是一个超级粉丝,但我认为它不会在客户端意外破坏所有其他竞争者,而不是现在它在浏览器之外大受欢迎。在JS之前,没有很多不是主要是学术性的类似于Scheme的语言。这给了JS一些强大的优势,并且客户端的独特需求使这些优势逐渐变得清晰起来。


您两次提到Scheme,却从未说过JS与Scheme的关系。当然,您不认为JS具有宏,S表达式,尾部递归,延续或Scheme的其他任何不同功能-是吗?
2012年

@Gabe。检查第四个文本块。闭包,动态类型和一流的功能非常重要。JS使用类似c的语法的事实将不允许使用Scheme宏。它不是Scheme的逐个特征副本,但肯定会受到它的影响。
mike30

那么闭包和动态类型使语言类似于Scheme?这是否意味着C#类似于Scheme?Ruby,Python和Perl呢?为什么使用Scheme而不是Lisp或任何其他类似的语言?
加布

@Gabe我不是Scheme专家,但是在随意的维基百科上,我会说词汇范围,一流函数和闭包的组合使JS更接近Scheme而不是Java。否则,我只是像布伦丹·艾希(Brendan Eich)所说的那样,并认为适当的一流功能是主要的佼佼者。
Erik Reppen

好的,因此JS具有闭包(我相信这意味着一流的功能和词法作用域)和动态类型,例如Scheme。由于C#具有闭包,动态类型和有限形式的S-表达式,这是否意味着C#比JS更像Scheme?
加布
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.