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

王垠:程序設計里的“小聰明”

開發 開發工具
我今天想開始寫這系列文章的原因是,很多程序員的頭腦中都有一些通過“非理性”方式得到的錯誤觀點。這些觀點如此之深,以至于你沒法跟他們講清楚。即使講清楚了,一般來說也很難改變他們的習慣。

很早就想寫這樣一篇博文了,可是一直沒來得及動筆。在學校的時候,時間似乎總是不夠用,因為一旦有點時間,你就想是不是該用來多看點論文。所以我很高興,工作的生活給了我真正自由的時間,讓我可以多分享一些自己的經驗。

我今天想開始寫這系列文章的原因是,很多程序員的頭腦中都有一些通過“非理性”方式得到的錯誤觀點。這些觀點如此之深,以至于你沒法跟他們講清楚。即使講清楚了,一般來說也很難改變他們的習慣。

程序員的世界,是一個“以傲服人”的世界,而不是一個理性的,“以德服人”的世界。很多人喜歡在程序里耍一些“小聰明”,以顯示自己的與眾不同。由于這些人的名氣和威望,人們對這些小聰明往往不加思索的吸收,以至于不知不覺學會了很多表面上聰明,其實導致不必要麻煩的思想,根深蒂固,難以去除。接著,他們又通過自己的“傲氣”,把這些錯誤的思想傳播給下一代的程序員,從而導致惡性循環。人們總是說“聰明反被聰明誤”,程序員的世界里,為這樣的“小聰明”所栽的根頭,可真是數不勝數。以至于直到今天,我們仍然在疲于彌補前人所犯下的錯誤。

所以從今天開始,我打算陸續把自己對這些“小聰明”的看法記錄在這里,希望看了的人能夠發現自己頭腦里潛移默化的錯誤,真正提高代碼的“境界”。可能一下子難以記錄所有這類誤區,不過就這樣先開個頭吧。

小聰明1:片面追求“短小”

我經常以自己寫“非常短小”的代碼為豪。有一些人聽了之后很贊賞,然后說他也很喜歡寫短小的代碼,接著就開始說 C 語言其實有很多巧妙的設計,可以讓代碼變得非常短小。然后我才發現,這些人所謂的“短小”跟我所說的“短小”,完全不是一回事。

我的程序的“短小”,是建立在語義明確,概念清晰的基礎上的。在此基礎上,我力求去掉冗余的,繞彎子的,混淆的代碼,讓程序更加直接,更加高效的表達我心中設想的“模型”。這是一種在概念級別的優化,它其實只是間接的導致了程序的短小精悍。這種短小,往往是在“語義” (semantics) 層面的,而不只是在“語法”層面死摳幾行代碼。我絕不會為了程序“顯得短小”而讓它變得難以理解,或者容易出錯。

相反,很多其它人所追求的“短小”,卻是盲目的,沒有原則的小伎倆。在很多時候,這些小伎倆都只是在“語法” (syntax) 層面,比如,想辦法把兩行代碼寫成一行。可以說,這種“片面追求短小”的錯誤傾向,造就了一批語言設計上的錯誤,以及一批“擅長于”使用這些錯誤的程序員。

舉一個簡單的例子,就是很多語言里都有的 i++ 和 ++i 這兩個“自增”操作。很多人喜歡在代碼里使用這兩個東西,是因為這樣可以“節省一行代碼”。殊不知,節省掉的那區區幾行代碼,比起由于使用自增操作帶來的混淆和錯誤,其實是九牛之一毛。

從理論上講,i++ 和 ++i 本身就是錯誤的設計。因為它們把對變量的“讀”和“寫”兩種根本不同的操作,毫無原則的合并在一起。這種對讀寫操作的混淆不清,帶來了非常難以發現的錯誤,甚至在某些時候帶來效率的低下。

相反,等價的一種“笨”一點的寫法,i = i + 1,不但更易理解,而且更符合程序內在的一種精妙的“哲學”原理。這個原理,其實來自一句古老的諺語:你不能踏進同一條河流兩次。也就是說,當你第二次踏進“這條河”的時候,它已經不再是之前的那條河!這聽起來有點玄,但是我希望能夠用一段話解釋清楚它跟 i = i + 1 的關系:

