博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Javascript诞生记:C语言和Self语言X的产物
阅读量:6300 次
发布时间:2019-06-22

本文共 1789 字,大约阅读时间需要 5 分钟。

 

补充:

 

(1)阮一峰老师的文章(包括其大量译文)通俗易懂,语言准确,属于那种人见人爱类型,非常受业界同学欢迎,谢谢阮老师的奉献;

 

(2)前几日,看过一篇文章是有关“骂”JavaScript的。看后深有同感,也想“骂”一通,但是本人本事有限,“泼”不起来。记得其中一句于我最有同感“JavaScript是一门糟糕的面向对象语言”。我坚信,任何一位JavaScript熟手,都不会推荐JavaScript作为程序员的入门级学习语言,或者几乎每一位编程者,包括前端最基础级设计人员,都了解一些JS编程。如果你想踏进程序员的殿堂,你可以首先学习VB,C(甚至是C++,但前期一般先要掌握C),Java,C#,或者是Python。

 

(3)如今的互联网技术发展之快出乎你我的想像,短期内JavaScript成了炙手可热的语言。但是,想系统学习JS,特别是服务器端开发,不了解JS历史,你会有所遗憾。本引文正是想补缺你的这一遗憾!

 

(4)阅读完本文,如果你还想更深一些了解JS编程风格,你可以看看百度文库中的有关Scheme和Self这两种语言的更全面的描述。

 

二周前,我谈了一点Javascript的历史。

只有了解这段历史,才能明白Javascript为什么是现在的样子。我

“1994年,网景公司(Netscape)发布了Navigator浏览器0.9版。这是历史上第一个比较成熟的网络浏览器,轰动一时。但是,这个版本的浏览器只能用来浏览,不具备与访问者互动的能力。……网景公司急需一种网页脚本语言,使得浏览器可以与网页互动。”

这两个选择各有利弊。第一个选择,有利于充分利用现有代码和程序员资源,推广起来比较容易;第二个选择,有利于开发出完全适用的语言,实现起来比较容易。

3.

Sun公司大肆宣传,许诺这种语言可以”一次编写,到处运行”(Write Once, Run Anywhere),它看上去很可能成为未来的主宰。

总之,当时的形势就是,网景公司的整个管理层,都是Java语言的信徒,Sun公司完全介入网页脚本语言的决策。因此,Javascript后来就是网景和Sun两家公司一起携手推向市场的,这种语言被命名为”Java+script”并不是偶然的。

此时,34岁的系统程序员Brendan Eich登场了。1995年4月,网景公司录用了他。

仅仅一个月之后,1995年5月,网景公司做出决策,未来的网页脚本语言必须”看上去与Java足够相似”,但是比Java简单,使得非专业的网页作者也能很快上手。这个决策实际上将Perl、Python、Tcl、Scheme等非面向对象编程的语言都排除在外了。

5.

由于设计时间太短,语言的一些细节考虑得不够严谨,导致后来很长一段时间,Javascript写出来的程序混乱不堪。如果Brendan Eich预见到,未来这种语言会成为互联网第一大语言,全世界有几百万学习者,他会不会多花一点时间呢?

(1)借鉴C语言的基本语法;

(3)借鉴Scheme语言,将函数提升到”第一等公民”(first class)的地位;

所以,Javascript语言实际上是两种语言风格的混合产物 —-(简化的)函数式编程+(简化的)面向对象编程。这是由Brendan Eich(函数式编程)与网景公司(面向对象编程)共同决定的。

多年以后,Brendan Eich还是看不起Java。

“Java(对Javascript)的影响,主要是把数据分成基本类型(primitive)和对象类型(object)两种,比如字符串和字符串对象,以及引入了Y2K问题。这真是不幸啊。”

 

var Date(1999,0,1);

 

alert(year1); date2 = var // 100

如果不是公司的决策,Brendan Eich绝不可能把Java作为Javascript设计的原型。作为设计者,他一点也不喜欢自己的这个作品:

 

 与其说我爱Javascript,不如说我恨它。它是C语言和Self语言X的产物。十八世纪英国文学家约翰逊博士说得好:’它的优秀之处并非原创,它的原创之处并不优秀。’(the part that is good is not original, and the part that is original is not good.)”

转载地址:http://dmrta.baihongyu.com/

你可能感兴趣的文章
embedded linux学习中几个需要明确的概念
查看>>
mysql常用语法
查看>>
Morris ajax
查看>>
【Docker学习笔记(四)】通过Nginx镜像快速搭建静态网站
查看>>
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
查看>>
<转>云主机配置OpenStack使用spice的方法
查看>>
java jvm GC 各个区内存参数设置
查看>>
[使用帮助] PHPCMS V9内容模块PC标签调用说明
查看>>
基于RBAC权限管理
查看>>
数学公式的英语读法
查看>>
留德十年
查看>>
迷人的卡耐基说话术
查看>>
PHP导出table为xls出现乱码解决方法
查看>>
PHP问题 —— 丢失SESSION
查看>>
Java中Object类的equals()和hashCode()方法深入解析
查看>>
数据库
查看>>
dojo.mixin(混合进)、dojo.extend、dojo.declare
查看>>
Python 数据类型
查看>>
iOS--环信集成并修改头像和昵称(需要自己的服务器)
查看>>
PHP版微信权限验证配置,音频文件下载,FFmpeg转码,上传OSS和删除转存服务器本地文件...
查看>>