怎麼看待朴靈評註阮一峰老師的最新文章這件事?

朴靈最近給阮一峰老師的新文章《JavaScript 運行機制詳解:再談Event Loop》做了評註,言辭比較直接,大家怎麼看待這件事。朴靈評註文章地址【朴靈評註】JavaScript 運行機制詳解:再談Event Loop


還是回復下這個問題。

總所周知,阮老師寫這個主題已經是第二次了。第一次還是在去年,當時看過發現一些問題(沒這次的錯誤那麼明顯),我還是提醒了文中的錯誤。這次發現阮老師重寫之後,錯誤比之前更嚴重了,因為概念凌亂,邏輯含糊。但是一如既往的,阮老師的文章轉發量巨大,叫好的人呈一面倒的形式,不少人大呼醍醐灌頂,恍然大悟,一目了然。當然這不構成我要為了圖啥,而去評註這篇文章。我也順手轉發了這篇文章,並提示細節錯誤很多。但是有同學評論我說有錯誤,不指出來很不厚道。看到這樣的評論我也只能笑笑了之,畢竟沒有那麼多的精力和時間去耗在這裡。關了微博也就當這件事情過去了。

但是第二天,我發現無論逛什麼技術站點,都能看到對這篇文章的推薦。當然也不是真的什麼技術網站都在推薦這個,反正我瞎逛就遇到了。於是趁中午的時候評註了下這篇文章。

估計有人想看到我和阮老師為此交惡。但很遺憾,並不會。當然也可以說我言辭激烈,這並不否認。但要說我有什麼想法,您真是多想了,你看我有那一句話罵人,說髒話了么。

我看過阮老師很多的文章。當年很菜逼(現在也很菜逼)的時候,也是接受了阮老師的醍醐灌頂的,也受益匪淺過。後來自己讀過的代碼多了之後,才發現過去讀過的並不一定對。這有點像從小學就開始被教育的愛《國》主義,當時完全能感受到團員的那種豪邁氣質,我以為團員就會照顧我這樣的紅領巾,呵護我們的成長。直到一致欺負我的那個同學當上團員以後,還是會一如既往的欺負我,才意識到太天真了。從驚為天人到看到他筆下的千瘡百孔,確實很讓人幻滅。所以阮老師的黑微博上其實不少。

準確的講,不能辨識阮老師文章的同學是不成熟的。對於阮老師別的文章我可能沒那麼高的辨識度,但碰巧,Node這塊代碼我確實費了兩三年的心思去了解它。當然我並沒有因為知道阮老師文章有問題的事情取關。相反,我覺得阮老師還是有很大價值的存在。

阮老師涉獵頗多,跨領域學習了很多東西。這種學習能力對於很多滿足於舒適區的人而言,是可貴的。阮老師的文章雖然真偽對錯需要辨識,但還是能帶來一些驚喜,通過他的視角總能看到一些有趣的東西。阮老師的翻譯品質很高,代表作是《黑客與畫家》,超越他的人不多。阮老師的原創則需要甄別,不可盲從。

最後,寫這篇評註出來主要是實在看不下去,看都沒看懂,對錯都分不清,瞎雞巴叫好的行為。

最後的最後,搞技術的同學還是應該要有追求,不要滿足於消費別人的總結,一定要去源頭看看。


其實阮老師確實沒有那麼挫,只是阮老師寫東西不嚴謹,朴老師給他上一課不是好事嘛。至於打抱不平的同志們,你們技術能力擺在那裡,也只配咀嚼一下別人吐出來的東西。有識別能力的當然會選擇朴老師吐出來的東西,因為他有大量的一手研究,也就是還是新鮮熱乎的呢。悲哀的是你們覺得阮老師吐出來的更香,其實阮老師本身吃的也是別人(可能包括朴老師)咀嚼過後的,你們再吃都已經二手三手了誒。當然不可否認通常阮老師吐出來的更容易消化……既新鮮又容易消化是個很高的追求,是技術傳道者(包括我)永遠的追求。


談程序,他肯定是不專業的,不過據說中文版黑客與畫家翻譯得挺好,這不是很好嗎,每個人都有自己的位置。

其實他也不是惡意,而是他就懂這麼多,然後把自己懂的東西說出來了,其中會有很多錯誤、疏漏,這都很正常,本來就只是立足業餘玩家,你認真那是你錯了。

我覺得立志當一名牛逼程序員的人即使在很短的短期內被他的博文誤導,應該也會很快跳坑出來。

而看得津津有味的業餘選手,本來也就無傷大雅了。

如果你是程序員,那最好不要看他的技術文章。

事實上,程序員不應該通過博客來學習,基礎就那 幾本書,學完就不會被這些n手資料迷惑了。

所以我覺得批註的話,言辭最好不要那麼激烈,大家互相交流切磋,也是一件好事,打來打去沒什麼意思,因為總有你不懂的東西。只要不是心懷叵測的人,沒必要言語過於刻薄。

至於runloop什麼的,寫過GUI庫的人應該都會有深刻的理解。


