看板 C_and_CPP 關於我們 聯絡資訊
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