C++到底还能做什么?

这是一位朋友发到我邮箱里面的。

我呢,试着回答一下,如果回答得不好,叫做肖某人学艺不精,回去重新学习再来过哈。呵呵。

一家之言哈,欢迎拍装。

原文如下:

肖老师您好:
  我现在是一名在校大学生,在学校期间自学C++有两年的时间了,看过C++Primer,stl,inside C++ model(侯捷翻译的那本),com本质论等...
  在学习C++的过程中感觉C++语言本身的确很强大,而且随着学习的深入,我逐渐感到要想在短时间了解这门语言的本质几乎是不可能的.因为我也学习过javaSE的一些东西,感觉就java和C#来说,语言本身不难,不过在底层调用方面有时候就会显得有点费力了.
  不过对于C++我一直有很多疑问,所以想请教您,向您学习一下:
  1)关于C++的应用:
  曾经我以为C++的应用比较多的就是用MFC来编写各种应用软件,但是,我现在感觉编写软件这方面,用一些其他语言和开发平台,要比C++方便和快捷的多,而且也听人说,现在几乎不用MFC或是C++做软件了.至于网络应用和跨平台方面,现在应该是C#和java在这方面的应用比较有优势吧.至于一些其他有关硬件方面比如嵌入式,单片机控制系统等方面,用C语言就可以满足大多是的应用了.所以,现在哪方面的工作是用C++来做的?
  2)关于找工作的事:
  现在学C++到底能做什么样的工作?就像我前面说的,因为不大了解C++主要的应用在哪,所以,也不清楚到,能用C++来做哪方面的工作.
  3)关于com:
  我之前听人说,C++做到最后就是做com组件开发.情况是这样的吗?如果是的话,是不是用com来做有关远程调用对象和接口或是分布式系统等方面的应用.如果想做com开发的话,现在有哪些工作是需要用com组件编程的?
  4)最后:
  虽然我学习c++两年了,不过感觉,没做过什么像样的应用,因为我在我们学校的一个网站的技术部里做过网站前台开发的工作,就是html,css这些,感觉这些语言虽然在学习的时候感到有很多东西不理解,但是通过做一些简单的网页,逐渐的基本掌握了如何编写网页代码.所以,也做过一些专题网站什么的.不过,就是c++这门我学的时间比较长的语言,我没有做过什像样的应用,想练习可是又找不到合适的方向.
  所以,想让您给我提点建议,我现在应该学习或者是做哪方面的东西来提高自己的C++水平,还有就是在学习这门语言时,如何能够通过实践来更好的掌握C++.

P.S:
  我的表达能力有限,可能有些问题我描述的不清楚,不过,还是希望老师能辛苦一下,尽量帮我解答这些问题.
  谢谢了.

我的回答:

嗯,这位同学你好,我看了你的问题,也有点头大,说实话,你这个问题我不是没想过,我想得比较“野”,说白了,虽然我也用C++,但是,想这个问题的时候,我确实尽量站在一个客观的立场上在想,想出来的结论,说实话对C++不是很有利,我也怕说出来被人拍砖,所以一直没说,呵呵。

不过,你既然问得这么细,我想我还是说说吧,说得不好听,大家就担待一下吧。

嗯,恶意拍砖,我拍回去!

这第一个问题,其实里面就很不好回答了。

你说的“我以为C++的应用比较多的就是用MFC来编写各种应用软件”其实话没说完整,在Windows下,这个大前提不能少,大家开发Windows的应用程序,如果使用VC++的话,建议使用MFC来开发,因为它是微软提供的一套C++扩充类库,专门针对WindowsAPI封装,开发Windows程序最方便。

这个话,倒退10年,是绝对正确的,因为那会儿,Linux没怎么起来,100个程序员,估计有99个都在为Windows开发程序,应用软件想当然跑在Windows下,这是对的,不过现在,使用Linux开发的人越来越多,Windows即使在桌面平台上,也一般只占据Client市场而已,Server中早就是Linux一家独大了,没办法,老外版权意识强,但老外也想省钱,Linux不花钱,WindowsServer花钱,就这一点,就够了。国外大量部署的商用服务器,其实是Linux平台。

嗯,国内貌似也差不多。

所以,我在年初的演讲《明日世界--云端计算下的程序员需求分析》中强调,MFC可能会衰落。起码,没有上世纪90年代那样,一家独大的感觉了。

这其实也正是我为什么一直强调大学生尽量打好基础,不要太早涉足商业应用开发的原因,因为商用类库,有生命期,今天最火,你学了,明天等你毕业出来,人家被淘汰了,你不是做了无用功?甚至,工作都不好找。不信,有谁是专门研究TurboC的graphics开发的,就是BGI,现在出来找得到工作不?

其实,MFC最大的问题,不是它自己的问题,是业界发展的一个普遍结果。

现在的社会,请问大家一句话,纯正单机版程序的应用还有多少?大家打开自己的Windows系统看看,有哪些应用是纯粹单机版,一点不带网络访问的?

恐怕不多了吧?

现在随着互联网的发展,网络化应用越来越多,在Server端不好说,因为要求高吞吐量,高性能和高安全性,C/C++开发还占有一席之地,但是,客户端,恐怕未必了。

客户端应用,一般都很贴合应用客户的需求,更多的以数据库服务为主,目前,我这里再提个看法,纯粹功能性应用越来越少,像暴风影音,像光阴魔术手,这类纯功能应用其实是越来越少,目前应用开发的主流,是利用强大的中心服务器的处理能力,为用户带来越来越多的数据密集型应用体验。

QQ,它的用户群有多少?MSD和gtalk什么的不说了吧?大用户量,就是大数据量,带来了全新的沟通体验。

SNS社区,包括我们这个网站,大家是不是在享受大数据量的应用体验?

即便是强调终端用户体验效果的游戏,目前大家可以比较一下,网游和单机游戏的比例,就知道了,人们到底喜欢什么样的应用了。

这就带来了一个问题,以后的社会发展,对于程序员来说,越来越偏重强中心,弱客户端的这么一种开发模式,这其实就是云计算的由来啦。

大家是不是发现,自己用IE的时候越来越多了?

但是,这就带来一个问题,开发弱客户端,还用得着C++这种大型的语言吗?

我不说,大家自己想,学C#和Java容易,还是学C++容易?

大家别耍酷啊,呵呵,其实我当初就是为了耍酷,非要学C++的,不过,要是站在商用立场,站在老板的立场,早出人才,快出人才,出便宜人才,嗯,Java和C#,PHP也算,就是不能算C和C++,为啥,学起来费劲,程序员学习成本高,自然价格也高,同样的功能,用Java实现,程序员满地跑,用C++实现,老板抱着程序员大腿哭,恐怕程序员都未必肯应聘,太少啦,也太贵啦。

这不是肖某人危言耸听啊,我也声明一句,我一点歧视Java和C#这些程序员的意思都没有,仅仅是请大家比较一下,Java、C#程序员多,还是C++程序员多。

不过,这并不说明C++程序员的优势啊,这反过来证明另外一个问题,大多数中小型企业,在研发上投入不会很大的企业,急于做出成绩,快速获得市场表现的企业,在同等条件下,即Java和C++都能满足需求的时候,会选择Java、C#、PHP等语言作为公司的主流开发语言,而不会选C++。

这对Java等语言来说,其实是最利好的消息,当越来越多的公司需要这方面程序员时,程序员的市场越来越大,价格越来越高,而C++呢,虽然摆出一副曲高而和寡的样子,端着架子,但是,由于没有太多公司选择C++作为开发语言,因此,反而市场越来越小,找不到工作,即使找到,也得降价销售,这就是市场规律。

这里我要说一句,其实C++程序员,我个人认为,前景并不好,从我个人经历,和很多朋友的感觉,发现有问题。主要就是不好找工作,工作机会太少,没有太多的选择空间,而Java的朋友们,由于选择空间大,其实很好谈价,我好几个Java朋友,薪水比我高的。呵呵。

因此,我的建议,如果以后定位在应用程序员,主要做Client业务,建议不要选择C++,更多选择Java和C#什么的吧,工作更好找,还有,我的经验,薪水与语言无关,大家千万不要以为C和C++程序员薪水就一定高。高的有,肯定有,但是,不是所有人,也不一定就是你。

嗯,说到这里,顺便说说第二个问题,C++找什么工作,我的经验,游戏,无论是客户端还是服务器,需要C++程序员的,不过,由于目前引擎公司越来越强劲,很多游戏公司自己不开发引擎,而是用买的,因此,客户端这边,恐怕需求会越来越少,主要恐怕以后还是做服务器需要。

但是也很难讲,C++比Java主要就是速度,但是,硬件越来越快,多核开发越来越多,很多网页游戏其实用PHP已经够了,这个,C++程序员的工作空间也受到挤压。

C不一样,C呢,在很多时候,做驱动,做嵌入式小规模应用,满够用的,而老板为了节约硬件成本,往往会挑选比较弱的平台,Java等脚本语言目前跑不下来,只能用C,嗯,稍微大点,用点C++也可以的。

在嵌入式平台上,C++貌似还有一点市场。

