王垠对 JS 的评价

16,677 阅读6分钟

如果你不知道王垠(垠神)是谁,可以先搜一下。

《给Java说句公道话》

很多JavaScript程序员也盲目地鄙视Java,而其实JavaScript比Python和Ruby还要差。不但具有它们的几乎所有缺点,而且缺乏一些必要的设施。JavaScript的各种“WEB框架”,层出不穷,似乎一直在推陈出新,而其实呢,全都是在黑暗里瞎蒙乱撞。JavaScript的社区以幼稚和愚昧著称。你经常发现一些非常基本的常识,被JavaScript“专家”们当成了不起的发现似的,在大会上宣讲。我看不出来JavaScript社区开那些会议,到底有什么意义,仿佛只是为了拉关系找工作。
Python凑合可以用在不重要的地方,Ruby是垃圾,JavaScript是垃圾中的垃圾。原因很简单,因为Ruby和JavaScript的设计者,其实都是一知半解的民科。然而世界就是这么奇怪,一个彻底的垃圾语言,仍然可以宣称是“程序员最好的朋友”,从而得到某些人的爱戴……

《编程的宗派》

面向对象语言不仅有自身的根本性错误,而且由于面向对象语言的设计者们常常是半路出家,没有受到过严格的语言理论和设计训练却又自命不凡,所以经常搞出另外一些奇葩的东西。比如在JavaScript里面,每个函数同时又可以作为构造函数(constructor),所以每个函数里面都隐含了一个this变量,你嵌套多层对象和函数的时候就发现没法访问外层的this,非得bind一下。 Python的变量定义和赋值不分,所以你需要访问全局变量的时候得用global关键字,后来又发现如果要访问“中间层”的变量,没有办法了,所以又加了个nonlocal关键字。Ruby先后出现过四种类似lambda的东西,每个都有自己的怪癖…… 有些人问我为什么有些语言设计成那个样子,我只能说,很多语言设计者其实根本不知道自己在干什么!

《谈语法》

在 C 这样的语言里,由于结构上有很多限制,所以才觉得那样的语法还可以。可是一旦加入 Lisp 的那些表达能力强的结构,就发现越来越难看。JavaScript(node.js)就是对此最好的一个证据。

《论对东西的崇拜》

如果你了解一点历史就会发现,今天非常流行的 JavaScript,其实不过是一个“没能正确实现的 Scheme”。

《如何掌握所有的程序语言》

合理的入门语言
所以初学者要想事半功倍,就应该从一种“合理”的,没有明显严重问题的语言出发,掌握最关键的语言特性,然后由此把这些概念应用到其它语言。哪些是合理的入门语言呢?我个人觉得这些语言都可以用来入门:Scheme、C、Java、Python、JavaScript
那么相比之下,我不推荐用哪些语言入门呢?Shell、PowerShell、AWK、Perl、PHP、Basic、Go、Rust

《我的第一次和最后一次 Hackathon 经历》

一进门就感觉这跟一般的 meetup 气氛很不一样。这大周末晚上的,清一色的爷们,没有一个女人,也没有笑声。而且里面的人说话都很奇怪,不正眼看人,有些好像怒目相向的样子,说出话来就像在查你户口。有几次有人问我是干什么的,我刚一开口,他们一句话不回,扭头就跟其他人说话去了。只有一个头发花白的大叔工程师对我挺友好的,于是我们就聊起来。旁边有个华人工程师盯着一个15寸的 Macbook,后来也聊起来,开门见山就问我用什么语言。我也忘了我说什么了,只记得他很自豪的说自己用 JavaScript,而且那是最高配置的 Macbook,是 Retina 显示器的

《程序语言的常见设计错误(2) - 试图容纳世界》

今天我来谈一下另外一种错误的倾向,这种倾向也导致了很多错误,并且继续在导致错误的产生。
今天我要说的错误倾向叫做“试图容纳世界”。这个错误导致了 Python,Ruby 和 JavaScript 等“动态语言”里面的一系列问题。

《怎样尊重一个程序员》

认识和承认计算机系统里的历史遗留糟粕 很多不尊重人现象的起源,都是因为某些人偏执的相信某种技术就是世界上最好的,每个人都必须知道,否则他就不是一个合格的程序员。这种现象在Unix(Linux)的世界尤为普遍。Unix系统的鼓吹者们(我曾经是其中之一)喜欢到处布道,告诉你其它系统的设计有多蠢,你应该遵从Unix的“哲学”。他们仿佛认为Unix就是世界终极的操作系统,然而事实却是,Unix是一个设计非常糟糕的系统。它似乎故意被设计为难学难用,容易犯错,却美其名曰“强大”,“灵活”。眼界开阔一点的程序员都知道,Unix的设计者其实基本不懂设计,他们并不是世界上最好的程序员,却有一点做得很成功,那就是他们很会制造宗教,煽动人们的盲从心理。Unix设计者把自己的设计失误推在用户身上,让用户觉得学不会或者搞错了都是自己的错。

如果你对计算机科学理解到一定程度,就会发现我们其实仍然生活在计算机的石器时代。特别是软件系统,建立在一堆历史遗留的糟糕设计之上。各种蹩脚脑残的操作系统(比如Unix,Linux),程序语言(比如C++,JavaScript,PHP,Go) ,数据库,编辑器,版本控制工具,…… 时常困扰着我们,这就是为什么你需要那么多的所谓“经验”和“知识”。然而,很多IT公司不喜欢承认这一点,他们一向以来的作风是“一切都是程序员的错!”,“作为程序员,你应该知道这些!” 这就造成了一种“皇帝的新装现象”——大家都不喜欢用一些设计恶劣的工具,却都怕别人嘲笑或者怀疑自己的能力,所以总是喜欢显示自己“会用”,“能学”,而没有人敢说它难用,敢指出设计者的失误。

我看完之后的感觉:

  1. 说得真TM对,吐槽都吐到点子上了。
  2. JS 这么垃圾,为什么垠神还推荐入门用 JS 呢。可能有些语言比 JS 还垃圾吧,哈哈。
  3. 虽然观点上有矛盾,但是牛逼的人的大脑都是能容忍矛盾的,问题不大。

为什么我要发这篇文章:

如果你不能接受 JS 的缺点,说明你不爱 JS。

我觉得王垠的文章对于开阔视野挺好的,已付费。

完。