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