与其说我爱Javascript,不如说我恨它。它是c语言和self语言lIQ的产物。18世纪英国文学家约翰逊博士说得好,它的优秀之处并非原创,它的原创之处并不优秀。这句话出自Javascript的创造者布兰登艾奇。
作为Javascript的发明人,为什么不为其感到骄傲而说出这样的话?因为他对Java一点兴趣也没有,只是为了应付公司安排的任务,他只用10天时间就把Javascript设计出来了。虽然设计初期存在诸多不够严谨的地方,但这并不影响它在之后成为世界上使用最为广泛的语言之一。
故事的序幕在1992年缓缓拉开,当时一家名为numbers的公司研发出了一种名为c简简的嵌入式脚本语言。它的初衷是创造一个功能强大到足以取代宏操作的脚本语言,并且与c语言保持高度的相似性,从而降低开发人员的学习门槛。
这款语言最初与一款名为CMV的共享工具一同推出,然而因为mm这个词在某种语境下听起来显得过于消极,同时字母c也被认为令人畏惧。numbers公司最终决定将CMM更名为scriptes。
随着时间的推移,numbers公司看准了当时势头正盛的Nanscape浏览器,这款浏览器在90年代的市场份额一度高达九成。于是他们为Netscape浏览器开发了一个可以嵌入网页的CNV版本,这也标志着scriptes成为了历史上首个客户端脚本语言。
在那个时代,上网冲浪刚刚兴起并日益普及,当时大多数人还依赖着速度约为28CBTS的调制解调器接入网络。随着网页内容逐渐丰富和复杂化,浏览速度开始显著下降。更糟糕的是,由于缺乏浏览器脚本语言,即便是简单的表单有效性验证也需要客户端与服务器之间频繁交互。这常常导致用户在提交表单后,经过漫长的30秒等待,却只收到一个自断无效的提示,这无疑让人倍感沮丧。
受到scriptist的启发,行业领军者Netscape公司开始深入思考,寻求一种客户端脚本语言来解决这一难题。Nanscape公司内的Brandon ad接受了这个挑战,他的任务是为即将在1995年发布的Nanscape Navigator2.0版本开发一个名为liver的脚本语言。不久后这个语言更名为Newscript,其初衷是为非专业开发人员提供一个便捷的工具,使得没有编程背景的网站设计者也能轻松使用,因此一个简单易学的弱类型动态解释语言应运而生。
Brandon后来回忆到,他从未想到当年吴昕设计的一个语言竟然会发展成为如今最流行的脚本语言,因此它也被誉为Javascript之父。
那为啥叫Javascript?在Netscape筹备开发浏览器脚本语言之际,一个关键事件悄然发生。1995年sun公司推出了重命名的0C语言,即Java并大力推广javablit的概念,这是一种能在浏览器中运行的客户端组件,与我们今天所熟知的Javascript的应用形态颇为相似。
Netscape看到了Java的潜力,决定与Sam公司合作让Java程序以EVID的形式直接在浏览器中运行,他们甚至一度考虑将Java直接迁入网页作为脚本语言。然而由于这会使html网页变得复杂运行缓慢且操作繁琐,最终这个计划被放弃。
然而当时Mascape的管理层对Java的热情不减,这也间接影响了即将诞生的脚本语言的命运。在这个关键时刻,34岁的Brandoni接下了这项重任。Netsk高层对他的要求是未来的脚本语言必须与JOVO保持一定的相似性,但要比Java更简单,以便更多人能够轻松上手。
然而Brandon对Java并无太大兴趣,如果不是公司的决策,他或许不会选择Java作为Javascript的设计原型。为了完成任务,他在短短10天内设计出了new script,他的设计理念融合了c语言的基本语法朝瓦的数据类型与内存管理,同时提升了函数的地位,并借鉴了self语言的基于原型的继承机制,这也使得Javascript成为了一个独特的结合体简化的函数式编程与简化的面向对象编程的交融。
然而Brandon本人对这个作品并不满意,他曾表示与其说我爱Javascript,不如说我恨它。它是c语言和self语言结合的产物。随后Netscape与sun公司合作完成了new script的实现。在Netscape Navigator2.0发布之前,为了获取sun的支持,并借助Java这一当时的热门词汇,Newscript更名为Javascript。这个名称仅仅是Netscape公司的一个市场决策,然而他们未曾预料到这个决策会带来如此大的负面影响。
多年来人们常常混淆Java和Javascript这两种毫不相干的语言,实际上它们仅仅是名字相似且有着一些公司层面的历史联系而已。Brandon IG对此深感遗憾,他在10年后的演讲Javascriptat ten years中京告到不要让市场营销决定你的语言名称。