感觉当今市场上直接跟C语言挂钩的工作越来越少,C语言真的过时了吗?
我就是搞嵌入式c的,我来解释下为何有这种误解。
编程语言排名中c持续保持上十年前三的位置,但大家感觉不到,是因为跟我交互的除了网页就是各种APP,而这些东西都是java之类的开发的,就好比我们觉得美国什么都牛逼,因为我们天天交互的电脑,芯片大部分都来自美国,但并不能代表美国啥都强,如果要你举例5个行业美国最强,基建?运输?互联网?制造?农业?电力?除了软件和微电子估计第3个都要仔细考虑一会儿。
c语言处境就类似,我们不经意的,电动牙刷,智能马桶,高铁检票口,各种交通灯,摄像头,路灯,智能水表,电表,智能锁,家里路由器,空调,洗衣机,这些都是c语言做的,如果没有这些,
估计整个世界都停止运行了。
再来解释为什么认为从事这块比较少,可能这些人都分布在各个小公司吧,这些生活方方面面的产品公司没啥巨头,而我们天天看新闻的都是互联网大企业,所以忽略了他们的纯在,就好比我们觉得到处都是收入上万的,但在中国收入上万的确实不到15%,到处看到本科生,但也只有中国人口的7%
再来说一下c这个行业普遍情况吧吧,不像app开发,起薪就是5k上万。入门工资极低,可能只有2k左右,努力学,但是前三年工资还是会涨得快,可能会到1万月薪左右,再往后,就看个人造化。可能你是做linux底层驱动,也可能继续在做电饭煲,所以差别很大,5到7年后,到最终年薪基本上卡死在30万左右。再往后,到到了这个阶段,其实自己可以外接项目了,因为他适合行业特别多,几本啥小东西都能做,所以也还算容易赚钱,基本上一年50万左右,也好还是有可能。
从事嵌入式开发多年,用C语言编程至少十几个年头,到现在也没觉得这门编程语言已经过时了,只是从明面上讲不如以前光鲜,现在JAVA,Python等集成度比较高的编程语言慢慢占据了主流市场显得C语言过时的感觉,现在回到三线城市做个程序员,想开发个嵌入式产品,招聘C语言程序员基本上很难,大部分都是JAVA后端开发或者前端的,最后索性直接自己培养人才。
这肯定不是C语言落伍的标记,C语言现在还是在一些关键职位上发挥着极其重要的作用,涉及操作底层硬件的程序基本上都离不开C语言的影子,现在通讯领域, 嵌入式驱动开发,影响性能的底层模块或者算法结构都离不开C语言,包括现在很多编程语言的底层实战都离不开C语言的影子,只不过现在C语言的门槛提升了可能刚毕业的学生发现学了C语言招收的公司也不多,而且短时间内也达不到公司的要求,于是很多初学者就放弃了C语言作为入门编程语言。
放在十几年前C语言是标准的入门编程语言,很多计算机专业的学生有关编程的第一门课程就是C语言,用的老谭的C语言教材,虽然里面很多人提出了好多瑕疵,但在那个年代能有一本入门的书籍就算不错了,不像现在C语言的书籍太多了,都不知道选择那个入手学习,在那个时代就没有这么多幸福的烦恼,编程语言的入门书籍能有一本就可以,关键是耐住性子看到最后,很多初学者看的时候觉得不行,再换一本学习状态提升不高换再经典的入门书籍也都是做样子,人要想做好一件事情拿出魄力和勇气谁都挡不住,关键还是看学习的勇气。
从编程体系上讲构建上讲,或者有志于成为架构师还是建议从底层的编程语言入手,这样在设计框架的时候能知道底层如何实现的,这样在功能实现上或者性能上会更加合理,很多人觉得学习JAVA精通一样可以做出色的架构师,如果在掌握这些的情况下再去研究下C语言是不是效果会更好,优秀的编程习惯就是不断拓展知识体系的过程,积累多了时间长了就会让自己领悟到更高的层面。
现在还在说着C语言过时的人要么压根不懂编程,要么是刚入行不久还没有对编程有个整体的认识,编程语言本身就是工具,工具无所谓过时不过时只有合适不合适的概念,不一定最先进的编程语言就是最合适的,现在很多企业还在用着VB,VC脚本,后续也不需要很重大的升级,也不需要追踪时髦换成Python等高级编程语言,在适当的场景下选择最合适的编程语言也是一种能力的表现,往往过份关注语言本身反而让自己的格局变得很小,编程的最终目的就是提升生产效率,解决实际问题,解决实际问题的能力才是编程高手的唯一衡量标准。
希望能帮到你。
C是一门最为古老的编程语言之一,但确实最活跃应用最广的语言,没有之一。之所以楼主会觉得C语言岗位很少,是因为现在C语言做的工作稍微底层,但是难度却不小。tiobe每个月都会对世界编程语言进行排名,C语言几乎就没有迭出前三的排名,从中可见其活力是多么旺盛。嵌入式开发几乎都是使用C语言的,C语言能做什么,我在图片上已经说明了其中部分应用。在OSI七层模型中除了物理层都有C语言的身影,大多数人接触的只有应用层,物理层和应用层之间可以说都是C语言干的,应用层有些C语言也干。
作为一名从事嵌入式C语言软件开发的工程师,我个人理解,C语言在50年内都不会过时。
为什么觉得C语言工作越来越少
以前上个世纪末,这个世纪初的时候,还没有移动手机,安卓也没有出来,java也还没有普及。那时候最主要的应用,主要是电脑端的应用程序开发。当时的大型应用软件,主要是C语言和C++,也主要是MFC编程。当时的互联网主要是在PC端,所以对于C语言的应用编程需求很旺盛。但随着智能手机的普及,安卓系统,和java的快速发展,很多的应用软件,主要在手机端实现,渐渐以其他的编程语言进行编写增多,这样PC段的C语言应用程序编程的需求,就渐渐减少了。
C语言需求的现状
其实,市面上的C语言编程工作非常多,只是以前偏重应用软件,目前偏重底层硬件,如嵌入式工程师,linux开发,单片机开发等,都是基于C语言编程的。
其实半导体处理器的底层硬件的构架,寄存器的地址分配,C语言有先天性优势的,因为C语言当中指针和结构体的相关知识和应用,是直接可以与处理器的底层地址相互映射。直接操作底层存储位置的数据。
电子产品深入每个人的生活,大家用的手机,耳机,汽车,医疗器械,工业控制,而这些电子产品,都离不开C语言编程,你可以在相关招聘网站上搜索单片机,嵌入式关键词,就可以知道当前的需求是多么的巨大。
C语言不会过时的理由
大家都知道,目前有主流操作系统,分别是Windows,linux,安卓,IOS,其实这几大操作系统的核心代码,都是基于C语言编程,当前也会嵌套其他的编程语言,但它的执行效率非常高,速度很快。C语言的优势很明显。常年编程语言评选排名前三,经常拿到第一,所以C语言短时间内不会过时。
综上所述
除非哪天半导体的设计发生根本性的革新,有一个执行效率更改,整体更优秀的编程语言出现,操作系统核心代码重写。才有可能渐渐淘汰C语言。否则不会过时。
我是科技电小二,一名嵌入式开发工程师,如果您觉得这篇文章对您有所帮助,那么点个赞,并加个关注吧。
C语言不仅没有过时,而且是唯一不会过时的编程语言。作为一名C/C++一线开发人员,下面谈谈自己的看法。
TIOBE语言排行榜
TIOBE语言言排行榜,目前最权威的一个语言流行度的排行榜,从2020年4月的数据来看,C语言以16.72%的市场占有率占据排行榜第二名,和榜首的Java只差了0.01%,而且有上升趋势,
为什么C语言的工作越来越少?
一个简单的例子,前段时间公司在招聘两个岗位:一个是Web后台开发,一个嵌入式开发(C语言),投送简历的比例差不多是十比一,可见市场上的C语言开发确实人很少了,不过物以稀为贵,无疑这可以要到更高的薪资。
为什么C语言的工作越来越少了呢?我总结了一下几点原因:
需求决定前景,APP开发,Web开发,小程序开发,周期短来钱也快,当然是当今企业优先选择的方向;
C语言的工作很多是OS内核开发,嵌入式开发等,C更偏向于基础设施方向,随着业务系统开发的门槛持续性降低,C职位需求势必将越来越低;
C语言入门难,导致C语言开发者相对较少,企业更难招到合适的人选,考虑到招聘成本,很多企业会在项目初始砍掉C/C++。
为什么C语言不会过时?
Python、PHP等高级语言,底层实现都是C语言,当你遇到一个Bug跟踪到底层实现的时候,看不懂C语法,这将是一个多么悲哀的事情。
C语言在目前的IT领域是基础工具,很难过时,但如果说它一定会过时的话,那么只能等到冯诺依曼体系过时,量子计算机或者生物计算机被大规模使用的时候。
C语言都有哪些应用场景?
嵌入式开发
通信领域开发(某通信业上市公司LTE实现代码为纯C语言开发)
系统层、驱动开发
多媒体开发(ffmpeg是纯 C,webrtc的核心部分(DSP, codec)是纯C的。)
服务端开发
数据库开发(推荐大家学习Redis源码,Github上可以找到一份注释版本的全套代码,对提升自己的C语言内功很有帮助)
总之,所有你需要提高硬件运行效率的地方,选用C语言绝对是没有错的。
本文为作者“一个程序员的奋斗史”石塘网原创文章,未经允许转载、抄袭必究!
没有过时,也不存在过时不过时这一说。
与C语言挂钩的工作没有越来越少,而是其它上层语言工作越来越多了,给你造成了C语言工作越来越少的假象。
之所以感觉C过时了,是因为最近几年互联网发展的太快,尤其是移动互联网。
上层语言
在这种情况下催生了高等语言的普及,比如Java、GO、Python这些面向对象的语言,就连苹果近几年开发的Swift语言也曾进入编程语言排行榜前十。
为什么会出现这样的状况呢?
因为我国当今的科技公司更多的是做互联网方面的,这些工作一般都使用上层语言,因为上层语言开发东西的周期短,做的也快。
这些公司不做硬件,不需要考虑效率、驱动的这些问题,这些公司做的更多的是一个软件,比如今日头条、微信、美团这些软件,这些软件需要大量的人才,对于这些公司,使用面向对象的上层语言最合适不过了。
C语言
目前设计到C语言的主要是做底层开发的,比如说小家电、空调、冰箱,或者Linux的底层驱动,这些使用的C语言比较多,C语言是直接与硬件打交道的。
因为C语言的效率要比上述的上层语言的效率要高,比如说C语言的指针可以直接访问芯片的寄存器,而面向对象的上层语言不可以。
越是底层的语言,效率越高,再往下说、汇编语言的效率比C还要高,但是需要花费更多的人力资源,在芯片满足性能要求的情况下,人们更倾向于C,因为C不仅简单,而且省人力。
那么C语言和更高级别的上层语言的取舍也是这个道理。
之所以感觉C语言挂钩的工作没那么多,是因为底层的电子行业、嵌入式行业需要的人本来就不多,但整体上是比以往要多。
就拿我们手机来说吧,它里面的那几个芯片有多少是C语言编程呢?
但是为这个手机服务的软件有多少呢?几百万个软件!但这些都不是C编程的,所以你会感觉C语言的市场越来越少,其实归根到底是上层语言需求多了,而不是C语言市场少!