帝归 2010年11月15日 星期一 15:18 | 2132次浏览 | 4条评论
曾经有一个
犀牛书里开头就提到,“Javascript的核心语言与C、C++和Java相似”,“Javascript在许多领域都从Perl中取得灵感”。言下之意,JS似乎是这几种语言的后代。但是深入看来,却感觉到完全不是这回事。JS其实完全是另一种诡异的语言的化身。
众所周知,JS很容易出现错误。即使是经验丰富的C程序员,也会被JS搞得一头雾水,只能在注释里默默fuck以表不爽。JS不是继承了C语言的特点么?为什么却跟C语言如此不同?赋值、函数、对象、返回值,这些特点明明就是C/C++/Java的风格啊。答案很简单,JS只是披上了一层C语言的外衣,它其实是一门完全不同的语言。
那JS到底是哪一种语言的后裔呢?
首先看看JS的众多特点:解释语言、变量是松散类型、自动垃圾回收。你有没有一点思路了?如果没有,我们再来看这个——函数闭包。无论是C、C++还是Java,函数,或者方法,都是作为语言的特性而存在。但是在JS中,函数可以是被操作的对象,而闭包更是从严格的数学概念而来,这是一个高级而又自然的概念。
如果你到现在还没有头绪,那也不奇怪。因为有些东西不是被所有人所理解的,特别是那些神秘却拥有巨大力量的东西。不过年纪稍长一点的程序员可能会得出结果了:Lisp。
年轻一点的程序员可能都不太了解这门古老而又神秘的编程语言了吧,或许只有我这种性格诡异的宅男才会探究这些被灰尘掩盖已久的东西。用任何溢美之词来形容Lisp都不过分,但是有四个字却可以很好的道出Lisp的特点:屠龙之技。
可惜的是,世界上没有龙。也不知道 Richard Gabriel说出 Worse is Better的时候,心里是什么想法。Lisp有无数优美而深刻的特点,被后来的各种编程语言所借鉴,但是Lisp本身却一直却隐藏在世界的背后。可能还有MIT这些大学在教授Lisp,也可能还有一些公司在“偷偷地”使用者Lisp。不过这屠龙之技,毕竟是不能用来杀猪杀牛的。:D
所以,如果你在使用JS的时候,心里想着的是C/C++/Java,你又如何能不犯错呢?这可是屠龙之技的一个特殊版本呢!
Zeuux © 2024
京ICP备05028076号
回复 史荣久 2010年11月18日 星期四 22:31
回复 帝归 2010年11月19日 星期五 12:30
回复 史荣久 2010年11月19日 星期五 13:03
回复 帝归 2010年11月19日 星期五 13:38