{eval=Array;=+count(Array);}

问答专栏Q & A COLUMN

桌面端开发都用什么语言,简单分析下这些语言的优劣势对比?

shleyZshleyZ 回答10 收藏1
问题描述:比如那些跨平台的,学习上手难度,有没有成熟的案例,开源框架等?急,在线等。
收藏问题

10条回答

ShowerSun

ShowerSun

回答于2022-06-22 18:26

对于编程,没有最好的语言,只有最合适的语言。下面谈谈常见的PC桌面端开发语言。

C/C++系列

C++系列最大的优点就是效率高,不过缺点也是很麻烦的,上手难度大。下面介绍介绍两种有官方背书的,开发过程中经常用到的C++界面库,至于Duilib、BCG等第三方开源库这里不再介绍。

1、Qt

C++开发界面首选开源库。在C++领域,有GUI的地方都有Qt,有嵌入式的地方一般也有它,金融、工业、电力、视频监控等行业也有它。跨平台支持,文档齐全,API设计优雅,一直保持更新,它不仅仅是一套界面库,更封装了多线程、访问数据库、图像处理、音频视频处理、网络通信、文件操作等接口。

常见的抓包神器Wireshark、文档编辑器WPS就是使用Qt开发而成,下面附一张使用QSS实现的界面换肤效果图。

2、MFC

俗话说,MFC==没饭吃,虽然现在2020年都已经过完了,但是还是有大量的公司在使用MFC这一上古技术来开发界面,它并没有灭绝。不过大多数处于维护态了。新项目我想很少有公司会采用MFC来开发了。

如果你是在校学生, 不建议深入学习MFC相关技术,理解大致思想即可。

如果你已经参加工作,不幸处于维护MFC老项目之中,那么建议工作之余多学习其他技术,早日跳槽脱坑。

C#

简单易上手,这家伙绝对是Windows界面开发的王者,背靠微软这一强大后盾,为开发者提供所见即所得的开发模式,即使是新手也可以通过简单的拖拽来开发出带有图形界面的可视化软件,不仅可以开发PC客户端,更能开发Web端。最大的缺点是要安装framework组件。

JS系列

曾梦想一统天下(Web、移动端、PC端)的JS,推出了Electron,为开发者提供PC客户端开发,更有VSCode、Atom这样的成熟案例。不过最大的缺点就是开发出来的东西体积太大了,运行效率偏低。


Delphi

曾经的王者,现在已经落寞到很少有人知晓的地步,虽然它还在坚持更新。将所见即所得发挥到了极致,至于到底它有多强大多好用呢,因为自己确实没有使用过,就不再妄加评论了。

如果没有特殊需求的话,不再建议大家再去纠缠Delphi 了,比较是过时的东西。

Python

没错,Python不仅可以写爬虫,更能来开发界面。

借助于PyQT,你也可以快速完成图形化界面开发工作。下图是某大神高仿的网易云音乐的开源项目「FeelUOwn」,使用PyQT开发而成,号称是一个符合 Unix 哲学的跨平台的音乐播放器。目前该作品已在Github上开源。


以上就是我的观点,喜欢就【点个赞】吧!

评论0 赞同0
  •  加载中...
eechen

eechen

回答于2022-06-22 18:26

QT、WPF、PyQt、Electron 桌面应用解决方案


C++的 QT

背景

Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,Qt很容易扩展,并且允许真正地组件编程。2008年,Qt Company科技被诺基亚公司收购,Qt也因此成为诺基亚旗下的编程语言工具。2012年,Qt被Digia收购。2014年4月,跨平台集成开发环境Qt Creator 3.1.0正式发布,实现了对于iOS的完全支持,新增WinRT、Beautifier等插件,废弃了无Python接口的GDB调试支持,集成了基于Clang的C/C++代码模块,并对Android支持做出了调整,至此实现了全面支持iOS、Android、WP,它提供给应用程序开发者建立艺术级的图形用户界面所需的所有功能。基本上,Qt 同X Window上的 Motif,Openwin,GTK 等图形界 面库和 Windows 平台上的MFC,OWL,VCL,ATL 是同类型的东西。

