计算机科学与技术学习路线&编程基础四大件&应用实践编程(含C++学习路线)转载

适合读者:

C++初学者
已经掌握一门编程语言&想提升编程能力的初学者
想学习编程基础四大件(数据结构与算法、计算机网络、操作系统与计算机组成原理、设计模式)以及linux的科班生
C++语法学完之后,就应该学编程基础四大件和应用实践编程
务必记住:编程基础4大件比编程语言本身要重要的多
但是C++语法和编程基础四大件是知识性的东西,想转化为能力必须要经过应用实践编程(基于linux)
至于为什么要学linux,因为企业级应用都是基于linux的啊,没有熟练掌握linux的还是初级程序员(个人浅见,因为我还没有工作,但是这些经验都是有工作经验的过来人说的)。还不明白linux/Unix重要性的可以自行Google百度

0.C++语法学习
网课视频推荐
推荐B站小甲鱼的C++快速入门的教学视频,讲的通俗易懂又有深度(也适合接触过C++的同学补习一遍)

书籍推荐,看书顺序由浅到深

入门级:

第一本 《Essential C++》豆瓣评分9.1 (由c过度到c++,本科学过C++或者看过C++快速入门的视频可以不看)
第二本 《C++ Primer第五版》 豆瓣评分9.4(内容很全,但是不深,适合入门,对于面向对象编程和泛型编程以及STL有初步认识)
登堂级:

第三本 《Effective C++》豆瓣评分9.6(55个最佳实践,优化建议)
第四本 《More Effective C++》 豆瓣评分9.2(35个最佳实践,智能指针,引用技术,类的设计)
第五本 《C++ 标准程序库》 豆瓣评分8.9(STL深入学习)
入土级:

第六本 《深入探索C++对象模型》豆瓣评分9.1(非常难,在有几年项目经验前恐怕很难读懂吧。找工作前可以翻阅一下,面试官可能会问。内容很有深度,关于底层原理,如虚函数有虚函数表,虚函数表内部如何实现)
如果说想偷个懒,快速入门C++,就学

第二本 《C++ Primer第五版》 豆瓣评分9.4(至少学完STL中容器与算法)
最后多一嘴,程序员的能力提升,真的是从自主发挥主观能动性去自学开始的

因为C++设计感很强,STL是其泛型编程的杰出代表作,你学会了C++的基本语法和STL中的容器与算法,不论是以后本科的学习,还是刷oj题,还是进一步的学习,这样的基础就够了。

1.基础四大件
基础四大件包括数据结构和算法、计算机网络,计算机操作系统&计算机组成原理,设计模式
推荐一个学习顺序吧:数据结构,算法,计组,OS,计网,设计模式。

1.1数据结构和算法
基本的概念学习之后要高强度的去刷leetcode的题目

1.1.1数据结构
数据结构我本科学过两遍,加上中间还上了一门叫做算法的专业选修课,体会到了什么叫做“数据结构是服务于算法的”,关于数据结构的重要性,我就不赘述了,直接上推荐

数据结构推荐书籍:

《大话数据结构》C/C++ 豆瓣评分7.9(入门级,通俗易懂)
《数据结构与算法图解》 豆瓣评分9.0 (2019年出的,数据结构是服务于算法的,这本书算是两者结合的入门书)
1.1.2算法
说实话,大二学完数据结构,我很快就忘的差不多了,除了觉得数据结构里面有些东西很艰深晦涩,没有发现这玩意没有什么用——直到我大三学了算法(真香),突然发现数据结构非常有魅力,很多神奇的操作,一些非常有名且巧妙的算法都是基于我们学过的数据结构,不多说了,上推荐吧

算法推荐书籍

《算法图解》 豆瓣评分8.4(算法入门书,简单易懂,但是缺乏代码实现)

《算法》第四版 豆瓣评分9.4(我本科用的就是这本,适合有数据结构基础的同学阅读,特点就是包含代码实现,用的是Java,并且这本书的内容和代码都在作者的网站上非常推荐)

《算法设计与分析基础》豆瓣评分8.7(推荐这本算法书的原因是上一本《算法》只是挑了几个经典的算法作了详细的介绍以及代码实现,而这本书包括了几乎常见的算法,内容比较全,适合进一步入门,其中算法实现采用的是伪代码)

《算法导论(原书第3版)》豆瓣评分9.2(神书,算法的百科全书,很有难度,适合ACM大佬以及相关研究方向的硕博)

找工作推荐书籍

《剑指offer》 豆瓣评分8.9分 (找工作必刷)
剩下的精力去刷题,只有刷题,写具体代码而不是伪代码,才能带来真正的能力提高。这里推荐三个刷题的oj网站——leetcode(题解丰富,讨论中有很多大佬的题解),牛客网(很适合找工作),PAT(浙大研究生复试采用PAT甲级成绩,不用我过多介绍了吧)

1.2操作系统与计算机组成原理
操作系统和计组我合在一起讲,因为这两者有交叉的内容

1.2.1计算机操作系统
估计有很多人像我一样本科或者自学的时候学不懂操作系统吧,或者觉得OS学起来非常空中楼阁。那么如何把操作系统学明白呢?下面这段话是我见过的最好解答

为了理解操作系统,需要学习汇编,推荐书籍

《汇编语言》 (第三版)王爽 豆瓣评分9.2
《x86汇编语言:从实模式到保护模式》李忠 豆瓣评分9.0
OS推荐书籍