現在來想象一下,你就是超人卡卡西,你擁有明察秋毫的“寫輪眼”,你能看到處理器的每一步微小的操作,每一個電子的流動。現在對你來說,i = i + 1 的含義是,讓 i 和 1 進入“加法器”。i 和 1 所含有的信息,以 bit 為大小,被加法器的線路分解,組合。經過這樣一番復雜的轉換之后,在加法器的“輸出端”,出現了一個“新”的整數,它的值比 i 要大 1。接著,這個新的整數通過電子線路,被放進“另一個”變量,這個變量的名字,“碰巧”也叫做 i。特別注意我加了引號的詞,你是否能用頭腦想象出電子線路里面信息的流動?

我是在告訴你,i = i + 1 里面的第一個 i 跟第二個 i,其實是兩個完全不同的變量——它們只不過名字相同而已!如果你把它們換個名字,就可以寫成 i2 = i1 + 1。當然,你需要把這條語句之后的所有的 i 全都換成 i2(直到 i 再次被“賦值”)。這樣變換之后,程序的語義不會發生改變。

我是在說廢話嗎?這樣把名字換來換去有什么意義呢?如果你了解編譯器的設計,就會發現,其實我剛剛告訴你的哲學思想,足以讓你“重新發明”出一種先進的編譯器技術,叫做 SSA(single static assignment)。我只是通過這個簡單的例子讓你意識到,i++ 和 ++i 不但帶來了程序的混淆,而且延緩甚至阻礙了人們發明像 SSA 這樣的技術。如果人們早一點從本質上意識到 i = i + 1 的含義(其實里面的兩個 i 是完全不同的變量),那么 SSA 很可能會提前很多年被發明出來。

(好了,到這里我承認,想用一段話講清楚這個問題的企圖,失敗了。)

所以,有些人很在乎 i++ 與 ++i 的區別,去追究 (i++) + (++i) 這類表達式的含義,其實是徒勞的。“精通”這些細微的問題,并不能讓你成為一個好的程序員。真正正確的做法其實是:完全不使用 i++ 或者 ++i。當然由于人們約定俗成的習慣,在某種非常固定,非常簡單的,眾人皆知“模式”下,你還是可以使用 i++ 和 ++i。比如: for (int i=0; i < n; i++)。但是除此之外,最好不要在任何其它地方使用。

如果你把它們放在表達式中間,或者函數的參數位置,比如 a[i++], f (++i) 等等,那么程序就會變得難以理解。而如果你把兩個以上的 i++ 放在同一個表達式里,就會造成“非確定性”的錯誤。這種錯誤會造成程序在不同的編譯器下出現不同的結果。

雖然我對這些都了解的非常清楚,但我不想繼續探討這些問題。因為與其記住這些,不如完全忘記 i++ 和 ++i 的存在。

好了,一個小小的例子,也許已經讓你意識到了片面追求短小程序所帶來的巨大代價。很可惜的是,程序語言的設計者們仍然在繼續為此犯下類似的錯誤。一些“新”的語言,設計了很多類似的,旨在“縮短代碼”,“減少打字量”的雕蟲小技。也許有一天你會發現,這些雕蟲小技所帶來的,在短暫的興奮之后,其實是無窮無盡的煩惱。

思考題:

1. Google 公司的“代碼規范”里面規定,在任何情況下 for 語句和 if 語句之后必須寫花括號,即使 C 和 Java 允許你在其只包含一行代碼的時候省略它們。比如,你不能這樣寫

  1. for (int i=0; i < n; i++)  
  2.    some_function (i); 

