Windows API 編程還能走多遠,長遠的考慮學習它的價值能有多大?


除非你的應用有特殊需求必須以原生二進位代碼(native binaries)的方式發布,否則最好儘可能地使用.NET API。實際上,隨著最後一代不內置.NET Framework的Windows(XP)的淡出,.NET API基本上已經是新的事實標準的「Windows API」了

但是學習原生的(C介面)的Windows API也有用處,就是當你遇到特殊的.NET API沒有覆蓋的情況,你可以自己去包裝、橋接到底層的C API


Windows 系統是目前的 leaky abstraction 重災區。Leaky abstraction 的問題在於,開發者必須詳細了解底層才能解決很多細節問題。但是目前 Windows 又有很多更好用的,諸如 .NET 之類的上層抽象。其結果是,早年接觸過底層 API 並且了解其核心概念的開發者可以很快上手新的抽象。而新的開發者就面對兩難問題:如果不好好學習底層,就不能理解很多細節問題。化大量時間學習底層,又不能馬上好好利用上層抽象。

個人投資自己的業餘時間,最好不要放在這種 leaky abstraction 的重災區。你很難計算投入產出比。相比之下,OS X 的 Cocoa 是一個更適合初學者建立概念基礎的系統。


Windows不死,API就不死。另外一直被社區,書籍等邊緣化的COM其實是Windows核心技術。(DirectX,Office等都是COM為核心)
自己估計一下Windows的壽命,然後可以估算API的價值。只是現在Windows API外面被封裝了一層又一層,大部分應用領域很少能碰觸到。但是系統編程、遊戲編程等領域基本還是混API的


我覺得@馮東 的說法不太準確。如果只是為了完成任務的話,.net的抽象絕大多數情況下不需要知道底下發生了什麼,你也可以在不花費那麼多時間的情況下,學習並做出一個【略靠譜】的程序。

當然如果你是為了深究各種原理,那學習什麼api都是一樣的——因為最終你可能覺得連api都太抽象了,linux可以去看代碼,windows也有教育版本的代碼——或者乾脆逆進去——這樣你學到的東西就太多了。


這個看個人興趣吧。我倒覺得Windows 、Windows API都蠻有意思的。


Windows API的說法並不嚴謹,因為.NET啥的也是Windows API的一部分。我想提問者指的應該是原來的Win32的API。


隨著Windows RT的退出,微軟可能找到了一個拋棄Win32 API的最佳方式,也就是隨著桌面的淡出而淡出人們的視野,,,,

沒錯,Win32 API的喪鐘已經在倒計時。長遠的考慮這套API只有歷史考據研究的價值了


推薦閱讀:

物理系學生如何學習人工智慧?
計算機科學與技術專業的學生要怎樣做才能避免成為 一個低級的碼農?
想要完全掌握金融工程需要哪些學科的哪些教材?
是不是機器學習的框架都偏向 Python ?如果是,為什麼?
有沒有一段代碼,讓你覺得人類的智慧也可以璀璨無比?

TAG:程序員 | Microsoft Windows | 編程 | 計算機科學 |