到底是精通C还是C++?感觉C++没有自己的定位

2025-04-16 14:27:22
推荐回答(1个)
回答1:

我个人认为,精通C/C++(至少包括语言设计、语言实现、语言使用和语言历史等方面)是这个星球上的人类个体不可能完成的工作。如果以精通语言为目标,除非是要维护语言实现(例如写编译器)或者是发明新语言或者新的理论,对于软件开发人员而言是不现实的——需要投入极大的精力,而很可能不会有多大产出(因为工作量对于个人而言不现实)。如果只是想找一份好的工作/写出像样的软件产品,那么——第一,不需要精通语言,而是应当尽量恰当地使用语言(特别是对于C++);第二,熟悉业务很重要,甚至比上面一点更重要(话说对于需要以精通语言为目标的工作而言,语言本身就是业务)。
C++的定位是“通用”的程序设计语言。(C可以说是系统程序设计语言。)事实上,C++在各个方面都可以有所作为,不过目前情况下是C++的学习成本比较高,且快速开发上相对于Java/C#等完全没有优势。而且,一些C++程序员受到不良学习环境的影响而不能很好适应软件开发的要求(例如可能自作聪明使用不熟悉的“高级”特性造成隐患),导致管理成本较使用其它语言时高——这也对C++的使用范围有所影响。
对底层“语言”感兴趣,是指对使用语言对表达底层实现的感兴趣?确实,这方面(例如嵌入式)目前而言C比C++的机会更多。稍微具体点,C++较适用于界面、图形程序、游戏(可能配合脚本语言)等同时需要运行期效率和利用面向对象设计方法提升开发效率的场合。而C语言在一般的嵌入式和其它较底层(例如网络通信)的领域(仅强调运行期效率而一般不用面向对象方法,以及一些资源的影响(这些情况下用到的库都是C语言库,尽管C++可以用,毕竟没那么直接))占优势。(上面提到的C++适用的领域同样也可以都用纯C,不过C写OO程序一般而言还是太蛋疼了……)
PS.C++比C要容易学习一些么……
好吧,“C++是C的超集”至少从现在来看是假命题,如果不知道这点的原因,老实说,LZ的C++水平和恐怕和LS几位一样不够合格。
LZ可以看看boost.function之类通用库的源码,如果看得懂的话说明阅读代码这一块应该算基本合格了。然后看看你是否可以独立地实现这样的代码。如果不能,你可能需要再花十倍的时间学习C++,再考虑是否需要以“精通C++”为目标比较现实。如果没有这个时间和精力,可以考虑钻研其它语言。无论是什么语言,只要学得精了,都是有前(钱)途的(尽管语言本身可能没前途)。
====
[原创回答团]