为什么C++不会衰老

Thoughts about C++ in the modern world. 一些关于当代C++的思考。

Debates about the present state of C++ in the programming world divide the participants into two camps: some dislike C++ and predict it’s soon death, while others believe that it will persist as it has before. I’d say the truth lies somewhere in the middle but that would mean that C++’s condition is kind of uncertain, like it was between the releases of C++03 and C++11. But it’s not actually so. How exactly then? Let’s try to figure this out. 在编程的世界中,关于C++当前状况的讨论分成两个阵营:一些不喜欢C ++,并预测它很快就死亡,而另一些人认为,这将持续,如以前一样。我说的是事实介于两种观点之间,但是这将意味着,C ++的病情是一种不确定的,就像是C ++03和C++ 11的版本之间。究竟如何呢?让我们揣摩吧。

Is it the beginning of the end?

Nothing of the kind. Sure, C++ is probably not so popular as C# and Java among beginner programmers, and industry giants do not release new C++-specific technologies, nor is it promoted by Microsoft and Oracle. But interpreting this as the end of C++ is totally wrong. Software based on C++ is still in use and needs support. Most of new software such as game engines is built with (/extensively uses) C++. C++11 and C++14, as well as C++17 which is coming out soon, only prove that C++ is doing well. But first things first.

C++11, C++14, C++17…

As mentioned previously, C++ was in a somewhat “uncertain” condition between C++11 and C++03 releases. Old libraries such as boost, Qt, etc. Were developing and improving and a new library C++/CLI was released, while there still was no sign of the new official standard.

Things went that way for a long time, but anyway the new C++11 standard was released in 2011 instead of 2009 as it had been planned. However, it was finally released and brought many additions, extensions, and syntactic sugar. It made the language much easier to code in ; the standard library was expanded with many things to make the programming process easier. A lot of new features were introduced: official support of parallel programming, initialization lists to make the code clearer, lambda functions, and much more. But there is no need to discuss all of that here because the article is not about that.

OK, we have the C++11 standard, that’s great. But what’s next? Stagnation for another 8 years? No way. It is not a secret that C++14 has already been released. It is hard to compare C++11’s and C++14’s innovations (/It isn’t as innovative as C++14), but it still has brought some additions and improvements.

It is very important that this trend is sustained and there are already some outlines of the new C++17 standard.

Of course, it will be a long time before programmers fully understand all the benefits of the new standards and learn to use the innovations properly. Yet these innovations are sure to have a positive effect on the quality of the code and software.

And what about existing software?

Existing software There is a large amount of software built with C++. Of course, we need to support it. Do you want to look at real-life examples? Please, check this list. You will surely (/Bet you’ll) find many well-known products there. I don’t believe that anyone will take up the job of rewriting all the existing C++ code into C# or Java just because it will be easier to work with in future, and because of the garbage collectors, and so on. It appears that knowledge of C++ is still urgent. Considering that C++ has become much more convenient to work with, the idea of using it to write modules/applications does not sound crazy. It will be much easier to support such code later. At the same time, it is the same high-performance C++as it used to be, but extended with a huge variety of new features. The extended standard library will also give us an opportunity to use ready-made solutions instead of creating them anew.

Popularity among beginners

From this viewpoint, things are not so good with C++. It is not much popular among beginner programmers who prefer C# or Java instead. Why? There are several reasons:

High language learning difficulty

Every programmer knows that C++ is difficult. Yes, it is vast and there are a lot of peculiarities. But what do we get in return? High performance + absolute control of all the processes (especially in original C). Again, we cannot but mention the C++11 standard with its improved user-friendliness, easy syntax, various containers, algorithms, and other useful things designed to make programmers’ life and job easier.

However, you still can shoot yourself in the foot, though the probability of this has been greatly reduced.

Low promotion

It is not a secret for anyone that C# and Java are aggressively promoted by Microsoft and Oracle. I am not sure about Java, for I’m not very much into the current trends there, but promotion by Microsoft is very evident. Most Microsoft innovations are tailored specifically for C# and their hackathons use C# too. I’m not saying it’s bad, I’m just stating the fact .