《深入理解计算机系统》(原书第3版)豆瓣评分9.8(很多人推荐的一本书,更像是程序员需要了解的计算机知识,包含OS、计组、编译、汇编等,可以多读几遍,读自己想读的部分)
《操作系统设计与实现》(上册) 豆瓣评分9.1(很多人熟知的《现代操作系统》豆瓣评分8.6和这本书是同一作者)
《操作系统概念》 豆瓣评分8.9
1.2.2 计算机组成原理
计组和汇编就比较近了,除了涉及OS中内存管理,硬盘管理,还会涉及计算机架构,CPU原理等等

《计算机组成与设计》 豆瓣评分9.1(只是想粗浅学一下计组扫盲这一本足矣)
《计算机体系结构 》豆瓣评分9.5(计算机体系结构是CS研究生的一个方向,相当于计组进阶,不过这本书内容也是非常舒服的,适合学完计组后进阶学习)
《计算机程序的构造和解释》 豆瓣评分9.5(很多人推荐,听说学习时间100h+,下面是我摘的豆瓣书评)

如果想偷懒,操作系统和计算机组成合起来推荐一本

《深入理解计算机系统》(原书第3版)豆瓣评分9.8(包含OS、计组、编译、汇编等,可以多读几遍,适合想学习OS和计组的同学)
1.3计算机网络与通信原理
TCP/IP协议栈——狭义理解

掌握原理,ARP协议,IP协议,ICMP协议,TCP/UDP协议

DNS协议,HTTP协议和HTTPS协议

推荐书籍

《TCP/IP详解卷一:协议》英文版 豆瓣评分9.2
《计算机网络》第七版 谢希仁 豆瓣评分8.9 中文版书籍中最好的
《计算机网络自顶向下方法》第六版 豆瓣评分8.9 强烈推荐
这里主要学习计算机网络的原理,想学习网络编程的可以看其他书籍。因为在网络方面,学通网络基本原理,再学socket编程之类的,能达到事半功倍的效果。网络编程我只会皮毛,这里我就不推荐了。大家可以自行知乎百度。(或者我以后学了再来填坑?)

1.4设计模式
有没有人和我一样没有听说过设计模式TAT,我大四才听说并且开始重视设计模式
设计模式就是编程范式,就算以后不搞开发,设计模式的学习对于大型项目还是非常有裨益的。

23种设计模式,熟练常见的:单例,工厂,代理,策略模式,模板方法即可

推荐的书籍

《大话设计模式》 豆瓣评分8.3 (简单入门级)
《Head First 设计模式》(中文版) 豆瓣评分9.2 (虽然也是入门级,但是比较全面)
2.应用与编程实践
2.1linux操作系统学习
企业级开发,后端开发(服务端开发)都是在linux上开发的

常见linux操作系统指令
基本的shell编程(shell编程是生产力工具,批处理,自动化脚本)
推荐书籍

《linux鸟哥私房菜》 豆瓣评分9.1 (非常经典的linux入门书)

《linux就该这么学》豆瓣评分5.7 (比鸟哥的书新一点,但是内容可能差一点)

2.2编译和调试工具
2.2.1编译相关的编译工具
win下是vs,用的微软自己MS编译器

linux下是GCC,GCC掌握了其他问题不大

实际项目的编译动作叫make,编译动作过程都是写在makefile文件中

makefile要自己会写,即编译过程是自己去设计,自己去写的

2.2.2调试
企业级开发中的调试和vs中的调试不一样,尤其是C++的后台开发在linux上用的主要是GDB调试工具

推荐资料:
注意下面不是书籍,是文档,网上都有,自行Google百度,我就不附上链接了

英语好的去GNU官方关于GCC和GDB的文档
中文参考文档有《debugging with gdb》中文版
陈皓的《跟我一起写makefile》
2.2.3linux环境编程
linux系统编程

学linux的API的使用
多线程编程实践:线程,资源,信号,同步互斥,锁
网络编程:具体linux系统上网络编程的API,以及一些IO函数的代码编程
推荐书籍

《Unix环境高级编程》豆瓣评分9.5
《linux高性能服务器编程》豆瓣评分7.9
《POSIX多线程程序设计》豆瓣评分7.5
后记
本文共推荐了32本专业书籍和4份学习文档,都是我本科四年来遇到主流的、比较好的资源,有很多书我其实也没有读过,也算是自己的mark页吧,加油!
————————————————

                     转载
  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
计算机科班生通常需要学习以下四个核心领域,也被称为"四大": 1. 计算机组成原理(Computer Architecture):学习计算机硬的基本组成和工作原理,包括中央处理器(CPU)、存储器、输入输出设备等。了解计算机内部的运行机制,包括指令执行、存储器层次结构、总线和I/O管理等。 2. 操作系统(Operating System):学习操作系统的概念、功能和原理。掌握操作系统的管理和调度进程、内存管理、文系统、设备管理等基本知识。了解操作系统如何提供对硬资源的抽象和管理,以及如何协调多个应用程序的执行。 3. 数据结构与算法(Data Structures and Algorithms):学习各种基本的数据结构(如数组、链表、栈、队列、树、图等)和算法(如排序、查找、图算法等)。掌握数据结构和算法的设计思想和实现方法,培养解决问题的能力和编程技巧。 4. 数据库系统(Database Systems):学习数据库的基本概念、结构和操作。了解关系型数据库和非关系型数据库的特点和应用场景。掌握SQL语言的基本使用和数据库设计、优化的基本原则,以及数据库管理系统的原理和技术。 除了这些核心领域,计算机科班生还会学习其他重要的课程,如编程语言、网络通信、软工程、人工智能等,根据个人兴趣和专业方向的不同,还可以选择深入研究相关的领域。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值