-
1 # 龍華仙島
-
2 # 春花般燦爛
其實windows是個黑盒,但是對外暴漏了一些介面,這些介面有對應的說明文件,分別描述了介面的型別,介面的用途,介面各個引數的型別。有些文件也會附上一些例子,為你展示怎麼使用,這樣就很好的解決了程式設計師為其開發應用的問題。
如下面幾張圖就是windows api的描述
-
3 # 周林ZhouLin
回答這個問題,我們先來一個程式設計師的靈魂拷問:程式的本質是什麼?
1. 程式的本質是什麼?程式的本質,就是一坨二進位制形態的指令和資料,它們與相關的硬體相互作用,實現預定的目標。至於二進位制與硬體的關係和相互作用,詳情可以訂閱筆者的專欄《華為方舟編譯器原始碼分析》的相關文章。
2. 原始碼真的那麼重要嗎?把你自己想象成計算機,那麼原始碼就是“火星語”——因為你只care二進位制,其他的語言你聽不懂。之所以會有原始碼這個東西,其實主要是人類為了解決大規模生產效率而發明的東西。畢竟人類使用的語言是自然語言,直接用二進位制來編寫程式,對普通人來說,是一個枯燥、低效、並且需要有完整的系統知識,才能勝任的工作。為了擺脫這種天生的短板,人類就開始想象:如果有一個東西,能把接近自然語言的程式翻譯成計算機能聽懂的二進位制,不就好了嗎?這玩意就是“編譯器”。
最開始的編譯器是彙編器,它的作用是將組合語言翻譯成二進位制,組合語言本質只是一堆助記符,每條彙編指令與二進位制指令是一一對應的。有了第一個彙編器,人類就可以用匯編語言來開發更高階的程式語言的編譯器,這樣遞迴往復,就可以最終形成非常貼近人類自然語言的高階語言的編譯器(比方說C++和Java),這樣通過這個高階語言編譯器,就可以轉化成二進位制,完美解決前面講到的計算機和人類分別說著各自不懂的語言的問題。具體的原理和介紹可以參見筆者的專欄《華為方舟編譯器原始碼分析》的文章《先有蛋還是先有雞:編譯器本身是怎麼被編譯出來的?》
3. 對於不開源的系統,如何進行開發和支援?對於不開源的作業系統,有兩種方法進行開發和支援:
第一種方式:通常作業系統的開發商會提供一組API介面甚至框架,給到應用程式開發者。你可以把這些API和框架看做是樂高積木,應用程式開發者可以利用這些原材料,來進行組裝,生成功能更強大的產品,來吸引終端使用者買單。
比方說:我們常用的Office辦公軟體,本質就是應用程式,它實際上就是利用作業系統提供的顯示、繪圖、計算、應用程式間相互呼叫(COM)等API來構建出豐富的辦公程式,方便使用者使用。
總之一句話:對於真正的高手而言:二進位制面前,了無祕密!
-
4 # 光明右使8787
Windows是微核心架構,各模組之間由訊息機制通訊,模組之間藕合度相對較低,可以封裝成獨立的API介面給應用程式呼叫,而不必開源核心程式碼。因為API返回錯誤,問題就在這個模組上,不會牽扯到其它模組,即使不開源也容易找到問題。
巨集核心的Linux就不一樣了,模組之間本身就是靠API呼叫,外層呼叫的API返回了錯誤,往往可能是上一層API返回的,那就要去分析它的原始碼才能找得到問題。
-
5 # IT人劉俊明
作業系統是否開源並不會影響基於該作業系統來打造相關的軟體產品,從技術體系結構的設計來看,只要作業系統開放了自己的API,就可以圍繞這個作業系統打造相應的生態體系。
軟體開發除了需要作業系統的支撐之外,還需要開發語言、開發框架、第三方庫,以及各種編譯工具的支撐。雖然開發語言往往能夠適應各種作業系統,但是不同的開發場景往往需要採用不同的程式語言,比如嵌入式開發往往需要使用C語言,而大資料開發則可以選擇Java、Python等程式語言。
有了程式語言往往還需要一系列程式設計工具的支撐,包括擴充套件程式語言功能的開發框架、庫,以及各種編譯工具等。開發框架和庫是擴充套件程式語言程式設計能力比較常見的做法,其中開發框架往往會讓程式設計師更專注於業務邏輯的實現,而各種庫則能夠實現程式語言向更多的開發場景下覆蓋,比如Python語言就通過各種庫實現了程式設計邊界的拓展。
程式設計環境對於程式設計師的影響也比較大,比如在當前的雲端計算時代,基於PaaS進行各種任務開發會在很大程度上降低開發難度,這也會促使程式設計師實現崗位升級。
我從事網際網路行業多年,目前也在帶計算機專業的研究生,主要的研究方向集中在大資料和人工智慧領域,我會陸續寫一些關於網際網路技術方面的文章,感興趣的朋友可以關注我,相信一定會有所收穫。
回覆列表
因為windows為程式開發人員開放了很多封裝的模組介面,方便程式去呼叫,這些介面就在msdn都能查到,稱之為api函式介面,windows封裝了很多庫檔案(dll庫),分別對應實現不同的功能,程式設計師開發軟體的時候去呼叫這些dll庫檔案裡對應的api函式就可以了。