那年多倫多零下二十度的深夜,我蜷在咖啡館角落對著螢幕上segmentation fault的報錯發呆。手指凍得發僵,螢幕藍光映著窗外的暴雪。就是那晚真正懂了C++教我的事——當你直接和機器對話時,連記憶體洩漏都會凍結成冰棱,刺進程式設計師的骨頭裡。
什麼是C++?它像機械錶芯裡的游絲彈簧。當Java和Python忙著把開發者裹進溫暖的抽象毛毯時,C++掀開機箱蓋塞給你一把螺絲起子:「來,自己調整齒輪咬合角度」。1979年從C語言脫胎時就帶著這種硬核基因,Bjarne Stroustrup教授在貝爾實驗室創造它時,根本在打造程式界的瑞士軍刀。
指標(pointer)是它的靈魂印記。當你寫下`int* p = a;`那刻,指尖就觸到了記憶體的真實脈搏。在多倫多金融區某個暗房,我見過交易系統用指標在毫秒間跳過十層抽象,比Python快400倍——這裡沒有「解釋器媽媽」幫忙擦屁股,你得自己清理記憶體戰場。
效能是它的獻祭儀式。蒙特利爾遊戲工作室的朋友展示過魔法:用模板元程式設計(template metaprogramming)在編譯期生成3D碰撞檢測程式碼。當別人還在runtime迴圈裡掙扎,他們的虛幻引擎專案已將計算燒進CPU快取。代價是什麼?深夜對著模板編譯錯誤的二十層巢狀報錯,比破譯楔形文字還絕望。
應用場景?它活在所有「不許失敗」的陰影裡。溫哥華港口的自動化起重機用C++控制鋼索微米級擺動;阿爾伯塔油田的鑽探探頭裡,它在150度高溫下執行訊號處理;甚至你手機的藍芽協議棧底層,都有它在黑暗中掌舵。當每秒百萬次交易在華爾街流竄時,C++是唯一能馴服光速的韁繩。
但別被精英主義迷惑。去年幫高中生改作業時驚覺:他們用三行程式碼在Python裡呼叫OpenCV人臉辨識,同樣功能用C++要寫兩百行。這就是殘酷真相——C++像開戰鬥機買菜,當你需要穿越雷暴雲層時它是神器,去街角雜貨店?腳踏車更實在。
現在我教女兒程式設計,從Python積木開始搭城堡。但總有一天會帶她到地下室,掀開蒙塵的《The C++ Programming Language》:「看,這是讓摩天大樓不會倒塌的鋼筋編織術」。那時她會懂得,有些語言是用來創造童話,而C++是用來鑄造童話世界的基石。
|