[FAQ集] 基本:古董級的 C++ 還有競爭力嗎?
ptt.cc BBS 站 C_and_CPP 板 FAQ (0.1版)
基本中的基本問題
Q: 像 C++ 這麼古董級的語言,能與更新更先進的語言競爭嗎?
A: (本則原作者 Bjarne Stroustrup
http://www.research.att.com/~bs/bs_faq.html#advanced
引文擷取自葉秉哲先生的中譯。
http://william.cswiz.org/CPPbook/bs_faq.html)
從「把 C++ 喚作古董級語言」這句話就嗅得出你有偏見。嗯,回到正題。
會問這問題的人,多半會把 Java 或 C# 視為更新更進步的語言。我雖然不
想做語言之間的比較,但我必須指出:「新」未必代表「更好」,你看,Java
和 C# 的觀念都源自 1980 年代的 OOP 思維,甚至比早期的 C++ 更沉醉在
OOP呢。
但自從 1987 以來,C++ 的發展及編程技術早已匯集模板、靜態多型、泛型
編程、多維編程(Khoguan按:multiparadigm programming)……等,遠遠
超出某些被過度神化的專屬語言的視野。另一個重大差異是:C++ 對用戶自
訂型別照顧到幾乎與內建型別差不了多少,尤其是加上模板、建構式、解構
式等設施之後,C++ 程式員更可發揮更高等的編程及設計技術,以我個人看
來,C++ 遠遠勝過那些成天隔岸叫陣的對手。
標準 C++,以及所支援的設計與編程風格,要歸功於函數式程式語言(functional
language),尤其是 ML。ML 型別推導機制的早期變形,啟發了模板的設計;
函數式語言之中更強大的技術則啟發 STL 及函數物件。可惜的是,函數式語
言陣營錯過了物件導向思潮熱,語言及工具很少受惠於成熟的大型產業經驗。
我並不認為垃圾回收功能是界定語言「先進」與否的唯一標準,尤其是像 C++
這樣提供了極富彈性又有效率的記憶體管理機制,即使沒有垃圾回收器,也可
消弭資源漏失現象。當然啦,如果你不同意,想要替 C++ 裝上一個垃圾回收器,
市面上也有許多產品任你選擇。
edited by Khoguan Phuann
-----------------------------------
敬請指正錯誤,或提出更合適的答案。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.227.252.33
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章