C++ 在中国有什么用处?对 C++ 的疑问。。。

一个计算机科学系的大学生,在大学的程序设计课上很可能接触的第一门编程语言就是 C++(或者 C),而且上课以来很多也都是在用 C++,从算法与数据结构,操作系统到编译原理。而到毕业时却发现很多人都已经不在用 C++ 来谋生了,不少都转向了 Java 或者 C#。

这终究是市场的原因,大环境的需求大的是 Java,C#,而不是 C++,这也是没办法的事情。我也不是执着于 C++,C++ 给了我很多编程上的知识,我很感激那段专心学习 C/C++ 的日子:一开始什么都不懂,安装一个 VC 6.0 都不会,连什么是压缩文件都不知道,慢慢地开始了编程,开始思考怎样将现实中的问题抽象来用程序解决,再到后来从 C/C++ 往底层探究,组成原理,汇编语言,操作系统内核,编译器的构造。这一路下来不敢说学多好,但是却见了不少的风景,领略了不少区域的美感。

唉,到头来却发现当我还在 C/C++ 的时候很多人已经在抛弃它了。现在我也很少一块儿讨论 C/C++ 和底层原理的人了。而且也发现学了这么多原理性的东西(可能学得也不好),到头来却不能适应就业的需求,很多要求能直接上手一个项目,我坦诚我做不到,我的知识结构里尽是:计算机是如何组成的,各部分是如何协调工作的;如何设计一个算法,应当如何评价不同的算法;操作系统内核是如何工作的,程序的逻辑地址究竟是如何映射到物理地址上的。。。嗯,遗憾是,这些知识不能转化为社会要求的项目。。。

如果不是整个大学阶段一开始就用项目的思维知道自己,而是任自己的兴趣发展,毕业以后就会发现一种悲哀。。。社会不需要你知道为什么,只需要你能做项目,知道如何做而已。就像那些年老师只要求你如何解这个题,而至于你知不知道为什么没人在乎。

好吧,有点发牢骚了。写得也没什么逻辑了。还是回到最初的问题吧,C++ 在中国可以做什么呢?我真的不清楚,我心中的答案只是 *编写计算机病毒*。嗯,还没走向社会,有些东西也看不到。。。

JAVA,C#,是一种谋生手段(人总是要生存的),学JAVA,C# 可以让你看起来很强大;
至于C++,C,或是汇编,可以让你的内在变得很强大。JAVA,C#适合大部分人,C++只适合少部分人,把C++当成一个业余爱好来提高是个不错的选择。C++、JAVA、C#,都很强大,不过侧重点不一样。
还有记住,语言只是个工具,编程是一种思想,思想才是最重要的,与语言无关。追问

嗯,您说的是我很经常听到的对于语言的观点。大部分还是有感触的。唯一需要补充的是,其实我觉得编程语言本身也是含有一部分编程思想的,读了 the little schemer,学会了如何用递归地思考,我觉得这和语言本身有关。

追答

是的,关键看你用这种语言做什么了。
C太繁琐,但非常节约资源;
C++太乱,找个类库要半天(类库乱--开源站点,各自为战),好处是程序处处可控,内存分配器易可替换。
-C#,JAVA,类库非常、非常强大,强大到令人发指,上万类库不是盖的,各行各业,各种花样应有具有,估计一辈子我学不完。结合了、操作系统、数据结构、算法导论,密码学,网络编程、
图像图像,数据传输,等等,各种闪瞎狗眼的模块。
/*-------------------------------------------------*/
个人认为C的强大体现在控制力(某种意义上C其实就是汇编语言)和效率上(图像处理,比如),这也许是大多数人认可C的原因。
JAVA类语言的强大体现在“类库”(好多人不知道JAVA类库的强大,以为学过一点C就无脑喷的,鄙视一下),以及快速开发,工程管理上(毕竟是一款商业产品)。

PS:
我曾经看到过用C语言面向对象的,用静态全局变量模拟内核任务切换的代码,被作者高超的手法所打动。
/*-------------------------------------------------*/
确实,要想靠一门语言吃饭,必须要有一门应用与之对应,
C---单片机,图像处理,等等
C++--界面开发(X),单片机(X),操作系统(?),貌似C++能做的C,JAVA都能做
C++有哪些自己的专属应用么(QT,)

C#,JAVA--web开发,界面开发

追问

你说的很中肯。语言的本身的特点会决定它的应用,而一旦社会需要这种应用后,语言就会热起来。C++ 在操作系统还有些应用,而在游戏中的应用是主要的。不过这多少有点小众了。
最后,那个用静态变量做任务切换的方法可以在《programming the 80386》上得到实现的启示,这个东西仔细钻研一下保护模式下的汇编不是特别困难,但是这些知识无用武之地了。

追答

想要混饭吃,还是要有一门可以混饭吃的应用,而应用的关键,就是类库,

C 有各种定制化的嵌入式开发组件,大量的驱动程序源代码;
C++ 有QT,MFC ,各种编译器厂商;
C#有.netframework;
JAVA 也有强大的类库JDK;( Android 的SDK也算是一个JAVA类库了)

/*-------------------------------------------------------------------------------------------*/
可是学类库,实在是太无聊了,不在项目中学习完全没有动力,一离开项目
自己学,就枯燥的不得了..
/*-------------------------------------------------------------------------------------------*/

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-01-22
C++还是可以的(至少功能公认最强大)
但就业确实不太好
C# 也就是C++的升华
原意是C++++
所以很多人愿意用C#
而且现在对象开发JAVA好像更好点
而嵌入式开发(如单片机)现在
大多用的是C语言(偏硬件方向)追问

是,我考察以后对这个事实很震惊,处境相当尴尬。

追答

而且现在安卓的开发也很火,也是建立在Java上的

追问

对。Android 的确相当火,原来很多搞 web 开发的现在也有很多去搞 Android 去了,加上 ios,天下三分了。想想自己,也不是不能学 Java,更不是学不好 Java,但是心里就是说不来的感觉。

追答

哎,以前我的第一方向也是C++

不过现在也要搞JAVA了

追问

时势所迫啊。。。

本回答被网友采纳
第2个回答  2014-01-23
开玩笑,大多数强悍核心程序都是用C++写的,

这是因为高手们都很保守,让你学圆边上的技术,他们掌握核心就行了,这是关键原因,
次要原因是 Java 和 C# 也是高手们开发出来的,肯定要比原始的东西更易于用来开发程序,
所以人们都选择 Java 或 C# 去了。

所以大部人都去学 Java 或者 C# 了

这是我的想法吧
第3个回答  2014-01-23
想干自己想干的事,而且是立于不败之地的,那去学C/C++;想谋生计,那就学JAVA或C#吧!分明是C/C++比JAVA或C#全面、更优秀,为什么那么多人转而投入JAVA或C#怀抱?谋生!社会氛围就是这样,很残酷,当然也很无奈……
第4个回答  2014-01-22
做游戏。。。追问

嗯,这是C++最不可撼动的领域了。