IT界就喜歡同一個概念翻來覆去的講。我從剛開始學編程到現在,第一次看到EventLoop就是從Win32編程開始的——那個時候還叫MessageLoop。Delphi講一次,C#講一次,Javascript講一次,node.js火了又講一次,沒完沒了啊……不就是個用來模擬Windows的APC機制的死循環嗎……


確實錯誤百出,只不過朴靈不是Linus,所以遭人詬病罷了。阮一峰以前做做翻譯,算是業餘玩家。現在加入阿里了,應該以專業的標準來要求。

隨便貼兩段Linus開罵吐槽的話大家感受一下:

https://lkml.org/lkml/2012/12/23/75

http://www.gelato.unsw.edu.au/archives/git/0506/5299.html


這個評註,有點刻薄。

在準確性和通俗性之間平衡,需要限制使用的術語數目,針對目標讀者的情況做類比說明,這是困難的工作。這是阮文的目的,也基本達到了預期的效果,如果不局限於javascript就更好了,因為阮文的目的是以js為例子說明eventloop的基礎概念,而朴的評註則是直接以javascript的實現為基礎批評其不準確。如此大的偏差,只是目的不同而已。

我當然認為準確而流暢的文章才是最好的。我期望朴的嚴厲批評能幫助阮在術語使用,基本概念的把握上更加謹慎,而不是成為口水的開始。朴的批評開了一個不好的頭,這是令人遺憾的。


搞 Web / 互聯網相關技術,總給人一種錯覺:年年都在「技術革新」、年年都有「革命性」的新東西誕生。

某種意義上說是這樣的,技術的確是在飛速發展。但從本質原理來講,其實沒多少新東西。一句話:底層(例如OS)沒有提供相關的原語(primitive),再怎麼玩兒都玩不出花兒來的。想要深刻理解那些「消息」、「事件」、「非同步」、「回調」,就去看看 OS 的書,再回過頭來想;想要理解什麼新語言的原理,先把幾大基礎語言打紮實了,了解一下 PL 的基礎知識(尤其是類型系統、內存管理),再回過頭來看看文檔甚至代碼(解釋器、編譯器的)。

基礎打好還是很有用的。君不見某些文章里扯來扯去到最後連進程和線程都分不清……這在一些直接自學「高層建築」而跳過底層的程序員中很常見。在不了解原理的情況下繞著那幾個字眼轉來轉去,絞盡腦汁去「類比」、「理解」,個人覺得意義不大。

最後,我不是前端,不是很熟悉這兩個人,但是看了那篇批註總覺得語氣太沖,沒必要吧。當然,牛人脾氣大也是很常見的。反倒是阮一峰的文章里還編輯上了這篇評註的鏈接,感覺挺大度的。


評註得不錯啊,阮一峰的原文的確一塌糊塗。不知道你想問的到底是什麼,多單純的技術問題,什麼叫做應該怎麼看待?


我認為技術圈應該有這樣的氛圍:

不應該偶像式的崇拜某一個技術大牛,當然可以敬佩他。但是更多的是敢於把自己放在一個交流者的角度來溝通,技術不行不可怕,可怕的是不敢去向大牛靠近。其實每一個大牛也都曾經是一個菜鳥,而每一個菜鳥都有機會成為大牛。

不應該因為別人的任何一個觀點和錯誤而貶低他人,無論對方是菜鳥還是大牛。當然可以針對自己和對方不同的觀點據理力爭,但是請不要升級為撕B大戰,尤其是在當前社交網路流行,很多交流缺少情感色彩,容易產生誤解。激烈的爭論對於技術圈子是好事,但是打擊詆毀一個人沒有任何好處。

以上兩條是對於他人的態度,同樣對於自己也應該有所約束,否則何以讓別人以禮相待。對自己,不應該恃才自傲,更不應該嘩眾取寵。腳踏實地的基礎上不怕試錯,勇於分享,敢於認錯。無論是大牛還是菜鳥,作為互聯網的從業者,真誠分享才是共同進步的源泉!

所以,我個人認為這樣去評論並指出他人的錯誤是好事,只要不要煽動攻擊個人,完全以技術分享的角度去討論問題。另外其實我更希望這是像我這樣的菜鳥去指出的錯誤,但是並不是,我們不應該只是去接受他人的分享,更應該去參與並回饋,所以以此回答與諸君共勉。


你是想當技術圈的孔乙己天天吹毛求疵呢,還是想學點真本事,有點真技能?

同步和非同步,用Loupe直觀地理解Javascript運行時


現在的阮老師,一如當年的譚教授。

在某個時段,我們向之汲取,即使所得並不完美。

之後,有的人在這條路上越走越遠。

然後,開始反駁那些不完美。因為此時的他們,需要告訴更多的人,隨著時間的推移,你們應該去汲取更為完美正確的東西。同時也在告訴自己,我已經走的更遠了。

至於言辭是否激烈?哦,我覺得訓斥譚教授的人,言辭要激烈的多。


其實朴靈吐槽最多(也最合理)的還是作者對於非同步的理解,經常看到有人說「JavaScript非同步好難理解」,「學Node最大的難點是非同步」之類的,我只想問:你們還記得操作系統老師長什麼樣兒嗎?

