一、计算机科学导论(CS50)
对于学习计算机的朋友来说,计算机科学导论是区分科班与非科班的一个重要因素,也就是我们认知的一个广度,知道我们学计算机学的是什么,以及我们学完之后可以做一些什么。那么为什么要在我们学习的开篇伊始来进行计算机导论的学习呢?我记得在我大一上的时候,我们导论课的教授(原先是某校计算机系主任)是这么向我们解释的:先在学习之初认识我们未来四年、甚至是四十年(如果毕业从事相关工作)所要陪伴我们的是什么东西,以及我们未来可以尝试发展的方向,所以这是一门至关重要的课程。
那么关于计算机导论的学习,笔者推荐哈佛大学2019版的CS50,这一套课程算是导论课中知名度比较高,也比较适合初学者尝试的课程。在此附上相关链接:哈佛大学CS50《计算机导论》课程(2019)_哔哩哔哩_bilibili
在这套过程的学习过程中呢,你也将接触到自己学习的第一门语言:C语言,这是大部分初学者接触的第一门语言,功能比较强大,上手难度也比较适中,很适合作为第一门语言来掌握。这个过程中,你不需要去学数据结构,不要过分地追求算法领域的突破,重点在于掌握语言语法,以及搭载环境的能力(能在任何地方让我的代码快速地跑起来、理解代码运行的环境是怎么搭建的)。然后写一些小练习,这些练习并不是指算法题,而是会用命令行cmd来写一些代码(例如比大小、石头剪刀布等)除此之外,你还需要掌握三个重要的工具:Google(如何去接入谷歌、注册谷歌账号)、cmake(本质上是想去学一点GNUmake的东西,就是你会使用命令行去gcc - o,理解编译这个过程,就是程序怎么从你写的字符变成机器可以执行的代码)、以及git(git是一个版本管理工具,对于初学者来说,只需要学一个int、add、commit这三个简单的小命令即可)
二、学一门高级语言(关系之后的开发)
那么什么是高级语言:其实就是我们常说的几种:c++、Java、rod、go、python、R、JavaScript、rust等等.....这个关系我们之后要进行的开发工作,假设你之后想去做一些复杂的服务器端的开发,那么你就可以去学一些c++的东西,学一些rust;那如果想做网安的话,一般去学一下Java、php、Python,如果要玩密码学的话再学c++。
然后我们还可以对这些语言进行简单的分类,就是分成两类,一类是轻、一类是重。例如c++和Java,他们是重的语言,他们偏向于后端;然后go,php,JavaScript,他们是轻的语言,他们偏向于前端。这个你可以根据个人的喜好去选择一门语言,这个选择语言其实没有多重要,只需要选择一门语言然后努力地学好就可以了,对于我们初学来说,最好不要频繁地更换语言,也不可以多个语言并行,把一门语言给学到精深比你一下子学习好几门语言来说是更重要的,所有的语言都是有用的,一切语言都有优点、都有缺点,这和你没有关系,是开发这门语言的人的问题。所以,只要选择一门你喜欢的即可,不要当语言宗教分子!不要当语言宗教分子!!不要当语言宗教分子!!!
这个时候,你就需要使用一些专业的IDE了,比如我写c++,我会使用clion,我写java会使用idea,我写rust会使用rust over,我写go会使用 go long;然后用上一些包管理,例如前面说到的git以及cmake的经验就可以去做一些专业的语言开发了。
这个时候你需要去做一些专门的练习了,这个练习不只是语言的运用,你还要练习算法与数据结构,这才是计算机真正的核心。你可以学完一个算法,然后用这个算法去解决问题,做一些相应的练习,例如leecode、洛谷、牛客。
当你在学习算法与数据结构的时候,你可以去学一些新的东西,这个东西我们称为编程范式,编程范式是什么?他是一种编程思想,是一种工程实践,可以理解为软件工程类似的东西;例如你学习c++会学到斯坦福大学cs106L的东西,这本质就是对高级语言的精通和精深,学习面对对象编程、函数式编程、然后涉及到设计模式与软件工程这两个更偏向于内功的东西。
三、计算机四大件(跟着学校的课程来学习)
OS(操作系统)、SQL(数据库)、Net(计算机网络)、origination(计算机组成原理)这四大件所有的科班学校上课的时候都会上,跟着学校的学习即可。学到这里之后,比如以后要从事网络开发的工作,那么就会真正地去使用我们学过的计算机网络,为我们现在的需求去学习这计算机的四大件。
四、数学
那么关于数学,无非就是学校开设的三门数学科目:微积分、线性代数、概率论;比如你要选择python做数据分析,做深度学习,那么你一定要把线性代数学得好,去提高你的数学水平。
如果你能学好上面的三大部分,那么你的水平已经能够超过99%的大学生了。
五、考研与择业
学完上面这些,我们一般也要面临着考研与择业了。如果是考研的话,就正常根据院校的考试大纲来准备,如果是要进行择业的话,需要去看各个分支的学习,每个分支会有每个分支详细的内容。
你可以直接打开一个招聘软件,看看上面的岗位的招聘要求,根据岗位的的需求再进行学习。
六、权衡好学习与生活
注意休息,一件事一件事地完成,总有一天会成功的。
参考资料: