開發Windows平臺下的軟件用哪種編程語言比較主流比較好?

dimanlanke


謝謝邀請!

Windows下桌面開發其實已經非常成熟了,C++、C#、WPF這就基本代表了Windows上桌面開發下的幾個關鍵詞,不過也得看你的實際需求,畢竟在滿足需求的前提下,快速開發你難道不想試一下Scratch和Electron?

90%的桌面軟件都是C++開發的

C++毫無疑問還是目前桌面開發的第一大編程語言,你所熟知的幾乎所有的大名鼎鼎桌面應用基本上都是C++開發的,QT越來越成熟之後,相比於純淨C++你本質上已經擁有了更成熟的輪子,拿過來就可以直接裝車。

當然大企業可能有自己的GUI庫,小企業的話也可以用成熟的解決方案。比較成熟的wxWidgets、GTK、Webkit、Chromium等都是比較成熟的桌面開發解決方案,也基本上都是C++解決方案,不過還是那句話QT5出來之後,基本上已經在這領域是絕對王者,Deepin Linux的桌面DDE就已經完全轉向QT技術棧。

有很多經典軟件都是用C++開發的。Windows/macOS用了很大比例的C++,尤其是UI方面C++是主要編程語言;Linux領域的Gnome、KDE桌面環境,以及國內的Linux發行版Deepin Linux的桌面DDE;Microsoft Office、Adobe Photoshop、The GIMP都是用C++開發;MySQL、Oracle、Microsoft SQL Server主要也都是C++開發;IE、Firefox、Chrome、Safari都是用C++開發;集成開發環境visual studio、搜索引擎Google也都是用C++為主要開發語言。

C/C++毫無疑問是性能的代名詞,因此很多C端的產品還是會用C++來做客戶端開發,也找不到比C++更好的解決方案。

C#開發快速、開發成本低效率高

相對於C++來說毫無疑問C#毫無疑問是更方便的解決方案,可視化編程做得做好的就是Delphi、C#這兩門編程語言,直接拖控件開發起來不要太舒服,微軟也為大家準備了豐富的參考資料,channel9和MSDN能幫你解決你幾乎所有你遇到的問題。

C#相對於C++來說門檻也相對更低,很多輪子都給你造好了,你拿過來就可以用,這一點比C++還要出色,微軟直接給了一套解決方案,C#對於開發者的要求也相對更低,開發的效率也相對較高,假設你的軟件面向的是行業市場和企業市場,這些往往不會像C端產品一樣對你的性能要求那麼高,因此C#尤其適合用來做一些企業業務客戶端。

總之相對於C++來說,C#的性價比要高很多,也是目前最強大的GUI解決方案,英偉達的顯卡安裝程序也是C#寫的。只不過現在桌面開發領域基本上越來越蕭條,只有專業軟件還會開發桌面客戶端,很多C端的產品要麼轉Web了,要麼就轉移動端,加上很多應用都對性能有極高的要求,這一點上C#沒辦法取代C++的地位。

最好的跨平臺桌面解決方案Electron

要是換了以前,大家肯定不相信前端技術會在桌面開發領域運用得這麼好,不僅僅是移動端擁有React Native、Flutter(主要是Dart)等解決方案,Web App的發展也進一步推進了桌面開發的進步,Electron就是非常有代表性的“前端”桌面解決方案。

Electron跟Web App是一樣的道理,主要就是為了互聯網企業頻繁的需求變動,以及減少多平臺開發的成本而存在的,很大程度上真正實現了一次開發到處運行的目的,這一但是C++/C#沒辦法相提並論的。

大名鼎鼎的Visual Studio Code、Atom兩大編輯器,Postman客戶端、Etcher鏡像創建工具、墨刀原型工具、最美終端工具Hyper、最美效率工具shift、Skype桌面客戶端、WhatsApp桌面客戶端、Slack桌面客戶端、GitHub Desktop、GitBook、Boostnote筆記軟件,Eagle圖片管理工具,WordPress桌面版本等眾多重量級軟件客戶端全都是基於Electron發展起來的。

目前桌面開發有衰落的趨勢,尤其是互聯網化、移動互聯網化,很多都被搬到了Web和移動端,當然在專業軟件領域、以及遊戲領域等,還是離不開桌面開發,C++依然是老當益壯,而C#和Electron這些技術相對來說比較現代化,不過相對於C++的性能還是有很大的差距。


本文為字節跳動簽約作者EmacserVimer悟空問答原創文章,未經允許轉載、抄襲必究!

