成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

關于C++復雜性問題解析

開發 后端
決定C++中的復雜性,其根源在于三大約束:與C的完全兼容、靜態類型檢查、最高性能,從而導致C++在編譯過程中大大增加了它的復雜性。

下面講述有關C++復雜性的問題,實際上C++復雜性是一個距離應用相當遙遠的非常基礎的程序庫,其主體部分只相當于Java中System和Util兩個package,接下來進行詳細說明。

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

【編輯推薦】

  1. 簡介學習C++總結之談
  2. 對C++庫函數進行學習探索總結筆記
  3. C++類庫設計的基本構思與方法
  4. C++語言真的還有市場價值?
  5. C++類庫設計的基本構思與方法
責任編輯:chenqingxiang 來源: NET130
相關推薦

2010-01-27 15:50:23

C++復雜性

2010-01-13 18:49:54

C++的復雜性

2010-01-13 15:41:02

C++的復雜

2010-01-12 10:28:58

C++復雜性

2010-01-28 13:15:43

C++參數

2010-01-12 10:57:16

C++的復雜性

2024-08-19 00:10:00

C++內存

2010-02-05 16:07:52

C++多態覆蓋

2010-01-21 14:07:14

CC++聲明

2025-05-08 03:20:00

2010-01-13 11:27:06

C++安全性

2020-01-08 21:38:30

機器學習工業4.0物聯網

2010-02-06 14:54:11

C++指針漂移

2010-02-02 13:20:33

C++對象傳遞

2017-06-23 08:45:02

存儲技術復雜性

2019-08-21 13:24:25

KubernetesHadoop容器

2010-01-21 10:23:53

C++代碼

2009-08-20 15:54:48

從C#到C++

2009-08-27 13:55:08

C#子線程

2010-01-28 15:45:35

C++老手
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产在线a | 国产一级毛片精品完整视频版 | 美女视频h| 欧美日韩精品久久久免费观看 | 国产欧美三区 | 国产免费拔擦拔擦8x高清 | 欧美精品乱码久久久久久按摩 | 亚洲国产第一页 | 亚洲视频在线免费观看 | 麻豆亚洲 | 色五月激情五月 | 成人国产在线视频 | 国外成人在线视频 | 久久国产精品久久久久久久久久 | 麻豆视频在线看 | 女人毛片a毛片久久人人 | 日本精品在线播放 | 成人在线中文字幕 | 免费黄色a视频 | 欧美色图另类 | 男插女下体视频 | 亚洲国产精品一区二区三区 | 99re在线视频免费观看 | 日韩欧美一区二区三区免费观看 | 日本在线你懂的 | 成人免费看片 | 亚洲一区二区中文字幕 | 日本黄色免费视频 | 久久中文字幕在线 | 日韩一区二区三区在线视频 | 亚洲精品中文字幕 | 国产激情视频在线观看 | m豆传媒在线链接观看 | 91精品国产91久久久久久密臀 | 欧美福利 | 超碰美女在线 | 国产精品区一区二 | 免费一区二区 | 成人精品一区二区户外勾搭野战 | 亚洲综合一区二区三区 | 国产精品久久久久久久岛一牛影视 |