c语言开发
看招聘职位要C语言的比例真不多了,是不是C语言真的过时了?
看看很多招聘网站有关找纯粹的C语言开发的比例真的不是很多,都被java,php,Python等等语言刷屏。这对于初学正在学习C语言的小白简直就是惊天霹雳,学了没人要,学了还有啥意义。如果单从快速找工作的角度考虑这件事的确,这个观点是能站得住脚的。
前几天和一位老码农聊天,开篇就来了这么几句,换开发语言算了,现在的做底层的日子不比以前了,看看那些做APP的,做不了几年工资蹭蹭就上去了,我们这熬了这么多年才这么点。
难道C语言真的过时了?
现在先看看C语言到底能做了多少事情,大家经常说的linux操作系统的内核都是C语言写的,对应的很多嵌入式内核驱动也跑不出C语言范畴,包括大家常用的手机,机顶盒,电视机底层硬件驱动基本山都是C语言完成,还有常见基于单片机的程序也主要由C语言完成。大致概括来说嵌入式领域C语言还是无处不在,很多底层的图形库也是基于C语言完成。
当然C语言最牛的地方,几乎现在所有的上层语言的底层语言绝大部分都是C语言大哥做嫁衣给铺垫完成。深刻理解上层语言底层实现,离不开C语言。
linux内核社区火热程度,依然有增无减,记得有个对内核研究很透彻的哥们,说了句话“我觉得能看懂内核里面的代码就是最大的幸福了,更不要说修改里面的代码“(当然这话说的主要是内核框架层次的,不是外围设备扩展方面)
一方面说C语言的工作机会少了,待遇不行了,一方面C语言还是渗透在各个领域,这中间到底发生了什么事情?
一.基于C语言实现底层架构,就目前来说已经相对比较成熟,对于底层的修改需求已经存在很多基础的版本,修改起来相对比较轻松,维护的工作相对多,技术要求降低。真正的框架修改还是需要C语言超级高手来做(这方面高手待遇目前依然居高不下)
二.应用层语言的蓬勃发展,技术更新的速度越来越快,用上层的语言很快就能实现比较漂亮的界面,就没必要用C语言一点一线去操刀。专业的人做专业的事情,分工更加明细,界面层次的东西,上层语言实现起来更加得心应手。
关于怎么快速学C/C++,可以加下小编的C/C++学习群:341+636+727,不管你是小白还是大牛,小编我都欢迎,不定期分享干货,欢迎初学和进阶中的小伙伴。
每天晚上20:00都会开直播给大家分享C/C++游戏编程学习知识和路线方法,群里会不定期更新最新的教程和学习方法,最后祝所有程序员都能够走上人生巅峰,让代码将梦想照进现实
三.应用层面的编程,比之前火热许多。特别是一些App级别的开发,至少从表面上看没有C语言啥事情了,所以现在很多入门的小白直接选择java或者php之类的语言,没有C基础一样做的很棒,这是社会分工细化的结果,没有哪种语言会一直长盛不衰,技术在不断更新中。
如何正确看待C语言?
学好了,还是能找到工作的,毕竟社会招聘的岗位总量还是很多。相对比例偏少而已,因为整体公司的数量比之前也是多了许多。
想让自己有个长远的发展,比如架构师层面,C语言几乎还是必修课,不了解底层的实现谈何架构整个系统,谈何做出通用化的框架。从语言角度考虑学会了C语言切入到其他编程语言,学习速度会加快不少,还是值得去学。
那么c语言怎么去学?
什么人才能学好?为什么学到一半就早早缴械投降了?众多迷雾,众多的困难,怎么破局?
很多对编程感兴趣的小伙伴,找个所谓的高手,问了几个编程入门需要的书,也是拼了,呼呼的买了一堆C语言,C++,java等等,本着多多益善的原理,然后从C开始看,最初几天看的热火朝天,把如何编译C代码,如何打印基本的字符串看的很是仔细,随着难度的增加,越来越觉得吃力,有点寸步难行的赶脚,怎么办啊,网上找点资料看看,看的似懂非懂。然后再坚持看了几节,迷糊的越来越厉害,这个时候开始怀疑自己的学习方法或者书买错了,开始自我否定,在网上搜搜觉得C语言是不是太难了,很多是从java开始学的。于是先放弃C开始主攻java,开始学习java,最初几章明显学的比C语言快点,毕竟有点基础了,结果一遇到思维意识形态之外的又开始迷糊,又掉到学习C语言时候的困顿中,于是自我否定。编程太难,不是每个人都能学会的,彻底放弃。
这是小白常见的放弃之路的复盘,有这种类似情况的,或者有类似经历的对位思考下。
那么如何破掉这些困局?
一. 怀揣极大兴趣
客观评价写代码是一件,很枯燥乏味的脑力劳动,需要极大的驱动力,一般驱动人去做一件事,兴趣是其一,强大的精神力其二。兴趣是第一老师,有了兴趣就可以克服一些困难,遇到问题或者需要攻坚的时候能够挺得住。编程相对来说知识点很分散,难易程度不统一,细节极多,持续不断的克服问题,需要有一定的精神力。
二.适宜的学习方法
编程学习存在一定的技巧性,原则上先要把一门语言入门之后再切入到别的语言,语言本身极具灵活性,学好一样平移到另外层次是切实可行。入门一种语言基本上意味着熟悉了一种语言的特性。切忌一种还没学好就中间换来换去,这是以牺牲自身兴趣点为代价的。
选择一本合适的入门书籍,建议选择老外的,c primer plus 以及c程序设计语言都是很经典的入门书籍,很多人都提到了用视频学习,零基础前几节的学习可以采用视频入门的方式,有了感觉建议还是回归到书本上。在书本上遇到难点,可以找对应的视频去学习。明白了理解了再回归书本,为啥建议采用书本,从效率上讲书本的学习速度远快于视频,还有些人提到了书本上的东西看的头发麻,如果真是这种状态,需要靠视频才能激发自己学习的动力,那么可以问下自己,是不是进入学习状态了。
无论觉得多难,还是要尝试建立自己的知识体系,对于初学者来说这可能是一个极大的挑战,编程就是一个思维认知过程,认知清楚了框架也就清晰了,那么尝试着勾勒知识框架也是加速引导思维认知的一种途径。
三, 不要钻过多的牛角尖
很多初学在学习C语言时候,开始恨不得把内存的工作原理以及printf底层实现挖个底朝天,这些从长远看都需要做,但是作为入门级别的,还是绕开,先做到会用,然后理解到了一定层次再去深入理解,很多初学者开始学的特别痛苦,觉得自己什么都不会,什么都搞不懂,但什么都还想搞明白。不否认有一次性搞定的天才,但大多数人还是凡人,还是需要先理解表面的含义,再去深挖底层含义。
四 坚强的毅力
编程百分九十以上的东西,都需要自学,自学依赖很强的毅力。说的通俗点就是坚持。面对如此枯燥无味的代码,需要保持长时间的专注度和忍耐力。没点骨气,做不到。浅尝辄止基本上做任何事情都是失败者。
以上四点不是,任何一点做不到都能成为放弃学习的理由,都是一个从开始学习到放弃的经典案例。真要想学好C语言,不兼具点拼搏因子基本上和入门渐行渐远。
如何去选择C语言的学习资料?
学习语言的开始一般是阅读参考书。我建议选择几本非常经典的好书,仔细完整反复阅读几遍,“书读百遍其义自现”。选择c语言学习的好处是,这几本书基本上完整涵盖了C语言编程领域的方方面面,不会像C++那样,即使读完一堆书还是有些糊涂,依然有这样那样难懂的陷阱。
1,参考书籍
在豆瓣上列了一个书单,大家可以直接参考http://book.douban.com/doulist/636329/
在下面简单点评一下,阅读顺序最好参照列出的顺序。
《The C Programming Language》http://book.douban.com/subject/1230004/
如果你只想买一本书学习C语言,只需要买这一本就够了。如果你经费足够,建议你多买几本,办公室、家里都放上一本,随手都可以翻翻。用三个词语来形容它就是:经典!经典!经典!这本薄薄的只有二百多页的小书涵盖了C语言的方方面面,前无古人而且后无来者,任何溢美之词都不足以形容它。
《The C ProgrammingLanguage》(后面称为 K&R)里面包含了一个简单的语法解析器,包含了malloc如何实现,包含了一个完整的操作系统目录浏览程序,这些程序的实用性极高,可以这样说,如果学习任何一门语言能够自己独立动手实现以上的功能,基本上就可以算是入门了。K&R书里面每段都蕴含着非常值得探究的软件开发工程实践经验,如果没有一定的开发经验,其实是看不出来这些冰山下面的内容的,比如开头一章就提出用写完整代码这种方式来教学,而在书中那些C语言的陷阱或者可能出问题的地方,都有提到,但是由于篇幅所限,写的非常简约,很难让人一下就看懂。我正在完整的逐字逐句的阅读此书,希望能稍作注解,写几篇博客分享一下。
《c程序设计语言(第2版·新版)》http://book.douban.com/subject/1139336/
这是K&R的中文译本,可以先从中文译本看起,然后再读一遍英文原版,既可以学习英文,又可以体会原文那种简约优美的风格。
《C陷阱与缺陷》http://book.douban.com/subject/2778632/
《C专家编程》http://book.douban.com/subject/2377310/
这两本书也是学习及使用C语言的朋友必备的两本书,比如《C专家编程》,专门用两三个章节详细介绍C语言中数组与指针的不同之处,这两本书在某种程度上算是对K&R略过的地方做了详细补充,强烈推荐。
《C语言参考手册》http://book.douban.com/subject/2132084/
这是最后一本强烈推荐你最好买回家作为案头书必备的参考书。前面几本书或者稍显简略,或者专注某个特定专题,都不适合遇到问题时翻查。这本《C语言参考手册》可以看作是C语言编程的《新华字典》,全面而权威。里面还涵盖了C99的内容,紧跟时代潮流。
下面几本书都可以作为交叉参考,也都很有价值,也是建议大家都买下来,好书如朋友,日久弥新,像是我推荐的这几本书在douban或者amazon上评分都非常高,而且反复再版。
《C和指针》http://book.douban.com/subject/1229973/
指针的重要性如何,学过C语言(或者C++)的朋友都知道,这本书更是把指针拔高到了与C语言平起平坐的地位,其实也是从头开始介绍,作为教学参考书也是可以的。
《C标准库》http://book.douban.com/subject/3775842/
这本书是专门介绍C语言的标准库如何实现的,比如malloc算法,用标准的C语言该如何写?strlen这个函数应该如何实现?尽管书中不少代码与真实的C标准库相差很多(由于标准库需要考虑性能优化,很多函数有一些特定的trick),但是绝对值得参考。
《你必须知道的495个C语言问题》 http://book.douban.com/subject/3422332/
这本书其实就是C-FAQ的印刷版本,C-FAQ在各种编程语言的FAQ中可以称得上质量一流。如果你想应聘或者招聘C语言相关程序员,这本书一定要参考。
《linux c编程一站式学习》http://book.douban.com/subject/4141733/
这本书是基于特定操作系统Linux来介绍C语言编程,可作为计算机相关专业的教科书或入门参考书,也是书单里面唯一一本国人原创的编程书籍,非常难得。书中几乎所有内容都在网上直接公开,针对读者的意见进行修改,这也是非常难得的一种开放态度。非常推荐大家买一本。
相关阅读
动态性网页页面的开发环境依据开发设计视频语音不一样而不一样,关键的方法取决于Python开发设计、JSP开发设计和ASP开发设计的
网站开发应该注意的事项。大多数人可能会觉得做网站很难,其实它并不是一个难题,只要你把一个网站开发的基本流程弄明白了,你就会
网站开发手机端一起多少钱?之前很多网站建立时候只是考虑PC端也就是电脑端,没有考虑用户在手机上浏览网站的效果。那么,电脑站在手
对于许多企业来说,他们的的目光不仅仅局限于国内市场。相应,这些企业所需要的网站就不单是中文界面了。那大家知道对于多语言需要的
一款成功的APP开发产品,产品的定位是极其重要的,产品定位决定了接下来围绕产品的一系列工作:如何确定产品工作的优先级?需要围绕产品