关于JavaScript的诞生
-
何为JavaScript
如果以非常正式的口吻来介绍JavaScript,请允许我引用大家所熟知的wiki
JavaScript是一种高级的、解释型的编程语言。JavaScript是一门基于原型、头等函数的语言,是一门多范式的语言,它支持面向对象程序设计,指令式编程,以及函数式编程。它已经由ECMA通过ECMAScript实现语言的标准化。它被世界上的绝大多数网站所使用,也被世界主流浏览器支持。
JavaScript与Java在名字或语法上都有很多相似性,但这两门编程语言从设计之初就有很大的不同,JavaScript的语言设计主要受到了Self(一种基于原型的编程语言)和Scheme(一种函数式编程语言)的影响。在语法结构上它又与C语言有很多相似。
-
JavaScript诞生轶事
1994年,网景公司(Netscape)推出的Navigator浏览器广泛收割了当时的互联网市场。但当时网景已经预料到web的时代会更加动态多彩,仅仅能够完成「浏览」目的的Navigator并不具备与访客进行互动的能力。
“ 公司的创始人Marc Andreessen认为HTML需要一种「胶水语言」,让网页设计师和兼职程序员可以很容易地使用它来组装图片和插件之类的组件,且代码可以直接编写在网页标记中。”
1995年,正值Java来势汹汹风头正盛地向市场推出。Netscape与发行Java的Sun公司之前已达成合作,不仅在Navigator浏览器中支持Java以小程序的方式运行,更力排众议决定发明一种在语法上要与Java相似,但是要比Java简单,使网页设计师或者非专业人士也能迅速上手的网页脚本语言。
合作、结盟、搭上Java顺风车也罢,这个看起来有些像「蹭热度」的烫手山芋扔到了Brendan Eich手中。
但Brendan Eich本就「志不在此」,就像时至今日我们还在高喊「xxx是最好的语言!」找乐子一样,他根本就不是Java的「门徒」,对于公司决策的要求,也只能硬着头皮冲锋——
所以诞生了JavaScript。“Javascript语言实际上是两种语言风格的混合产物----(简化的)函数式编程+(简化的)面向对象编程。这是由Brendan Eich(函数式编程)与网景公司(面向对象编程)共同决定的。” [1]
顺带一提,同样是在1995年,这位大神创造出JavaScript的原型设计仅仅用了10天。
除了感叹他确实niubility,是不是还有一种打工人烧高香早死早超生的感觉在呢……🤔
关于JavaScript的「争论」
-
「争论」的原因
好了我们现在知道,JavaScript实际上是这么诞生的,作为一门使用Prototype继承模型的语言,它确实很奇特,设计者也不会想到它一经推出就大受欢迎,甚至到现在,至今,还有无数程序员一头扎进这个灵活得有些过分的语言里。
这样仓促的诞生一定是伴随着争议与缺陷的,在阮一峰老师的这篇文章里说的很详尽,包括但不限于:
为什么JavaScript有设计缺陷?
- 设计阶段过于仓促
- 没有先例
- 过早的标准化
Javascript的10个设计缺陷
- 不适合开发大型程序
- 非常小的标准库
- null和undefined
- 全局变量难以控制
- 自动插入行尾分号
- 加号运算符
- NaN
- 数组和对象的区分
- == 和 ===
- 基本类型的包装对象
如果感兴趣的话,希望拜读一下这篇文章,在此我没有特殊的展开,这一部分话笔者会放到下面来讲。
-
一些拙见
首先,我使用JavaScript这门语言的时间还不算长,并不能武断地讲清它具体哪里好哪里不好,因此读完这些文章后,有一部分可以感受到的,会默说一声确实,而别的部分,还需要更加细致入微的掌握
踩坑以后才能说得清道得明,如果未来有这样的问题,笔者也会偷摸写篇blog给大家看。还有一点,其实文章中有些「缺陷」或者说「争议」,在我看来倒不如说是JavaScript灵活的体现。比如 + 运算符,在我的脑回路里,这点倒是分得明白。而对基本类型的包装对象类型,正如文章下的评论所说,确实某种意义上也体现了JS的严谨。但无可厚非,阮一峰老师文章写得十分中肯。
规避缺陷是可行的,每种语言都有「错综复杂」的陷阱和坑
甚至有的不知道比JavaScript多到哪里去了,函数式prototype的编程方法也确实让JavaScript更强大,现在随着最新标准迭代,各类库层出不穷,JS足以变得使人“哇塞”。我较为详细的看了blog下的评论,「百家争鸣」,也顺着给出的链接去拜读了一下Brendan Eich的自述,确实充满了自黑的幽默口吻,他说他不爱JavaScript,甚至恨它😆。
最后,冒昧的使用了Lisces的评论作为结尾,有些说出了我的心中所想。
◎ Lisces评论于阮一峰博客