亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

C++還能重新輝煌嗎?C++復雜性的思考

2019-11-17 05:25:46
字體:
來源:轉載
供稿:網友

  C++的表面困境來自兩方面,一是開發效率低,而是輕易犯錯,維護難度大。此二者俱是表象,本質就是一個——過度復雜。或有人說C++之要害缺陷是沒有統一完整的類庫支撐,Bjarne Stroustrup即強調此因素。然而這其實只不過是一個結果,而不是原因。正是因為語言太復雜,才無法在有效期內開發出高質量的大一統的類庫。

  C++的復雜,并非是其體積龐大之必然結果。復雜是對結構混亂無序程度的描述,規模大,結構不見得必然復雜。

  C++的復雜,也并不是如很多人所認為,是若干種編程范式(paradigms)的并存而至。事實上,現代實用編程語言至少有2-3種范式才能登大雅之堂。以范式數量論,Python和Ruby等新型動態語言的范式甚至多于C++,然而它們卻以簡單和開發效率高著稱。

  C++復雜的根源在于三大約束:與C的完全兼容、靜態類型檢查、最高性能。在三大約束下,C++未能完善對于面向對象思想的支持,未能建立強大的動態能力,從而使得C++在OO這個單項上存在本質缺陷。事實上,C++的過程、OB模型相當成熟和穩定,而泛型模型,就單項來說,除了語法丑陋之外也沒有大的問題。缺陷集中體現在OO模型的實現,并因此干擾了其他幾個范式的完整程度。然而,OO的缺陷絕非設計者的偏執,其原因在于三大約束。假如堅持三大約束,則即使再重新設計一次,結果也與今日相差不遠。Stroustrup在多種場合表示,對C++的設計沒有大的后悔之處,意思就是這個。侯捷先生早在2001年初即對我說,C++在OO上不及java,當時體會不深,認為沒有大一統的單根類庫會使設計更加靈活,后來又認為憑借GP可以抵消OO的不足甚至超越之,現在看來即使不是不可能,這條道路也必然是艱辛異常,成敗難以預料。

  又因為上述所有因素的綜合作用,C++基礎類庫的建設只能進行到很低的高度上就停下來,因為再往上走就面臨重重困境和無窮無盡的爭論。C++標準庫實際上是一個距離應用相當遙遠的非常基礎的程序庫,其主體部分只相當于Java中System和Util兩個package。而C++寧可停在這樣的低層次,也不愿意放棄三大約束中的任何一個。這種執著使得高層標準庫設施的建立異常困難,使用也不輕易。Boost庫中相當部分組件的易用性不佳。

  模板的復雜語法與三大約束也有直接的關系。另一個原因是Bjarne在發明模板時目標單純。C#和Java加入泛型機制的時候,沒有繼續C++最好的經驗,卻不約而同地繼續了C++模板機制中最壞的部分——語法,短期來看,喪失了一次改革的良機。長遠來看,必成累贅。

  不完善的異常機制則是在木已成舟的情況下迫不得已的設計。

  C++中的多種范式并行,是一些最復雜問題的表面原因。以至于Doug Lea建議在一個項目里只堅持一個范式。但是這仍然只是表象。歸根結底還是因為OO的缺陷,使得與其它范式合作時困難成倍放大。故自接受Doug Lea思想以來,我的C++(乃至其他現代語言,尤其是Python等多范式語言)的開發設計思路是:

  1. 首先選定一種思維方式(即范式),盡可能只用這一種思維方式解決問題;

  2. 假如在局部碰到其他思維方式更得力的問題,則經慎重考慮后,可以將另一種風格包裝在局部,解決局部問題。但整個系統在某一層次之上看來,應當是統一一致的。一般C++的開發,應以OB為基本風格。除非有類似MFC那樣龐大而成熟的OO庫支持,不應貿然在整體上使用OO風格。

  3. 多種風格混用,除非有已被充分討論并驗證的方案(即成熟模式),可提供單一風格不能提供的較大優勢,否則應極力避免。當然鼓勵在研究中探索,但實踐是另一回事。

  C++完全可以在90年左右擺脫C的約束,隨后簡化模板語法,完善異常模型,接納可選GC,建立完整的單根類庫,付出性能小幅度下降的代價之后,實現語言整體升級。

  但是C++選擇了另一條路,三大約束堅持到底,堅守系統層面,以替代C為己任。是福是禍,實難判別。假如90年代初選擇升級,勝則扼死Java于搖籃之中,敗則寸土不保。不過以C++之高性能,勝面應稍大。如今看來,在系統面徹底取代C已無可能。

  1994年為STL拖延標準立案時間長達四年,如今來看功過亦存爭議。錯過黃金時機不說,STL典范一立,庫設計風氣為之一改。然而在解決應用問題上,泛型較之OO,適應能力遠遜之,且應用困難。

  總之,C++的三大約束,既是其興起之要素,也是其衰落之源頭,同時,又是其今天得以屹立不倒的重要基石。其是非功過,實難一言以蔽之。

  C++/CLI之對于C++的意義,其實并不在于使C++重新獲得了制勝Java或者C#的機會,而在于鞏固了C++作為.NET平臺上系統語言的地位。由此知,C++/CLI的發展,的確如Stan Lippman所說,是C++一貫發展思路的延續。三大約束固然已經放棄,但其精神實質仍在,形攻而實守,未來將可作為.NET上唯一最強之系統語言而長命百歲。

  C++/CLI決不簡單,但在大多數時候,它能夠比傳統的C++表現的簡單些。這就是Andrew Koenig說的,通過復雜實現簡單。

  C#和Java的繁榮期,則有賴于人們對于大一統的中層次語言的信仰有多堅持。此兩種語言無論在系統開發還是在應用開發中都非最優選。目前C#出現一些跡象,引入一些動態語言特性如cmdlet,又強化系統編程能力,想上下通吃。這是一條不歸路,必會使C#變得更加復雜怪異。

  學習編程語言,通語法能實踐,不過十分之一。真正重要的是把握其多種多樣的實用的idioms或模式。這些模式才是體現了語言精神的東西。未把握各種語言中的主要應用模式,則應羞于用“會”字。常聽有人說某某語言一周乃至一兩天即可把握,這個把握的層次肯定是很低的。真正要“把握”語言,則我等凡人,諸事纏身,非得集中精力學習實踐一兩年,將該語言所擅長領域的應用問題熟悉過一遍,才有可能。若論精通,則十年也不輕易。Henry Spencer用了30年C,仍樂此不疲;PRagmatic Programmer中評價Ruby說,學上四個小時就可以用它解決實際問題,但是10年之后還為它層出不窮的新意感到驚奇。偶見有人舉出自己“精通和把握”的工具和語言,動輒長達八九上十種,實為笑柄。真正把握一種,已經是難能可貴,熟練把握兩種層次不同,思維不同的語言,應是有抱負的程序員的自我要求。何況如今之軟件開發涉獵甚廣,僅通編程層次還顯不夠。不過總之百招會不如一招精,做什么工作都要有自己的過人之處。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧洲亚洲免费视频| 日韩av影片在线观看| 久久久久国产精品免费| 日韩精品福利网站| 中文字幕日本精品| 91精品久久久久久久久久久久久| 国色天香2019中文字幕在线观看| 日韩亚洲欧美中文高清在线| 欧美午夜精品久久久久久人妖| 亚洲欧美一区二区三区在线| 欧美性猛交xxxx乱大交3| 97超级碰碰碰久久久| 国产专区精品视频| 欧美午夜片欧美片在线观看| 黄色精品一区二区| 国内精品美女av在线播放| 91网在线免费观看| 国模极品一区二区三区| 亚洲男人天堂2024| 日韩亚洲一区二区| 少妇av一区二区三区| 夜夜嗨av色综合久久久综合网| 亚洲欧美一区二区三区在线| 95av在线视频| 91精品久久久久久久久青青| 国产成人精品网站| 国产色综合天天综合网| 久久久免费高清电视剧观看| 国产成人av网址| 97视频免费观看| 97欧美精品一区二区三区| 国产在线观看不卡| 欧美极品美女视频网站在线观看免费| 国产亚洲人成a一在线v站| 欧美激情影音先锋| 疯狂欧美牲乱大交777| 国产精品亚洲一区二区三区| 亚洲精品日韩av| 久久伊人精品视频| 日本精品久久久久影院| 亚洲一区二区三| 日韩在线中文字| 国模私拍一区二区三区| 日韩激情在线视频| 日韩电影在线观看永久视频免费网站| 日韩亚洲成人av在线| 国产精品丝袜久久久久久不卡| 国内精久久久久久久久久人| 国产精品男人的天堂| 日韩精品一区二区视频| 亚洲精品午夜精品| 欧美日韩在线第一页| 国产精品美女久久久久久免费| 久久频这里精品99香蕉| 78m国产成人精品视频| 日韩最新中文字幕电影免费看| 日韩中文字幕视频在线观看| 2024亚洲男人天堂| 美女啪啪无遮挡免费久久网站| 亚洲成人av资源网| 国产亚洲精品久久久优势| 欧美大片网站在线观看| 国产精品十八以下禁看| 国产人妖伪娘一区91| 清纯唯美日韩制服另类| 国产日本欧美一区| 亚洲激情视频在线观看| 欧美日韩激情美女| 久久影院资源站| 成人性生交大片免费看视频直播| 国产亚洲视频中文字幕视频| 国产精品精品久久久久久| 自拍偷拍亚洲一区| 久久色免费在线视频| 精品视频www| 欧美日韩亚洲91| 奇米一区二区三区四区久久| 第一福利永久视频精品| 亚洲精品日韩久久久| 国产精品一区二区在线| 欧美激情一区二区三区高清视频| 中日韩午夜理伦电影免费| 亚洲人精品午夜在线观看| 深夜精品寂寞黄网站在线观看| 亚洲精品第一页| 91久久国产综合久久91精品网站| 亚洲国产成人爱av在线播放| 久久这里有精品视频| 久久精品亚洲94久久精品| 91av网站在线播放| 色综合色综合网色综合| 欧美精品第一页在线播放| 亚洲免费av网址| 国产精品视频1区| 日韩美女视频免费看| 国产精品视频区1| 亚洲第一福利在线观看| 国产成人自拍视频在线观看| 久久久免费观看视频| 亚洲国产精品高清久久久| 91精品国产综合久久男男| 国产一区二区av| 伊人久久综合97精品| 在线观看免费高清视频97| 日韩欧美亚洲一二三区| 亚洲成**性毛茸茸| 欧美国产精品日韩| 成人午夜两性视频| 欧美黑人一级爽快片淫片高清| 欧美专区在线视频| 欧美综合在线观看| 欧美日本亚洲视频| 亚洲成人免费在线视频| 日韩av手机在线| 亚洲一区二区三区乱码aⅴ| www.美女亚洲精品| 538国产精品视频一区二区| 亚洲福利视频专区| 精品国产美女在线| 美女国内精品自产拍在线播放| 亚洲一区中文字幕| 欧美国产视频日韩| 精品国产一区二区在线| 97精品在线观看| 欧美性猛交xxxx久久久| 国产视频精品久久久| 欧美日韩精品在线| 国产99久久精品一区二区| 亚洲电影在线观看| 国产精品1区2区在线观看| 久久中国妇女中文字幕| 日韩成人激情在线| 在线日韩日本国产亚洲| 久久久精品电影| 国产精品第2页| 精品国产欧美一区二区五十路| 欧洲亚洲免费视频| 欧美成人精品h版在线观看| 日韩精品免费看| 欧美亚洲另类激情另类| 欧美成人中文字幕| 亚洲va久久久噜噜噜| 欧美日韩中国免费专区在线看| 日韩专区在线观看| 日韩午夜在线视频| 亚州欧美日韩中文视频| 亚洲免费视频一区二区| 色婷婷久久av| 亚洲欧美中文日韩在线v日本| 欧美高清在线观看| 欧美日韩国产色视频| 国产欧亚日韩视频| 欧美极度另类性三渗透| 欧美成年人在线观看| 国产91久久婷婷一区二区| 亚洲国产精品久久91精品| 热门国产精品亚洲第一区在线| 色噜噜狠狠色综合网图区| 国产欧美一区二区白浆黑人| 亚洲自拍小视频| 青草青草久热精品视频在线网站| 久久久久久久爱| 欧美极品美女电影一区| 国产欧美一区二区三区四区|