开发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


分享到:


相關文章: