黑马程序员技术交流社区

标题: 老师话使我坚定了学习java的决心【希望帮助那些正在纠结的人们】 [打印本页]

作者: 胡斌    时间: 2012-11-29 02:49
标题: 老师话使我坚定了学习java的决心【希望帮助那些正在纠结的人们】
说实话,面临选择的时候是多么的艰难,尤其是我们这种没有钱,没有关系,没有背景的好多无人员,选择一个好的道路真心很重要,有时候走错一步,那将会是终身的痛!
一直在几个语言(C,C++,java)上徘徊,真心很纠结,浪费了许多时间,10月份决定到黑马以后,一直还在纠结,直到11月底看到老师的回答,我坚定了学习java的决心,希望为时未晚,同时希望这篇帖子能帮助那些还在纠结到底该学那种语言的同学指明一条道路。
我想我该走出这一步了,希望是对的!
老师的回答:
嗯,这位同学你好,我看了你的问题,也有点头大,说实话,你这个问题我不是没想过,我想得比较“野”,说白了,虽然我也用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++没什么事了。

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

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

这就是我的看法。
作者: 王震阳老师    时间: 2012-11-29 08:54
这个帖子我看了,感觉老师说的很详尽,而且自己也支持老师的说法。
作者: 侯光强    时间: 2012-11-29 11:15
支持个!!!
作者: 胡斌    时间: 2012-11-29 11:25
王震阳 发表于 2012-11-29 08:54
这个帖子我看了,感觉老师说的很详尽,而且自己也支持老师的说法。

对的,我现在正努力看视频呢,与同学们共勉!
呵呵。
作者: 宫明星    时间: 2012-11-29 12:36
分析的很细,有的语言是好的,但是一门语言的兴衰是受到市场控制的。
作者: 聽聽我dē❤    时间: 2012-11-29 13:30
以后的社会发展,对于程序员来说,越来越偏重强中心,弱客户端的这么一种开发模式,这其实就是云计算的由来啦。
同样的功能,用Java实现,程序员满地跑,用C++实现,老板抱着程序员大腿哭,恐怕程序员都未必肯应聘,太少啦,也太贵啦。


看了之后感触很深啊,云计算必定是未来的一个发展方向...
作者: 种生祥    时间: 2012-11-29 14:51
不管学哪种语言,都要好好学。。
作者: 胡斌    时间: 2012-11-29 15:05
种生祥 发表于 2012-11-29 14:51
不管学哪种语言,都要好好学。。

yeah,you are right!
作者: 奋斗的青春    时间: 2012-11-29 16:30
本帖最后由 吴愿涛 于 2012-11-29 16:32 编辑

虽然这位老师的语言组织能力不是很好,但表达的意思还是可取的;
其实这个问题没必要纠结成这个样子 ,语言就是一个工具,我们只是用它们来完成我们所要做的事情而已 。{:soso_e140:}

作者: 种生祥    时间: 2012-11-29 17:14
胡斌 发表于 2012-11-29 15:05
yeah,you are right!

{:soso_e181:}

作者: 崔政    时间: 2012-11-29 23:32
不错。我感觉只要基础够扎实,学其他的也就快很多,因为原理基本相似,万变不离其宗
作者: 轻松过关    时间: 2012-12-4 15:39
支持。说实话C++学起来不是一般 的难
作者: Kevin123    时间: 2012-12-4 17:58
很贴切,赞一个!
作者: 杨从强    时间: 2012-12-6 23:00
可以看出来是个很好的老师,说的很好。
作者: 张飞年    时间: 2012-12-13 14:23
学好与各种数据库的连接
作者: 高焕杰    时间: 2012-12-18 00:46
很详细!!!
作者: 高焕杰    时间: 2012-12-18 00:48
很详细!!!
作者: 宝剑无忌    时间: 2013-10-2 08:04
刘明刘明刘明刘明刘明刘明刘明刘明
作者: の放下执著    时间: 2013-10-20 22:32
老师说的没错,我学过c++ /MFC,MFC确实是差不多被淘汰了的,学那东西,难学而且很不好找工作。
这点我在大四找工作时深有体会....




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2