王垠對 JS 的評價

方應杭在飢人谷發表於2019-01-14

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

《給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。

我覺得王垠的文章對於開闊視野挺好的,已付費。

王垠對 JS 的評價

完。

相關文章