上位機(jī)軟件開(kāi)發(fā)用什么語(yǔ)言
一、有哪些上位機(jī)開(kāi)發(fā)平臺(tái)(優(yōu)缺點(diǎn)和使用場(chǎng)景)
由于上位機(jī)概念的廣泛性,所以上位機(jī)開(kāi)發(fā)平臺(tái)可以是任何開(kāi)發(fā)平臺(tái)。這里介紹幾個(gè)常用的經(jīng)典的上位機(jī)開(kāi)發(fā)平臺(tái)及其特性。
VB(Visual Basic)
開(kāi)發(fā)語(yǔ)言:Basic(BASIC是一種直譯式的編程語(yǔ)言,在完成編寫后不須經(jīng)由編譯及連接等步驟即可執(zhí)行,類似腳本語(yǔ)言)
開(kāi)發(fā)工具:Visual Basic(語(yǔ)言簡(jiǎn)單易用,對(duì)面向?qū)ο缶幊毯投嗑€程編程支持不完整)
適用平臺(tái):WINDOWS ALL
平臺(tái)特點(diǎn):以面向?qū)ο蟮乃枷腴_(kāi)發(fā)可視化圖形界面的應(yīng)用程序。采用面向?qū)ο蟪绦蛟O(shè)計(jì)方法(Object-Oriented Programming),把程序和數(shù)據(jù)封裝起來(lái)作為一個(gè)對(duì)象,每個(gè)對(duì)象都是可視的。開(kāi)發(fā)人員在界面設(shè)計(jì)時(shí),可以直接用Visual Basic 6.0的工具箱在屏幕上"畫"出窗口、菜單、命令按鍵等不同類型的對(duì)象,并為每個(gè)對(duì)象設(shè)置屬性。在流行的時(shí)候有大量功能庫(kù)可以使用,比如典型的數(shù)據(jù)庫(kù)管理控件。VB屬于在剛剛出現(xiàn)圖形界面開(kāi)發(fā)階段的開(kāi)發(fā)平臺(tái)。由于平臺(tái)老舊以及basic編程語(yǔ)言的缺點(diǎn),現(xiàn)在已經(jīng)沒(méi)有人使用了。雖然現(xiàn)在有了“Visual Basic .NET”但是使用的人很少。
VC(Virtual C++)
開(kāi)發(fā)語(yǔ)言:面向?qū)ο笳Z(yǔ)言C++(微軟更具C++標(biāo)準(zhǔn)實(shí)現(xiàn)的微軟版本, 編譯器采用cl.exe)
開(kāi)發(fā)工具:Visual C++
適用平臺(tái):WINDOWS ALL
平臺(tái)特點(diǎn):以面向?qū)ο蟮乃枷腴_(kāi)發(fā)可視化圖形界面的應(yīng)用程序。最大的亮點(diǎn)是MFC框架。是微軟公司提供的一個(gè)類庫(kù),以C++類的形式封裝了Windows API,并且包含一個(gè)應(yīng)用程序框架,以減少應(yīng)用程序開(kāi)發(fā)人員的工作量??蚣鼙容^精簡(jiǎn),對(duì)于初學(xué)者理解電腦軟件開(kāi)發(fā)框架有很大幫助。這也成了他的缺點(diǎn),導(dǎo)致使用MFC開(kāi)發(fā)軟件效率相對(duì)很低(程序猿要做大量界面編碼工作)。MFC開(kāi)發(fā)出來(lái)的軟件界面也很簡(jiǎn)陋,主要原因是要想美化需要程序猿自己做大量美化工作(量大到不適合個(gè)人開(kāi)發(fā)者做這個(gè)美化工作)。當(dāng)然在電腦端剛剛出現(xiàn)圖形界面開(kāi)發(fā)時(shí)候,MFC這個(gè)框架簡(jiǎn)直大量簡(jiǎn)化了程序猿的工作量,并且提高了程序的質(zhì)量。因此一度非常流行,以至于現(xiàn)今(2020年)還有這個(gè)MFC開(kāi)發(fā)平臺(tái)的身影(大多處于維護(hù)階段的老項(xiàng)目)。
Delphi
開(kāi)發(fā)語(yǔ)言:Object Pascal
開(kāi)發(fā)工具:delphi7
適用平臺(tái):WINDOWS ALL
平臺(tái)特點(diǎn):Delphi 擁有一個(gè)可視化的集成開(kāi)發(fā)環(huán)境(IDE),采用面向?qū)ο蟮木幊陶Z(yǔ)言O(shè)bjectPascal和基于部件的開(kāi)發(fā)結(jié)構(gòu)框架。Delphi它提供了非常多個(gè)可供使用的構(gòu)件,利用這些部件,開(kāi)發(fā)人員可以快速地構(gòu)造出應(yīng)用系統(tǒng)。開(kāi)發(fā)人員也可以根據(jù)自己的需要修改部件或用Delphi本身編寫自己的部件。和VC相比,Delphi更簡(jiǎn)單、更易于掌握,而在功能上卻絲毫不遜色;和VB相比,Delphi則功能更強(qiáng)大、更實(shí)用。 Delphi確實(shí)功能豐富開(kāi)發(fā)效率高,到目前也還有人用。只是絕大多數(shù)是在做老項(xiàng)目的開(kāi)發(fā)了,新項(xiàng)目基本上不會(huì)再用Delphi寫。主要原因是Delphi不是微軟自家的孩子。隨著微軟系統(tǒng)大量的系統(tǒng)更新,以及微軟自己的C#開(kāi)發(fā)平臺(tái)興起,使得Delphi跟不上節(jié)奏了(Pascal編程語(yǔ)言本身也很少在其他開(kāi)發(fā)平臺(tái)使用)。
WinForm
開(kāi)發(fā)語(yǔ)言:C#
開(kāi)發(fā)工具:Visual Studio
適用平臺(tái):WINDOWS ALL
平臺(tái)特點(diǎn):WinForm是目前很流行的Windows應(yīng)用程序開(kāi)發(fā)平臺(tái),現(xiàn)在大部分windows應(yīng)用程序都是使用WinForm開(kāi)發(fā),提供對(duì)最新windows系統(tǒng)特性的支持,且擁有大量的第三方類庫(kù)。全面支持各種開(kāi)發(fā)技術(shù)。開(kāi)發(fā)的程序?qū)indows所有系統(tǒng)都有非常好的兼容性和不俗的性能。屬于微軟的.net開(kāi)發(fā),擁有強(qiáng)大齊全的各種封裝好的成熟類庫(kù)。借助優(yōu)秀的C#開(kāi)發(fā)語(yǔ)言。是現(xiàn)階段Windows應(yīng)用程序開(kāi)發(fā)的不二之選。由于使用的人和公司多,Winform開(kāi)發(fā)有大量博客可以參考,工作機(jī)會(huì)也很多,相比于其他開(kāi)發(fā)平臺(tái)更好找工作。(至于擔(dān)心發(fā)布軟件還需要安裝net運(yùn)行庫(kù),沒(méi)有擔(dān)心的必要,微軟在系統(tǒng)中就自帶來(lái)常用的net運(yùn)動(dòng)庫(kù),同時(shí)安裝包安裝程序的時(shí)候還可以檢測(cè)是否缺net運(yùn)行庫(kù),并引導(dǎo)安裝)。
WPF
開(kāi)發(fā)語(yǔ)言:C#
開(kāi)發(fā)工具:Visual Studio
適用平臺(tái):WINDOWS ALL
平臺(tái)特點(diǎn):WPF是在Winform的基礎(chǔ)上,重新使用新框架開(kāi)發(fā)的應(yīng)用程序編程平臺(tái)。對(duì)winform開(kāi)發(fā)完全兼容。wpf引入了全新的界面布局框架XAML,可以輕松的創(chuàng)建出豐富美觀的界面,同時(shí)可以使用高級(jí)的動(dòng)畫和特效,對(duì)屏幕自適應(yīng)比winform更好。wpf使用DirectX來(lái)繪制控件(使用顯卡繪制),winform使用GDI來(lái)繪制控件(使用CPU繪制),因此wpf現(xiàn)實(shí)效果好,且不會(huì)大量占用cpu。由于WPF比Winform所使用的技術(shù)新,目前還是使用Winform的多一些。當(dāng)然想要軟件最終效果好,更炫酷一點(diǎn),那么你就選擇WPF。
Qt
開(kāi)發(fā)語(yǔ)言:C++ (編譯器:linux: g++、macos: clang、win32: mingw、msvc)
開(kāi)發(fā)工具:Qt Creater、Visual Studio
適用平臺(tái):WINDOWS ALL、Linux、 MacOS
平臺(tái)特點(diǎn):Qt是一個(gè)跨平臺(tái)應(yīng)用程序開(kāi)發(fā)框架,用于開(kāi)發(fā)桌面程序、嵌入式程序和手機(jī)app。支持的操作系統(tǒng)平臺(tái)包括:Linux, OS X, Windows, VxWorks, QNX, Android, iOS, BlackBerry, Sailfish OS等。Qt最大的特點(diǎn)是跨平臺(tái)開(kāi)發(fā),即:一次編碼多系統(tǒng)編譯。就是說(shuō)只寫一次代碼,然后把這個(gè)代碼拿到各個(gè)系統(tǒng)上分別編譯。即可生成各個(gè)系統(tǒng)下的原生應(yīng)用程序(并不是java那種依賴運(yùn)行庫(kù)的跨平臺(tái))。因此Qt開(kāi)發(fā)的應(yīng)用程序在各個(gè)系統(tǒng)下都可以獲得和原生應(yīng)用程序同樣的性能。其次Qt使用面向?qū)ο笳Z(yǔ)言C++開(kāi)發(fā),因此運(yùn)行效率比C#高。適用于開(kāi)發(fā)一些需要大量運(yùn)算的應(yīng)用程序。比如圖像處理軟件,特效制作軟件等。由于Qt使用C++語(yǔ)言編程,因此以前使用VC++寫的老項(xiàng)目可以輕松使用
Qt重新開(kāi)發(fā)(C++庫(kù)可以直接使用,之前C++代碼寫的邏輯函數(shù)可以復(fù)制過(guò)來(lái)直接使用)。這么好的平臺(tái)為什么用的人和公司不太多呢。因?yàn)橹癚t是收費(fèi)的,用于開(kāi)發(fā)商業(yè)軟件避免不了要交這個(gè)費(fèi)用(不交錢法律上吃官司)。現(xiàn)在Qt支持LGPL協(xié)議,意味著可以免費(fèi)開(kāi)發(fā)商業(yè)軟件了。qt也支持拖拽添加控件和布局軟件頁(yè)面。同時(shí)還支持使用qss動(dòng)態(tài)修改控件樣式。再加上Qt的layout動(dòng)態(tài)布局功能??梢詫?shí)現(xiàn)非常好看的軟件。這一點(diǎn)比winform好。外觀高度定制修改和wpf是一個(gè)水平。這里需要說(shuō)明Qt編寫程序跨平臺(tái)編碼的前提是統(tǒng)一使用Qt提供的系統(tǒng)庫(kù)函數(shù),如果你直接使用了Windows的系統(tǒng)庫(kù)函數(shù),那么這個(gè)程序就只能在windows下編譯并使用了,除非你在其他系統(tǒng)上編譯時(shí)候替換成其他系統(tǒng)相應(yīng)功能的系統(tǒng)庫(kù)函數(shù)。一般功能開(kāi)發(fā)來(lái)說(shuō)Qt提供的庫(kù)函數(shù)足夠豐富,除非是系統(tǒng)特有的功能需要Qt開(kāi)發(fā)中特別處理。
Android
開(kāi)發(fā)語(yǔ)言:Java
開(kāi)發(fā)工具:Android Studio
適用平臺(tái):安卓手機(jī)、安卓平板、安卓電視等
平臺(tái)特點(diǎn):安卓開(kāi)發(fā)官方的開(kāi)發(fā)平臺(tái)就是Android Studio,是開(kāi)發(fā)安卓app的官方指定平臺(tái)。其他各個(gè)開(kāi)發(fā)平臺(tái)雖然也能開(kāi)發(fā)安卓app,但是實(shí)際開(kāi)發(fā)效果和Android Studio沒(méi)法相比。因此你需要開(kāi)發(fā)安卓的上位機(jī)客戶端,就不要用雜七雜八的開(kāi)發(fā)平臺(tái)了,安心學(xué)習(xí)java和Android Studio吧。雖然現(xiàn)在的混合app開(kāi)發(fā)技術(shù)很火爆,但是如果你的安卓app是配合硬件使用的,就不建議使用混合app開(kāi)發(fā)技術(shù)了,因?yàn)槭沟庙?xiàng)目使用的技術(shù)變復(fù)雜了,即便是你能搞定,對(duì)于后續(xù)接手的程序猿維護(hù)開(kāi)發(fā)就不方便了(對(duì)于以硬件為主的公司而言)。需要任意一臺(tái)電腦和測(cè)試手機(jī)或平板即可開(kāi)發(fā)。
IOS
開(kāi)發(fā)語(yǔ)言:Object-C、swift
開(kāi)發(fā)工具:Xcode
適用平臺(tái):蘋果手機(jī)、蘋果平板
平臺(tái)特點(diǎn):Xcode是開(kāi)發(fā)IOS軟件的唯一且官方的開(kāi)發(fā)平臺(tái)。如你公司的硬件設(shè)備需要開(kāi)發(fā)IOS的app。那么這個(gè)開(kāi)發(fā)平臺(tái)幾乎是唯一也是最好的選擇。開(kāi)發(fā)需要一臺(tái)蘋果電腦、一個(gè)公司或個(gè)人開(kāi)發(fā)者賬號(hào)(按年收費(fèi))、一臺(tái)蘋果手機(jī)或平板。
LabVIEW
開(kāi)發(fā)語(yǔ)言:拖拽圖形開(kāi)發(fā)
開(kāi)發(fā)工具:LabVIEW
適用平臺(tái):Wondows、MacOS、Linux
平臺(tái)特點(diǎn):LabVIEW是一種程序開(kāi)發(fā)環(huán)境,由美國(guó)國(guó)家儀器(NI)公司研制開(kāi)發(fā),LabVIEW與其他計(jì)算機(jī)語(yǔ)言的顯著區(qū)別是:其他計(jì)算機(jī)語(yǔ)言都是采用基于文本的語(yǔ)言產(chǎn)生代碼,而LabVIEW使用的是圖形化編輯語(yǔ)言編寫程序,產(chǎn)生的程序是框圖的形式。LabVIEW開(kāi)發(fā)環(huán)境集成了工程師和科學(xué)家快速構(gòu)建各種應(yīng)用所需的所有工具,旨在幫助工程師和科學(xué)家解決問(wèn)題、提高生產(chǎn)力和不斷創(chuàng)新。也就是說(shuō)LabVIEW是幫助硬件開(kāi)發(fā)工程師測(cè)試硬件的工具。通過(guò)拖拽畫圖即可運(yùn)行出一個(gè)相當(dāng)于上位的客戶端。其集成的眾多控件都是和硬件相關(guān)的,因此只適用于硬件開(kāi)發(fā)測(cè)試,不適合其他任何上位軟件開(kāi)發(fā)。LabVIEW開(kāi)發(fā)的軟件也可以打包成獨(dú)立的安裝包。
MATLAB
開(kāi)發(fā)語(yǔ)言:MATLAB
開(kāi)發(fā)工具:MATLAB
適用平臺(tái):Wondows、MacOS、Linux
平臺(tái)特點(diǎn):MATLAB是工程師和科學(xué)家使用的一個(gè)高級(jí)數(shù)學(xué)工具軟件。雖然是個(gè)工具但是他具有開(kāi)發(fā)圖形交互界面以及計(jì)算機(jī)通信的全部功能。因此也在這里稍微介紹一下。MATLAB主要用于計(jì)算機(jī)視覺(jué)、信號(hào)處理、機(jī)器人等控制系統(tǒng)、模型設(shè)計(jì)以及算法驗(yàn)證。提供了Python、Java、C、C++等外部語(yǔ)言接口,可以供外部其他程序調(diào)用(用于調(diào)試與驗(yàn)證算法)。因此在開(kāi)發(fā)特殊行業(yè)的上位機(jī)軟件時(shí)候需要用到MATLAB??梢岳肕ATLAB單獨(dú)開(kāi)發(fā)一個(gè)測(cè)試上位機(jī)端,也可以和其他開(kāi)發(fā)平臺(tái)聯(lián)合開(kāi)發(fā)上位端。MATLAB支持把MATLAB算法轉(zhuǎn)換成C/C++代碼、HDL、和CUDA代碼,便于算法的應(yīng)用。
二、硬件工程師做簡(jiǎn)單的上位機(jī)軟件,應(yīng)該選擇哪個(gè)平臺(tái)
對(duì)于硬件開(kāi)發(fā)工程師來(lái)說(shuō),想要做一個(gè)上位機(jī)軟件無(wú)論你選哪個(gè)開(kāi)發(fā)平臺(tái)都不簡(jiǎn)單,就像要上位機(jī)程序猿開(kāi)發(fā)嵌入式硬件一樣難,都需要深入學(xué)習(xí)。除非你使用LabVIEW。
由于硬件工程師做一個(gè)上位機(jī)一般需求也不會(huì)太復(fù)雜,他的需求就是“怎樣用最少的精力開(kāi)發(fā)一個(gè)基本能用的上位工具軟件,我也不打算深入去開(kāi)發(fā)專業(yè)的上位機(jī)軟件”。
根據(jù)這個(gè)需求,從最簡(jiǎn)單到復(fù)雜依次推薦的開(kāi)發(fā)平臺(tái)如下:
LabVIEW:
優(yōu)點(diǎn):投入最少的精力即可學(xué)會(huì),而且可以快速開(kāi)發(fā)出可用的上位機(jī)軟件
缺點(diǎn):僅適合硬件特別相關(guān)的功能,不方便定制開(kāi)發(fā)常用軟件
Qt:
優(yōu)點(diǎn):可以滿足所有高級(jí)軟件功能開(kāi)發(fā)。使用C++語(yǔ)言開(kāi)發(fā),與硬件開(kāi)發(fā)者使用的C最接近,相對(duì)容易上手開(kāi)發(fā)。這里不推薦GTK+,是因?yàn)镚TK+雖然是使用C語(yǔ)言編程,更加方便硬件工程師開(kāi)發(fā),但是因?yàn)榭蓞⒖嫉奈臋n和例子太少,讓硬件開(kāi)發(fā)人員去讀GTK官方文檔并理解軟件開(kāi)發(fā)上的一些概念,實(shí)在不理智。這里不推薦VC++,是因?yàn)閂C++畢竟老舊了各種類庫(kù)也不如qt豐富,且學(xué)習(xí)VC++所需要的精力和學(xué)習(xí)Qt所用的精力沒(méi)有多少區(qū)別。因此還不如學(xué)習(xí)更好的qt?,F(xiàn)在也可以在網(wǎng)上找到很多qt的例子和博客,不用像以前擔(dān)心參考示例太少。
缺點(diǎn):除了學(xué)習(xí)C++語(yǔ)法之外,還需要學(xué)習(xí)電腦軟件開(kāi)發(fā)的一些概念,以及學(xué)習(xí)Qt框架知識(shí)和Qt庫(kù)函數(shù)使用方法
C#WinForm:
優(yōu)點(diǎn):可以滿足所有高級(jí)軟件功能開(kāi)發(fā)。使用高級(jí)語(yǔ)言C#開(kāi)發(fā),開(kāi)發(fā)效率高
缺點(diǎn):需要全新學(xué)習(xí)C#語(yǔ)言,以及電腦軟件開(kāi)發(fā)概念以及圖形界面庫(kù)函數(shù)功能
三、開(kāi)發(fā)商業(yè)軟件應(yīng)該選擇哪個(gè)開(kāi)發(fā)平臺(tái)
商業(yè)公司開(kāi)發(fā)的軟件是給眾多客戶使用的,軟件的好壞對(duì)應(yīng)著公司的收益。因此,開(kāi)發(fā)商業(yè)軟件要選擇開(kāi)發(fā)平臺(tái)的時(shí)候,就比個(gè)人開(kāi)發(fā)者面臨的限制多很多。一般面臨的限制如下:
開(kāi)發(fā)平臺(tái)的普遍性:是否有很多人用,是否能隨時(shí)招聘到對(duì)應(yīng)平臺(tái)的程序猿
開(kāi)發(fā)平臺(tái)的穩(wěn)定性:開(kāi)發(fā)出來(lái)的軟件是否穩(wěn)定、安全、易用
開(kāi)發(fā)平臺(tái)是否收費(fèi):是否收費(fèi)也很重要,有些平臺(tái)收費(fèi)很貴,每賣一個(gè)軟件都有交使用費(fèi)用就很不合算
開(kāi)發(fā)平臺(tái)是否持久:開(kāi)發(fā)平臺(tái)的公司是否對(duì)這個(gè)開(kāi)發(fā)平臺(tái)做持續(xù)維護(hù)和新技術(shù)更新
以上為一個(gè)公司選擇開(kāi)發(fā)平臺(tái)基本考慮要素。除此之外,所選平臺(tái)只要能滿足功能需求即可。
目前滿足以上基本考慮要素的PC軟件(偏上位機(jī)軟件)開(kāi)發(fā)平臺(tái)有:
C#_WinForm
C#_WPF
C++_QT