国产精品久久久久久久久久久新郎_91久久精品国产_国内精品久久久久久_欧美激情第一页在线观看_国产欧美日韩丝袜精品一区_日韩精品成人一区二区在线观看_国产精品v片在线观看不卡_91精品国产综合久久香蕉最新版 _国产精品亚洲激情_色综合男人天堂

始創于2000年 股票代碼:831685
咨詢熱線:0371-60135900 注冊有禮 登錄
  • 掛牌上市企業
  • 60秒人工響應
  • 99.99%連通率
  • 7*24h人工
  • 故障100倍補償
您的位置: 網站首頁 > 幫助中心>文章內容

再駁Linus:思科工程師對C++不得不說的事

發布時間:  2012/8/25 18:38:22

薩丕爾—沃爾夫假說曾經在語言學研究領域風靡一時。我粗略總結了一下,這個假說的核心思想是:你使用的語言影響和制約了你的想法。例如,如果你的語言只有一個單詞來描述雪,你將很難說出粉狀雪和易碎的冰雹之間的差別。

當我了解后,我徹底不相信薩丕爾—沃爾夫假說。雖然語言相對論帶著一套假說卷土重來,但幾乎可以肯定的是,人類思想絕不受制于詞匯和語法的牢籠。

E.W. Dijkstra是編程語言領域的薩丕爾,他曾說過:

“給以前接觸過BASIC學生教良好的編程幾乎是不可能的。作為潛在的程序員,他們精神上已經殘廢,無再生的希望。使用COBOL更是摧殘了他們的心靈,因此,教他們應該被視為刑事犯罪”。

今天,我們有Linus Torvalds對C++的炮轟,他認為使用C++的程序員會破壞他或她接觸到任何項目。Linus是這樣說的:

“我得出的結論是,任何希望在項目中使用C++而不是C的程序員都是很可能讓我生氣的程序員,因此我不會給他們機會來搞砸我的項目。C++導致真正糟糕的設計選擇。”

Torvalds太過武斷

在我所在的大型企業中,我們的名片背面有一句口號:不迷信科技。做到這一點可能不容易,但是的,我們愿意嘗試。

對我來說,這個訓誡意味著兩件事:

1、嘗試客觀地為工作選擇最佳的工具

2、不要讓你對工具的偏好指揮完成工作的方法

Linus在他的炮轟中已經說得很清楚,任何使用C++編程的人都很心虛,拿這些規則做借口。

但我有不同的想法,我認為C++顯然也有可能成為完成工作最合適的工具。得出這樣的結論是相當客觀的,我認為Linus顯然是被他特殊的技術流派迷惑了。

一個簡單的例子

作為我上學期C/C++編程班的期末作業,我要求學生用C實現一個簡單的令牌計數程序,目標是要重現下面這段C++代碼的行為:

map counts;
string s;
while ( cin >> s )
counts[s]++;
for ( auto ii = counts.begin() ; ii != counts.end() ; ii++ )
cout << ii->second << " : " << ii->first << endl;

這個特殊的程序突出了一些C中沒有的C++功能,如:

●C數組,向量多功能替換

● 字符串類

● 使用iostreams安全輸入

●關聯數組作為標準庫的一部分

這個程序用C++來寫是相當容易的,只需要處理一下輸入流中的錯誤——有時候甚至這一步都沒有必要。

用C實現

用C重寫是一個稍微復雜點的任務,因為C的庫中沒有任何類型的關聯數組。解決這個問題的辦法很多,我選擇了下面的辦法:

● 將所有令牌讀入一個數組

● 完成后,對數組排序

●完成數組排序后,通過遍歷每個令牌獲得計數

雖然這個算法占用的空間比C++程序更多。假設你沒有碰到gsort()之類病態的問題,花的時間可能都差不多。

我堅信用C++比用C寫這個程序更容易,理由如下:

●C I/O缺陷。在C中讀字符串有相當多的困難,由于C I/O庫沒有標準的方法讀取長度無限制的字符串(可以使用編譯器特定的擴展,但那會引起其它問題),你的輸入代碼必須檢查多種錯誤情況,或者構建你自己的字符串輸入函數。

● C數組的內存管理基本上是一項手工任務,我必須為數組分配原始空間,如果超出了它的長度,我還得小心重新分配,做完后,我還得釋放空間。

● C字符串的內存管理有同樣的問題。

● 字符串數組的排序使用gsort()只是有一點不方便,gsort()不能提供C++庫中sort()函數的性能保證。

這個函數的C版本代碼行數要多一些,需要手工完成的任務也要多一些,因此犯錯的幾率也要大一些。

我喜歡C++版本的最后一個原因是,它同樣適合其它類型,如插入和提取運算符類型、比較運算符,都可以使用同樣的代碼,只需要變一個聲明。將實現同樣的事情的代碼轉換成一個函數模板,這樣就可以在以后直接拿來使用了。

