C\C++语言,从编程语言到库、API、框架、引擎
機器語言、匯編語言難以滿足我們的高效編程需要,于是有了高級編程語言,由其編譯器和解釋器實現(xiàn)從源代碼到機器代碼的轉換。
很快,編程語言不能滿足需求,我們需要重用一些代碼、算法,我們把這些重用部分寫成庫(函數(shù)庫、類庫)。
在圖形交互界面時代,學了C和C++以后再利用由操作系統(tǒng)支持的C的API,如windows32,以及支持C++的MFC或QT,才可以開發(fā)出真正能夠實用的應用。
正如一個城市如果沒有基礎設施的支持、沒有市政局的管理,如果某一個公司想提供“衣食住行”方面的某項服務,將會非常困難。
一個計算機系統(tǒng)如果沒有操作系統(tǒng),軟件開發(fā)者想開發(fā)一個諸如office系列的軟件也會非常困難。
一個計算機系統(tǒng)的操作系統(tǒng)就相當于城市的基礎設施以及市政局的管理。操作系統(tǒng)為計算機系統(tǒng)提供底層服務,計算機應用在利用操作系統(tǒng)提供的功能函數(shù)單元或類庫單元來構建應用,并運行在操作系統(tǒng)之上,這就是界面編程。如微軟就為C語言開發(fā)了基于windows操作系統(tǒng)的API,Windows32 API。
相對于控制臺程序開發(fā),圖形用戶界面的程序主要有以下兩個方面的不同:
1 輸入輸出多了一個中間層的圖形界面,數(shù)據在輸入設備、圖形界面、內存、圖形界面、輸出設備之間的交互變得更加復雜。圖形界面的數(shù)據以資源文件保存,以圖形界面呈現(xiàn);
?
2 數(shù)據結構+算法+事件觸發(fā)和消息響應;
如果大家對C/C++感興趣的話,可以加一下我們的學習交流Q群:637 ?935 ?295,免費領取一套學習資料和視頻課程喲~
在編寫圖形用戶界面程序時,發(fā)現(xiàn)同類別程序的框架大同小異,如單文檔程序、多文檔程序、對話框程序等,把這些通用的部分抽象出來,便形成了框架。
如微軟用C++開發(fā)的MFC,用類來封裝C語言的API。更進一步的,MFC提供了一個應用程序框架(Application framework),其中的Appwizard可以為程序定制各類別應用的框架代碼,程序員只需在其中添磚加瓦即可以構建應用。可惜的是,MFC慢慢走向沒落,此后,微軟轉而開發(fā)了支持C#的WPF引擎和應用框架。
Qt也是一個支持開發(fā)C++圖形用戶界面的應用框架,且跨平臺。支持的平臺有:MS/Windows - 95、98、NT4.0、ME、2000、XP 、 Vista、Win7、win8、win2008、win10。
框架這種為了解決通用問題而誕生的東西,在初期比較有用,但一復雜后,帶來的問題比能解決的問題還多,如:
- 引入Bug,這么龐大的類庫和API,有Bug很正常;
- 復雜,無數(shù)的API交織在一起,相當復雜;
- 版本問題,因為使用了框架,一個版本API變更,很可能就會引發(fā)連鎖反應,以前基于框架的東西不能運行了;
- 其它無數(shù)問題;
現(xiàn)在計算越來越復雜,每一個人,已經只能在狹小的領域內工作了。其實通用框架,用處不大,寫A應用,只能用它的1/10API,寫B(tài)應用,又用了另外的1/10,那干麻還要全部使用或學習呢?
于是,借互聯(lián)網的東風,很多公司推出了API接口,這玩意比框架簡單多了,按接口調用就能用。發(fā)短信,讀博客,提交定單,分享等。
但是問題又出來了,大量的這些東西,不會比框架更簡單,好處就是用什么,可以取什么,不象框架那樣,不用的也得包進去。但問題就是,這些API雖然都是按標準協(xié)議提供,但直接寫接口也是相當麻煩。
有沒有辦法更進一步?當然有,我們把它們變成“標記”,然后在后臺去解析這個標記就OK了,比如轉發(fā),就@XXX,關鍵字,就#關鍵字#,把Html簡化成可書寫的文本,就成了Markdown。
這種巨大的進步,現(xiàn)在只看到一個開頭,但其傳播及流行速度驚人,甚至將來不久,Markdown可能會成為基礎教育的標準課程。
Markdown是標記語言,如果能再進一步,調用各種WebApi,引入編程的一些基本概念,那么將成為一種更高級的頁面語言比如機器人語言。
同樣,我們再來看框架,如果把通用框架,打散變成專業(yè)框架,那就進化成了引擎,一種很時髦的東西。大面全的框架,可以靠邊站了。
同時,引擎技術要再進一步進化,就會進化成DSL語言,比如JS引擎,Lua語言等,更復雜的應用,或會內置好幾種引擎,比如瀏覽器,有圖形,有JS,未來還有語音視頻等。
而在基于瀏覽器的開發(fā)上,是不是也可以這么進化呢?當然可以。
如果我們把行業(yè)的應用,從庫,到框架,到形成一個行業(yè)引擎,是完全可行的,這樣的專用引擎,能極大的解決行業(yè)開發(fā)問題,如果在引擎之上進一步抽象,形成“行業(yè)語言”也就是DSL語言,那更是貢獻,比如Sql,這種建立在數(shù)據庫之上的東西,還有JSON。
通過抽象出基本的行業(yè)規(guī)則,規(guī)范,標準,形成一些通用表示法,標記,再使用一個底層引擎搞起來,通過這種模式來復用,是一個非常好的方向,是一種比Api更高層次的復用。
總結
以上是生活随笔為你收集整理的C\C++语言,从编程语言到库、API、框架、引擎的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 吴恩达《Machine Learning
- 下一篇: 程序员——[小鸟语录]