本人目前研三,就读于*****学校,本硕同地,回顾自我往昔,再结合散落其他高校同学的学习轨迹,觉得刚学习计算机的同学可能会碰到各种各样的问题和疑惑,所以从今天开始,开始整理自己的学习笔记和心得发于简书,记录自己即将结束的大学生涯
首先,在我们学习任何一门学问之前,得理清一个知识图谱,然后按照上面实事求是,一步步稳扎稳打进行,以下是我的学习路线
1.计算机语言
这个问题是初学者(特别是大一、大二)一定会碰到的疑惑(我以前也是碰到过),据我所知,各高校对于基础语言的教学都不同,c/c++、java、c#是最多的,大家可能还会听过什么python、javascript、php、R等等,计算机语言繁多冗杂,以下是2017年语言排名:
所以,我们是不是就选择排名第一的java入手学习呢?注意,此处的排名只是使用人数的统计,并不代表语言本身的优劣。所以,接下来,我说说对于新手选择语言的建议:
很多语言领域性比较强,个人而言,我们还是从c/c++或者java中选择一个开始入手。语言之间的对比暂且不谈,很多文章书籍针对初学者上来就是各种语言的对比,然而,新手怎会看得懂,徒增疑惑和压力罢了。我以前是从c/c++入手的,以后的学习资料也以此为主。对于计算机语言来说,我们要做的是坚持一条主线,把自己选择的语言学精学深,然后扩展发散,而不是今天这个语言看两眼,明天那个语言看两眼。总有人忽悠你说,计算机语言不重要,重要的是思想。这句话本身没错,但绝不代表你可以粗浅切换(真想拍死当年忽悠我的人)。记住,大部分功能所有语言都可以实现!但你得至少精于一门!(c语言随便找本、c++ primer 、深度探索c++对象模型、effective c++)
2.操作系统
这是一个有点庞杂的知识体系,涉及的内容广且泛,需要多年的经验和总结来体验和感悟,对于这个领域,最终我们要到达一种能调试系统源码的程度,这确实非常复杂,就算是现今工作多年的程序员们很多也是做不到的,这也是区分真正高手和普通高手的一个瓶颈,对于新手,目前还是以看概念为主,以后我会慢慢解析。概念书籍一般高校的上课就可完成,但若是想要深入,还需要额外啃大量很厚的书籍,我推荐《unix环境编程高级编程》,《深入理解LINUX内核》等(ps:就算是很多研究生目前也是做不到的,这是一个长期而艰巨的任务,可贯彻始终),以后我会慢慢更新讲解。很多人缺乏这方面的深入,导致基础不牢。比如我吐槽很多年的一个梗,在你学完这门课之后,别人问你,对于进程线程你有什么理解?书上标准回答:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位. 一个进程可以包含多个线程。好,这确实算是回答了,针对考试也没问题。但只是表象的描述,实质的理解是什么呢?进程在操作系统中到底是怎样的一种存在?(ps:以前学习这的时候我总是很虚,感觉太抽象,直到后来阅读源码,想必大家或多或少也有相同感受)。其实是以task_struct结构体来实现(就是c语言中的一种结构体),展开论述,special offer就是你的(当然,这有些托大,不过如果你回答到了这种程度,确实就证明你比别人的理解深刻,在面试中加分 ),不要局限于课本和考试,要有一种打破砂锅问到底的精神,追根溯源,方成大道。
3.计算机网络
以前我上课的时候老师讲的是谢希仁的《计算机网络》,我觉得这本书就是个类似导论简介一样的东西,多是概念的理解,然后有句话说得好--“纸上得来终觉浅,绝知此事要躬行。”单是理解概念只能应付应付应试教育,记住,我们学习的是计算机,概念映射不到程序,和一条咸鱼有什么区别!此处,我强烈推荐《unix网络编程卷1》、《unix网络编程卷2》,我始终认为,你有没有真正学到网络,在于你闭上眼睛时,能联想到网络间的运行方式,能想到代码怎么写。
4.数据结构和算法
编程之美、剑指offer、牛客网左秋云、牛客网左程云讲解视频等。
针对上述的每本书,我都会慢慢开始详解(当然目前推荐都是基础而已,还有很多很多东西,后续将慢慢展开,期间还会穿插很多小例子来提起学习的激情和动力),暂且写到这吧,以后不定期持续更新,多关注,多点赞~~
网友评论