学习C++会帮助我快速构建本机应用程序吗?作为一名程序员,它对我有帮助吗?还有什么其他好处?
我之所以想学习C++,是因为我对构建在JVM和.NET之上的应用程序的UI性能感到失望。它们感觉很慢,启动也很慢。当然,一个非常糟糕的程序员也可以使用C++创建一个速度较慢、动作迟缓的应用程序,但我不考虑这种情况。
我最喜欢的Windows实用程序之一是Launchy。在Readme.pdf文件中,该程序的作者写道:
0.6这是C++的第一个版本。当我对C#的大型.NET框架要求和用户我没有安装它的欲望决定换回更快的语言
我完全同意Launchy的作者对.NET框架的要求,甚至对桌面应用程序的JRE要求。更不用说它们的具体版本了。一些最好的、我最喜欢的桌面应用程序不需要.NET或Java就能运行。它们只是在安装后运行。它们主要是用C++构建的吗?C++是基于GUI的应用程序的唯一选择吗?
而且,我也很有兴趣了解学习C++的其他好处。
是的,C++绝对很棒。检查Qt。它也有一个很好的Python绑定,所以你可以很容易地在Python中原型化,当/如果你需要额外的性能时,移植到C++基本上是1:1的翻译。
但事实上,当你有一个很棒的平台时,编写C++也不那么难,最糟糕的部分是编写所有的类声明:-)
如果你想构建在没有.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,所以它会产生涓滴效应。
我写了10年C++windows应用程序,大约2年前转到C#开发最新产品。我为C#应用程序的可怜而感到尴尬。它需要20秒才能启动,你必须等一秒钟左右才能在屏幕之间切换。我使用了一些第三方GUI控制库,它像筛子一样泄漏内存!我的应用程序运行速度为150兆欧,几乎什么都不做。
我希望回到C++。
你可以使用MFC,它将比.Net快得多。或者,如果你真的想烧录,请查看WTL-aL,尽管没有太多的文档。我建议你选择MFC或Qt,因为你会发现很多好的信息和教程。
我可以看到C#可以更快地开发,也许在未来的某个版本中,它会更快、更小。
你会讨厌我的答案:
GUI开发中最大的瓶颈通常不是因为语言。在大多数应用程序的大部分时间之后,UI都处于空闲状态,等待一些用户输入。我已经能听到你的尖叫声了,但我在大多数应用程序中都说过。
让我们这样说吧:我非常确信可以在.Net CLR之上设计一个好的UI。学习C++是一件好事,但不会解决开发一个好UI的固有问题。
一如既往。这取决于情况。只要你远离微软的大型框架,比如MFC、.net等,你的应用程序可能会很快,但很难编码。您的好处:您将真正了解windows在其漂亮的(?)表面后面是如何工作的。只要看看COM对象的初始化代码,你就知道我的意思了。你永远不会在VB或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++编写后端。
是和否。这都是关于优化。。。由于C++允许您在较低级别上工作,因此C++是编写快速应用程序的最佳语言之一。然而,如果您习惯于OOP的更抽象的方法,那么在C++中实现的那些低级机制可能会非常烦人。用C++测试软件通常是一个漫长的过程。如果你无论如何都在寻找速度,C++肯定是最好的选择之一。
C++确实有可能为您带来一个更精简、更高效、更快的应用程序(如果您做得对的话)。
然而,从开发人员的角度来看,.NET框架是为了舒适而构建的;相对于Win32 API或MFC的巨大改进,相比之下,这似乎是一项艰巨的工作。因此,请考虑如何实现应用程序依赖.NET的方面(还有其他可用的框架可能比MFC或Win32 API更容易),并考虑使用此类框架的成本和许可证问题;例如,免费的VC++速成版不包括MFC支持。
如果您知道应用程序在哪里运行缓慢,那么C++/CLI可能是一个解决方案;允许您混合使用托管代码和本机代码来加速需要它的部分。但是,如果是GUI本身就很慢,而不是应用程序处理;这可能不是一条有用的路径。