优势

  1. 非常多的跨平台Desktop Application是基于QT编写的,它不仅能够保证跨平台,而且能够将运行效率最大化。
  2. Qt适合一些性能要求高的桌面应用,如果你只打算做桌面端的话。或者是一些特殊的场景,比如你要做个类似绘声绘影的视频编辑器,做个类似word之类的桌面应用,那你用electron要么是没法做,要不就是体验非常烂。实际应用上,比如wps,yy语音,VirtualBox,以及部分adobe的桌面工具都是Qt做的。


C# 的WPF和WinForm

Winform

  1. 大多数人开发CS程序都是基于Winform去做的,它的有点在于简单、高效,但是它的缺点在于,如果你想深入的美化UI,需要耗费很大的力气,对于目前主流的CSS样式表来讲,美化Winform的界面以及自定义控件是需要耗费更多的时间的。
  2. 写的程序如果需要改界面牵扯很大。代码的编辑可能会导致更多的错漏出现而不自知。大工程改界面更甚。


wpf

优势

  1. wpf需要学习xaml,有全新的ui描述语言,特别是可以通过模板的嵌套实现复杂的元素,通过style实现类似css的功能,通过比winform完善的多的数据绑定机制实现业务逻辑可以专心对数据而不是界面进行开发。学习wpf可以更方便过度到其他xaml相关技术,这是微软目前广泛使用的技术,比如接下来的windows通用应用。
  2. 采用mvvm(model、view、viewmodel)来写,任你界面改翻天,后台代码不受任何影响。
  3. WPF不能运行在其他操作系统,并且在XAML中编写样式表,通用性还是不如HTML强,从学习应用的范围来讲,还是HTML更好一些。
  4. 与分辨率无关
  5. WPF是基于矢量绘图的,因此它产生的图形界面能够支持各种分辨率的显示设备,而不会像WinForm等在高分辨率的现实设备上产生锯齿。
  6. 硬件加速技术
  7. WPF是基于Direct3D创建。在WPF应用程序中无论是2D还是3D的图形或者文字内容都会被转换为3D三角形、材质和其他Direct3D对象,并由硬件负责渲染,因此它能够更好的利用系统的图像处理单元GPU,从硬件加速中获得好处。
  8. 绚丽的展示效果,WPF(Windows Presentation Fundation)顾名思义其强大的图形化API为程序提供了超乎想象的图形效果; XAML的引入,使得美工和程序可以实现分离,使得定制化主题/外观/行为更加方便也易于维护;
  9. 强大的 “数据绑定”功能,使得MVVM得以实现,成为“属性驱动”,而非WinForm的“事件驱动”;属性的更改可以自动获得,甚至动过转换器触发各种展示/行为的变更;
  10. Style可以让你应用不同的样式到不同的控件,而且易于管理



Python的PyQt

PyQt5是python的一个GUI框架,存在界面设计器QtDesigner工具,可便捷的采用拖拽方式进行页面构造。然后通过工具将UI文件生成对应的python代码。

优势:

  1. 跨平台效果好,完美支持Mac、Windows、UNIX等多种系统;
  2. 学习简单,面向对象的特性体现的比其他框架明显,在命名,继承,类的组织等方面保持了优秀的一致性,代码写起来比较优雅。
  3. 功能强大,基本能实现QT能实现的所有功能
  4. 文档丰富,PyQt使用者众多,同时可直接参考QT文档,对后期开发更加方便
  5. 拥有QT Designer和QSS支持,界面效果更好
  6. pyqt5是双重许可,开发者可以在GPL和商业许可之间进行选择
  7. 学完PyQt5之后只要再学习C++就能完成Qt开发转行,一举两得
  8. 配合Django实现CS和BS全技能开发
  9. 长期维护是很多程序员选择框架的重要标准,毕竟一个项目的运行周期可能很长,如果框架不能及时支持,后期带来的麻烦会很多
  10. 开源免费,稳定性和安全性都好
  11. 使用信号和槽机制,界面设计和业务代码分离开发




JavaScript的 electron