EmacserVimer


這個問題真的是兵家必爭的焦點。

也是新手在選擇上最為糾結的煩擾。

每個行業的朋友,熟悉某種語言的樓主,建議和答案都不盡一致。

我也來湊個熱鬧,交流下我對這個問題的看法。

有哪些糾結的選擇?

問題關鍵字有Windows平臺,選擇語言。

既然是Windows平臺,我們就會傾向選擇微軟自家的產品。

常見到的有VB,MFC,C#,還有最新推出的Bosque。

具體選擇哪個?

這個也不好說,我個人是建議學習MFC,當然對應就要熟悉C++語言。

我就根據個人情況來分析下吧,可以借鑑參考。

我是從事工業自動化的,這個行業有幾個特點。

首先是對UI並不追求,追求的是軟硬件的執行效率。

然後是對平臺與系統的更新也不追求,設備能夠平穩運行不影響生產就好。

最後工業控制,更多的是針對硬件進行使用,要考慮硬件廠家SDK。

所以選擇MFC的原因也可以總結幾個(雖說MFC是20年前的產品了)。

1.MFC執行效率相對較高。

如何的高?我也沒對比過哈,倒是有大神對比過,得出有結論。

2.工業對界面不追求,MFC也不方便編寫出炫酷的界面。

所以在編程時,這方面也不會為難自己。

我們知道界面也會消耗電腦系統資源,所以我們多會使用默認的界面,

這也是為什麼我們看到設備上軟件的控制界面多為灰白色的原因。

當然如果要編寫能接受的界面效果,MFC也是可以的,

如下圖,為數據可視化圖表界面,運行後CPU,內存會有明示變化。

3.MFC是20年前的產品,雖說落後了,但仍有MFC開發的大量設備與軟件,

系統都還是XP或是WIN7,都在運行,都要維護或者改造。

我10年選擇學習MFC,也是因為有30幾臺激光打標機要改造。

當然MFC也有很豐富的生態資源,源碼,問題,自學時一根網線就夠用。

4.MFC能夠得到眾多硬件廠家的支持。

我們可以隨意下載大公司的硬件開發包查看,都提供有MFC的開發手冊,實例源碼。

非常方便我們項目開發,當然也有很多C#相關的了。

5.開發效率與上手簡易程度上,C#是絕對好於MFC。

硬件廠家也對C#有很好的支持,但為什麼建議MFC?

C#繼承於C++,但去掉了一些複雜的特性,

所以熟悉MFC,可以很快上手C#,反過來不行。


所以建議學習C++熟悉MFC,進可攻,退可守。

上面就是個人的一些觀點,有誤,歡迎指正與交流。


工控編程


我是宇宙君 ,我這個寫了20多年代碼的老碼農來說說。

首先個人覺得不能說哪種語言比較好比較流行,在一個平臺下開發軟件,是根據軟件的要求來選擇具體的語言,當然“懂技術”的甲方有時候也會“要求”你用哪種語言 :)

Windows平臺下,具體說:

1、如果性能有限,穩定性優先(甲方也不差錢),那當然最好就是用C/C++;當然說到這裡又不免要爭論一番到底是用MFC還是QT。。嗯,要我這個骨灰級的來說呢,,我的心中只有MFC。。 :)

2、如果是考慮開發效率和穩定性,那麼C#是最好選擇,,真是方便啊!但悲劇的C#程序猿的工資,,,不說了,說多了都是淚 :(

3、如果手下技術比較上不了臺階,那不妨搞搞Delphi,甚至VB,,不過這兩個現在號偏門。。

4、如果大量的複雜計算,還要畫圖,還要外部調用各種古怪的系統,而且還不在乎跑的慢。。。那麼,恭喜你,matlab,python是個好選擇。

5、哎,手下實在沒有合適的人,只有一堆做web的,能做C的也就我這幾個老東西,而且客戶也不那麼在乎性能。。。那麼,恭喜你,你有了低成本好選擇,你可以用electron這個神器,簡單低成本漂亮!還可以用C來做混合編程搞定密集運算部分!

其他諸如Java之類的你就看著用吧 :)


特修斯的宇宙


編寫windows的窗口化程序就需要調用windows提供的API。可以通過大概3種辦法:

一是學習win32API就是windows為開發者提供的接口,需用C++語言來調用。

