首先看一下!全球范围内,编程语言流行度!

排名 编程语言 流行度
1 Java 16.896%
2 C 15.773%
3 Python 9.704%
4 C++ 5.574%
5 C# 5.349%
6 Visual Basic .NET 5.287%
7 JavaScript 2.451%
8 PHP 2.405%
9 Swift 1.795%
10 SQL 1.504%
11 Ruby 1.063%
12 Delphi/Object Pascal 0.997%
13 Objective-C 0.929%
14 Go 0.900%
15 Assembly language 0.877%
16 Visual Basic 0.831%
17 D 0.825%
18 R 0.808%
19 Perl 0.746%
20 MATLAB 0.737%

一、有哪些上位机开发平台(优缺点和使用场景)
由于上位机概念的广泛性,所以上位机开发平台可以是任何开发平台。这里介绍几个常用的经典的上位机开发平台及其特性。

VB(Visual Basic)
开发语言:Basic(BASIC是一种直译式的编程语言,在完成编写后不须经由编译及连接等步骤即可执行,类似脚本语言)
开发工具:Visual Basic(语言简单易用,对面向对象编程和多线程编程支持不完整)
适用平台:WINDOWS ALL
平台特点:以面向对象的思想开发可视化图形界面的应用程序。采用面向对象程序设计方法(Object-Oriented Programming),把程序和数据封装起来作为一个对象,每个对象都是可视的。开发人员在界面设计时,可以直接用Visual Basic 6.0的工具箱在屏幕上"画"出窗口、菜单、命令按键等不同类型的对象,并为每个对象设置属性。在流行的时候有大量功能库可以使用,比如典型的数据库管理控件。VB属于在刚刚出现图形界面开发阶段的开发平台。由于平台老旧以及basic编程语言的缺点,现在已经没有人使用了。虽然现在有了“Visual Basic .NET”但是使用的人很少。

VC(Virtual C++)
开发语言:面向对象语言C++(微软更具C++标准实现的微软版本, 编译器采用cl.exe)
开发工具:Visual C++
适用平台:WINDOWS ALL
平台特点:以面向对象的思想开发可视化图形界面的应用程序。最大的亮点是MFC框架。是微软公司提供的一个类库,以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。框架比较精简,对于初学者理解电脑软件开发框架有很大帮助。这也成了他的缺点,导致使用MFC开发软件效率相对很低(程序猿要做大量界面编码工作)。MFC开发出来的软件界面也很简陋,主要原因是要想美化需要程序猿自己做大量美化工作(量大到不适合个人开发者做这个美化工作)。当然在电脑端刚刚出现图形界面开发时候,MFC这个框架简直大量简化了程序猿的工作量,并且提高了程序的质量。因此一度非常流行,以至于现今(2020年)还有这个MFC开发平台的身影(大多处于维护阶段的老项目)。

Delphi
开发语言:Object Pascal
开发工具:delphi7
适用平台:WINDOWS ALL
平台特点:Delphi 拥有一个可视化的集成开发环境(IDE),采用面向对象的编程语言ObjectPascal和基于部件的开发结构框架。Delphi它提供了非常多个可供使用的构件,利用这些部件,开发人员可以快速地构造出应用系统。开发人员也可以根据自己的需要修改部件或用Delphi本身编写自己的部件。和VC相比,Delphi更简单、更易于掌握,而在功能上却丝毫不逊色;和VB相比,Delphi则功能更强大、更实用。 Delphi确实功能丰富开发效率高,到目前也还有人用。只是绝大多数是在做老项目的开发了,新项目基本上不会再用Delphi写。主要原因是Delphi不是微软自家的孩子。随着微软系统大量的系统更新,以及微软自己的C#开发平台兴起,使得Delphi跟不上节奏了(Pascal编程语言本身也很少在其他开发平台使用)。

WinForm
开发语言:C#
开发工具:Visual Studio
适用平台:WINDOWS ALL
平台特点:WinForm是目前很流行的Windows应用程序开发平台,现在大部分windows应用程序都是使用WinForm开发,提供对最新windows系统特性的支持,且拥有大量的第三方类库。全面支持各种开发技术。开发的程序对windows所有系统都有非常好的兼容性和不俗的性能。属于微软的.net开发,拥有强大齐全的各种封装好的成熟类库。借助优秀的C#开发语言。是现阶段Windows应用程序开发的不二之选。由于使用的人和公司多,Winform开发有大量博客可以参考,工作机会也很多,相比于其他开发平台更好找工作。(至于担心发布软件还需要安装net运行库,没有担心的必要,微软在系统中就自带来常用的net运动库,同时安装包安装程序的时候还可以检测是否缺net运行库,并引导安装)。

