從組合語言到類庫框架的隨感
前幾天在論壇裡看到一個問題,下面有個這樣的回覆。
C++語言確實能創造出各種奇葩。不知道這是它的榮耀還是悲哀。
他這個回覆對樓主的問題沒有任何幫助,因為這個問題不是某種語言的問題。
所以看到他的抱怨的時候我就想駁一駁他,但是後來只顧幫樓主解決問去了,沒有回覆他。
樓主的問題是“規則和需求”引起的。
從最低層次來說,如果沒有任何需求和規則,用機器碼隨便寫什麼都行,這樣就沒有編譯器在中間攙和,就不會出現樓主的問題了,只是機器能不能按照需求執行所寫的機器碼而已。這樣也就沒有語言一說了,也不用抱怨某某語言是奇葩了。
向上升一個層次,然後有了彙編程式(彙編引擎,可以錯誤的理解為組合語言的編譯器),為了讓彙編程式能認識你的原始碼,所以定製了少量的語法規則,但本質還是按照處理器的工作方式規定的,把不同的機器碼用不同的可讀的指令程式碼來標識。不要說彙編很難,只是用匯編開發【繁瑣】。【語法規則相對簡單,開發過程繁瑣】
然後有了C語言,一切蛋疼的事都從這裡蔓延開了,C語言規定了“語法規則”,這個規則相對與彙編語法規則來說複雜多了!C語言的語法規則比彙編繁瑣,但是開發過程卻比彙編輕鬆了許多,因為C編譯器為你做了很多繁瑣的事。【語法規則的繁瑣,開發過程相對輕鬆】
然後有了C++語言,C++不但語法規則比C語言更加繁瑣了一點還引入支援了【物件導向思想】,先拋開物件導向思想來說,C++的語法比C語言增加了一些,關鍵字增多是肯定的,其他增加的特性我也不列舉了。C++開發過程比C的開發過程沒有太多的減少工作量,但是也有改進。再次印證了【語法規則越繁瑣,開發過程相對越輕鬆】
然後加入【物件導向思想】來說,物件導向思想是可以完全脫離程式設計的一套抽象規則。經常聽人說什麼什麼語言是物件導向的,其實很多語言只是支援物件導向,並不是說這種語言就是物件導向的(你鑽牛角尖說SmallTalk就是物件導向的我也無話可說),有了物件導向思想的支援,開發過程變得何等輕鬆了!還是要說【語法規則和程式設計思想越繁瑣,開發過程相對越輕鬆】
再到後面JAVA,C#,我就不說了,思想也已經被引入程式設計了,為了更加提高開發效率,牛逼的公司或者組織乾脆就先替程式設計師實現一些基礎的功能模組,然後STL啊,Boost啊,MFC啊,ATL啊,VCL啊,dotNet啊,[JFC啊,JavaAPI啊](java的類庫我還不知道叫什麼確切的名字)等等一系列的類庫框架就鋪天蓋地的出現了……然後程式設計師就累死在學習這些類庫框架的過程中了。
相關文章
- 智慧合約從入門到精通:Solidity組合語言Solid組合語言
- 組合語言1 - 什麼是組合語言?組合語言
- 組合語言組合語言
- 組合語言 1組合語言
- 組合語言 2組合語言
- 組合語言-棧組合語言
- Go 語言的組合之道Go
- 從高階語言到機器語言
- 組合語言---判斷字元組合語言字元
- 組合語言——更多功能組合語言
- 組合語言-基礎功能組合語言
- 8086執行組合語言組合語言
- 類的組合、繼承、模板類、標準庫繼承
- 組合語言--單步中斷組合語言
- 組合語言-CALL和RET指令組合語言
- 組合語言-基礎知識組合語言
- NLP 與 NLU:從語言理解到語言處理
- 機器碼 指令 組合語言 的關係機器碼組合語言
- 從函數語言程式設計到Ramda函式庫(一)函數程式設計函式
- nand2tetris_hack組合語言NaN組合語言
- 組合語言-學習記錄(二)組合語言
- lec 02 arm組合語言基礎組合語言
- 基於MDK建立純組合語言--組合語言
- Java從8到21的語言新特性Java
- 從Julia到Rust語言的學習 - miguelrazRust
- 實驗4 類的組合、繼承、模板類、標準庫繼承
- 實驗四 類的組合、繼承、模板類、標準庫繼承
- 實驗四 類的組合,繼承,模板類,標準庫繼承
- 理解函數語言程式設計語言中的組合--前言(一)函數程式設計
- 開啟java語言世界通往位元組碼世界的大門——ASM位元組碼操作類庫JavaASM
- ASM位元組碼操作類庫:開啟java語言世界通往位元組碼世界的大門ASMJava
- ASM位元組碼操作類庫(開啟java語言世界通往位元組碼世界的大門)ASMJava
- 非常適合GO語言新手學習的《Go語言從入門到實戰——簡明高效的Go語言實戰指南》課程——推薦分享Go
- 從Nest到Nesk -- 模組化Node框架的實踐框架
- 鴻蒙HarmonyOS實戰-ArkTS語言基礎類庫(容器類庫)鴻蒙
- 從 BASIC 到 Ruby:入門程式語言的體悟
- Go語言的context包從放棄到入門GoContext
- 深入iOS系統底層之組合語言iOS組合語言