二是學習MFC,MFC是微軟提供給開發者的一個類庫,以C++類的形式封裝了Windows的API,並且包含一個應用程序框架,以減少應用程序開發人員的工作量。其中包含的類包含大量Windows句柄封裝類和很多Windows的內建控件和組件的封裝類。三是你可以學習C#語言,C#語言生成面向.net的環境代碼,也是可以實現可視化窗口程序的。至於IOS這個你可以查看IOS API幫助文檔,裡面會有一些例子。android開發需要用android SDK當然android開發需要用到JAVA語言所以還需安裝JAVA SDK。 編輯器可以用Eclipse。


大國風雲志


我是從老VB6(非.net的)、Delphi開始學起的,現在都已經逐漸淘汰了,用的人也是越來越少了,我覺得主要看你開發什麼樣的軟件來選擇語言,我個人推薦C#或者C++。

C++一般用於開發個人應用,大多數的通用商業程序都是C++開發的,比如迅雷影音。而C#更多用於企業應用,更適合快速開發,調用API,COM組件,DLL都很方便,便於團隊合作和使用第三方代碼。以前缺點是部署必須帶運行庫或者用戶安轉.net依賴,現在win7以上系統已經自帶了,況且c#上手比較簡單,學習難度小,跨平臺容易,首選c#。

其它還有像國產的e語言,中文編程概念方便的很多初學者學習,編寫一個進銷存的簡單軟件也可以。


科技從業者


很高興能回答您這個問題,以下我為大家分享,我個人對這個問題的看法與想法,希望我的分享能給大家帶來幫助,也希望大家能夠喜歡我的分享。

作為一個從業16年的IT老兵,記得當年剛入行的時候就是從編寫windows應用程序開始的,所以對這個問題特別有感情。雖然現在主要從事Web應用的開發,但我還是根據自己的瞭解和經驗回答下這個問題。關於Windows平臺下的軟件編程語言,毫無爭議的應該是屬於微軟系的語言,畢竟操作系統都是人家開發的。這其中包含VC,VB,C#等主流開發語言,這些語言構成Windows下桌面程序和Web應用程序的主流開發語言。

Windows桌面程序開發

對於Windows桌面程序,早期的話基本上是VC,VB的天下。本人當年的菜鳥期就是伴隨著VC開發應用程序而度過的。嚴格的說,VC不能算是一種語言,它只是微軟開發的使用C++語言的開發工具。微軟提供了一套MFC的應用程序庫,用它再結合Win32的Api,幾乎可以開發任何windows應用程序。不過隨著時代的發展,也許是為了和Java競爭,微軟將重心移向了基於

.net

平臺的C#語言。個人感覺用C#開發應用程序要比C++來的簡單,至少不用再擔心內存管理,而且從大部分功能上也不弱於VC,所以現在在windows桌面應用上,應該是C#語言佔據了主流。

Windows平臺Web應用程序

在Windows平臺下,嚴格的說Web應用程序是運行在Windows Sever操作系統的IIS上的。微軟系的Web應用程序的開發從早期ASP到目前的

ASP.NET

,其採用的後端主流開發語言還是C#。

所以說,掌握了C#,基本就可以橫行Window平臺軟件了。

另外需要補充說明的是,雖然微軟極力推薦自己的語言來開發程序,但是一些跨平臺的語言,比如Java,Python等都對Window有很好的支持,但異或是習慣的原因,或者是因為windows是商業軟件的原因,這些語言開發的軟件更多的是選擇運行在Linux操作系統上。Windows平臺軟件開發未來將呈現什麼樣的格局,讓我們拭目以待。

在以上的分享關於這個問題的解答都是個人的意見與建議,我希望我分享的這個問題的解答能夠幫助到大家。


亮亮老師之計算機編程


如果開發時間週期少,界面要求高,選c#或.net其它;

如果可以有較長開發週期,且對程序執行效率要求高,圖形圖像處理複雜,選C++,(vs、QT、Clion、DevC++、Code::Blocks均可開發);

如果涉及算法較多,選Python;

如果要考慮今後需要跨多種平臺託展,選Java或Python。windows的C++程序如果要轉Linux,也可轉,但若不是用QT等開發,會有一些改動,尤其如果是MFC框架開發的程序轉Linux,改動不小。


一枚華夏人


目前,商業客戶端如果需要保密一般用 C/C++。

以前還有 VB、Delphi 啥的,現在越來越少了。

.NET、Java 之類容易被逆向。


八哥之神


建議用微軟的.NET比較好,其實有很多,開發高性能的就用VC


分享到:


相關文章: