C语言/C++编程的未来之路

综合编程 2018-02-11 阅读原文

C语言是面向过程的,而C++是面向对象的。

C和C++的区别:

C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。

C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”。

C与C++的最大区别:在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。

这些是C/C++能做的

服务器开发工程师、人工智能、云计算工程师、信息安全(黑客反黑客)、大数据 、数据平台、嵌入式工程师、流媒体服务器、数据控解、图像处理、音频视频开发工程师、游戏服务器、分布式系统、游戏辅助等

C语言/C++的未来在哪里?没有哪个语言会成为永恒。为什么作者不希望C++在2017年,或者甚至在2057年也依然那么有活力。C++在性能方面最大的威胁可能来自硬件,因为通过C++现在提供的内存模型还不容易对其进行相应的编程工作。

Stephan Lavavej提出了一个非常有趣也很尖锐的问题:“C++的未来在哪里?”

这个问题是有解的。没有哪个语言会成为永恒,不是吗?(尽管C语言现在依旧生机勃勃)我不希望C++在2017年,或者甚至在2057年也依然那么有活力。在计算机行业,50年已经是一个几乎不可思议的时间了;虽然到07年为止,晶体管已有60年的历史。所以,在我问“C++的未来在哪里?”这个问题的时候,实际上是想问在接下来的10年,20年或者30年,C++会有什么变化?

在文章中,Stephan引经据典,提到了Bjarne Stroustrup发布的一篇关于C++的论文,和Alexander Stepanov关于C++底层机器模型的访谈。

然后他指出,尽管C++作为一门语言一直关注性能的问题,但根据Herb Sutter在2005年发表的一篇关于并发的趋势以及语言必须演进以迎接这些挑战的论文,由于工艺的限制,底层硬件的发展现在处于一个不稳定的状态。Stephan说:

在C++改变最大的核心语言属性列表中,应该包括可变参数模板(Variadic Template)、概念和左值引用(rvalue reference)等。前两个会使得写模板更加有趣,这当然很好,因为模板是生产高效代码的一个很有力的方法。另外,第三个主要面向C++03中最为薄弱的领域之一——复制数值的趋势。

一个叫Jared的评论者也同意Stephan的观点,但对.NET能否像C++那么长盛不衰,没有太大的信心:

说得好,但是我相信C++会一直兴盛到2057年。实际上我认为C++会比.NET撑得更久。(我认为.NET最终会因为市场驱动而成为一个技术实体,但不好说)

Jim Grow不同意关于托管C++没有像其他.NET语言引起别人注意的论点:

看上去C++将会被打入冷宫,只有几个顽固不化的分子坚守阵地,大部分人都已转投.NET编码阵营。因为C++和现代的工具集那么地不合拍,公司和开发人员在无路可走的时候才会选择它。真的好惨,C++本来可以是.NET平台上的一个非常优秀的语言。可悲地是,有些人却别有动机,说.NET开发人员都在使用其他的语言。

Olivier Giroux担忧的是C++内存模型在未来的表现:

在单个芯片里同时运行100多个线程的性能,和只运行2到8个的情况是非常不同的,尽管你知道将来的趋势是可以做到的。

因为有足够多的线程同时运行,指令就非常充足,你可以将已有的指令全都塞满。很快,阿姆达尔定律(译者注:该定律指出在体系结构的优化设计过程中,应该挑选对整体有重大影响的部件来进行优化,以得到更好的结果。)就把你牢牢拴在内存接口处。在过去,我们用缓存设计解决这样的问题,但那要比一个超线程负载需要更多的分部一致性。

所以,C++在性能方面最大的威胁可能来自硬件,因为通过C++现在提供的内存模型还不容易对其进行相应的编程工作。

那么,您对于C++作为一门语言的前景是如何理解的呢?它是会继续昂首上前,还是即将辉煌不再?

简书

责编内容by:简书阅读原文】。感谢您的支持!

您可能感兴趣的

C++函数重载实现的原理以及为什么在C++中调用C语言编译的函数时要加上extern “... C++相对于C语言而言支持函数重载是其极大的一个特点,相信在使用C语言的时候大家如果要写一个实现两个整型数据相加的函数还要写一个浮点型数据相加的函数,那么这两个...
打通Python和C++ Python作为世界上最好的 胶水 语言(哼,世界上最好的语言当然是PHP==),利用Python的简洁和C++的高效,基本可以解决99%的问题了吧~ ...
Pass the member function pointer to the classless ... In the code below, I cannot figure out a way of passing a member function to a g...
Disable the debugging of WindowsForms TextBox Javascript to disable the space bar in TextBox + MVC3 Weir...