JavaScript之父谈JavaScript
本文翻译自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的更多相关文章
- 【javascript】浅谈javaScript的深拷贝
前言: 最开始意识到深拷贝的重要性是在我使用redux的时候(react + redux), redux的机制要求在reducer中必须返回一个新的对象,而不能对原来的对象做改动,事实上,当时 ...
- 再谈javascript面向对象编程
前言:虽有陈皓<Javascript 面向对象编程>珠玉在前,但是我还是忍不住再画蛇添足的补上一篇文章,主要是因为javascript这门语言魅力.另外这篇文章是一篇入门文章,我也是才开始 ...
- [转载]浅谈JavaScript函数重载
原文地址:浅谈JavaScript函数重载 作者:ChessZhang 上个星期四下午,接到了网易的视频面试(前端实习生第二轮技术面试).面了一个多小时,自我感觉面试得很糟糕的,因为问到的很多问题都 ...
- JavaScript之浅谈内存空间
JavaScript之浅谈内存空间 JavaScipt 内存自动回收机制 在JavaScript中,最独特的一个特点就是拥有自动的垃圾回收机制(周期性执行),这也就意味者,前端开发人员能够专注于业余, ...
- JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议
软件开发是现时很火的职业.据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%.很多人年轻人会选择编 ...
- 从setTimeout谈JavaScript运行机制
从setTimeout说起 众所周知,JavaScript是单线程的编程,什么是单线程,就是说同一时间JavaScript只能执行一段代码,如果这段代码要执行很长时间,那么之后的代码只能尽情地等待它执 ...
- 浅谈javascript函数节流
浅谈javascript函数节流 什么是函数节流? 函数节流简单的来说就是不想让该函数在很短的时间内连续被调用,比如我们最常见的是窗口缩放的时候,经常会执行一些其他的操作函数,比如发一个ajax请求等 ...
- 浅谈JavaScript中的闭包
浅谈JavaScript中的闭包 在JavaScript中,闭包是指这样一个函数:它有权访问另一个函数作用域中的变量. 创建一个闭包的常用的方式:在一个函数内部创建另一个函数. 比如: functio ...
- javascript数组浅谈2
上次说了数组元素的增删,的这次说说数组的一些操作方法 join()方法: ,,] arr.join("_") //1_2_3 join方法会返回一个由数组中每个值的字符串形式拼接而 ...
随机推荐
- chorme调试Paused in debugger问题解决
最近出现的问题,使用chorme调试代码总是这个状态(Paused in debugger[debug的时候暂停了]): 一刷新就这样,非常的不舒服.当然你可以选择多按几次F8跳出,下面提供几种方式解 ...
- HDU 5912 Fraction(模拟——分子式化简求解)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5912 Problem Description Mr. Frog recently studied h ...
- vue-router自动判断左右翻页转场动画
前段时间做了一个移动端spa项目,技术基于 :vue + vue-router + vuex + mint-ui 因为使用了vue-cli脚手架的webpack模版,所有页面都以.vue为后缀的文件作 ...
- linux 下查看有当前文件夹有多少个文件
ls |wc -w
- 【Asp.net Core】在 Linux 子系统中安装 nginx 并配置反向代理
上一篇鸟文中,老周已经介绍过在 Ubuntu 子系统中安装 dotnet-sdk 的方法,本文老周给大伙伴们说说安装 nginx 服务,并配置反向代理.同样,老周假设你从来没有用过 Linux,所以老 ...
- Mysql Order By 字符串排序,mysql 字符串order by
Mysql Order By 字符串排序,mysql 字符串order by ============================== ©Copyright 蕃薯耀 2017年9月30日 http ...
- Java calendar获取月份注意事项
Calendar中月份month得取值是从0开始,到11,对应着日历中的1-12月.所以在用此取月份的话,需要在原有基础上加1.
- Go语言是我见过最简洁的语言(除了lua)
写在前面:题目就是个标题党,在这里先道歉,其次撸主学过很多语言(基本上是个语言都要上一下的那种人,但是不会太深入,只做了解,因为很多用不到),但主要使用C#语言(不过已经开始恶心C#的臃肿,不要打我) ...
- Docker部署Elasticsearch集群
http://blog.sina.com.cn/s/blog_8ea8e9d50102wwik.html Docker部署Elasticsearch集群 参考文档: https://hub.docke ...
- python_5_模块
创:5_4_2017 修: 什么是模块? --标准库+第三方库+自定义,为实现某一方面的功能集合(变量,函数,类) 如何安装第三方库? --pip install 第三方库 如何导入和使用模块? -- ...