学习C ++对构建快速/无其他要求的桌面应用程序有帮助吗?

时间:2020-03-06 15:05:26  来源:igfitidea点击:

学习C ++是否可以帮助我快速构建本机应用程序?它对我作为一名程序员有帮助吗?还有其他好处?

我想学习C ++的原因是因为我对基于JVM和.NET的应用程序的UI性能感到失望。他们感到很慢,并且开始也很慢。当然,一个非常糟糕的程序员也可以使用C ++创建一个速度较慢且缓慢的应用程序,但是我不考虑这种情况。

我最喜欢的Windows实用程序之一是Launchy。程序的作者在Readme.pdf文件中写道:

0.6 This is the first C++ release. As I became frustrated with C#’s large
  .NET framework requirements and users
  lack of desire to install it, I
  decided to switch back to the faster
  language.

我完全同意Launchy的作者有关.NET框架要求甚至桌面应用程序的JRE要求的观点。更不用说它们的特定版本了。而且一些最好的和我最喜欢的桌面应用程序不需要.NET或者Java即可运行。它们只是在安装后运行。它们主要是使用C ++构建的吗? C ++是基于GUI的良好和快速应用程序的唯一选择吗?

而且,我也很想听听学习C ++的其他好处。

解决方案

一如既往。这取决于。
只要我们远离Microsoft的大型框架(如MFC,.net等),应用程序就可以快速运行,但是很难编写代码。收益:我们将真正了解Windows在其nice(?)表面后面如何工作。只需查看COM对象的初始化代码,我们就会知道我的意思。我们将永远不会在VB或者C#中看到这些东西

我们必须自己编写每个按钮,每个窗口和每个控件的程序,发送愚蠢的窗口消息,但是应用程序非常小。这是一门被遗忘的艺术:

编写小型,快速的程序

祝你好运!

我们会讨厌我的回答:

GUI开发中最大的瓶颈通常不是由于语言。在大多数应用程序中的大多数时间之后,UI都在空闲,等待一些用户输入。我已经可以听到尖叫声,但是我在大多数应用程序中都说过。

让我们这样说:我很确定一个人可以在.Net CLR之上设计一个好的UI。学习C ++是一件好事,但不能解决开发良好UI所固有的问题。

如果要构建Windows应用程序,而无需使用诸如.NET或者虚拟机/解释器之类的框架,则我们唯一真正可行的选择是Visual Basic或者C / C ++

我之前已经用C ++代码编写了一些小型Windows应用程序,并且在速度和易于部署方面绝对有好处,但代价是难以进行开发。 C ++可以非常快速地进行本地编译,具有许多现代语言功能并得到广泛的支持。折衷方案是,在某些情况下,我们可能需要编写更多代码,或者寻找像Boost这样的库来提供所需的功能。

作为程序员,以C ++尤其是C语言工作是一种很好的经验,可以理解一些比.NET,Java或者VBScript,Python,Perl等脚本语言更接近计算机的知识。使我们成为一名更好的程序员,但是如果我们愿意学习新的课程,我们可能会发现它可以获得软件的新视野。毕竟,我们所依赖的大多数框架和系统都是用纯C编写的,因此理解基础永远不会伤害我们。 C ++与普通的C语言不同,但是,如果我们使用Windows的C ++进行开发,我们可能会发现自己将C和C ++混合使用以与Windows API一起使用,因此会产生a滴的效果。

是的,没有。一切都与优化有关...由于C ++允许我们在较低级别上工作,因此C ++是编写快速应用程序的最佳语言之一。
但是,如果我们习惯于使用更抽象的OOP方法,那么用C ++实现的那些低级机制可能会很烦人。
用C ++测试软件通常是一个漫长的过程。
无论如何,如果我们正在寻找速度,C ++绝对是最佳选择之一。

是的,C ++绝对很棒。检查Qt。它也具有出色的Python绑定,因此我们可以轻松地在Python中进行原型制作,并且/在需要额外性能的情况下,移植到C ++的操作通常是1:1的转换。

但是实际上,当我们拥有出色的平台时,编写C ++也并不困难,最糟糕的部分是编写所有类声明:-)

如果我们致力于学习Win32的原始细节,那么C ++可以助我们一臂之力。如果不是,那么最终还是要使用一堆包装器。对于像小型实用程序之类的东西,或者特别是像shell扩展之类的东西(尝试使用.NET都会造成问题),C ++可以让我们以最小的外部依赖关系编写有效的代码。对于较大的应用程序,YMMV的许多UI呆滞来自不良的设计:天真的算法,不愿意将非平凡的操作剥离到单独的线程上,依赖编写不佳的第三方组件而不是自定义组件控件...容易犯任何语言的错误。

这是我对此的诚实回答。

首先,我认为每个程序员都应该学习C / C ++,这是因为通过学习C ++,我们可以学习编程。它是一种系统级语言。我们必须考虑内存管理的详细信息,等等。令我震惊的是,有多少程序员不了解编程语言或者计算机系统的基本方面。通过学习C / C ++,我们可以使自己更加深入地了解编程。最重要的是,如果我们学习如何使用C / C ++进行编程,则几乎可以进行任何编程。

这并不是说C / C ++始终是完成这项工作的正确工具。调试可能很麻烦,并且编写更有意义的代码需要花费更长的时间。但是,对于需要绝对控制程序执行方式的情况而言,它是完美的选择。

这就是说,我不喜欢C / C ++进行UI编程。我们仍然必须使用特定于我们运行的操作系统的窗口框架(MFC,Win32,Motif,GTK,QT等)。这些框架不适合于轻松学习。至少对于Windows开发而言,.NET确实是UI开发的未来(尽管令人惊讶的是MFC对Vista进行了大修,而.NET甚至还没有这样做)。如果我们使用.NET编写UI,则维护起来比较容易,而其他人则更容易维护。

我通常用.NET编写UI,并用C ++编写后端。

我写了10年的C ++ Windows应用程序,大约2年前改用最新的产品。我对Capp的可悲程度感到尴尬。启动需要20秒钟,我们必须等待一秒钟左右才能在屏幕之间切换。我使用了一些第三方GUI控件库,它像筛子一样泄漏内存!我的应用程序运行在150兆字节,几乎没有任何作用。

我希望回到C ++。

我们可以使用MFC,它将比.Net快得多。或者,如果我们真的想刻录,请查看WTL,但是有关该文档的文档并不多。我建议我们使用MFC或者Qt,因为它们会为他们找到很多不错的信息和教程。

我可以看到Ccan可以更快地开发,也许在将来的版本中它会更快,更小。

C ++确实有可能使我们获得更精简,更快捷的应用程序(如果操作正确)。

但是,从开发人员的角度来看,.NET框架是为舒适而构建的。与Win32 API或者MFC相比有很大的改进,相比之下,这似乎是一项艰巨的工作,因此,请考虑如何实现应用程序依赖于.NET的方面(还有其他可用的框架可能比MFC或者Win32 API更容易) ,并考虑使用此类框架的成本和许可问题;例如,免费的VC ++ Express Edition不包括MFC支持。

如果我们知道应用程序运行缓慢,那么C ++ / CLI可能是一种解决方案。使我们可以混合使用托管代码和本机代码来加速需要它的部分。但是,如果是GUI本质上较慢,而不是应用程序处理;这可能不是一条有用的路径。