深入计算机,理清方向
最近学弟找我聊了一些学校工作室的情况时,想让推荐下书单和练手项目,所以写下了这一篇文章。下面的介绍基本是我在大学期间的学习经历和写的项目,下面列举的书籍也都阅读过。
起点
- 翁凯老师的 C 语言视频、实验做完。
- 实验楼的Linux操作,选择几个(工作室负责人负责选择好放进来),结合《鸟哥的 Linux 私房菜》去学习,此书一定要看完,实际动手敲击书内讲解的命令、试验操作。
- 当做完实验楼试验、《鸟哥的 Linux 私房菜》也操作完后,此时你已可以在 Linux 上办公学习了。
- 现在你再把翁凯老师的 C 语言各个实验在 Linux 下完成完。
- 学习使用虚拟机,装Linux、Windows系统,学习给自己电脑装系统。
- 之后我会写一篇博客专门说下装系统、与镜像选择下载注意事项等。
- 现在你已经可以尽情的在你电脑上操作各种东西,再也不怕搞坏系统了。
顺序书单:基础学习、中期扩展、项目外延
上面的试验和内容学习后,就有能力去开始去学习了!
一. 基础学习,学习环境都是Linux
- 基础学习书单(试验环境都为Linux)
- 《Linux程序设计》Beginning Linux Programming,陈健、宋健建 译
- 《Linux命令行与shell脚本编程大全 第3版》 Richard Blum , Christine Bresnahan (作者),门佳 , 武海峰 译
- 《c primer plus》(可以在第二阶段时结合做)
二. 中期扩展
学习感兴趣的语言、数据结构,多看计算机体系的书籍,增加自己对计算机的认识(操作系统、计算机网络、计算机组成原理),学习环境都是linux
- 中期学习,扩展计算机理论,了解计算机体系结构脉络
- 《数据结构》(这个在基础阶段,你应该在《c primer plus》已学过)
- 《深入理解计算机系统》
- 《现代操作系统》(学校的课本就可以)
- 《计算机组成原理》(学校课本就可以)
- 《计算机网络》、协议等(学校课本就可以)
- 《装载、链接和库》
- 注册一个github账号,熟悉git操作,对中间学习,和后面的项目学习很有必要
- 语言学习:学习环境都是Linux
- C:《C和指针》、《C缺陷和陷阱》、《C专家编程》、《unix/linux编程实践教程》、《Linux C程序设计基础》、《Unix 环境高级编程》,《Linux内核完全剖析》张炯、《Linux内核设计的艺术》新设计团队、《深入理解Linux内核》第三版,看汇编、计算机组成原路、然后走上去研究Linux内核之路。
- C++:《c++ primer 中文版》,学习后再看《stl库》,想做图形界面的话可以再学习Qt,Qt是跨平台的语言(Linux、苹果、Windows、安卓、嵌入式)。《Qt Creator快速入门》、《Qt Creator实战精练》这两本书都是霍亚飞著的。
- python:python可以做很多的事情,毕竟库特别多。《python基础教程》,《python核心编程》、想继续玩python的可以再去研究下python的数据结构与算法,可以做一些小东西。《python写网络爬虫》、《python 自动化》。
三. 项目外延
去了解各平台架构的各个发行版、看他们如何维护,搞清楚构建编译链的细节、交叉编译链的细节,能够解决看到的编译错误,去定位问题;先了解0.11 kernel的代码,然后去看高版本的内核代码,专心一个方向,去订阅邮件列表,去看其他人的patch。
* 去做系统相关:[修改系统、定制系统项目](https://github.com/lina-not-linus/loongson_os_customized)、[自己做 Linux 系统项目](https://github.com/lina-not-linus/LFS-BOOK-loongson)、
* 去做内核相关:[内核考古队项目](https://github.com/tinyclub/lad-book/blob/master/zh-cn/plan.md)