精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

王垠:關于編程語言的思考

開發 開發工具 后端
之前寫了那么多 Haskell 的不好的地方,卻沒有提到它好的地方。其實我必須承認,我從 Haskell 身上學到了非常重要的東西,那就是對于“類型”的思考。雖然 Haskell 的類型系統有過于強烈的約束性,從一種“哲學”的角度看感覺“不自然”,但如果一個程序員從來沒學過 Haskell,那么他的腦子里就會缺少一種重要的東西。

之前寫了那么多 Haskell 的不好的地方,卻沒有提到它好的地方。其實我必須承認,我從 Haskell 身上學到了非常重要的東西,那就是對于“類型”的思考。雖然 Haskell 的類型系統有過于強烈的約束性,從一種“哲學”的角度看感覺“不自然”,但如果一個程序員從來沒學過 Haskell,那么他的腦子里就會缺少一種重要的東西。這種東西很難從除 Haskell,ML,Coq,Agda 以外的其它語言身上學到。

Haskell 教會我的東西

一個沒有學過 Haskell 的 Scheme 程序員,最容易犯的一個錯誤就是,把除 #f(Scheme 的邏輯“假”) 以外的任何值都作為 #t(Scheme 的邏輯“真”)。很多人認為這是 Scheme 的一個“特性”,可是殊不知這其實是 Scheme 的極少數缺點之一。如果你了解 Lisp 的歷史,就會發現在最早的時候,Lisp 把 nil(空鏈表)這個值作為“假”來使用,而把 nil 意外的其它值都當成“真”。這帶來了邏輯思維的混亂。

Scheme 對 Lisp 的這種混亂做法采取了一定的改進,所以在 Scheme 里面,空鏈表 '() 和邏輯“假”值 #f 被劃分開來。這是很顯然的事情,一個是鏈表,一個是 bool,怎么能混為一談。Lisp 的這個錯誤影響到了很多其它的語言,比如 C 語言。C 語言把 0 作為“假”,而把不是 0 的值全都作為“真”。所以你就看到有些自作聰明的 C 程序員寫出這樣的代碼:

  1. int i = 0;  
  2. ...  
  3. ...  
  4. if (i++) { ...} 

Scheme 停止把 nil 作為“假”,卻仍然把不是 #f 的值全都作為“真”。Scheme 的崇拜者一般都告訴你,這樣做的好處是,你可以使用

  1. (or x y z ...) 

這樣的表達式,如果其中有一個不是 #f,那么這個表達式會直接返回它實際的值,而不只是 #t。