WPF
开发语言:C#
开发工具:Visual Studio
适用平台:WINDOWS ALL
平台特点:WPF是在Winform的基础上,重新使用新框架开发的应用程序编程平台。对winform开发完全兼容。wpf引入了全新的界面布局框架XAML,可以轻松的创建出丰富美观的界面,同时可以使用高级的动画和特效,对屏幕自适应比winform更好。wpf使用DirectX来绘制控件(使用显卡绘制),winform使用GDI来绘制控件(使用CPU绘制),因此wpf现实效果好,且不会大量占用cpu。由于WPF比Winform所使用的技术新,目前还是使用Winform的多一些。当然想要软件最终效果好,更炫酷一点,那么你就选择WPF。

Qt
开发语言:C++ (编译器:linux: g++、macos: clang、win32: mingw、msvc)
开发工具:Qt Creater、Visual Studio
适用平台:WINDOWS ALL、Linux、 MacOS
平台特点:Qt是一个跨平台应用程序开发框架,用于开发桌面程序、嵌入式程序和手机app。支持的操作系统平台包括:Linux, OS X, Windows, VxWorks, QNX, Android, iOS, BlackBerry, Sailfish OS等。Qt最大的特点是跨平台开发,即:一次编码多系统编译。就是说只写一次代码,然后把这个代码拿到各个系统上分别编译。即可生成各个系统下的原生应用程序(并不是java那种依赖运行库的跨平台)。因此Qt开发的应用程序在各个系统下都可以获得和原生应用程序同样的性能。其次Qt使用面向对象语言C++开发,因此运行效率比C#高。适用于开发一些需要大量运算的应用程序。比如图像处理软件,特效制作软件等。由于Qt使用C++语言编程,因此以前使用VC++写的老项目可以轻松使用
Qt重新开发(C++库可以直接使用,之前C++代码写的逻辑函数可以复制过来直接使用)。这么好的平台为什么用的人和公司不太多呢。因为之前Qt是收费的,用于开发商业软件避免不了要交这个费用(不交钱法律上吃官司)。现在Qt支持LGPL协议,意味着可以免费开发商业软件了。qt也支持拖拽添加控件和布局软件页面。同时还支持使用qss动态修改控件样式。再加上Qt的layout动态布局功能。可以实现非常好看的软件。这一点比winform好。外观高度定制修改和wpf是一个水平。这里需要说明Qt编写程序跨平台编码的前提是统一使用Qt提供的系统库函数,如果你直接使用了Windows的系统库函数,那么这个程序就只能在windows下编译并使用了,除非你在其他系统上编译时候替换成其他系统相应功能的系统库函数。一般功能开发来说Qt提供的库函数足够丰富,除非是系统特有的功能需要Qt开发中特别处理。

Android
开发语言:Java
开发工具:Android Studio
适用平台:安卓手机、安卓平板、安卓电视等
平台特点:安卓开发官方的开发平台就是Android Studio,是开发安卓app的官方指定平台。其他各个开发平台虽然也能开发安卓app,但是实际开发效果和Android Studio没法相比。因此你需要开发安卓的上位机客户端,就不要用杂七杂八的开发平台了,安心学习java和Android Studio吧。虽然现在的混合app开发技术很火爆,但是如果你的安卓app是配合硬件使用的,就不建议使用混合app开发技术了,因为使得项目使用的技术变复杂了,即便是你能搞定,对于后续接手的程序猿维护开发就不方便了(对于以硬件为主的公司而言)。需要任意一台电脑和测试手机或平板即可开发。

IOS
开发语言:Object-C、swift
开发工具:Xcode
适用平台:苹果手机、苹果平板
平台特点:Xcode是开发IOS软件的唯一且官方的开发平台。如你公司的硬件设备需要开发IOS的app。那么这个开发平台几乎是唯一也是最好的选择。开发需要一台苹果电脑、一个公司或个人开发者账号(按年收费)、一台苹果手机或平板。