特点:

  1. Electron是由Github开发,用HTML,CSS和JavaScript来构建跨平台桌面应用程序的一个开源库。 Electron通过将Chromium和Node.js合并到同一个运行时环境中,并将其打包为Mac,Windows和Linux系统下的应用来实现这一目的。
  2. Electron适合一些偏业务的应用,对性能没有很多要求,主要是业务逻辑和UI展示,比较轻量级的应用。因为Electron可以一份代码同时得到网页版和桌面版,所以如果你的应用还需要网页版,那么Electron可以极大地节省你的开发和维护成本。比如钉钉,slack,现在越来越多的偏业务型(并不是需要高性能的专业工具)应用开始使用Electron来做了。优点
  3. 开源的核心扩展比较容易,目前是基于 node 6.x,加之现在 gyp 已经非常人性化了,使得c++ 和 js 搞基非常容易。
  4. 界面定制性强,原则上只要是Web能做的他都能做。
  5. 是目前最廉价的跨平台技术方案,HTML+JS 有大量的前端技术人员储备,而且有海量的现存web UI 库。大多都很靠谱。
  6. 相对其他跨平台方案(如 QT GTK+ 等),更稳定,bug少, 毕竟只要浏览器外壳跑起来了,里面的问题不会太多 ,当然我也遇到过一些暗坑。 方便热更新。下载覆盖完事。当然这是所有脚本共有的优点。


缺点: 1.卡,启动慢,这可能是webkit的锅。毕竟一个浏览器要支持的功能确实有点多。 2.除了主进程 你可能还需要启动一些辅助进程来完成工作。而每当你新开一个进程,起步价就是一个nodejs的内存开销! 3.丢帧,这个最严重,可我已习惯了native 的丝滑. mac下感觉还可以 win下有点够呛。 4.打出来的包太大。(很显然,即便是一个空包,也至少包含了一个浏览器的体积)

评论0 赞同0
  •  加载中...
sorra

sorra

回答于2022-06-22 18:26

目前,最优的选择有四个:

1.如果只在win下使用,.net form是不二选择,可谓是又快又好,企业应用或定制开发都是相当好的,初学者也可以入手。

2.electron,跨平台。需要会前端,必须熟悉js、css和html。属于前端人员大杀器,如果是初学者,需要一下子学三样东西,再加上electron的进程间通信,可能会被搞懵。

3. qt5,可以使用qml(js语法)进行UI编程,但是需要懂c艹,但是写软件相当快,还可以写安卓、ios、Linux、嵌入式中的应用。

4.flutter,刚刚正式支持win平台的软件开发。谷歌出的这个东西,适合没有基础的初学者,因为是一个全新的体系,全新的语言,写ios、安卓非常高效,之后还会兼容h5。如果是初学者可以跟着走,值得尝试。但是新东西总有一些坑。

正式项目跨平台建议electron或qt,只用win平台强烈建议微软自己的net。个人技术尝试建议flutter。

评论0 赞同0
  •  加载中...
Yangder

Yangder

回答于2022-06-22 18:27

我就说一种:

所有的windows桌面程序语言,都是基于微软提供的API接口编写的,而能让程序员直接调用windowsAPI的基础语言,必然有C语言的一席之地。其他所有的桌面程序语言,像什么C#,C++,python,Js等等,都是用C语言调用windows接口写出一个大概的程序框架,供后来的语言使用者进行二次开发,来实现桌面程序的设计。

从某种意义上来说,如果把安装了windows操作系统的电脑,看做一台独立且完整的机器比如cpu,那么使用C语言通过调用系统API来编写桌面程序,就相当于直接使用汇编语言操作Cpu。所以在操作系统层面,这种方式写出来的程序性能是最好的,没有之一。当然,还可以通过直接对硬件编程,获得更好的性能,但那对程序员的技术要求会极高,而且还必须考虑硬件兼容性,能写那种程序的人,其实在某种程度上就已经具备写操作系统的能力了。

不可否认,使用C语言直接调用系统接口来编写桌面程序,这不是一条轻松的路线,甚至可以说它遍布荆棘也不为过。无数人半途而废改换门庭,转投其他更为轻松的高级语言。如果你选择这条路,你必须做好心理准备,这段路程中的艰难困苦将会超出你的想象!然而你也必须要明白,一旦你在这条路上学有所成,你会发现计算机的世界竟然如此简单!几乎没有任何人可以在你面前装逼!你,就是这么牛逼!

