C语言,能开发什么?怎么去学习?

简介: C语言,能开发什么?怎么去学习?

看招聘职位要C语言的比例真不多了,是不是C语言真的过时了?

看看很多招聘网站有关找纯粹的C语言开发的比例真的不是很多,都被Java,php,python等等语言刷屏。这对于初学正在学习C语言的小白简直就是惊天霹雳,学了没人要,学了还有啥意义。如果单从快速找工作的角度考虑这件事的确,这个观点是能站得住脚的。

1240


前几天和一位老码农聊天,开篇就来了这么几句,换开发语言算了,现在的做底层的日子不比以前了,看看那些做App的,做不了几年工资蹭蹭就上去了,我们这熬了这么多年才这么点。

难道C语言真的过时了?

现在先看看C语言到底能做了多少事情,大家经常说的linux操作系统的内核都是C语言写的,对应的很多嵌入式内核驱动也跑不出C语言范畴,包括大家常用的手机,机顶盒,电视机底层硬件驱动基本山都是C语言完成,还有常见基于单片机的程序也主要由C语言完成。大致概括来说嵌入式领域C语言还是无处不在,很多底层的图形库也是基于C语言完成。

当然C语言最牛的地方,几乎现在所有的上层语言的底层语言绝大部分都是C语言大哥做嫁衣给铺垫完成。深刻理解上层语言底层实现,离不开C语言。

linux内核社区火热程度,依然有增无减,记得有个对内核研究很透彻的哥们,说了句话“我觉得能看懂内核里面的代码就是最大的幸福了,更不要说修改里面的代码“(当然这话说的主要是内核框架层次的,不是外围设备扩展方面)

1240


一方面说C语言的工作机会少了,待遇不行了,一方面C语言还是渗透在各个领域,这中间到底发生了什么事情?

一.基于C语言实现底层架构,就目前来说已经相对比较成熟,对于底层的修改需求已经存在很多基础的版本,修改起来相对比较轻松,维护的工作相对多,技术要求降低。真正的框架修改还是需要C语言超级高手来做(这方面高手待遇目前依然居高不下)

二.应用层语言的蓬勃发展,技术更新的速度越来越快,用上层的语言很快就能实现比较漂亮的界面,就没必要用C语言一点一线去操刀。专业的人做专业的事情,分工更加明细,界面层次的东西,上层语言实现起来更加得心应手。

1240


三.应用层面的编程,比之前火热许多。特别是一些App级别的开发,至少从表面上看没有C语言啥事情了,所以现在很多入门的小白直接选择java或者php之类的语言,没有C基础一样做的很棒,这是社会分工细化的结果,没有哪种语言会一直长盛不衰,技术在不断更新中。

如何正确看待C语言?

学好了,还是能找到工作的,毕竟社会招聘的岗位总量还是很多。相对比例偏少而已,因为整体公司的数量比之前也是多了许多。

想让自己有个长远的发展,比如架构师层面,C语言几乎还是必修课,不了解底层的实现谈何架构整个系统,谈何做出通用化的框架。从语言角度考虑学会了C语言切入到其他编程语言,学习速度会加快不少,还是值得去学。

1240


那么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月前
|
自然语言处理 中间件 编译器
C语言的编译器和中间件开发
C语言的编译器和中间件开发
|
1月前
|
存储 编译器 C语言
初识C语言——详细入门(系统性学习day4)
初识C语言——详细入门(系统性学习day4)
|
1月前
|
编译器 程序员 开发工具
c语言从入门到实战——在系统学习C语言之前所需要了解的知识
C语言是一种通用的、过程式的计算机编程语言,支持结构化编程、词汇变量作用域和递归等功能,其设计提供了低级别的存取权限,并且要求程序员管理所有的内存细节。C语言的基本构成包括数据类型(如整型、浮点型、字符型等)、运算符(如算术运算符、关系运算符、逻辑运算符等)、控制结构(如顺序结构、选择结构、循环结构等)以及函数等。此外,C语言还提供了指针的概念,这是其他许多编程语言所不具备的。指针是一个变量,其值为另一个变量的地址,通过指针可以间接访问和操作内存中的数据。C语言也支持数组、结构体、联合体等复合数据类型,以及文件操作、动态内存分配等高级功能。
51 0
|
1月前
|
存储 C语言
通俗易懂的学习C语言中输入一组数并找出其最大值
通俗易懂的学习C语言中输入一组数并找出其最大值
|
4月前
|
程序员 编译器 人机交互
深入学习《c语言函数》
深入学习《c语言函数》
43 0
|
4月前
|
编译器 C语言
你的函数使用对了吗?-------C语言函数学习(3)详解
你的函数使用对了吗?-------C语言函数学习(3)详解
50 1
|
4月前
|
算法 C语言
你会使用函数的递归和迭代吗?----------C语言函数学习(4)详解
你会使用函数的递归和迭代吗?----------C语言函数学习(4)详解
76 1
|
1月前
|
机器学习/深度学习 人工智能 Java
学习Python语言好还是C语言好
学习Python语言好还是C语言好
21 0
|
1月前
|
C语言
###51单片机学习-----如何通过C语言运用延时函数设计LED流水灯
###51单片机学习-----如何通过C语言运用延时函数设计LED流水灯
72 0
|
1月前
|
C语言
二次学习C语言补缺(day1)
二次学习C语言补缺(day1)
17 2