这段时间在外地出差,没有写什么干货奉献给诸位。倒是应邀发起了一个项目,其中有一部分是写一些技术主题的文章,主张是对初学者友好,但对不求甚解者无爱,所以要求文章的起点要低,分析要透,但含金量要保证。
于是我起了个头,先写了一篇:http://very-geek.github.io/javascript/formal-javascript-1.html
但是写完之后就觉得不爽,过去行文一直都很方正,这次很想跳出那个框框,挑战一下自己。于是重新构思了一下进行改写。
改写的过程倒是蛮顺利的,但就是感觉有点收不住了,也不知道是自己驾驭不好还是太过于追求些变化的缘故。于是写到一般的时候感觉自然而然收住了,心里不太有底,不知道这样的文章到底接受度如何,索性把已经改完的部分放出来给大家评定评定,收集点意见反馈什么的,有空的不妨一看。
nightire(以下简称 n):嗨,大家好!我是太极客(Very Geek,以下简称 VG)的 [nightire][nightire],非常高兴在“对话”节目中和大家见面并为大家担任本期节目的主持。
今天是“对话”的试播集,我们将从一些轻松的话题聊起。先介绍一下参加试播集的两位重量级嘉宾——他们来自于赫赫有名的艾柯玛·斯科瑞普特(即 ECMAScript)家族,分别是艾柯玛·斯科瑞普特三世(即 ECMAScript 3,以下简称 ES3)和艾柯玛·斯科瑞普特五世(即 ECMAScript 5,以下简称 ES5)——有请两位,欢迎!
(啪啪啪的掌声中,俩二货闪着光登场,落座……)
n:两位好。
ES5:主持人您好!
ES3:> Uncaught Exception...
n:……
ES3:Whoops...(换引擎中……)OK,搞定了!哈哈~主持人好,各位亲爱的朋友们,大家好啊,哥想死你们啦!
n:(汗~)呃,三哥你一登场就出状况啊,这里的环境还适应吗?
ES3:小 case!对于程序员来说,这点问题算个什么啊!(面向观众)你们说是不是啊?
(观众大笑)
n:好吧,言归正传。因为今天呢是试播集,主要的目的是让大家熟悉我们节目的风格和气氛,所以我们也不打算探讨过于深奥的技术主题,让我们先从几个小问题开始吧?
ES3 & ES5: OK!
n:说到 ECMAScript 家族,那可真是如雷贯耳,特别是近几年风头正盛,光彩照人。不过对于绝大多数开发者来说,还是 JavaScript 这个名字更加亲切熟悉一些,不知道二位对此有何看法,或者说你们家族内部更喜欢哪一种称呼呢?
ES5:只有一个 ECMAScript,我们和 Java 没有一毛钱关系!
ES3:啊哈哈,我家五弟向来就是这样啦,请大家包含则个~不过说起来呢也没错,这段历史真是错综复杂,令人不胜唏嘘啊……(做沧桑状)
n:那……可以请三哥给大家伙儿讲讲吗?
ES3:呃,这个嘛,总之……哎呀,其实我历史一直学得不好啦!但是这也不能全怪我,祖上那些个破事实在是太纠结了,这些年我一直专注于处理各种兼容性问题,哪儿有时间温习历史呢你说是不是?不过如果大家真的对我们家族的历史感兴趣的话,不妨去维基百科看看吧,上面已经整理的八九不离十了。一定要我说的话,那我就捡些边角料,大家伙儿凑合凑合吧!
n:嗯嗯,请继续!(八卦之火熊熊燃烧)
ES5:三哥……
ES3:停!我知道你又想说临出门时家里老头子交代过让你管住我的嘴是吧?你放心吧,三哥啥大风大浪没见过?就这点小玩意儿想从我嘴里套话?DO DREAM!!!
n:^^
ES3:接下来的话我不负责任的啊,剪辑的时候把我们脸挡住……据我奶奶的奶奶的奶奶说(有这么久嘛?!),祖上也就是一种田的,毫无名气。直到 1995 年 5 月,一个叫 [Brendan Eich][brendan_eich] 的货成功的把我家老祖宗忽悠出山给他做实验室小白鼠了。据说整个过程只用了这货十天时间,上帝保佑——超级大忽悠!
n: 就是那个在 Mozilla 工作的 Brendan Eich 大神吧?
ES5:对,就是这货!直到现在见了面还让我们管他叫干爹来着,我就呸!
ES3:主持人!这段你一定帮我们掐掉!
ES5:你就胆儿小吧!刚才正好说到了 Mozilla,就不得不提起另外一个人:Marc Andreessen。Brendan 把老祖宗带去 Netscape 的时候,这货正在喝咖啡,以下是他们二人的对话,不负责任转载啊。
“Brendan,这就是你带来的家伙?”
“没错,伙计,就是他了!”
“看起来真心很一般嘛!”
“可别这么说,穷乡僻壤的,能找到一个说话还算利索的已经很不容易了……”
“唔,这倒也是,辛苦了。喂,新来的你叫什么名字?”
“……”
“Brendan,他怎么回事?你不是说他说话还算利索吗?”
“我是这么说过,不过他们那儿不流行起名字,他的尊号恐怕是羞于启齿吧?”
“啊!这可不行!我们干的是大事情,大事情,你懂吗?干大事情的人就得有个体面的,响亮的名字!”
“好吧好吧,这个你说了算。”
“我做主吗?让我想想……嗯,今天的咖啡真不错——对了,就叫他 Mocha 吧,怎么样?”
“就这么定了!”
n:这么说,最开始既不叫艾柯玛,也不叫爪哇,而是叫摩卡对吗?
ES3:对的。事实上刚听到这个名字时感觉还不错,若不是后来我知道了名字的来历,我对 Marc 那家伙也不会有什么意见。但是你们这群号称本星球最牛叉的生物,打着“二逼与智慧并存”旗号的程序员们,其实就是一群吃货有没有!!!看看你们起的那些个名字吧,有多少是不能吃的或者喝的?
(ES5 把头深深埋进了裤裆里……)
n:那个……五弟,你对此怎么看?
ES5:呃,我倒不反对起的名字和吃的有关,听起来即可爱又亲切……
ES3:那是因为你也是个吃货!
ES5:……
n:那后来发生了什么?爪哇和艾柯玛是怎么和你们家族扯上关系的?
ES5:其实也还是 1995 年的事情,Mocha 这个名字几乎没怎么对外宣称过。大家也都清楚,那个年代 Java 是多么的受欢迎。顺带一提,我不讨厌 Java 语言,我讨厌的只是那些自称 Java 拥趸们浮夸的行事作风,仗着跨平台的虚拟机所带来的优势,他们什么领域都想插一脚,这也太没节操了!
n:其实这几年 Node.js 在服务器端编程也挺火的……
ES5:只有一个 ECMAScript!让我再重申一遍!
n:OKOKOK,请继续——
ES5:那时候 Netscape 的目标在于占领浏览器市场,Marc Andreessen 试图为他的浏览器引入更多更强大的特性来吸引开发者和终端用户。历史总是睿智的,事实证明 JVM 也不是无所不能,至少在浏览器这个领域,当年的 Java Applet 就像个笑话,这东西没法和浏览器很好地协同工作。所以我们老祖宗一开始是作为一种补充出现在浏览器领域的,可能是仓促了些,但是谁知道呢?瞧瞧今天吧,在 Web 的世界里,我们才是王者!至于名字?在 Mocha 之后,短暂的改成了 LiveScript——其实我更喜欢这个!但在当时,形势比人强,为了抱上 Java 的大腿,于是很快更名为 JavaScript……呕~~~每每想到这一点,我就无法自制的想吐来着……抱歉,失态了!
n:呃,请休息一下吧。三哥,看起来你的情绪已经恢复正常了,请继续往下补充吧。
ES3:呵呵,不好意思让大家笑话了。在我们家族里,我是出了名了脾气暴 + 脸皮厚,我五弟则正好和我相反,不过我们的关系很不错哦,而且我们都是很好很好的人儿,大家可以放心的。我家祖上为人比较低调,但其实是很有真才实干的,没多久就被 ECMA 吸收为永久正式成员了,时间大概是在 1997 年。也就是从那时候开始,我们有了自己的家族称号:ECMAScript。各位,虽然比起 ISO 来,ECMA 作为一个标准化组织名气略逊一筹,不过 ECMA 可是专门为计算机行当设定标准的官方机构哦!这世界上有多少脚本(Script)语言?相信诸位都数不清楚,但唯有我们家族是用 ECMA 冠名的,头牌!知道不?
n:那么请问五弟,今天看来 JavaScript 和 ECMAScript 到底有什么区别呢?
ES5:Good Question!很多程序员对此都不甚了了,但其实这个问题很重要,它决定着你是否能写出兼容 ECMAScript 标准的代码。说起来,差别还是蛮多的,不过最重要的一点就在于平台的纯粹性,或者说执行环境的纯粹性。如前所述,JavaScript 的命名是在生存在浏览器平台下的一个抉择,实际上浏览器这个生态环境是很复杂的,不仅仅有脚本语言——比如我们,还有基于对象的文档模型,也就是 DOM,另外还有编写文档用的标记语言——HTML,以及负责文档样式呈现的 CSS,等等。ECMAScript 在其中扮演着一个交互指挥员的角色,我们可以通过 DOM 提供的接口来操作 HTML,当然也可以操作 CSS 以及其他一些成员。因为大家认识我们是从浏览器开始的,所以很容易就把属于 DOM 家族的成员也视作是我们家族的一份子。虽说我们几家关系很亲近啦,但是血统终究是不一样滴~因此 JavaScript 更多地被用来笼统的称呼我们这几个家族在浏览器内所构成的生态环境,但 ECMAScript 则比较纯粹,是排它的,仅仅代表我们家族承认的,拥有相同血统的成员们。
ES3:说到这我不吐槽就不行了!乡亲们啊!多少年了!你们知道多少年了吗?我一直背负着 JavaScript 那恶心的兼容性所带来的一系列骂名!但是天可怜见啊!有些事情真的不是我的错啊有没有!!!一说起 JavaScript,你们就把矛头指向了我,可其实我真正能代表的,能负责的仅仅是其中的一部分而已哟!我们家族早在 1999 年就选举我作为现任族长,正式的语言标准摆在 ECMA 总部的案头都落了千层灰了有没有!!!可是浏览器的制造商们老是不按套路出牌,天地良心我为了这些破事上上下下,前前后后,求爷爷告奶奶协调了一万万遍了有没有!!!这能都怪到我头上吗?知不知道我夜夜失眠啊?知不知道我抑郁症晚期啊?你们这些程序员呀,就是 Too young, Too simple, Somtimes naive!!!
(观众狂嘘)
n:三哥三哥,请冷静,冷静!休息一会儿,休息一会儿,好吧?
ES5:(抹着泪)主持人,你也别生气,我三哥心里委屈啊!这些年他的确承担了太多太多了,这些苦别人不知道我知道。我四哥死得早,我年龄又小,之前家里的那些老人为了下一任家主的养成计划争执不休,三哥顶着重重压力硬是支撑着家族十几年。在我们面前,他从来都是一副大大咧咧,天不怕地不怕的样子,但是我们都注意到他的皱纹,他的白发,他那日渐伛偻不再挺拔的脊梁……哇~
n:呃……观众朋友们,实在抱歉,我也不想搞得跟央视艺术人生似的动不动就一哭二闹三上吊,可实在是预料不到啊!看来,每一个成功的伟大人生的背后都有着不堪回首的奋斗史,了解历史,回顾历史,以史为鉴也正是我们节目希望传达的价值之一。鉴于两位嘉宾现在深陷回忆,情绪失控,我们先休息一下,插播一段广告。请锁定太极客访谈节目,广告之后立刻回来!