我一些最好的朋友是C程序員

那么我偏愛C++版本就能說明我是一個語言偏執的人嗎?

我認為不能如此下結論,首先,我認為這個程序的C版本也有一些不錯的優點:

● 你可以使用POSIX系統調用編寫這個程序,除了內存分配和排序。

●這個程序的C版本因為使用了底層I/O,速度將會更快,C++ iostreams在任何時候都表現良好,但它們的分層方法在談到效率時總是處于不利地位。

因此,對于這樣一個程序,語言的選擇最終歸結為背景,如果你相信80/20規則,并且它不是程序的核心部分,你可能認為這個代碼應該用C++編寫。代碼行數越少,犯錯的幾率就越低,效率可能不是最大的問題。

如果這是一段很關鍵的經常執行的代碼,你可能會認為C是最佳選擇。如果選擇C,請一定要花點額外的時間進行代碼評審,確保沒有內存泄露和指針錯誤,只有那樣,你才上路了。

撫平Linus的情緒

那么Linus看到上面的代碼是如何炮轟的呢?我斗膽猜一下,任何像樣的C++程序員都會寫出類似的代碼。Linus說:

“你一定使用了這種語言“好的”庫功能,如STL和Boost,它們對你的程序可能有幫助,但當它們不工作時,會引起無盡的痛苦”。

在這個程序中,我好好利用了曾是STL一部分的標準庫組件,它們作為標準的一部分已經有十多年的歷史。它們的表現真的很好,在我所知道的任何編譯器中,也沒有可移植性或正確性問題。

“你會發現某些抽象編程模型不是很有效,但現在你所有的代碼都依賴于所有圍繞它的好對象模型。如果不重寫你的應用程序,那么你是無法修復它的。”

的確,盡管C++不能為我做這些事,我只有設法自己編寫程序,不使用任何抽象——沒有新的類,沒有接口,基本上完全是靠C代碼完成許多有用的類的。

但我認為這是規則而不是例外。

“換句話說,只有這樣才能做得好,效率高,系統級和可移植的C++最終會限制自己,但這一切在C中都是可行的。”

除非C有容器類,字符串類,類型安全I/O,以及RAII這樣的技術,這句話才會變成真的。現在來看,它完全是胡說。

在現代C++可用之前,我可能會堅持使用一個簡單的管道來完成這個任務:

tr [:blank:] '\n' | grep -v "^$" | sort | uniq -c

事實上,我可以在編譯語言中做同樣的事。只要它們能給我一些靈活性,我想我不用成為一個偏執狂就能明白這個事實。你對此又是怎樣看的?

作者簡介:Mark Nelson,現任思科公司工程師,《The Data Compression Book》的作者,《Developing Cisco IP Phone Services: A Cisco AVVID Solution》的協作者。


本文出自:億恩科技【m.czbl888.cn】

