新技術層出不窮,全棧工程師難為,專精一方已屬不易。本文嘗試剝離表象,探討程式設計不變的核心本質,期為學習者提供導航坐標。
任何程式皆為解決特定問題而存在。問題可分解為概念與邏輯關係。結構化程式設計與物件導向只是表達概念與邏輯的不同範式。隨規模增長,邏輯複雜度指數上升。
《Effective C++》條款用盡,若邏輯組織混亂(高耦合、低內聚、難擴充),程式仍屬劣品。健壯性、可重用性、擴充性、容錯性等品質指標,不由語言或框架決定,而由對邏輯的提煉與精化決定。系統分析師無法包辦每個模組的邏輯品質,每位開發者都應對自己筆下的邏輯負責。
當功能從軟體實現移植到硬體(FPGA/ASIC)時,變的只是載體,不變的是邏輯關係。這印證了「軟體本質上是一組邏輯關係」。
招聘條件多列舉語言、框架、協議、SDK 經驗,彷彿擁有利刃(技巧)即能善砍柴(解決問題)。實則「利器非善事之本」。語言是邏輯的載體,框架是通用邏輯的封裝。選擇框架即選擇特定邏輯表達方式,並繼承其不完美。技巧必要但不充分,決定性因素在於概念定義方式與複雜邏輯描述能力。
林銳《高質量 C++/C 編程指南》流傳廣泛,實則多論述語言技巧(如何磨刀),而非架構邏輯(如何砍柴)。若讀者將技巧等同高品質程式,恐誤入歧途。
本文拋磚引玉,歡迎同好共同探討程式設計的本質,建立超越技術棧的核心競爭力。