[IT] 程式語言的演進 Programming Language Evolution
程式設計語言本身並非架構的產物,但如果我不寫關於它,我會覺得《軟體架構編年史》似乎缺少了些什麼。 那麼,讓我們快速回顧一下程式語言的歷史,它的演變,並檢查我們可以從中學到什麼。我在文章中加入了一些日期,僅作為參考,它們應被視為大致的估計,重要的是演變的順序和他們試圖解決的問題。 1950s - Non-structured Programming Assembly ~1951 軟體開發曾是一項非常晦澀的活動,只在世界上少數地方進行。當時流行的語言是組合語言,它使用了非常低階的操作,如 add, sub, goto,並直接操作記憶體地址。建立一個簡單的應用程式既緩慢又困難。要創建一個簡單的 if 語句,我們需要幾行程式碼,對於一個迴圈,則需要超過幾行的程式碼…稍後才出現了將程式碼分組和重用的可能性,所以當時的編碼風格非常線性,程式碼的重用僅限於在檔案內或檔案間複製和貼上程式碼。 1960s – Structured Programming Algol ~1958, Fortran 結構化程式設計出現了,引入了 code blocks 概念,控制結構 if, then, else, case, for, while, do, …,和子程序的構造。然後,我們可以創建更有趣的程式流程,更重要的是,我們可以將程式碼指令分組並重用它,儘管有一些限制,例如子程序總是對同一全域變數進行操作。但就在這個時候,重用性 (reusability) 的概念開始被使用。 1970s – Procedural & Functional Programming Pascal ~1970, C ~1972 程序和函數式程式設計在1970年代開始活躍起來。到了這個時候,我們終於有了: 程序(Procedures):一組不返回數據的指令 函式(Functions):一組會回傳資料的指令集 資料結構(Data structures):記錄,類似於關聯式陣列 模組(Modules):可以被導入到其他程式碼檔案的程式碼檔案。 在1970年代,「Spaghetti code」這個詞也被創造出來,這是在Edsger W. Dijkstra於1968年寫給「計算機機構通訊」(CACM)的信中提出的,該信的標題為「Go To Statement Considered Harmful」。 在1970年代晚期,事件導向程式設計(Event Oriented Programming)的初步概念首次浮現,而Trygve Reenskaug則撰寫了他關於MVC(使用事件)的論文。 有了這些改進,因此我們有更好的重用性(reusability),因為子程序(程序和函式),我們可以使用不同的數據執行相同的邏輯。我們也可以通過將相關數據分組到複雜的數據結構中來模擬領域概念(domain concepts)。最後,我們在**解耦(decoupling)和模組化(modularity)**方面邁出了第一步,我們可以創建在其他程式碼文件和事件中可重用的程式碼,以將客戶端程式碼與正在執行的邏輯解耦。 1980s – Object Oriented Programming Simula ~1965, Smalltalk-71 ~1971, C++ ~1980, Erlang ~1986, Perl ~1987, Python ~1991, Ruby ~1993, Delphi, Java, Javascript, PHP ~1995 ...