C其实大家都知道,是一门中低级语言,保留了指针等汇编特征,与系统底层结合密切。C++呢,更多的向个Object C,即面向对象的C。但这些,其实并不能够让程序员显得很牛。
我个人的理解,之所以C和C++程序员显得很牛,其实原因和大家想像的正好相反,不是因为C和C++太强大,而是这两门语言太弱智了。
C和C++,由于设计时,主要针对系统底层, *** 作系统层面的应用,因此,其提供的核心基本库相对比较简陋,没有提供很多华丽的框架,VC的MFC不算啊,那是针对Windows的,不是C++的基本特性。
这直接导致了C和C++程序员,在进行大型开发时,缺乏现成的框架模板可以使用,也没有太多的工具库可以使用,像Java等其他语言,基本都提供了常见的几乎所有数据结构类,或者工具模块,不过,C和C++没有,搞得C和C++程序员,这群可怜的娃,啥事都喜欢自己做。
学生大本营很多朋友教训我,说我重复造轮子,弄得我哭笑不得,有那么多现成的轮子用,哪个龟孙想自己造,这不是没办法给逼的嘛,5555。。。
2、C和C++够通用,逼的程序员广种薄收。
这个通用,分两层意思。
一个是从应用角度,C和C++是目前我见到唯一的可以适应任何应用场合的语言,它对应用通用。起码,除了汇编语言,C和C++大概是唯一用来写 *** 作系统的语言了,很多底层的驱动程序, *** 作系统内核级模块,只能用C和C++来开发,因此,一个C和C++程序员,他唯一不知道的,可能就是不知道自己以后会去写什么平台的什么程序,这要求他必须努力学习很多语言之外的知识,为下一份工作做好知识储备。
第二个是从跨平台来说,C和C++又不是很通用,虽然从第一天开始,C就吹嘘自己很牛叉,是跨平台语言,但是,就我个人的经验,可以很负责任地告诉大家,它在吹牛。
没错,作为基本语句,C和C++程序可以到大多数平台的编译器下开发,不过,稍微涉及应用一点的库,差异就很大,比如同样的socket编程,Windows下和Linux下就有很大差异,什么线程库啦,很多,差异都很大。不过,日常工程开发,离了这堆库,程序员估计也不用做什么事了,因此,很多C和C++程序员自从被骗得上了贼船,没办法,就得面对无穷无尽的学习, *** 作系统,任务调度,内存管理,资源管理,很多都得自己来,去理解各个 *** 作系统的差异性,然后自己写程序来适应。
这么弄下来,搞得C和C++的程序员,无形中对于很多语言之外的知识,掌握得就多一点了。
3、C和C++不是一门应用级的语言,其程序员的要求也不是应用程序员的要求
应该说,这已经是很大的市场了,足以让一个程序员吃一辈子的饭,因此,学会了这类语言以及应用开发,一般已经可以再80%~90%的开发市场找到饭碗了。
这种事情想多了,不用说大家也知道,对自己的水平无形中,有一点点促进,因此,C和C++程序员往往看问题会深入一点,善于思考。
4、C和C++是高性能应用的唯一选择,这造成程序员必须学习优化
我们知道,虽然很多语言都可以写游戏,不过,作为大型游戏系统,比如暗黑破坏神吧,还有很多网游,出于高性能图形动画的需求,必须使用C和C++来实现,才能保证效率。
很多大型网站的后台数据库,为了响应高吞吐量,高并发量的客户请求,也需要使用C和C++进行优化。
这就造成了,C和C++程序员一玩就是大的,必须对优化非常熟悉才行。我们知道,优化,有两个要求,一是对各类算法必须很熟悉,可以进行算法比较,另外,也是需求分析的专家,可以根据需求特性,做量身定做的优化。
这就要求C和C++程序员,经常陷入算法比对之类的任务,而且,也不能仅仅做一个程序员,还必须时刻思考客户需求,对需求做不断的再分析,才能找出优化之路。
我们知道,任何事情,做多了,就成熟练工了,自然也就来得快,C和C++程序员就是这个样子。
可能还有很多其他理由,不过,我匆忙间,也就想出这几条。不过,大家可以看到,日久天长,C和C++程序员,不管是否自愿,但工作和学习中,确实比别语言的程序员在多想,多看,多学,自然而然,就显得很牛叉了。
但大家注意到没有,其实我上面分析的几点,与C和C++其实没有太多的关系,任何一门语言的程序员,只要坚持上面几点,不断修炼自己,其实都可以达到牛叉的地步。
所谓功夫在诗外,又所谓穷人孩子早当家,C和C++之所以显得牛人多,并不是这两门语言有多好,其实恰恰相反,是这两门语言没有给程序员提供太多帮助,而其应用环境又太多太广太深,逼的程序员在自我不断的学习,几年,十几年下来,自然显得比小日子过的还算不错的其他语言程序员,要深入一点。
但是,我们还是要看到,每一门语言,都有其存在的价值,起码程序语言排行榜前十的语言,都是伟大的语言,都可以产生大师,我觉得大家完全没有必要人云亦云,都一窝蜂跑来做C和C++,在很多应用市场上,Java、PHP等脚本语言,都以开发周期短,开发时间快,成为优选语言,C和C++完全没有办法和这些语言比较。
计算机软件开发,发展到现在,其实已经是很细分的市场,有专门的应用软件市场,也有系统软件市场,C/C++和Java等,各自应对的是不同的市场,因此,二者其实没有可比性的。
建议已经选择Java、.net等其他语言方向的同学,不要跟风,在自己的领域深入进去,你们也能成为牛人的。
作为一名IT行业的从业者,同时也是一名大数据、机器学习方向的研究生导师,我来回答一下这个问题。
首先,程序员完全可以靠技术来不断延长自己的职业生命周期,目前IT行业内也有大量的“70后”程序员一直奋斗在技术研发的第一线。
对于程序员来说,如果想一直从事程序开发工作,需要面临三大问题,其一是软件开发技术更新速度较快;其二是软件开发工作压力较大;其三是软件开发岗位升级难度较大,要想解决这三大问题,需要通过以下几个手段:
第一:重视基础知识结构。 程序员的基础知识结构往往能够决定程序员的成长空间,基础知识结构越扎实则上升空间就越大,职业生命周期也会越长。基础知识涵盖两大块内容,一部分是数学和物理知识,另一部分是计算机 *** 作系统、计算机网络、算法设计等内容。从应用级程序员向研发级程序员过渡一个重要的条件就是数学基础是否扎实,而研发级程序员的职业生命周期要远长于应用级程序员。
第二:重视自主学习。 不论从事应用级开发岗位还是研发级开发岗位,自主学习对于程序员的成长都具有重要的意义,很多程序员就是由于不注重自主学习而导致知识结构逐渐陈旧,最终被行业淘汰。自主学习一方面要紧跟技术发展趋势,另一方面要围绕当前工作内容。
第三:注重提升资源整合能力。 随着程序员年龄的增长,资源整合能力将对于未来的发展起到重要的作用,程序员的资源整合能力包括技术整合能力、方案整合能力和研发资源整合能力。当然,如果再具备一定的人力资源整合能力,那么会进一步提升自身的职场价值。
如果有互联网、大数据、人工智能等方面的问题,或者是考研方面的问题,都可以在评论区留言!
从我过往多年的生涯案例来看,我觉得程序员是否可以一直生存下去,关键在于:“技术是否精湛”。
一般来说,技术除非你是非常稀缺,大部分到了一定阶段,都会面临天花板,学习能力会随着年龄提升慢慢下降,就很难占据技术的前沿,28法则的存在,大约8成程序员需要谋求新的出路。
一般来说,会分为两条路径:
1.横向路径:
技术领域看似专业性很强,但是一部分泛泛之辈,小部分某一个技术领域非常精湛,那么需要深耕,多年打磨,成为某一个细分领域的专家。
2.纵向路径:
还有一部分程序员,本身对于程序非常倦怠,无法继续下去,那么纵向领域寻求突破,打个比方,你在某一方面才艺很强,摄影,营养学,演讲等,但是区别主业本身,可以从纵向里面慢慢打磨,成为你的核心技能,实现新的发展。
所以是否可以生存下去,完全取决你的选择,当你有一技傍身,那么才可以拥有全新的未来。
首先靠技术肯定是可以的,因为无论什么公司都会需要一个经验丰富,技术鼎力的一线程序员,但是这个有两个限制,一是这种程序员的职位需求不会太多,二是这种程序员在某个技术领域必须非常厉害,而且在某一个领域大牛的基础上,要有跟进其他新技术的能力,因为这种级别的程序员,公司不可能白白养着你,跨组协调,跨项目协作是最基本的要求,所以如果技术不在某一个领域达到大牛级别,且这个技术领域要有比较强的生命力,也就是说它的技术前景要比较好,否则想靠技术生存一辈子,还是比较危险的。选定好技术领域,然后耐心学习,很多技术人员本身是对技术痴迷的一类,所以这一类人还是很有竞争力的,他们学习新技术,深化领域技术的主观能动性一般是很强的。相信真正爱技术的人,即使他不靠技术生活一辈子,也会一辈子畅游在技术的海洋中。
首先答案是肯定的,但因人而异。
如果基本功扎实,个人又对技术的提升有着狂热的追求,善于钻研,对新技术不抵触,学习能力很强的话,可以一直靠技术生存下去。可以一直战斗在研发的第一线。这只是本职工作。
另外,可以利用自己的技术能力去做些兼职工作。比如接些外包的项目做做也是蛮不错的!
还有,比如现在很多内容平台上可以发布一些文章,甚至付费课程。生存是一点问题都没有。
如果你足够牛叉,还可以组建团队做技术VC。
其实靠技术不是能不能生存的问题,而是能活得多好的问题!
但,如果上面的优势在你身上不存在,那就另当别论了。
其实现在很多人都在说,技术人员到一定年龄该转管理等等。我的观点是看个人特点再做决定,比如你很健谈,善于交际。可以转做销售,一个懂技术的销售该有多么牛叉?如果你思维缜密,表达清晰。可以转做售前,一个懂技术的售前该有多么牛叉?
总之,你懂技术,转做什么都牛叉
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)