不过很难讲,目前的arm9已经接近当年P2的计算能力,随着嵌入式CPU的发展,嵌入式系统最终走向脚本化,也不是什么难事。

其实,Java等脚本语言,针对C++最主要的优势就是没有指针,没有很多费解的东东,学习曲线低,程序员容易学出来,还有就是底层已经处理了很多细节,上层更多地专心与用户的业务,这样,用户业务贴合度好,更容易受到用户的青睐,还有就是,不处理复杂数据结构,大家都调用基本库,程序成功率高,bug率低,开发成本低,公司容易赚到钱。

说白了,Java相对C++,不是技术在推动,而是钱在推动,所以,C++必败。

com就不说了吧,com本质上是跨进程远端调用,dcom甚至允许跨机器。但是,大家想想,其实正是因为com的存在,进一步挤占了C++的生存空间,越来越多的基本C++功能,被以com形式提供出来,最终被Java、C#等其他语言所调用,扩充了其他语言的功能和性能,使原来仅有C和C++能做的事情,现在Java、C#等做起来也很好,很快。

其实,我私人认为,com更像是C++程序员自己为自己挖的墓坑。

当把基本功能支持完善,Java、C#等语言获得了更好的性能和功能支持,可以通过com调用很多C和C++的基本库,获得更好的开发能力的时候,纯UI,纯数据应用,其实已经被Java和C#牢牢占据了,C++没什么事了。

嗯,针对你最后一个问题,学习方向问题,我的建议是,基础的要学,但是,出于好找工作的目的呢,我建议你应该学点html相关,css相关。

如果不是立志,这辈子就要做一个C++程序员,(我总觉得纯正的C++程序员有点曲高而和寡,不好找工作),而是很务实的,希望毕业后在程序界迅速找到一份工作,我建议多学点Java和C#这类脚本语言,对于各种数据库的访问做到滚瓜烂熟,嗯,基本的数据结构和算法这不说了,要熟悉的。

这样起码帮助你在毕业后,能找到饭碗。

不过,这并不是说你这辈子不能做C++,当找到饭碗,工作稳定了,在有空的时候,是可以继续学习C和C++的,学好了,有合适的工作机会,跳一下也不是不行,说不定,收入更高。

嗯,还是那句话,程序员就是程序员,写得出程序就是程序员。程序员不要在自己脑门上加太多修饰,什么C++程序员,什么Java程序员,什么Windows程序员,什么Linux程序员,这些加了修饰的程序员,其实不容易存活的。

要能掌握程序设计的通理,什么语言,什么平台,掌握了基本的程序设计道理的时候,其实都一样。

大学生,打好基础,毕业先抓饭碗,总不好意思工作了还要父母养活。

在饭碗稳定的时候,随时注意学习,特别是注意利用自己的基础功底,跟踪主流语言技术,不断与时俱进,方能立于不败之地。

C++不是永恒的,C不是,Java也不是,C#更不是,没有永恒的语言,没有永恒的平台,只有永恒的程序设计技术。

这就是我的看法。

嗯,本文写到这里,还是要补充一点:

虽然上面本人写了很多关于C++前景堪忧的言论,不过呢,我本人确实还是在从事C/C++的开发工作。我想我并不是对C++有什么偏见,仅仅是想尽量客观一点,不带个人感情色彩,讨论一下C++程序员的就业前景问题。

其实C++我认为还是一门非常优秀的开发语言,它与C配合,可以实现很多底层的调用,这是Java等语言无法企及的。

