本文翻译自popularity,为了更好的阅读我把部分内容进行了增删改,如果你英语比较好,建议直接阅读原文,因为这篇文章是我通过google翻译再进行修改的。

貌似(根据一位精神导师的说法)JavaScript最终流行了。

对我来说,从小时候起就是一个书呆子,当然这是一场诅咒与玩笑。

Brendan Eich在Netscape上说服了他的尖头老板,我们应该有个自己的脚本语言,并且是一种新的语言。

我不知道Doug为什么要编故事,他并没在Netscape呆过,在Ajax会议的主题演讲中,他已经听到了我关于JavaScript诞生的回忆,他是为了在Web开发者中推广C#么?

谁知道呢,不过本周是我参与创建mozilla的第十个年头,我想聊一点历史。

我是以在浏览器中搞Scheme的名头被招募到Netscape的,至少客户工程管理包括Tom Paquin,Michael Toy和Rick Schell以及叫做Marc Andreessen的那些家伙,认为Netscape应该以HTML格式在源代码中嵌入编程语言,所以并非是我说服的“尖头老板”。

javascript是否是Scheme,那就仁者见仁,智者见智了,不过我加入Netscape却是因为Scheme的。(Brendan Eich的主要方向和兴趣是函数式编程)

当时需要一个有说服力的例子(也就是一个demo),我完成了它,而它随即变成了事实。

1995年Sun公司将Oak语言改名为Java,Netscape决定与Sun公司结成联盟,希望将其包含在浏览器中。

因此,Netscape的大辩论成为“为什么要用两种语言?为什么不只是Java?“答案是需要两种语言来服务于编程,在编程领域有两类不相干的受众用户,他们最需要专门的编程语言,一类是组件作者,他们用C ++或Java,另外一类是那些编写“scripters”的作者,他们可能是业余或专业的,那么谁将来编写直接嵌入HTML的代码呢。

是否可以使用现有的语言,而不是去发明新的语言,这不是我决定的,因为整个管理层希望这种语言必须看起来像Java,但要比Java简单,这个决策导致排除了Perl,Python和Tcl以及Scheme。

我不骄傲,但我很欣慰将Scheme中的function作为第一等公民以及借鉴Self将原型作为继承机制,但受到Java的影响,数据分成基本类型(primitive)和对象类型(object)两种,比如字符串和字符串对象,以及引入了Y2K问题,这真是不幸啊。

回到1995年春天,记得在那段时间里我遇到了比尔·乔伊,并与他讨论了垃圾收集,从一开始Bill就将这个脚本语言作为Java的小兄弟来看,类似于VB在Microsoft平台中与C ++的关系。

Kipp Hickman和我在1995年4、5月期间一直在研究Java,Kipp已经开始编写自己的JVM,Kipp和我写了第一版NSPR,作为他的可移植性JVM底层,在5月初至5月中旬我开始制作“摩卡车”并将其用于相同的目的。

Bill相信我们删除Kipp的JVM,因为它将减少Sun在JVM中的兼容性Bug。在这一点上,“摩卡”已经通过快速原型设计和嵌入到Netscape Navigator 2.0中,NetView Navigator 2.0处于其前alpha开发阶段。

其余的是反常的,无情的历史, JS在客户端上打败了Java,只有Flash才能支持JS,ActionScript的后代。

回到JavaScrip,我们知道某些Ajax图书馆很受欢迎, JavaScript受欢迎吗很难说,一些Ajax开发人员自称喜欢它,还有许多人诅咒它,包括我。我觉得它就像是C语言和Self语言的一夜产物,不免想到约翰逊博士的一句话:“它的优秀之处并非原创,它的原创之处并不优秀。”

推荐阅读

Javascript诞生记
JavaScript创始人Brendan Eich访谈录

