it-swarm.cn

今天C ++的作用是什么?

目前,我是一名IT专业学生,我想知道当今C++中哪些仍然重要,它的用途是什么?我在大学里完成了基础C++课程,但是我无法想象我可以在哪里使用我的知识以及应该朝哪个方向学习C++。

换句话说,我应该学会成为一名成功的C++程序员?

目前我正在学习Java,只是因为我不清楚C++在当今哪个领域可能有用,但是我清楚地知道作为Java将会做哪种工作。 _程序员。但是我仍然希望C++不会死。

41
hades

C++的杀手级功能是范围绑定资源管理,SBRM(通常称为“ [〜#〜] raii [〜#〜] ”))。围绕此概念构建的是only工业编程语言。在C++中,所有对象的生命周期都是确切已知的,并且(编写良好的)C++程序可确保以完全确定的方式获取和释放资源。相比之下,垃圾收集或以其他方式管理的语言不提供任何此类保证;实际上,这些语言的对象可能会在其生命周期结束后继续存在。

这就是为什么将C++用于金融,视频游戏,高性能嵌入式和实时系统,运输,制造以及其他对确定性和精度至关重要的行业的原因。没有其他选择。

当然,它用于执行更多的任务,并且这些任务已丢失给C#和Python和其他更合适的语言,但这并不影响其核心市场。

57
Cubbi

C和C++有一些市场(尽管我了解有限)

  1. 现有代码。 C和C++拥有一些最大的现有代码库。不能仅仅因为“下一个热门新语言”的出现就扔掉了这么大的代码。在大多数平台上,C绑定几乎是语言间交互的标准,因此能够(至少)使用C或C++编写包装器库非常有用。
  2. 高性能应用程序(例如高频财务)。与大多数其他编程语言相比,C和C++仍可实现更好的整体性能。最重要的是,在C++中,通常使用仅编译器之类的东西(例如模板)来构建抽象,从而将计算从运行时转移到编译时(使整个应用程序更快)。
  3. (类似于2)低延迟应用程序。在例如上运行的语言根据应用程序的不同,CLR或JVM的速度通常几乎可以与C++一样快,但是在程序可以执行之前,仍然需要将CLR或JVM自身加载到内存中。如果您有严格的启动要求,那么这很重要。 EDIT FROM COMMENT:关于这一点,这里需要注意任何描述的硬等待时间。在虚拟机上运行的语言很少提供硬时间限制,因为运行例如垃圾回收不是确定性过程。
  4. 嵌入式系统。一些嵌入式系统具有运行例如JVM(Google的Android(好吧,它并不是真正的JVM,但是已经很接近了),RIM的Blackberry)或CLR(Windows Phone),但是大多数嵌入式系统没有能力运行比C或C++需要更多运行时支持的语言(几乎根本没有运行时支持)。
  5. 部署受限的应用程序。如果您的整个程序只有几百个KB,有时需要安装JVM或CLR实在是太过分了。 (例如,我从事的大多数程序必须部署为单个.EXE文件,无需任何安装程序或类似的安装程序;为此,没有其他选择)
40
Billy ONeal

C++仍然非常有用,并且绝不会消失。如果您想阅读一些不同编程语言之间的严肃比较,请参阅论文 C,C++,Java,Perl,Python,Rexx和Tcl的经验比较 。它不是最新的,但我相信大多数事情仍然存在。

3
sakisk