然而他們沒有看到的是,其實這個表達式所要達到的“目的”,其實有更加簡單而直接的方法,而不需要把非 #f 的值都作為“真”。你只需要定義一個函數:

  1. (define orf  
  2.   (lambda (ls)  
  3.     (cond  
  4.       [(null? ls) #f]  
  5.       [else 
  6.        (let ([v (car ls)])  
  7.          (if (not (eq? v #f))  
  8.              v  
  9.              (orf (cdr ls))))]))) 

之后你就可以這樣調用它:(orf '(#f #f 0 #f "foo"))。這會在遇到 0 的時候返回它,因為0是這個鏈表里第一個不是 #f 的值。如果鏈表里全都是 #f 它就返回 #f。

這比起 Scheme 的 or 來,不但效率一樣,而且還有一個好處。那就是這個 orf 是一個函數,而 or 是一個宏。所以你沒法把 or 作為參數傳遞給另一個函數。你沒法使用像 (map or ...) 這樣的寫法。而這個 orf 由于是一個函數,所以可以被作為值,任意的傳遞給另一個函數。

Haskell 的類型系統,就是幫助你嚴密的思考關于類型的問題的。可是 Haskell 做得過分了一點,由于對類型推導,一階邏輯和 category theory 等理論的盲目崇拜,Haskell 里面存在很多不必要的復雜性。各種各樣的類型推導我寫過不下十個,其中有一些比 Haskell 強大很多。我設計了自己的類型系統。category theory 其實不是什么有用的東西。很多數學家把它叫做“abstract nonsense”,就是說它太“通用”了,以至于相當于什么都沒說。我曾經在一個晚上看完了整本的 category theory 教材,發現里面的內容我其實通過自己的動手操作(實現編譯器,設計類型系統和靜態分析等等),早就明白了。

所以我不想再使用 Haskell,我對它的程序員的“天才態度”也感到厭倦,然而我的腦子里卻留下了它教會我的東西。對 Haskell 的理解,讓我成為了一個更好的 Scheme 程序員,更好的 Java 程序員,更好的 C++ 程序員,甚至更好的 shell 腳本程序員。我能夠在任何語言里再現 Haskell 的編程方式的精髓。然而讓我繼續用 Haskell ,卻就像是讓我坐牢一樣。本來很簡單的事情,到 Haskell 里面就變成這樣那樣莫名其妙的新術語。Haskell 的設計者們的論文我大部分都看過,幾分鐘之內我就知道他們那一套東西怎么變出來的,其實里面很少有新的東西。大部分是因為 Haskell 引入的那些“新概念”(比如 monad)而產生的無須有的問題。世界上有比他們更聰明的人,更簡單卻更強大的理論。不要以為 Haskell 就是世界之巔。

所以怎么說呢,我覺得每個程序員的生命中都至少應該有幾個月在靜心學習 Haskell。學會 Haskell 就像吃幾天素食一樣。每天吃素食顯然會缺乏某些營養,但是每天都吃葷的話,你就永遠意識不到身體里的毒素有多嚴重。

專攻一門語言的害處

我曾經對人說 C++ 里面其實有一些好東西,但是我沒有說的是,C++ 里面的壞東西實在太多了。

有些人從小寫 C++,一輩子都在寫 C++。這樣的結果是,他們對 C++ 里面的“珍珠”掌握的非常牢靠,以至于出現了一種“腦殘”的現象——他們沒法再寫出邏輯清晰的程序。(這里“珍珠”是一個特殊的術語,它并不含有贊美的意思。請參考這篇博文。)

比如,很多 C++ 程序員很精通 functor 的寫法,可是其實 functor 只是由于 C++ 沒有 first-class function 而造成的“變通”。C++ 的 functor 永遠也不可能像 Scheme 的 lambda 函數一樣好用。因為每次需要一個 functor 你都得定義一個新的 class,然后制造這個 class 的對象。如果函數里面有自由變量,那么這些自由變量必須通過構造函數放進 functor 的 field 里面,這樣當 functor 內部的“主方法”被調用的時候,它才知道自由變量的值。所以為此,你又得定義一些 field。麻煩了這么久,你得到的其實不過是 Scheme 程序員用起來就像呼吸空氣一樣的 lambda。

這些“精通” functor 的 C++ 程序員,認為會用 functor 就說明自己水平高。殊不知 functor 這東西不但是一個“變通”,而且是從函數式語言里面“學”過來的。在最早的時候,C++ 程序員其實是不知道 functor 這東西的。如果你考一下古就會發現,C++ 誕生于 1983 年,而 Scheme 誕生于 1975 年,Lisp 誕生于 1958 年。C++ 的誕生比 Scheme 整整晚了8年,然而 Scheme 一開始就有 lexical scoping 的 lambda。functor 只不過是對 lambda 的一種繞著彎的模仿。實際上 C++ 后來加進去的一些東西(包括 boost 庫),基本上都是東施效顰。

記得2011年11月11日的良辰吉日,C++ 的創造者 Bjarne Stroustrup 在 Indiana 大學做了一個演講,主題是關于 C++11 的新特性。當時我也在場,主持人 Andrew 是 boost 庫的首席設計師之一(他后來有段時間當過我的導師)。他連夸 Stroustrup 會選日子,只是遺憾演講時間沒有定在11點。

雖然我對 Stroustrup 的幽默感和謙虛的態度感到敬佩,但我也看出來 C++11 相對于像 Scheme 這樣的語言,其實沒有什么真正的“新東西”。大部分時候它是在改掉自己的一些壞毛病,然后向其它語言學習一些東西,然后把這些學習的痕跡掩蓋起來。可是到最后,它仍然不可能達到其他語言那么原汁原味的效果。然而,由于 C++ 的普及程度之高,現成的代碼之多,它的地位和重要性還是一時難以動搖的。所以“先輩的罪”,我們恐怕要用很多代人的工作才能彌補。

那么 C++ 有什么其他語言沒有的好東西呢?其實非常少。我還是有空再講吧。

多學幾種語言

我今天想說其實就是,沒有任何一種語言值得你用畢生的精力去“精通”它。“精通”其實代表著“腦殘”。你必須對每種語言都帶有一定的懷疑態度,而不是完全的擁抱它。每個人都應該學習多種語言,這樣才不至于讓自己的思想受到單一語言的約束,而沒法接受新的,更加先進的思想。這就像每個人都應該學會至少一門外語一樣,否則你就深陷于自己民族的思維方式。有時候這種民族傳統的思想會讓你深陷無須有的痛苦,卻無法自拔。

原文鏈接:http://www.yinwang.org/blog-cn/2013/04/17/languages/

責任編輯:林師授 來源: 王垠的博客
相關推薦

2012-08-13 09:40:12

語言編程語言程序語言

2017-07-10 17:00:24

程序語言語言特性

2013-03-08 10:00:01

2013-06-19 09:42:27

工作經歷程序員開發經驗

2012-10-30 15:31:17

2013-03-29 10:02:37

編譯器語言編譯開發

2013-05-21 09:47:15

編輯器IDE程序員

2013-03-18 10:19:41

程序設計語言

2014-02-12 14:31:55

2012-09-12 10:33:37

工具工具奴隸語言工具

2013-03-20 09:54:07

2012-08-14 10:44:52

解釋器編程

2011-06-03 13:03:03

JAVA

2012-12-17 10:50:27

程序員

2010-09-27 08:10:22

JVMScalaGroovy

2013-06-26 10:13:32

C語言結構體結構體偏移

2021-06-15 07:10:14

JavaScript異步編程

2022-08-01 07:38:29

代碼開發

2011-04-13 14:04:14

Java數組

2021-12-08 10:54:09

汽車智能芯片
點贊
收藏

51CTO技術棧公眾號

欧美日韩视频免费| 亚洲精品免费在线视频| 干b视频在线观看| 四虎永久精品在线| 亚洲国产另类精品专区| 日本午夜精品一区二区三区| 国产女人18毛片18精品| 国产欧美丝祙| 另类美女黄大片| 成年人在线观看av| 亚洲精品自拍| 色综合av在线| 菠萝蜜视频在线观看入口| 九一在线视频| 成人免费黄色大片| 国产欧美精品一区二区| 亚欧视频在线观看| 欧美1区2区| 国产小视频91| 国产精品第七页| 精品一级视频| 欧美性受xxxx黑人xyx| 欧美日韩福利在线| а√天堂在线官网| 国产午夜亚洲精品羞羞网站| 国产乱码精品一区二区三区卡 | 天堂av在线免费观看| 国内精品伊人久久久久av影院| 欧美亚洲第一区| 欧美精品成人久久| 婷婷亚洲五月色综合| 亚洲欧洲一区二区三区在线观看| 免费观看一区二区三区| 亚洲网站三级| 欧美视频一区二区三区四区| 中国丰满人妻videoshd| 欧美v亚洲v| 1024亚洲合集| 一区二区视频在线免费| 高清毛片在线看| 2021中文字幕一区亚洲| 国产欧美一区二区视频| 丁香六月天婷婷| 国产91丝袜在线播放九色| 91久久久精品| 国产精品国产精品国产专区| 久久99久国产精品黄毛片色诱| 日韩免费观看在线观看| 青草视频在线观看免费| 亚洲一区网站| 欧美在线视频a| 99精品视频99| 久久精品中文| 国产精品久久久久久久久久久久久| 国产精品男女视频| 午夜亚洲影视| 国产suv精品一区二区| 欧美日韩一级黄色片| 久热精品视频| 国产精品网红福利| 在线观看免费观看在线| 经典三级在线一区| 99国内精品久久久久久久软件| 99在线精品视频免费观看20| 国产成人免费在线观看| 成人av资源| 青青免费在线视频| 国产欧美一区在线| 在线不卡日本| 亚洲男同gay网站| 亚洲国产综合91精品麻豆| 缅甸午夜性猛交xxxx| 欧美性猛交xxx高清大费中文| 色悠悠久久综合| 青青草原国产在线视频| 精品欧美视频| 日韩乱码在线视频| 亚洲精品国产精品国自产网站| 人人狠狠综合久久亚洲婷| 精品国产美女在线| 精品一区二区三区人妻| 宅男噜噜噜66一区二区| 国产精品色悠悠| 亚洲精品.www| 26uuu久久天堂性欧美| 午夜精品一区二区三区在线观看| 麻豆视频免费在线观看| 亚洲一区二区三区四区在线观看 | 国产成人亚洲精品自产在线| 久久中文字幕一区二区三区| 成人国产在线视频| 视频二区在线观看| 国产精品卡一卡二卡三| 青青青在线观看视频| 日韩不卡免费高清视频| 69成人精品免费视频| 捆绑凌虐一区二区三区| 久久免费大视频| 性亚洲最疯狂xxxx高清| 中文字幕在线观看视频一区| 成人小视频在线| 午夜免费电影一区在线观看| 黄色美女视频在线观看| 欧美性受xxxx黑人xyx性爽| 午夜影院福利社| 日韩欧美高清在线播放| 91黄色8090| 精品免费久久久| 中文字幕的久久| 国产色一区二区三区| 国产极品一区| 亚洲人成五月天| 久久综合成人网| 狠狠色丁香婷婷综合| 欧美激情导航| 91九色美女在线视频| 555www色欧美视频| 久久久久亚洲av无码a片| 亚洲精品女人| 999精品在线观看| 天堂а√在线资源在线| 色综合天天狠狠| 国产精品熟妇一区二区三区四区| 日韩大片在线| 国产精品96久久久久久| 天堂а√在线8种子蜜桃视频| 一区二区成人在线视频 | 国产高清成人在线| 亚洲精品成人自拍| 456亚洲精品成人影院| 亚洲第一区在线观看| 毛片aaaaa| 国产精品综合在线视频| 中文字幕在线观看一区二区三区| 欧美xxxx做受欧美护士| 亚洲欧美激情四射在线日| 国产成人无码精品亚洲| 北岛玲一区二区三区四区 | 日本在线不卡视频| 欧美成人免费在线| 中国字幕a在线看韩国电影| 亚洲国产欧美一区二区三区久久| 加勒比av在线播放| 国产在线国偷精品免费看| 一道本在线观看视频| 国内不卡的一区二区三区中文字幕| 在线日韩av观看| 青青艹在线观看| 国产女同性恋一区二区| 午夜免费一区二区| 不卡在线一区二区| 国产一区二区在线免费视频| av电影在线观看一区二区三区| 精品视频1区2区3区| 妖精视频在线观看免费 | 91精品啪aⅴ在线观看国产| 日本最黄一级片免费在线| 欧美日韩在线播放| 欧美特黄一级片| 国产精品自在欧美一区| 久久精品xxx| 久久99国产精品久久99大师| 8050国产精品久久久久久| 午夜小视频在线播放| 色爱区综合激月婷婷| 综合 欧美 亚洲日本| 国产综合色精品一区二区三区| 欧美一级特黄aaaaaa在线看片| 日韩精品一区二区三区中文| 亚洲91av视频| av大全在线免费看| 日韩欧美国产一区二区三区| 精品久久免费视频| 久久综合久色欧美综合狠狠| www.com黄色片| 欧美黄色免费| 久久综合中文色婷婷| 成人av集中营| 欧美高清自拍一区| 久久av少妇| 91精品国产色综合久久| 日韩三级一区二区三区| 国产欧美日韩视频一区二区 | 精品一区91| 91av在线视频观看| 日本蜜桃在线观看| 欧美精品一区视频| 国产情侣免费视频| 亚洲午夜精品一区二区三区他趣| 国产三级av在线播放| 国内成+人亚洲+欧美+综合在线| 亚洲 自拍 另类小说综合图区| 国产欧美一区二区精品久久久| 成人久久久久久久| 无遮挡爽大片在线观看视频| 日韩一区av在线| 丝袜视频国产在线播放| 欧美一区二区三区小说| 欧美精品一二三四区| 亚洲色图在线看| 国产三级国产精品| 国产精品一区二区在线播放| 国产视频一区二区三区在线播放| 国产一区美女| 亚洲精品美女久久7777777| 2020最新国产精品| 国产欧美精品va在线观看| 91美女精品| 久热精品在线视频| a黄色在线观看| 亚洲精品国产欧美| 久久美女福利视频| 中文字幕福利视频| 亚洲欧美偷拍卡通变态| 性少妇bbw张开| 不卡在线观看av| 4438x全国最大成人| 毛片av中文字幕一区二区| 国产超级av在线| 在线欧美不卡| www.激情网| 亚洲激情久久| 一区二区三区四区| 欧美色图国产精品| 欧美久久久久久| 日韩高清电影免费| 国产一区二区在线网站| 亚洲一区二区免费在线观看| 成人av资源在线播放| 91超碰碰碰碰久久久久久综合| 97视频免费看| 超碰在线资源| 欧美激情精品久久久久久黑人| 久久精品视频观看| 久久亚洲精品成人| 日本三级视频在线播放| 最近中文字幕mv在线一区二区三区四区 | 免费看污片网站| 26uuu精品一区二区| 中文字幕在线永久| 波多野结衣中文字幕一区| 国产精品成人免费一区久久羞羞| 国产一区二区美女诱惑| 天堂网成人在线| 国产一区中文字幕| 中文字幕在线视频一区二区| 国产另类ts人妖一区二区| 尤物网站在线看| 国产精品中文字幕日韩精品| 黄页网站在线看| 成人免费视频一区| 国产一级二级视频| 久久久久久久精| 美女被到爽高潮视频| 欧美极品aⅴ影院| 国产大屁股喷水视频在线观看| 国产精品国产三级国产普通话99| 性少妇xx生活| 自拍偷拍国产精品| 久久久夜色精品| 欧美日韩国产综合新一区| 9i精品福利一区二区三区| 欧美网站大全在线观看| 亚洲综合免费视频| 日韩欧美资源站| 熟妇人妻av无码一区二区三区| 日韩激情av在线播放| 成人在线免费电影| 久久久精品中文字幕| 牛牛电影国产一区二区| 欧美一级电影久久| 国产美女久久| 国产精品福利视频| 亚洲自拍电影| 黄色网zhan| 中文字幕中文字幕在线十八区 | 久久久综合精品| 中文字幕免费视频| 国产精品国产三级国产aⅴ入口 | 亚洲精品免费观看| 亚洲精品中文字幕无码蜜桃| 久久aⅴ国产欧美74aaa| 催眠调教后宫乱淫校园| 久久久久一区二区三区四区| 久久噜噜色综合一区二区| 亚洲精品国产第一综合99久久| 国产午夜视频在线播放| 91黄色免费版| 国产黄色高清视频| 亚洲欧美精品在线| 亚洲精品白浆| 国产精品444| 97人人澡人人爽91综合色| 欧美一级爱爱| 欧美极品一区二区三区| 北条麻妃在线一区| 国产成人在线观看| 神马久久久久久久久久久| 一区二区三区高清| 欧美另类高清videos的特点| 精品久久久久久久久久久久包黑料 | 亚洲午夜免费| 色爱区成人综合网| 亚洲电影在线| 亚洲一级免费在线观看| 99久久精品国产一区二区三区| 成人无码精品1区2区3区免费看| 亚洲午夜久久久久中文字幕久| 中文字幕第31页| 精品亚洲夜色av98在线观看| 自由的xxxx在线视频| 国产精品十八以下禁看| 色天下一区二区三区| 青青草免费在线视频观看| 日本aⅴ免费视频一区二区三区| 色婷婷狠狠18禁久久| 日本一二三不卡| 欧美一区二区激情视频| 欧美mv日韩mv国产网站app| 一本一道波多野毛片中文在线| 国外成人在线视频| 精品三级国产| 香蕉精品视频在线| 日本视频免费一区| 免费黄色在线视频| 亚洲高清三级视频| www.av日韩| 欧美老女人在线视频| 国产精品视频一区二区三区| 亚洲精品第一区二区三区| 天堂午夜影视日韩欧美一区二区| 精品久久久久一区二区| 一区二区三区色| 国产福利资源在线| 欧美精品免费播放| 国产专区精品| 777久久精品一区二区三区无码| 久久国产精品72免费观看| 操她视频在线观看| 欧美三级电影在线观看| 999国产在线视频| 国产精品久久久久久久久久久久久久| 欧美激情在线精品一区二区三区| 欧美日韩性生活片| xfplay精品久久| 丰满少妇xoxoxo视频| 亚洲一区999| 99久久亚洲国产日韩美女| 日韩精品无码一区二区三区| 日韩精品乱码免费| 色一情一交一乱一区二区三区| 一本久道久久综合中文字幕| 久久av少妇| 国产噜噜噜噜噜久久久久久久久 | 免费观看不卡av| 又色又爽又高潮免费视频国产| 久久久99免费| 亚洲综合精品国产一区二区三区| 久久天天躁日日躁| 99精品国产一区二区三区2021| 免费观看美女裸体网站| 久久综合色综合88| 一二三区在线播放| 欧美另类暴力丝袜| 牛牛视频精品一区二区不卡| jizzjizzxxxx| 中文字幕欧美国产| 精品国产av一区二区| 午夜精品在线观看| 红桃视频在线观看一区二区| 中文字幕亚洲欧洲| 亚洲无人区一区| 国内在线精品| 91久久在线播放| 亚洲美女91| 高清国产在线观看| 日韩精品资源二区在线| 三妻四妾的电影电视剧在线观看| 婷婷精品国产一区二区三区日韩| 国内一区二区在线| 日韩乱码一区二区| 中文字幕亚洲无线码a| h视频久久久| 欧美少妇性生活视频| 亚洲精品视频一区二区| 天堂资源最新在线| 成人看片人aa| 久久九九电影| 免费一级片在线观看| 国产视频久久久久| 精品视频在线播放一区二区三区 | 超碰91人人草人人干| 欧美日韩一区二区三区四区不卡 | 亚洲男女一区二区三区| 天天av综合网| aa成人免费视频| 免费在线观看成人| 亚洲久久在线观看| 欧美疯狂xxxx大交乱88av| 国产精品密蕾丝视频下载|