JavaScript之父谈JavaScript的更多相关文章

  1. 【javascript】浅谈javaScript的深拷贝

        前言: 最开始意识到深拷贝的重要性是在我使用redux的时候(react + redux), redux的机制要求在reducer中必须返回一个新的对象,而不能对原来的对象做改动,事实上,当时 ...

  2. 再谈javascript面向对象编程

    前言:虽有陈皓<Javascript 面向对象编程>珠玉在前,但是我还是忍不住再画蛇添足的补上一篇文章,主要是因为javascript这门语言魅力.另外这篇文章是一篇入门文章,我也是才开始 ...

  3. [转载]浅谈JavaScript函数重载

     原文地址:浅谈JavaScript函数重载 作者:ChessZhang 上个星期四下午,接到了网易的视频面试(前端实习生第二轮技术面试).面了一个多小时,自我感觉面试得很糟糕的,因为问到的很多问题都 ...

  4. JavaScript之浅谈内存空间

    JavaScript之浅谈内存空间 JavaScipt 内存自动回收机制 在JavaScript中,最独特的一个特点就是拥有自动的垃圾回收机制(周期性执行),这也就意味者,前端开发人员能够专注于业余, ...

  5. JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议

    软件开发是现时很火的职业.据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%.很多人年轻人会选择编 ...

  6. 从setTimeout谈JavaScript运行机制

    从setTimeout说起 众所周知,JavaScript是单线程的编程,什么是单线程,就是说同一时间JavaScript只能执行一段代码,如果这段代码要执行很长时间,那么之后的代码只能尽情地等待它执 ...

  7. 浅谈javascript函数节流

    浅谈javascript函数节流 什么是函数节流? 函数节流简单的来说就是不想让该函数在很短的时间内连续被调用,比如我们最常见的是窗口缩放的时候,经常会执行一些其他的操作函数,比如发一个ajax请求等 ...

  8. 浅谈JavaScript中的闭包

    浅谈JavaScript中的闭包 在JavaScript中,闭包是指这样一个函数:它有权访问另一个函数作用域中的变量. 创建一个闭包的常用的方式:在一个函数内部创建另一个函数. 比如: functio ...

  9. javascript数组浅谈2

    上次说了数组元素的增删,的这次说说数组的一些操作方法 join()方法: ,,] arr.join("_") //1_2_3 join方法会返回一个由数组中每个值的字符串形式拼接而 ...

随机推荐

  1. vue-cli脚手架的环境搭建

    vue-cli (1)检查node版本 在安装vue的环境之前,安装NodeJS环境是必须的.可以使用node -v指令检查,需要保证安装了4.0版本以上的nodeJS环境. 当然,没有安装的话,去N ...

  2. javaIO详解、包含文件以及流操作

    1.File 文件操作 java.io.File用来表示文件或者目录.只能用来表示文件或者目录的大小名称等信息,而无法完成对文件内容的CRUD. 1.1构造方法 有四种,当然基本都是根据文件的路径或者 ...

  3. 使用python爬取百度贴吧内的图片

    1. 首先通过urllib获取网页的源码 # 定义一个getHtml()函数 def getHtml(url): try: page = urllib.urlopen(url) # urllib.ur ...

  4. 什么是A记录  域名

    A (Address) 记录是用来指定主机名(或域名)对应的IP地址记录.用户可以将该域名下的网站服务器指向到自己的web server,FTP server等上面.同时也可以设置域名的子域名. 通俗 ...

  5. Struts 2 标签库及使用

    1  Struts 2 基本的标签属性. 1) name:指定表单元素的名称,该属性与Action中定义的属性相对应. 2) value:指定表单元素的值. 3) required:指定表单元素的必填 ...

  6. NPM使用命令总结

    NPM使用命令总结 npm是一个node包管理和分发工具,已经成为了非官方的发布node模块(包)的标准.有了npm,可以很快的找到特定服务要使用的包,进行下载.安装以及管理已经安装的包. 1.npm ...

  7. bootstrap 响应式图片自适应图片大小

    <img src="..." class="img-responsive center-block" > 或者 $(window).load(fun ...

  8. forward和redirect

    Forward和Redirect代表了两种请求转发方式:直接转发和间接转发. 直接转发方式(Forward),客户端和浏览器只发出一次请求,Servlet.HTML.JSP或其它信息资源,由第二个信息 ...

  9. Socket与ServerSocket

    ServerSocket: 用于打开服务端口,等待客户端连接,运行在服务端. Socket: 用于连接指定服务器的指定端口,运行在客户端. flush是输出到缓冲区,缓冲区没满的话不发送,close的 ...

  10. DOM4J使用简介

    Dom4j 使用简介 作者:冰云 icecloud(AT)sina.com 时间:2003.12.15   版权声明: 本文由冰云完成,首发于CSDN,未经许可,不得使用于任何商业用途. 文中代码部分 ...