6

学习 C++ 会帮助我快速构建本机应用程序吗?作为程序员,它会对我有帮助吗?还有什么其他好处?

我想学习 C++ 的原因是因为我对构建在 JVM 和 .NET 之上的应用程序的 UI 性能感到失望。他们感觉很慢,开始也很慢。当然,一个非常糟糕的程序员也可以使用 C++ 创建一个更慢、更迟钝的应用程序,但我不考虑这种情况。

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

0.6 这是第一个 C++ 版本。由于我对 C# 的大型 .NET 框架要求和用户缺乏安装它的愿望感到沮丧,我决定切换回更快的语言。

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

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

4

9 回答 9

6

是的,C++ 绝对很棒。检查Qt。它也具有出色的Python 绑定,因此您可以轻松地在 Python 中进行原型制作,并且当/如果您需要额外的性能时,移植到 C++ 主要是 1:1 转换。

但事实上,当你有一个很棒的平台时,编写 C++ 也不是那么难,最糟糕的部分是编写所有的类声明 :-)

于 2008-10-03T18:58:05.363 回答
5

如果您想构建无需框架(如 .NET 或虚拟机/解释器)即可运行的 Windows 应用程序,那么您唯一真正可行的选择将是 Visual Basic 或 C/C++

我以前用 C++ 代码编写过一些小型 Windows 应用程序,在速度和易于部署方面肯定有好处,但代价是开发难度增加。C++ 可以非常快,本机编译,具有许多现代语言特性,并得到广泛的支持。权衡是在某些情况下您可能需要编写更多代码,或者寻找像Boost这样的库来提供您所追求的功能。

作为一名程序员,使用 C++,尤其是 C 语言工作是很好的经验,可以帮助您理解一些比 .NET、Java 或 VBScript、Python、Perl 等脚本语言更接近机器的东西。不一定使您成为更好的程序员,但是如果您愿意从中学习新的课程,您可能会发现它可以帮助您获得对软件的新视角。毕竟,您所依赖的大多数框架和系统都是用纯 C 编写的,因此理解基础永远不会伤害您。C++ 与纯 C 不同,但如果您使用 C++ for Windows 进行开发,您可能会发现自己在混合使用 C 和 C++ 来使用 Windows API,因此它会产生涓滴效应。

于 2008-10-03T18:57:12.277 回答
5

我写了 10 年的 C++ windows 应用程序,大约 2 年前切换到 c# 来开发最新的产品。我对 C# 应用程序的可悲程度感到尴尬。启动需要 20 秒,您必须等待一秒左右才能在屏幕之间切换。我使用了一些第三方 GUI 控件库,它像筛子一样泄漏内存!我的应用程序以 150 兆的速度运行,它几乎什么都不做。

我期待回到 C++。

你可以使用 MFC,它会比 .Net 快得多。或者,如果您真的想刻录,请查看 WTL——尽管没有太多相关文档。我建议您使用 MFC 或 Qt,因为您会为它们找到大量有用的信息和教程。

我可以看到 C# 可以更快地开发,也许在未来的某个版本中它会更快更小。

于 2008-10-03T19:16:43.250 回答
4

一如既往。这取决于。只要你远离微软的大型框架,如 MFC、.net 等,你的应用程序可以非常快,但很难编码。您的好处:您将真正了解 Windows 如何在其漂亮的(?)表面后面工作。只需查看 COM-Objects 的初始化代码,您就会明白我的意思。你永远不会在 VB 或 C# 中看到这样的东西

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

编写小而快的程序

祝你好运!

于 2008-10-03T18:46:35.870 回答
4

你会讨厌我的回答:

GUI 开发的最大瓶颈通常不是因为语言。毕竟,在大多数应用程序中,UI 大部分时间都处于空闲状态,等待一些用户输入。我已经能听到你的尖叫声了,但我在大多数应用程序中都说过。

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

于 2008-10-03T18:53:16.620 回答
3

如果您致力于学习 Win32 的原始、坚韧的细节,那么 C++ 将助您一臂之力。如果你不是,那么无论如何你最终都会使用一堆包装器。对于诸如小型实用程序之类的东西,或者尤其是诸如外壳扩展之类的东西(尝试使用 .NET 无论如何都会给您带来问题),C++ 将让您编写有效的代码,而外部依赖项绝对最少。对于一个更大的应用程序,YMMV - 很多 UI 迟缓来自糟糕的设计:天真的算法,不愿意将非平凡的操作分拆到单独的线程上,依赖于写得不好的 3rd 方组件而不是自定义控件... 任何语言都容易犯错误。

于 2008-10-03T19:04:59.810 回答
2

这是我对此的诚实回答。

首先,我认为每个程序员都应该学习 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++ 编写后端。

于 2008-10-03T19:10:52.857 回答
1

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

于 2008-10-03T18:57:27.113 回答
0

C++ 确实有可能为您提供更精简、更简洁和更快的应用程序(如果您做得对的话)。

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

If you know where you application is sluggish, C++/CLI may be a solution; allowing you to mix managed and native code to accelerate the parts that need it. However if it is the GUI that is intrinsically slow rather than the application processing; this may not be a useful path.

于 2010-04-27T11:38:58.487 回答