資訊傳遞經過主觀意識過濾、潤飾、歪曲,最終面目全非。技術辯論中「謬誤」與「迷思」普遍存在,主因包括:攀附權威、維護心理優勢、利益綁定、二手資訊主觀補全、人云亦云。理解這些心理機制,有助於保持理性包容態度。
許多開發者將「關注語言細節」等同於「學院派」。實際上,C++ 設計初衷為「不要固執追求完美」(Bjarne 語),強調實用主義。
foreach(int& i, v){...},滿足真實需求,C++11 才標準化boost::function、boost::tuple),間接惠及終端開發者這些「晦澀技巧」幾乎皆出現在**程式庫開發**中,為提升庫品質(效能、彈性、表達力)而生,最終受益者是**使用庫的終端程式設計師**。
結論:日常開發無需掌握這些技巧,《The C++ Programming Language》+《C++ Coding Standards》足矣。
事實:Bjarne 一再強調「庫設計優先」。但標準化過程眾口難調,且無大廠資助,Boost 靠業餘時間開發,質量參差。語言演進目的是帶來更好庫與代碼,二者休戚相關。討論語言特性成本遠低於開發庫,造成「只倒騰語言」假象。
錯誤邏輯:「Java VM 用 C++ 寫 → Java 比 C++ 弱」。同理 C 編譯器用 C 寫、C 庫部分用組語寫,此論點不成立。
正確視角:關鍵在於「特定領域哪語言表現更好」。C++ 領域為「效率重要且需良好抽象機制」。C 抽象太弱,C++ 提供無損效率的更好抽象。但 C++ 無法取代 Java/Python/Ruby,因後者在特定領域專精、生態成熟、代碼基龐大、人才教育完善。C++ 也算「偏執」語言——偏執於效率+抽象,這反映設計初衷「更好的 C」。
理解謬誤成因,回歸實用主義:選對工具解決特定問題,而非語言信仰之爭。