而必須寫成

  1. for (int i=0; i < n; i++) {  
  2.   some_function (i);  

請分析:這樣的代碼規范,是好還是不好?請說明理由。

2. 當我第二次到 Google 實習的時候,發現我的一年前的代碼很多被調整了結構。幾乎所有如下結構的代碼:

  1. if (x > 0) {  
  2.   return 0;  
  3. else {  
  4.   return 1;  

都被人改成了:

  1. if (x > 0) {  
  2.   return 0;  
  3. }  
  4.  
  5. return 1

請問這里省略了一個“else”和兩個花括號,會帶來什么好處或者壞處?

3. 根據本文對于 ++ 操作的看法,再參考傳統的圖靈機的設計,你是否發現圖靈機的設計存在類似的問題?你如何改造圖靈機,使得它不再存在這種問題?

4. 參考這個《Go 語言入門指南》,看看你是否能從中發現由于“片面追求短小”而產生的,別的語言里都沒有的設計錯誤?

原文鏈接:http://blog.sina.com.cn/s/blog_5d90e82f0101j529.html

責任編輯:張偉 來源: 新浪博客
相關推薦

2013-03-08 10:00:01

2012-08-13 09:40:12

語言編程語言程序語言

2014-02-12 14:31:55

2017-07-10 17:00:24

程序語言語言特性

2013-06-19 09:42:27

工作經歷程序員開發經驗

2013-04-18 09:29:02

編程語言編程

2012-10-30 15:31:17

2013-03-29 10:02:37

編譯器語言編譯開發

2013-05-21 09:47:15

編輯器IDE程序員

2012-09-12 10:33:37

工具工具奴隸語言工具

2013-03-20 09:54:07

2013-07-09 10:11:41

程序設計大賽程序員

2012-08-14 10:44:52

解釋器編程

2013-12-12 16:30:20

Lua腳本語言

2009-06-23 17:52:04

Linux程序設計

2011-07-22 13:41:57

java

2011-07-05 15:22:04

程序設計

2011-07-05 15:59:57

面向對象編程

2009-06-23 18:13:21

2009-12-04 10:53:06

VS WEB
點贊
收藏

51CTO技術棧公眾號

色是在线视频| 日本高清视频免费观看| 日韩免费看片| 欧美一区二区三区爱爱| 男人添女人荫蒂免费视频| 色婷婷在线视频| 一级黄色录像大片| 91成人福利| 色国产综合视频| 免费观看国产视频在线| 神马久久久久久久久久| 日韩电影免费一区| 欧美大片大片在线播放| 蜜臀久久99精品久久久久久| 粉嫩av国产一区二区三区| 五月综合激情婷婷六月色窝| 日韩亚洲不卡在线| 国产 日韩 欧美 精品| 日本特黄久久久高潮| 久久久久国产精品一区| 少妇高潮惨叫久久久久| 看全色黄大色大片免费久久久| 欧美日韩一区二区三区在线 | 国产人妻精品一区二区三区| 91久久亚洲| 久久久www成人免费精品| 亚洲av无码一区二区二三区| 欧美成年网站| 欧美日韩在线观看一区二区| 国产白丝袜美女久久久久| 激情成人四房播| 国产清纯美女被跳蛋高潮一区二区久久w | 国产真实乱对白精彩久久| 26uuu另类亚洲欧美日本一| 在线观看黄网址| 精品国产乱码久久久久久1区2匹| 精品久久人人做人人爱| 国产乱女淫av麻豆国产| 国产伦精品一区二区三区视频金莲| 一区二区三区不卡视频 | 男男激情在线| av毛片久久久久**hd| 99九九视频| 国产免费黄色片| 久久97超碰色| 国产视频观看一区| 中文字幕人妻精品一区| 蜜桃久久av| 日韩三级在线观看| 欧美成人自拍视频| 好吊色视频一区二区三区| 日韩精品久久久久久久软件91| 欧美日韩一区国产| 一级黄色录像在线观看| 日韩制服一区| 欧美午夜精品一区二区三区| 国产一区亚洲二区三区| 中文字幕在线免费观看视频| 欧美色另类天堂2015| 欧美在线观看www| 亚洲精品88| 色呦呦网站一区| aaa毛片在线观看| 欧美日韩大片| 欧美日韩精品二区第二页| 亚洲国产高清av| 9999精品免费视频| 91精品麻豆日日躁夜夜躁| 两女双腿交缠激烈磨豆腐| 韩国三级成人在线| 精品国产一区二区精华| 日本少妇毛茸茸| 亚洲自拍电影| 中文字幕国内精品| 欧美日韩午夜视频| 欧美精品三级| 国产91成人在在线播放| 中文av免费观看| 精品一区二区三区免费观看| 99久久精品免费看国产一区二区三区 | 欧美人xxx| 亚洲欧美日韩久久精品| 国产在线观看欧美| 涩涩视频在线| 欧美卡1卡2卡| 美女伦理水蜜桃4| 最新亚洲精品| 久久资源免费视频| 日韩美女黄色片| 日本大胆欧美人术艺术动态| 91色视频在线观看| 亚洲AV成人无码一二三区在线| 久久精品水蜜桃av综合天堂| 在线免费观看成人网| 国产丝袜在线播放| 欧美性xxxxxx少妇| 中文字幕一二三| 亚洲警察之高压线| 久久亚洲综合国产精品99麻豆精品福利| 久久久久免费看| 肉肉av福利一精品导航| 3d动漫啪啪精品一区二区免费| 无码精品人妻一区二区| 中文字幕人成不卡一区| 久久久久久久久久网| 国产福利91精品一区二区| 精品少妇一区二区三区免费观看| 能免费看av的网站| 亚洲欧美综合| 国产精品1234| 欧美少妇bbw| 国产精品视频免费| aa在线观看视频| 国产美女精品视频免费播放软件| 日韩精品高清在线观看| 欧美三根一起进三p| 日韩高清在线不卡| 国内成+人亚洲| 成人日日夜夜| 欧美影院精品一区| 国产精品无码在线| 欧美在线资源| 国产精品一区电影| 免费在线黄色电影| 亚洲第一福利视频在线| aaaaaaaa毛片| 日韩av自拍| 人妖精品videosex性欧美| 性色av蜜臀av| 日韩美女视频19| 欧美日韩中文不卡| 久久av免费看| 欧美专区日韩视频| 天堂网在线中文| 亚洲一区二区三区四区五区黄| 色婷婷成人在线| 国产影视精品一区二区三区| 7m精品福利视频导航| 国精品人妻无码一区二区三区喝尿| 国产精品福利电影一区二区三区四区 | 蜜桃精品成人影片| 亚洲精品专区| 国产精品久久久对白| 欧美男男video| 日韩一区二区视频在线观看| 熟女av一区二区| 久久99这里只有精品| 午夜欧美性电影| 黄色精品视频| 在线日韩av观看| 真实新婚偷拍xxxxx| 国产欧美日韩视频一区二区 | 中国字幕a在线看韩国电影| 亚洲精品一区二区三区精华液 | 亚洲国产一成人久久精品| 国产精品一区av| 久草中文在线| 91精品国产色综合久久| 国产性xxxx| 国产成人亚洲综合色影视| 女人床在线观看| 中文字幕av一区二区三区四区| 精品视频9999| 男人天堂网在线视频| 亚洲成av人片观看| 草草影院第一页| 三级久久三级久久久| 一区精品在线| 天堂精品久久久久| 97精品国产97久久久久久春色| 黄色小视频免费观看| 五月天网站亚洲| 欧美黄色激情视频| 美女视频黄a大片欧美| aaa免费在线观看| 成人激情自拍| 日韩av电影院| 麻豆影视在线观看_| 欧美一级国产精品| 欧美交换国产一区内射| 96av麻豆蜜桃一区二区| 国产精品涩涩涩视频网站| 婷婷久久国产对白刺激五月99| 亚洲自拍偷拍福利| 97蜜桃久久| 在线播放国产精品| 99久久免费国产精精品| 亚洲成人自拍网| 白白色免费视频| 韩国成人精品a∨在线观看| www.九色.com| 欧美丝袜一区| 超碰97在线资源| 性欧美hd调教| 欧美日韩爱爱视频| 男人添女人荫蒂免费视频| www.国产精品| 欧美精品第一页在线播放| 欧美人体大胆444www| 欧美久久高跟鞋激| 黄色片视频网站| 国产精品久久久久久久久久久免费看| 无码人妻一区二区三区免费n鬼沢| 亚洲一区二区三区高清| 黄瓜视频免费观看在线观看www | 每日更新成人在线视频| 中文字幕一区二区三区5566| 欧美aaaaaaaa牛牛影院| 川上优av一区二区线观看| 精品丝袜在线| 日韩在线观看精品| 四虎在线观看| 欧美成人乱码一区二区三区| 中文精品久久久久人妻不卡| 一区二区三区欧美日| 国产综合精品久久久久成人av| 国产成人精品亚洲日本在线桃色| 欧美日韩亚洲一二三| 一区二区三区毛片免费| 四虎影院一区二区三区| 日韩电影不卡一区| 91在线精品视频| 成人18视频在线观看| 欧美亚洲成人xxx| 色呦呦在线看| 欧美另类69精品久久久久9999| 国产精品无码2021在线观看| 日韩成人在线免费观看| 亚洲国产成人一区二区| 欧美日韩三级一区| 久草视频在线免费| 欧美日韩在线看| 91看片在线播放| 亚洲午夜久久久久| 久久久久亚洲av无码专区体验| 国产精品电影一区二区三区| 日本性高潮视频| 久久久精品国产免大香伊| 波多野结衣一二三区| 成人一区二区三区在线观看| 色男人天堂av| 国精产品一区一区三区mba视频| 国产wwwxx| 日本女人一区二区三区| 999精品网站| 亚洲精品韩国| 九色自拍视频在线观看| 亚洲视频日本| 9色porny| 国产欧美日韩一区二区三区在线| 97超碰人人澡| 国产欧美不卡| 一本久道综合色婷婷五月| 天堂va蜜桃一区二区三区漫画版| 免费高清在线观看免费| 麻豆精品网站| 日本爱爱免费视频| 免费看欧美美女黄的网站| 粉嫩虎白女毛片人体| 日本不卡一区二区| 国产又大又黄又粗又爽| 蜜桃av噜噜一区| 亚洲一二三不卡| 国产精品一卡二| gogo亚洲国模私拍人体| 成人黄色国产精品网站大全在线免费观看 | 91麻豆精品国产91久久久更新时间 | 一起草在线视频| 久久久美女毛片| 色欲狠狠躁天天躁无码中文字幕| 国产精品全国免费观看高清| 人妻久久一区二区| 亚洲午夜免费福利视频| 久久精品视频1| 欧美嫩在线观看| 亚洲精品一区二区三区不卡| 亚洲精品久久久久久久久| 国产高清在线| 久久精品久久久久久国产 免费| 亚洲制服国产| 欧美在线视频一区二区| www.久久.com| 黄网站色欧美视频| 啪啪一区二区三区| 亚洲一本大道在线| 久久精品久久久久久久| 欧美日韩电影在线播放| 亚洲第一天堂网| 亚洲欧洲在线看| 成人黄色网址| 国产91|九色| 国产精品va视频| 蜜桃999成人看片在线观看| 日韩在线第七页| 999一区二区三区| 日本视频一区二区| 亚洲色图欧美日韩| 国产精品国产三级国产三级人妇| 精品无码久久久久| 欧美日韩午夜在线| 亚洲av成人无码网天堂| 久久精品国产电影| 日韩大尺度黄色| 成人免费视频网站| 日韩在线观看电影完整版高清免费悬疑悬疑 | 亚洲人成网www| 日韩a级黄色片| 免费不卡在线观看| 岛国精品资源网站| 1区2区3区欧美| 四虎影院在线免费播放| 精品粉嫩aⅴ一区二区三区四区| 成人三级黄色免费网站| 高清一区二区三区日本久| 欧美一级做一级爱a做片性| 精品视频一区二区三区四区| 小处雏高清一区二区三区| 国产精品第12页| 成人a免费在线看| 18岁成人毛片| 欧美日韩高清一区二区| 国产在线观看免费网站| 97人人爽人人喊人人模波多| 国产精品日本一区二区三区在线| 欧美在线一二三区| 日韩视频在线一区二区三区| 亚洲高清av一区二区三区| 国产精品久久久久9999吃药| 国产免费av一区| 亚洲第一区第一页| 激情av在线| 97在线中文字幕| 91日韩欧美| 超碰在线97免费| 久久精品夜色噜噜亚洲a∨| 国产成人无码精品| 亚洲国产一区二区三区四区| 任你弄在线视频免费观看| 成人av番号网| 国产精品99在线观看| 91精品无人成人www| 久久久久久久久久电影| 一本一道无码中文字幕精品热| 亚洲第一网中文字幕| 爱福利在线视频| 国产精品一区二区免费| 影音先锋久久久| 久久久久久婷婷| 午夜精品一区二区三区免费视频 | 国产不卡一区视频| 麻豆一区产品精品蜜桃的特点| 日韩一区二区不卡| 伊人影院在线视频| 国产精华一区| 一本久久综合| 精品无码在线视频| 色婷婷久久久综合中文字幕 | 中文久久电影小说| 青青草精品视频在线| 成人久久18免费网站麻豆| 日韩精品在线免费看| 亚洲精品久久久一区二区三区| 深夜成人在线| 日韩精品久久一区| 麻豆精品视频在线| 精品自拍偷拍视频| 精品国产a毛片| 性xxxxfreexxxxx欧美丶| 秋霞毛片久久久久久久久| 奇米精品一区二区三区在线观看一 | 日韩精品三级| 精品久久久久久无码中文野结衣| 不卡av在线网| 久久久久久久亚洲| 日韩中文字幕在线看| 日本免费一区二区视频| 成人免费观看cn| 国产午夜精品久久| 国产精品自拍电影| 久久久久久久久久国产精品| 亚洲传媒在线| 一区二区三区欧美精品| 一区二区高清免费观看影视大全| 五月天丁香视频| 国产精品视频色| 国产精品地址| 精品成人无码一区二区三区| 欧美一级一级性生活免费录像| av手机在线观看| 亚洲一区二区三区在线观看视频 | 欧美视频自拍偷拍| 少女频道在线观看高清| 日本不卡二区| 国产成人av电影在线播放| 91精品国产综合久久久蜜臀九色| xxav国产精品美女主播| 日韩精品亚洲aⅴ在线影院| 一区二区三区入口| 午夜伦理一区二区| 成人三级网址|