在我的理解中,使用C语言直接调用windows API编写桌面程序的方式,是渔。而采用其他高级语言编写桌面程序的方式,是鱼。

目前,摆在你面前的,既有鱼,也有渔,你会怎么选呢?

你是选择做某种高级语言的追随者,还是想成为各种高级语言的创造者?

心有多大,世界就有多大!努力吧骚年!听说你想去星辰大海?[机智]

评论0 赞同0
  •  加载中...
xiaolinbang

xiaolinbang

回答于2022-06-22 18:27

还可以用delphi,其firemonkey框架发布8年时间,支持跨平台:win,安卓,ios,macos,linux,后续支持webassembly,界面是控件拖拽布局所见即所得,开发效率较高。编译生成的是机器码,编译速度快,调试方便,其生成机器码运行效率较高,支持x86,arm的32位64位处理器。支持跨平台3D界面,蓝牙通讯,定位,重力,摄像等,支持多种SQL,NoSQL数据库。单个开发工具实现前后端开发,跨平台开发。适合个人和小公司用一套工具实现大部分开发需求。

评论0 赞同0
  •  加载中...
李昌杰

李昌杰

回答于2022-06-22 18:27

编程语言这种东西无所谓,只要能用啥都可以。 主要看你老板需要和你会用什么语言。

比如 我用AS编安卓程序,当然用JAVA。不过我后台最开始用ASP和ASP.NET来做,现在换PHP了。桌面端用QT或者VB做。 涉及单片机部分控制也用C。


现在做跨平台的了 开始以QT为主了。

只要能达到目的啥都可以。

学会1-2种 换其他的也不是很难。

对初学者来建议学C起步吧。

精通一门,重新学个语言入门也就1个月的事。

评论0 赞同0
  •  加载中...
JasinYip

JasinYip

回答于2022-06-22 18:27

win桌面端直接上visual studio啊!然后你熟悉什么语言?vb.net,c#,c++都有相应的win桌面工具。直接用就好了,非常好用

评论0 赞同0
  •  加载中...
mylxsw

mylxsw

回答于2022-06-22 18:27

作为热爱生活的程序员的我就不太仔细分析了,直接告诉你用哪种好了。

桌面端开发:

windows平台用C# winform。优点是拖拉控件即可而且功能非常强大。缺点是界面不够美观,不跨平台。但其实技术好也可以使用第三方美观库美化界面,关于跨平台,微软正在做,已经有预览版支持。

希望一本万利,跨平台,那就学习QT。学习成本高。win平台mac平台,linux平台通杀。其他delphi,MFC建议不考虑,那是过去式。

还有一种是浏览器嵌套:就是使用第三方的浏览器如谷歌的cefsharp,嵌套网页实现。网页用js html这些。初学者需要学习的太多。

综上所述,用C#吧。

评论0 赞同0
  •  加载中...
MkkHou

MkkHou

回答于2022-06-22 18:27

会C++ 用Qt5 非常不错 写代码效率很高

会js 用atom使用的那个框架

会Python用PyQt 写代码很快

会java用JavaFX

看语言咯

评论0 赞同0
  •  加载中...
weizx

weizx

回答于2022-06-22 18:27

主要有以下几种技术

  1. Duilib;
  2. Gtk、Qt和WxWidget;
  3. Electron;
  4. QtQuick(QML);
  5. WinForm、WPF、Xamarin;
  6. Flutter;
  7. SwiftUI或Cocoa;
  8. Win32 API;

### Duilib

#### 简述

Duilib是在Windows平台上使用最广泛的类库,使用C++和XML混合编程,国内很多计算机企业都喜欢使用这个类库,可能是由于他的技术许可比较宽泛的原因。

适合于界面比较简单的软件,视觉特效丰富,局限于Windows的平台。例子:360电脑管家。

#### 优势

  1. 使用了DirectX作为底层,本质上和“游戏”性质差不多。基于C++和游戏引擎,速度很快,图形特效可以做得很丰富;
  2. 由于使用了游戏引擎架构,有游戏开发经验的程序员可以通用很多游戏技术;