比如我最近完成的一个高精度计时器(http://blog.csdn.net/tonyxiaohome/archive/2010/04/29/5541805.aspx),实现了差不多0.0031ms的计时精度,就我个人的能力而言,恐怕只能C/C++来完成,其他语言也许能做到,但至少我不会。

我也希望各位C++er能正确看待本文的论点,起码,我们现在还是一起的。呵呵。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/tonyxiaohome/archive/2010/04/27/5536367.aspx

转载于:https://www.cnblogs.com/Purple_Xiapei/archive/2012/08/08/2628194.html

转:C++到底还能做什么? C++的前景分析相关推荐

  1. C++到底还能做什么? ----感觉说的还是很有道理的,共勉!

    C++到底还能做什么? 肖舸 嗯,这是一位朋友发到我邮箱里面的,很奇怪,发到了gmail邮箱,而不是我常用的hotmail邮箱哈.  我呢,试着回答一下,如果回答得不好,叫做肖某人学艺不精,回去重新学 ...

  2. C++到底还能做什么?

    肖舸:C++到底还能做什么? 嗯,这是一位朋友发到我邮箱里面的,很奇怪,发到了gmail邮箱,而不是我常用的hotma il邮箱哈. 我呢,试着回答一下,如果回答得不好,叫做肖某人学艺不精,回去重新学 ...

  3. 开抖音小店怎么赚钱?无货源模式还能做吗?真实情况分析

    大家好,我是电商年年 最近很多朋友都在问开抖音小店跟开淘宝店.京东店有什么区别啊?不都是上货卖货,开抖音小店怎么赚钱啊?今天年年就用抖音小店的真实情况来告诉你,开抖音小店的赚钱之道. 开抖音小店怎么赚 ...

  4. C++ —— 到底还能做什么?

    摘自豆瓣.幻雨と抱貂 肖老师您好:      我现在是一名在校大学生,在学校期间自学C++有两年的时间了,看过C++Primer,stl,inside C++ model(侯捷翻译的那本),com本质 ...

  5. C++到底还能做什么?【献给不知道学什么技术的人】

    肖舸 嗯,这是一位朋友发到我邮箱里面的,很奇怪,发到了gmail邮箱,而不是我常用的hotmail邮箱哈.  我呢,试着回答一下,如果回答得不好,叫做肖某人学艺不精,回去重新学习再来过哈.呵呵.  一 ...

  6. C++到底还能做什么

    原文链接:http://www.douban.com/group/topic/11136421/ 大侠我读了一下,大部分地方说得还很在理.个人认为C/C++是要么登峰造极,要么颓废到底,呵呵. 肖老师 ...

  7. 县城及三四线城市做小程序代理加盟前景分析

    微信上线小程序后,明眼人都能看出小程序将带来巨大红利,经过两年的发展,小程序开发平台已经有2000多家,一二线城市市场几乎饱和,很多人将目光投向了三四线城市. 那么县城.三四线城市市场代理小程序的前景 ...

  8. 35岁了 软件测试我还可以做多久,往后我怎么发展

    前言 在国内,软件测试行业是近20年来随着互联网的飞速发展逐步兴起来的.随着行业的发展,测试市场的人才缺口也越来越大,能够提供的就业机会也就越来越多,所以越来越多的人意气风发地投身到测试行业,憧憬这自 ...

  9. 实现量子计算,我们还需要做些什么?

    2020-03-31 18:21 导语:来自腾讯量子实验室的解读. 整理 | 蒋宝尚 2019年是量子计算占据新闻热点版面的一年,从1月份IBM公布全球首款商用量子计算原型机到9月份谷歌宣告在全球首次 ...

最新文章

  1. 15.linux-LCD层次分析(详解)
  2. LSM树——LSM 将B+树等结构昂贵的随机IO变的更快,而代价就是读操作要处理大量的索引文件(sstable)而不是一个,另外还是一些IO被合并操作消耗。...
  3. python zlib字符串压缩
  4. Matlab 画图字体,字号的设定,图片大小和比例
  5. 如何设置STM8单片机选项字
  6. 手把手教你用python实现决策树的策略规则挖掘
  7. css_selector定位总结
  8. python爬虫案例——百度贴吧数据采集
  9. 细说Redirect重定向请求(情节分享)
  10. 20170908在线编程之圆周上问两点间的距离问题
  11. CentOS/Ubuntu 14.10 安装 phpstorm
  12. Rust : stevenbai.top学习站点
  13. 文献检索是利用计算机对文献,文献检索计算机课.ppt
  14. 各种电子面单-Api接口(顺丰、快递鸟、菜鸟)
  15. configure: error: Jabber library not found
  16. 科宇扫地机器人_扫地谁更精准更干净?新一代3D视讯+激光成像 PK 老式激光扫描...
  17. 数据仓库开发工程师岗位要求
  18. Java 下载Excel打不开是什么鬼
  19. hdu1713相遇周期
  20. oracle自动清理归档,Oracle rman 自动清理归档日志

热门文章

  1. 幼儿园计算机维护人员放暑假,幼师有话说|幼师假期改革了?取消寒暑假,实行“朝九晚五”?...
  2. 中兴、格力等成立半导体公司!
  3. 1035 插入与归并(C++)
  4. win10台式电脑耳机不响
  5. 借助于经济学数学计算机科学,借助于经济学、数学、计算机科学、统计学、概率论以及帮助决策的理论来进行逻辑分析和推论。这一概...
  6. spring boot 瘦身打包排除其他依赖jar包
  7. C/C++内存申请和释放(一)
  8. 第九届“中国软件杯”大学生软件设计大赛总决赛落幕
  9. 19年就业形势怎么样
  10. 测试新人到测试专家的进阶之路