There is no support like that for C++. Sure, there is a variety of tools released specifically for it to make the workflow and the development process easier. Among these, we should mention Qt and ReSharper C++ recently released by JetBrains. Visual Studio 2015 now provides support for some of the innovations of the latest standards plus some new additional features that have made the workflow easier.

Nevertheless, it can’t compare to C#’s and Java’s scope of promotion.

Specialization

In spite of the fact that C++ is a very rich and flexible language, its scope of use is pretty narrow. Competitors contribute to this, too. Let’s look at a real-life example - mobile software development. The major platforms are already occupied by specific languages: Windows Phone by C#, Android by Java, iOS by Objective-C. That doesn’t mean that you can’t use C++ for these platforms. The question is if it will be easy and as efficient. Neither is C++ well suited for web software development which is growing more and more popular every year. Yes, there are means to work with sockets and libraries like Wt. But have you heard much of C++ web applications? Me neither. Considering that mobile and web software development have become a very popular field, it’s no wonder that beginner programmers prefer to learn other languages.

TIOBE Index But it’s all just words, and, as they say, a picture paints a thousand words.

Let’s have a look at the current state of affairs. In this area, the TIOBE index is quite popular: it demonstrates language ratings, rating dynamics in the chart, and other parameters.

As you can see, C++ is in the 3rd place presently, which is better than the last year. Furthermore, it is one of two languages among the top five ones whose rating has increased, even though slightly.

Conclusion I think that you have already formed an opinion of C++’s current state in the modern world. Now let me speak my own.

Shouting that C++ is doing better than ever would be a lie. But even a bigger lie is to call it a “dying” language .

C++ is alive and occupying its own niche.

New standards introduce some innovations making the language easier and more “user-friendly”. Software built with this language is still in use and needs support. C++ is perfectly suited for software development in certain fields, which , together with everything said above, means that C++ is still needed, evolving, and not going to give up.

原文发布于微信公众号 - 程序员的酒和故事(cppdabaojian)

原文发表时间:2016-11-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏林德熙的博客

win10 UWP 使用 MD5算法

在我们的应用需求很常见的,我们需要使用md5算法。 uwp的 md5 和 WPF 的使用差不多。

982
来自专栏数据结构与算法

Codeforces#498F. Xor-Paths(折半搜索)

(Reuters) - Retail giant Walmart Inc (WMT.N) said on Tuesday it entered into a s...

1143
来自专栏施炯的IoT开发专栏

转贴-WP7开发资源大收集

文章作者: jason huang 文章标签: Microsoft, Windows Phone 7, WP7 转贴链接: WP7开发资源大收集 这里收集...

1878
来自专栏liulun

C# WPF获取任务栏时间区域的Rectangle

[StructLayout(LayoutKind.Sequential)] public struct WindowRect {...

1827
来自专栏施炯的IoT开发专栏

Windows Phone 7 开发 视频资料

1. MIX10大会Windows Phone 7相关课程视频 课程ID 课程标题 comment Keynote 大会Keynote CL01 C...

18610
来自专栏张善友的专栏

微软开源Erik Meijer团队开发的异步编程库Rx(Reactive Extensions)

2012年11月6日,微软开源异步编程Rx(Reactive Extensions)库。Rx是一个模型,允许开发者把所有的异步数据粘和在一起。它的源代码现在基于...

2048
来自专栏施炯的IoT开发专栏

转帖--Windows Phone 7开发环境搭建

下文转自WPmind:Windows Phone 7开发环境搭建     在6月22日我们WPMind组织的Windows Phone 7开发技术线上活动结束后...

19310
来自专栏张善友的专栏

ASP.NET MVC 2 RC 发布

ASP.NET MVC是继ASP.NET WebForms之后,微软推出的Front Controller式的Web开发模型,它弥补了前者对HTML控制能力不足...

1925
来自专栏张善友的专栏

搭建.NET Framework 3.0开发环境 及SharePoint 2007/WSS 3环境

第一步:首先您必须安装.NET Framework 3.0,则可以下载其Redistributable Package Microsoft .NET Frame...

2106
来自专栏我和未来有约会

(收藏)搭建.NET Framework 3.0开发环境 及SharePoint 2007/WSS 3环境

第一步:首先您必须安装.NET Framework 3.0,则可以下载其Redistributable Package Microsoft .NET Frame...

2086

扫码关注云+社区