#### 劣势

  1. 简陋:源于开源项目,缺乏大型商业公司支持,基本上只有一个核心库,缺少必要的周边设施支持;
  2. 耗电:基于游戏引擎,刷新率很高,因此比较耗电;
  3. 需要显卡加速支持,没有显卡和显卡性能不好都会导致应用出现问题。比如:缓慢、崩溃……
  4. 只能在Windows平台使用;

### Gtk、Qt或WxWidget:

#### 简述

三种基本可以做到跨平台的技术,使用C/C++开发,使用者广泛。其中WxWidget使用了API嫁接方式,Qt和Gtk(包括各种绑定技术)使用自绘技术。

结构严谨,软件可以做的很大很复杂。例子:WPS和Maya。

#### 优势

  1. 使用C/C++:速度快运行高效,代码严谨;
  2. 省电:每次只刷新必要区域,只有必要的时候刷新;
  3. 适用性广泛:Linux、macOS、Windows平台都支持。其中Qt甚至支持Android和IOS平台;
  4. 大公司支持:发展时间很长,有各种组织长期支持,各种基础设施齐备。Gtk和WxWidget都有各自的基金会支持、Qt由Qt公司开发;

#### 劣势

  1. 开发速度较慢:C/C++语言固有局限,为了严谨和运行效率比较繁琐;
  2. 跨平台外观和原平台差异:看起来有些不协调,需要开发者精细调整;

### Electron:

#### 简介

使用Web技术开发桌面软件,基于Chromium(Chrome)引擎,使用JS编程语言,绝大多数使用者都是原来的网页开发者。

绝大多数都是爱好者使用,处于“勉强可用”的地步。

适合大面积静态展示型软件使用。例子:网易云音乐。

#### 优势

  1. 组件丰富:继承了绝大多数网页开发积累下来的组件;
  2. 类库丰富:继承了npm上的绝大多数类库;
  3. 开发高效:JavaScript语法灵活,开发效率高,运行效率可以凑合使用。

#### 劣势

  1. 缺乏商业公司支持,Electron是由Electron基金会和GitHub为了他的Atom编辑器开发的,但是Electron受限于Web属性的原因,只提供了很少的组件,更多组件需要使用者自行开发。
  2. 运行效率低:JS本身效率并不高,Web技术基于Dom(Document Object Model)模型,JS和Dom模型交互效率较低,所以Electron软件卡顿是正常的。不适合计算密集型软件和图形效果丰富的软件。

### QtQuick(QML)

#### 简述

Qt公司开发的一款基于OpenGL的图形类库,有显卡加速,类似于Duilib。采用了C++与QML混合编程。QML类似于JavaScript语言。

QtQuick下一个版本在Qt 6上更加强大,业界期待已久。

#### 优势

  1. 显卡加速:速度快,有显卡硬件支撑。
  2. 组件丰富:Qt公司提供了大部分组件,使用者可以简单调用,还可以使用Qt/C++传统类库。
  3. 开发速度快:QML语法类似JavaScript,不需要编译,可以说所见即所得。
  4. 跨平台:Windows、Linux、macOS、iOS、Android、blackberry……

#### 劣势

  1. 动态弱类型:缺乏必要的编辑器支持,开发者负担较重,Electron也有类似问题。Qt6据说提供了QML静态类型支持,这一点应该可以说不是问题。
  2. 平台需内建显卡支持:平台受限。


### Atk、Swing或JavaFX

使用Java语言开发软件,有JDK加持业界积累的众多Java类库支持。有不输于VS的IDEA加持,本应该更棒,只是现在已经式微了。

绝大多数使用者都是企业开发(不追求界面美观)、爱好者(开发顺手)。

### WinForm、WPF或Xamarin:

使用C#开发,WinForm和WPF局限于Windows平台。有VisualStudio加持使用很爽。

### Flutter:

使用Dart语言,新类库,bug可能会很多。

### SwiftUI或Cocoa:

苹果平台原生界面技术,macOS平台内建支持,不是macOS专用软件不推荐。

### Win32:

经典Windows 平台API,绝大多数只有一些老软件还在使用,不是维护老软件不推荐。

评论0 赞同0
  •  加载中...

最新活动

您已邀请0人回答 查看邀请

我的邀请列表

  • 擅长该话题
  • 回答过该话题
  • 我关注的人
向帮助了您的网友说句感谢的话吧!
付费偷看金额在0.1-10元之间
<