可以看出阮老師不清楚好多基本概念,補補操作系統和計算機組成就行了,不是啥大事。


朴靈太較真了,阮老師的這篇文章的主要受眾群體是哪些人?——大部分應該都是前端或者初學者——他們的特別就是無需那麼較真的了解原理和後台。沒必要那麼咬文嚼字。

另外,我一直覺得,雞蛋裡挑骨頭容易,但是做出一個帶骨頭的雞蛋不容易


很正常。對於這類要給很多人看的技術問題,如果我說錯了,別人來指出,我高興還來不及呢。即使做不到「聞過則喜」,做到「知錯能改」也該是最基本的吧?


朴靈老師的這篇批註是要支持的。

老實說,年初的時候因為在學習Node的非同步機制時,有深入考慮過EventLoop這個概念,礙於當時認識有限,而相關的剖析文章又有限所以導致了想的太多太亂最後直接就想岔了,但後來在和朴老師郵件交流時,他也指出了我的問題,執行引擎和運行時調用機制不是一回事。

而後來也就順著思路研究了一些非同步的I/O概念(e.g:epoll/Kqueue)和非同步模型(Reactor/Actor/CSP),看了些別的語言的非同步框架實現,此時才真正的、大概的搞清楚了Node的一整套機制。

阮一峰老師固然是前輩,但考慮到如今他在業內的影響力,朴靈也確實不得不作為從業人員及時指正其中的錯誤,以免未來許多學習阮老師博客的人對JS有認識偏差,免得後來者從一開始就掉進一個坑裡,以至於阻礙後續的有關JS的學習,而JS天生自帶坑的屬性已經讓人無法直視了。


大家都再說朴靈的言辭有點激動的問題,我個人覺得可以理解的。大家應該都有過這樣的情況:看到別人代碼中的低級錯誤的時候,會在心裡默默的罵上一句傻X。因為在你看來這都是些什麼亂七八糟的東西。

在這裡朴靈只不過是把這句話說出來給大家看了而已。而且遠沒有傻X二字來得兇殘吧。

希望諸位更專註於他們所言的技術,而不是在旁邊像個潑婦一樣打口水仗。

阮一峰的博客我也看過,學習過,在此說一句感謝,感謝互聯網上這些分享的人們。


給大家講個故事:

有位老師要教一幫老外寫「與」 這個漢字,老師教到:「就是5加一個減號」,好熟悉啊!老外紛紛表示通俗易懂,醍醐灌頂,會寫了!

這時有人糾正到:這個5跟「與」半毛錢關係都沒有,純粹扯淡,5個屁!「與」字的核心是「豎折彎鉤」這個漢字筆畫結構,這教書的簡直誤人子弟!

老外陷入沉思,這麼複雜,貌似這位大神是對的,紛紛表示,大神,能不能出個我們能看懂的教程?

截至目前,大神表示時間精力有限。


疑義相與析。技術需要不同角度、不同風格的方式表達出來,因為受眾也是不同角度不同風格的讀者。親民的和學術的都各有各的市場需求,但一般來說,親民的會更受人喜歡,就像很多人不喜歡看歷史教科書但喜歡聽袁騰飛講歷史段子,不喜歡聽帕瓦羅蒂但喜歡聽鳳凰傳奇一樣,何必過多苛責?古人說「盡信書不如無書」,對錯交給讀者自己去辨析,多看幾個人的觀點,然後自己得出一個結論。如果真就工工整整像堆字典似的寫文章,真能給讀者帶來最大的收穫?有多少人看完之後說一聲「不明覺厲」然後忘個一乾二淨?

多點寬容,我覺得挺好的。


作為愛好者兩篇都看了,朴老師的看的基本明白,阮老師的看的一頭霧水。從js的角度來說一定是朴靈的理解更深入一些,但是阮老師的博客我之前一直看,很多解釋對我這種小白來說是很有幫助的,尤其是大牛們一般不說小白問題,阮老師說了,還說得很細緻,這對於入門級的人來說是很感激的,網上這樣的文章太少了。

朴靈要是把激烈的言辭去掉,真誠的和阮老師交流就好了,你這樣做太不給阮老師面子了,畢竟在其他方面你們也有交流的可能,何必鬧得這麼僵呢,只要把什麼屁啊,毛啊去掉,就完全是一篇好文章,可惜了


不就是io復用+任務隊列+函數指針做為回調函數嗎?搞的這麼複雜 你們大學沒學過。net嗎?大驚小怪


推薦閱讀:

尼克斯球員克利安東尼 · 厄利遭槍擊事件有哪些影響?
如何評價:我國加強治安防控體系建設 將建公民信息一卡通?
如何看待內蒙一檢查站遇襲或因兩地方政府爭地?
如何評價男子打罵患病(阿茲海默病)的父親讓其吃老鼠藥去死?長期照顧病人是一種什麼體驗?

TAG:前端開發 | JavaScript | 前端工程師 | 阮一峰人物 | 如何看待評價X |