服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經營性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經營性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經營性ICP/ISP證:贛B2-20080012
  • 服務器/云主機 24小時售后服務電話:0371-60135900
  • 虛擬主機/智能建站 24小時售后服務電話:0371-60135900
  • 專注服務器托管17年
    掃掃關注-微信公眾號
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權所有  地址:鄭州市高新區翠竹街1號總部企業基地億恩大廈  法律顧問:河南亞太人律師事務所郝建鋒、杜慧月律師   京公網安備41019702002023號
      0
     
     
     
     

    0371-60135900
    7*24小時客服服務熱線

     
     
    国产精品久久久久久久久久久新郎_91久久精品国产_国内精品久久久久久_欧美激情第一页在线观看_国产欧美日韩丝袜精品一区_日韩精品成人一区二区在线观看_国产精品v片在线观看不卡_91精品国产综合久久香蕉最新版 _国产精品亚洲激情_色综合男人天堂
    在线免费视频一区| 波多野结衣在线免费观看| 日本中文字幕二区| 欧美女人性生活视频| 免费看欧美一级片| 91嫩草国产丨精品入口麻豆 | 搞av.com| 亚洲美女自拍偷拍| 国产传媒免费观看| 国产欧美激情视频| 亚洲综合激情视频| 高清av免费看| 国产精品嫩草影院8vv8| 中文字幕天天干| 中文字幕亚洲乱码| 日本超碰在线观看| 日韩一区二区三区久久| 91制片厂毛片| 少妇一级淫免费播放| 免费成年人高清视频| 黄色小视频免费网站| 亚洲一级片av| 无码毛片aaa在线| 国产一二三区在线播放| av免费观看大全| 欧美牲交a欧美牲交| 毛片av免费在线观看| 美女网站视频黄色| 中文字幕在线视频精品| 日韩av影视大全| 1314成人网| 日本人妻伦在线中文字幕| 天堂8在线天堂资源bt| 亚洲国产精品成人天堂| 日本不卡在线观看视频| 麻豆传传媒久久久爱| 人人干人人干人人| 青娱乐精品在线| 精品一二三四五区| 免费日韩视频在线观看| 依人在线免费视频| 久久久久久久久影视| 成人免费观看cn| 亚洲精品视频导航| 国产精品中文久久久久久| 国产一区二区片| 日本三级免费观看| 国产5g成人5g天天爽| 国产黄色片免费在线观看| 亚洲中文字幕久久精品无码喷水| 成年人三级黄色片| www.好吊操| 色七七在线观看| 97超碰免费观看| 欧美性久久久久| 国产资源中文字幕| 国产特级淫片高清视频| 美女网站色免费| 国产av熟女一区二区三区| 国产视频一区二区三区在线播放 | 欧美 日韩精品| 国产高清av片| 日韩精品一区在线视频| 国产高清视频网站| 免费一级淫片aaa片毛片a级| 成人3d动漫一区二区三区| 18视频在线观看娇喘| 成人观看免费完整观看| 91大神免费观看| 六月激情综合网| 国产成人三级视频| 福利在线一区二区三区| 日b视频免费观看| 国产一线二线三线在线观看| 久久精品无码中文字幕| 久久人人爽av| 精品99在线视频| av中文字幕av| 最新天堂中文在线| 黄色免费视频大全| 热久久最新网址| 污网站在线免费| 国产成人精品无码播放| 国产玉足脚交久久欧美| 亚洲制服在线观看| 91国产精品视频在线观看| 欧美大片在线播放| 国产911在线观看| 亚洲视频一二三四| 日韩av播放器| 亚洲熟妇国产熟妇肥婆| 激情五月六月婷婷| √天堂资源在线| 九九九在线观看视频| 国产午夜伦鲁鲁| 91免费国产精品| 波多野结衣激情| 欧美一级特黄a| 国产精品wwwww| 欧美精品久久久久久久免费| 日韩精品第1页| 在线观看免费视频污| 超碰av在线免费观看| 狠狠爱免费视频| av免费看网址| 欧美精品卡一卡二| 久久久久久久香蕉| 超碰10000| 黄色a级在线观看| 国产91av视频在线观看| 亚洲黄色av片| 五月婷婷激情久久| 天天碰免费视频| 亚洲精品一二三四五区| 日韩中文字幕免费在线| 欧美性大战久久久久xxx| 国产精品自拍片| 熟女少妇在线视频播放| 国产在线播放观看| 蜜臀av无码一区二区三区| 99在线观看视频免费| 国产精品视频网站在线观看| 日韩国产精品毛片| 亚洲av综合色区| 国产香蕉一区二区三区| 国产成人生活片| 男人草女人视频| 91黄色在线看| 国产美女网站在线观看| 国产午夜福利100集发布| 青青艹视频在线| 日本精品一区二区三区四区| aa免费在线观看| 91n.com在线观看| 亚洲一区二区三区四区五区| 国产福利精品一区二区三区| 一级黄色高清视频| 成人污网站在线观看| 日本久久久网站| 少妇无码av无码专区在线观看| 国产九九九九九| 国产1区2区在线| 91色国产在线| 91蝌蚪视频在线| 国产黄色激情视频| 久久精品免费一区二区| 性生交免费视频| 三日本三级少妇三级99| 国产片侵犯亲女视频播放| 欧美一区二区三区爽大粗免费| 免费大片在线观看| 国产三级生活片| 丰满人妻一区二区三区53号 | 国产精品人人妻人人爽人人牛| 日本激情综合网| 午夜久久久久久久久久久| 欧美视频在线观看视频| 波多野结衣作品集| 一区二区三区欧美精品| 青草视频在线观看视频| 国产精品99久久免费黑人人妻| av免费一区二区| 欧美高清中文字幕| 色一情一乱一伦一区二区三区日本| 亚洲三级在线观看视频| 成人性生活视频免费看| 青青草av网站| 亚洲一区 在线播放| 日本在线观看a| 艳母动漫在线免费观看| 欧美性大战久久久久xxx| 伊人精品视频在线观看| 男人添女人下面高潮视频| 亚欧激情乱码久久久久久久久| www.18av.com| 999精彩视频| 免费人成在线观看视频播放| 激情综合网俺也去| 国产 欧美 日韩 一区| 污视频免费在线观看网站| 欧美国产综合在线| 午夜国产福利在线观看| 狠狠97人人婷婷五月| 国产在线观看中文字幕| 国产亚洲欧美在线视频| 欧洲美女和动交zoz0z| 日韩av在线综合| 成人黄色片免费| 色天使在线观看| 欧美亚洲精品一区二区| 五月婷婷六月丁香激情| 黄色一级视频在线播放| 成年人网站av| 国产精品亚洲a| 999久久欧美人妻一区二区| 美女黄色片视频| 日本日本19xxxⅹhd乱影响| 91制片厂免费观看| 日本中文字幕高清| 日韩少妇内射免费播放|