前言:
今天小伙伴们对“c语言自学从哪里入手”大致比较关心,大家都需要剖析一些“c语言自学从哪里入手”的相关知识。那么小编同时在网络上汇集了一些对于“c语言自学从哪里入手””的相关资讯,希望姐妹们能喜欢,小伙伴们快快来了解一下吧!AI时代,很多小伙伴都想选择一门编程语言学习。但是在网上一查,发现光常用的编程语言就有二、三十种以上,有C语言、C++、Java、Python一下子就迷茫了,不太清楚应该选择哪个了?更具体的,哪个比较实用?哪个比较好就业?哪个容易学?等等。
今天就给各位来逐一分析梳理一下。当然,在一篇文章内,几乎不可能把这么多语言的所有优势、不足之处等特点都说清楚,笔者更多是从实用、通用的项目视角来分析对比的,从工程化的角度以适用为原则,从个人职业发展的角度以实用为原则。
在很多次的团队建设及赋能工作中,一直在直接参与开发人员的招聘面试,包括后端开发、前端开发、测试人员、全栈技术骨干、IT项目经理甚至UI、需求分析人员、实施工程师等岗位,前后总共接触的应聘IT人员应该千人以上了。另外笔者也参与了各种软件开发相关培训的授课,包括程序语言、算法、数据结构、架构、运维甚至中小学生的信奥赛培训等。
很多来应聘的大学生,其正常毕业后,从是否合格的或者说是否是有潜力的IT技术人员这个角度评价,可以说,真的是数量不多,尤其是非985院校毕业的学生(群体分析数据,不针对任何个人)。这其中我了解到,不少是因为学校课程设置或者自己对课程重视度排序出现偏差导致的,虽然很多人在开发方面兴趣度挺高,总希望自己工作后通过所谓的“锻炼”成长为开发高手,但其职业能力提升方面却耽误得比较厉害,很多人“成长潜力”在毕业后两三年就已经没有了,挺可惜!究其原因,很大比例是因为:在学校打下的知识结构基础不合理。
若大学生想要毕业后在软件开发方面短期和长期发展都比较顺畅,获得好的职业规划和效果,个人认为在语言方面最好能如下述这样学习和积累。下边所列每一项的序号值,除“15”之外,越小越需要早学,越小越需要在学校就学好,越小越基础,越小越没机会在工作中去“锻炼”(好好琢磨下内在的、残酷的社会就业逻辑吧)。所以,大致学习步骤就是,从1到14,穿插0和15。
这里挨个来梳理:
0.对计算机学科的兴趣。你天生爱计算机学科,超级最好;你天生喜欢计算机学科,最好;你认定通过计算机专业可以实现你的梦想,所以想喜欢并学习计算机学科,更好;如果不是这三种情况,你在大一期间可以尝试喜欢上计算机,再如果最后还是不喜欢,建议转专业或者想别的迂回办法(这个行业不光需要技术,还需要销售、被楔入进来的其它行业等的人才),否则请小心:别在这个领域荒废了自己的好时光。
1.C语言。C语言是计算机所有语言中综合性方面,最基础、最经典、最对学习其它语言有帮助、使用和解决问题方面最广泛实用、沟通和查资料最高效、作为工具使用收缩进退最自如的语言。所以,C语言学习过程没有第一轮第二轮之说,要一步学到位、学精。验证已“学精”的前提,其中一个必要但不是唯一充分的标志是:考试要基本都是满分,即便99、98了,那也是因为小失误。
我在面试应届或者刚毕业1、2年的应聘者时,如果他在学校的课程设置里有C语言,就一定会问他的C语言考试分数,如果高于95,就知道,这个求职者的技能基本正道;如果低于80,基本就不给机会复试了,当然,一般来说,面试交流中得到的其它信息也都佐证了这个判断。
至于更基础的汇编语言,它仅仅基础,从应用和生产效率方面来讲,没有其它优势。汇编语言按学校课程安排去学就行,自学大致了解就行,一般没必要熟记那些指令,真要项目中用到了,有了计算机其它科目的基础,学习成本也不高。
与C语言类似的,Fortran和Pascal语言也可以作为入门基础语言去学习,在一定程度上能起到类似C语言的基础效果,但因为流行性、系统底层调用偏离的不平衡性等原因,还是C语言最优且优势明显。
2.C++(第一轮)。很多基础软件开发要用到C++,很多对运行效率有高要求的软件开发要用到C++,比方说物联网应用软件,比方说运行环境特殊的应用软件,比方说复杂的算法,等等。
有了C语言的基础,学习C++,重点在指针、适度面向对象等方面突破,也就不难了。
这里针对参加信奥比赛的中小学生这种情况说一下,现在参加信奥赛都要求用C++,但其实信奥赛大纲里对C++的要求基本上是以C语言范围的内容为基础和为主,至于C++在C语言基础上的扩展,在信奥赛中用的不多。所以,中小学生参加信奥赛,首先要把C语言学扎实了,然后对照大纲,适当再补充一些C++扩展部分的知识即可,中学阶段没必要也很难把C++的所有高级特性彻底学通了。
3.JAVA(第一轮)。很多多角色场景、规模化场景下的软件开发要用到JAVA,比方说管理软件和管理平台、比方说电商平台、比方说电子政务、比方说分布式应用,等等。
有了C语言的基础,学习JAVA,重点在JAVA的范式封装特性、隔离特性、绝对面向对象(当然了,语言当中的面向对象这个玩意儿,学和用是两回事)等方面突破,也就不难了。
4.SQL。现在的软件几乎都要求有记忆,所以都要求和数据库打交道,很多情况下你没必要、项目上也不会让你自己写数据存储文件,所以SQL语言学习是必要的。
有了C语言的基础,你再学习了数据库设计原理(在学校要先从关系型数据库开始)以后,SQL语言学起来也就不难了。本质上讲,SQL的增、删、改、查对应于C语言中文件操作的write、read。
5.C/S、B/S、MVC、MVVM(等)。这些和软件开发相关的概念,一切因网络而起,因资源高复用的经济原则而起。“(等)”前面的都需要在学校就理解透了,“(等)”中的类似内容碰到问题去学习、了解就行,但一定要究其本质。
6.HTML5、CSS、Javascript。这几项中的前两者,较真来说,本质上不是计算机软件编程语言,应该称其为标记语言(H5、CSS3),而JS是脚本语言。
有了C语言的基础(是吃过猪肉的基础,而不是看过猪跑的基础),学习这三门“语言”,一共绝对不超过1个月,都能学得考试及格,当然考试分数越高越好。什么?1个月不够?学校的时间难道不是大把吗?除了谈情说爱会比较耗费时间,还有啥啊!
7.XML。不说为什么了,反正必须学精。如果是按步骤走到这个第7步的,那学精需要0.n~1天时间。本质上,XML不是编程语言,是定义描述语言。
8.设计模式(第一轮)。有了C++/JAVA的基础,尤其是JAVA的基础,设计模式也就不难了。设计模式要不要学精,就跟领军打仗的人要不要学习《孙子兵法》一样,你要是天才,不学也可以,你要是天才,学它也就两三天的事情,所以,还是要学。内容嘛,就学经典的23个模式就行,更多的设计模式学习基本就是形式主义本末倒置了,当然你为了写论文而防止万恶的查重机制,去折腾犄角旮旯的信息点(我不认为是知识点),那是又一回事了。
如果可以,最好用C++去走例子,否则跟JAVA的包装特性混到一起影响知识理解的条理性,当然这个不是很重要。
9.Python、Dart、Gradle等类Java语言。有了C语言、C++、JAVA的基础,再去学习Python、Gradle、Dart、PHP、R等,其难度就跟学习完了黑白胶片手动相机、单反专业相机后,又去学习新款手机的拍照功能一样,就这么简单,所以,如果是按步骤走到这个第9步的,那学精Python需要1~3天时间。
至于挂着少儿编程名义的很多图形类编程语言,其实较真说就是一些组件化的DML工具,大学生根据具体项目情况用时再学习即可。或者是家长和培训机构为了直观的激发孩子的逻辑思维用用就行,不建议中学生以上年龄的孩子扎进去学习。
10.JSON、变量和函数命名规则、注解逻辑(等)。学完以后,达到的效果就是,你充分理解了约定俗成的价值,充分理解了复用的价值。你还要充分理解,在软件行业里,省心(少掉头发)优于省力(不减重,可能也不伤肝)。
11.Node.js、Vue.js(等)。根据自己就业的现实情况,适当的学吧(学精还是撸皮毛,自己看,大四之前别去学,除非你们导师有项目需要,可以给你分点补助)。反正我觉得,这几个语言的发明,更多的价值在于解决和平衡当前的大学生就业结构的社会价值。
12.脚本语言(包括总结)。比如C Shell等,比如批处理语言,比如PLC电路逻辑语言,比如大数据、AI、代码工程等方面的一些脚本语言等。这些脚本语言大都可以触类旁通,用到哪个学哪个就行,基本上每一门学精大概需要1~3天时间,有个别牵扯到熟悉库的,多1~3天时间。
13.设计模式(第二轮)。碰到和解决很多问题并总结后,再系统学习一遍,查漏补缺,结合工作需要学。虽然不是必学,但只要你不改行,一般躲不掉。
14.C++、JAVA(第二轮)。碰到和解决很多问题并总结后,再系统学习一遍,查漏补缺,结合工作需要学。虽然不是必学,但只要你不改行,一般躲不掉。
15.学校课程要求的语言,用时才接触到的语言。这第15步的内容,它要是出现在第3步之后,基本都不是事儿。
所以,我的建议里边,哪是重点,你看呢?
以上内容中涉及到学习时间估算的,都不考虑语言工具和环境的安装部署和熟悉,这个没法估,他工具软件来个Bug和不常见的环境适配问题,可能好几天就出去了。
学习顺序很重要!当然了,这里列出的仅是语言线的学习顺序供参考,还要结合计算机科学里的其它科目来统筹安排,比方说数理逻辑、图论等数理基础,比方说计算机原理,比方说数据库原理、软件工程等。
祝IT之路上的发展前途无量!
标签: #c语言自学从哪里入手