LabVIEW
开发语言:拖拽图形开发
开发工具:LabVIEW
适用平台:Wondows、MacOS、Linux
平台特点:LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发,LabVIEW与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑语言编写程序,产生的程序是框图的形式。LabVIEW开发环境集成了工程师和科学家快速构建各种应用所需的所有工具,旨在帮助工程师和科学家解决问题、提高生产力和不断创新。也就是说LabVIEW是帮助硬件开发工程师测试硬件的工具。通过拖拽画图即可运行出一个相当于上位的客户端。其集成的众多控件都是和硬件相关的,因此只适用于硬件开发测试,不适合其他任何上位软件开发。LabVIEW开发的软件也可以打包成独立的安装包。

MATLAB
开发语言:MATLAB
开发工具:MATLAB
适用平台:Wondows、MacOS、Linux
平台特点:MATLAB是工程师和科学家使用的一个高级数学工具软件。虽然是个工具但是他具有开发图形交互界面以及计算机通信的全部功能。因此也在这里稍微介绍一下。MATLAB主要用于计算机视觉、信号处理、机器人等控制系统、模型设计以及算法验证。提供了Python、Java、C、C++等外部语言接口,可以供外部其他程序调用(用于调试与验证算法)。因此在开发特殊行业的上位机软件时候需要用到MATLAB。可以利用MATLAB单独开发一个测试上位机端,也可以和其他开发平台联合开发上位端。MATLAB支持把MATLAB算法转换成C/C++代码、HDL、和CUDA代码,便于算法的应用。

二、硬件工程师做简单的上位机软件,应该选择哪个平台
对于硬件开发工程师来说,想要做一个上位机软件无论你选哪个开发平台都不简单,就像要上位机程序猿开发嵌入式硬件一样难,都需要深入学习。除非你使用LabVIEW。

由于硬件工程师做一个上位机一般需求也不会太复杂,他的需求就是“怎样用最少的精力开发一个基本能用的上位工具软件,我也不打算深入去开发专业的上位机软件”。

根据这个需求,从最简单到复杂依次推荐的开发平台如下:

LabVIEW:
优点:投入最少的精力即可学会,而且可以快速开发出可用的上位机软件
缺点:仅适合硬件特别相关的功能,不方便定制开发常用软件

Qt:
优点:可以满足所有高级软件功能开发。使用C++语言开发,与硬件开发者使用的C最接近,相对容易上手开发。这里不推荐GTK+,是因为GTK+虽然是使用C语言编程,更加方便硬件工程师开发,但是因为可参考的文档和例子太少,让硬件开发人员去读GTK官方文档并理解软件开发上的一些概念,实在不理智。这里不推荐VC++,是因为VC++毕竟老旧了各种类库也不如qt丰富,且学习VC++所需要的精力和学习Qt所用的精力没有多少区别。因此还不如学习更好的qt。现在也可以在网上找到很多qt的例子和博客,不用像以前担心参考示例太少。
缺点:除了学习C++语法之外,还需要学习电脑软件开发的一些概念,以及学习Qt框架知识和Qt库函数使用方法

C#WinForm:
优点:可以满足所有高级软件功能开发。使用高级语言C#开发,开发效率高
缺点:需要全新学习C#语言,以及电脑软件开发概念以及图形界面库函数功能

三、开发商业软件应该选择哪个开发平台
商业公司开发的软件是给众多客户使用的,软件的好坏对应着公司的收益。因此,开发商业软件要选择开发平台的时候,就比个人开发者面临的限制多很多。一般面临的限制如下:

开发平台的普遍性:是否有很多人用,是否能随时招聘到对应平台的程序猿
开发平台的稳定性:开发出来的软件是否稳定、安全、易用
开发平台是否收费:是否收费也很重要,有些平台收费很贵,每卖一个软件都有交使用费用就很不合算
开发平台是否持久:开发平台的公司是否对这个开发平台做持续维护和新技术更新
以上为一个公司选择开发平台基本考虑要素。除此之外,所选平台只要能满足功能需求即可。

目前满足以上基本考虑要素的PC软件(偏上位机软件)开发平台有:

C#_WinForm
C#_WPF
C++_QT

上位机开发 常用的平台及语言相关推荐

  1. 1.3-原来这才是大家常用的上位机开发平台

    一.有哪些上位机开发平台(优缺点和使用场景) 由于上位机概念的广泛性,所以上位机开发平台可以是任何开发平台.这里介绍几个常用的经典的上位机开发平台及其特性. VB(Visual Basic) 开发语言 ...

  2. 以下是一些常用的上位机开发工具:

    上位机的开发工具很多,具体选择哪种开发工具需要根据具体的需求和开发经验来选择.以下是一些常用的上位机开发工具: Visual Studio:Visual Studio 是一款由微软公司开发的集成开发环 ...

  3. esp32系列(11):ESP32 IDF平台 mpu6050 DMP 驱动移植及测试上位机开发

    目录 1 DMP 官方库介绍 1.1 DMP与MPL(Motion Processing Libraries)功能 1.2 运行MPL的硬件要求 1.3 Motion Driver 6.12 的架构 ...

  4. C#编写上位机连接华为云平台IoTDA

    C#连接华为云平台IoTDA 需求 前期准备 具体设计 代码目录简述: 工程配置参数 具体程序 App.config 主程序 连接服务器 接收到消息 消息发布回调 服务器连接成功 断开服务器连接 格式 ...

  5. 设备智能化开发,软硬件技术如何选型及上位机开发的注意事项

    一.孤立的硬件设备比孤儿更难生存 随着通信技术的发展和社会互联互通的需要,不用手机的人是越来越少的.机器设备是服务于人类需要,并依赖于人而存在的,可以说不联网的设备也会越来越少,不联网的设备会像孤儿一 ...

  6. 485通信原理_上位机开发之单片机通信实践

    经常会有一些学员会问到上位机与单片机之间通信的问题,而我们经常会讲上位机与PLC之间通信,那么其实对上位机开发来说,不管是和PLC通信,还是和单片机通信,通信原理都是一样的.PLC的本质就是单片机,在 ...

  7. pythonqt4上位机开发_上位机开发之单片机通信实践(一)

    经常会有一些学员会问到上位机与单片机之间通信的问题,而我们经常会讲上位机与PLC之间通信,那么其实对上位机开发来说,不管是和PLC通信,还是和单片机通信,通信原理都是一样的.PLC的本质就是单片机,在 ...

  8. Matlab上位机开发(一) —— 了解上位机

    1. 上位机的作用 在嵌入式项目开发中,无论是单片机项目.嵌入式Linux项目.FPGA项目,上位机始终是一个很重要的部分,主要用于: 数据显示(波形.温度等) 用户控制(LED,继电器等) 文件传输 ...

  9. 485通信原理_上位机开发之单片机通信实践(一)

    微信号 :thinger_swj微博:@新阁程序园扫码关注 经常会有一些学员会问到上位机与单片机之间通信的问题,而我们经常会讲上位机与PLC之间通信,那么其实对上位机开发来说,不管是和PLC通信,还是 ...

最新文章

  1. Spring boot异常统一处理方法:@ControllerAdvice注解的使用、全局异常捕获、自定义异常捕获
  2. 初步了解Redis Streams以及如何在Java中使用它们
  3. centos 账号安全设置
  4. XDOJ-1002-小W的塔防(dp)
  5. 计算机技能大赛试题及答案,全国中职计算机技能大赛(园区网)试题及参考答案...
  6. 华为轮值董事长徐直军:AI发展十大改变
  7. php模拟post方法
  8. html5 过渡时间,CSS3 对过渡(transition)进行调速以及延时
  9. Appium 控件定位链接整理(appiumdriver)
  10. C#cmd执行命令隐藏窗口,并保持程序一直运行
  11. 103 规约分析总结
  12. 人工智能几行代码实现换脸,python+dlib实现图文教程
  13. SQL Server 【不允许保存更改】问题解决图解
  14. 实验一:38译码器的VHDL实现及原理图实现
  15. leaflet 加载海量点位,点击marker 查看详情功能
  16. 2023年天津天狮学院专升本专业课如何线上考试考前准备的要求
  17. Gartner2021年网络技术成熟度曲线
  18. Itext使用 Java导出PDF
  19. TXS0102使用说明
  20. 随机信号的参数建模法AR模型及matlab实现

热门文章

  1. js调用浏览器的复制功能复制内容到剪切板
  2. java cookiesmanager,java 模拟浏览器的cookie管理机制
  3. 【基于python实现UI自动化】3.4 JS 处理日历控件(删除 readonly 属性)
  4. Nordic官方网络资源介绍(官网/devzone/GitHub)
  5. 利用 exploit-db 交叉编译 shellcode
  6. 何隆昌 element-ui 表格实现鼠标移上去显示信息
  7. 【spring源码】基于factoryMethod创建bean对象
  8. MySQL基础(全)
  9. jsp include指令元素
  10. Cocos3.x跟Cocos2.x的区别