王垠對 JS 的評價

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

王垠對 JS 的評價

《給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公司不喜歡承認這一點,他們一向以來的作風是“一切都是程序員的錯!”,“作為程序員,你應該知道這些!” 這就造成了一種“皇帝的新裝現象”——大家都不喜歡用一些設計惡劣的工具,卻都怕別人嘲笑或者懷疑自己的能力,所以總是喜歡顯示自己“會用”,“能學”,而沒有人敢說它難用,敢指出設計者的失誤。

我看完之後的感覺:

說得真TM對,吐槽都吐到點子上了。JS 這麼垃圾,為什麼垠神還推薦入門用 JS 呢。可能有些語言比 JS 還垃圾吧,哈哈。雖然觀點上有矛盾,但是牛逼的人的大腦都是能容忍矛盾的,問題不大。

為什麼我要發這篇文章:

如果你不能接受 JS 的缺點,說明你不愛 JS。


分享到:


相關文章: