答C++複雜多餘者之惑

來源:互聯網
上載者:User

C和C++有太多的曆史包袱而其它語言並沒有這些,從另一個角度下來講C和C++其實就是現代語言的活字典,也是現代軟體設計的基礎,當然有更古老的語言,但像C和C++影響力這麼大的卻無其它語言可以出其左右。

C++和其它語言最大的不同在於它不屬於任何人,任何公司,而Java,C#,Python,Ruby等都是由某個公司或個人控制的,在相對封閉的體系之下設計的語言很容易可以做到易用性,但靈活性和設計思想的廣泛度上與C++這樣的語言不可同日而語。且不說其它語言從C/C++中借鑒的大量的特性,單就語言本身能夠體現的設計思想廣泛性上來講只能說其它語言只作到了”溺水三千 只取一瓢”,像C++可以支援設計風格就有四種:面向過程、基於對象、物件導向、泛型。今日的C++並不是一開始就這樣,最初的C++ 中連stl都沒有,stl最初是HP內部開發使用的,後來才加入到標準中去,template技術也是後來加入的,反過來stl又引template的出現作了相應修改。由於C++開放的特性,在其被快速、廣泛應用的同時,也出現標準落後於編譯器實現的情況,因為業界的需求總是先於標準出現的,而商業化的產品必須滿足這種需求。比較具體的例子如早期的VC++ ,在其MFC庫中加入了很多現在看來冗餘的設計比如說List這樣的容器,那是不得已而為之,MFC出現的時候C++本身還不夠完善,如此VC++本身就有了另一種曆史負擔,由於Windows平台在國內事實上的統治地位,造就了大批C++開發從VC++開始的進入這個領域的局面,而由於VC++、MFC本身的實現就不夠標準,所以在入門的時候就把人引入了歧途,讓學C++的根本沒搞清楚到底什麼是C什麼是C++。大多數人從寫介面開始,所以MFC的影響很不好,另一個角度來講Windows本身所提倡的API風格,編碼風格(匈牙利命名法)完全自成一體,與Unix-like這種提倡,簡潔、明了的設計風格背後的設計哲學完全不同,但現代軟體的曆史其實是C/C++和Unix曆史,所以在沒有搞明白這些之前貿然進入Windows開發領域反而給更多的人造成的更多的困惑,我不是說Windows不好,而是想說不懂Linux、Unix、C/C++,那更不可能真正的搞懂Windows。因為作業系統理論上很多東西都是由unix發展過來的。簡單如strcpy這樣的C函數和StringCopy這樣的函數名稱在編碼的時候有多少在會去思考它背後的東西呢?

 

C++樣的背景正好和GNU以及互連網的發展過程相切合,從軟體工程的角度來講正如《人月神話》所說,C++實際上和Linux一樣,是在一種“大集市”的模式下產生的,從而產生了類似Linux的問題,靈活、強大,但進入的門檻比較高。各種思想在C++ 中全面開花造成C++本身強大的同時複雜度也飆升。但就像Unix-like OS使用一樣,他就是面向技術人員的,而且面向的是喜歡技術的人員,如果你是個比較懶的技術人員那麼C/C++絕不適合你,因為它在不停的發展,也有浩瀚如海的思想和技巧在裡面,不時常的琢磨是絕對用不好的。

 

C++中異常的處理之所以不如Java這樣的語言完善,是因為作業系統的限制,真正的異常處理機制完全是由作業系統提供的,在各種平台的差異下編譯器沒有辦法作到面面俱到,而Java之所以可以做的更好,之是因為有JVM的存在,C++編譯器不能代替作業系統的工作,但JVM卻可以勝任這個角色。

 

至於大而全的庫,C++發展至念已經有很多不錯的庫了,比如說boost,poco,正因為很多人沒搞清楚c/c++是什麼,還在思想的混亂中糾結就更不可能對庫有更準確的看法了。如果你真的在使用C++那麼學習使用好的庫如boost,那麼價值遠大於去學習另一門語言。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.