Linux C编程一站式学习 part1: C语言入门
Linux C编程一站式学习 (akaedu.github.io)
[鸟哥的 Linux 私房菜 (基础篇)]
(http://cn.linux.vbird.org/linux_basic/linux_basic.php)
[ThinkCpp] How To Think Like A Computer Scientist: Learning with C++. Allen B. Downey.
How to Think Like a Computer Scientist:Learning with Python 3 (openbookproject.net) [en version](https://www.openbookproject.net/thinkcs/python/english3e/)
How to Think Like a Computer Scientist: Learning with Python 3 Documentation (readthedocs.org)[pdf version](https://readthedocs.org/projects/howtothink/downloads/pdf/latest/)
2024-1-30
key insight & learning method
系统地总结当前小节的知识,结合以前的知识,并经过一定的推理后作答。
掌握以概念为中心的阅读思考习惯,每读一节就总结一套概念之间的关系图画在书上空白处。抓住概念的定义和概念之间的关系。
理解一个概念不是把定义背下来就行了,一定要理解它的外延和内涵。
什么情况属于这个概念,什么情况不属于这个概念,什么情况虽然属于这个概念但一般推荐的做法(Best Practice),这才算是真正理解了。
1. 程序的基本概念
- 解释执行的语言相比编译执行的语言有什么优缺点?
程序由语句或指令组成,计算机只能执行低级语言中的指令(汇编语言的指令要先转成机器码才能执行)。
高级语言要执行就必须先翻译成低级语言,翻译的方法有两种:编译和解释。
高级语言有一个好处是平台无关性。平台:体系结构、指令集、机器语言。
解释执行是一条一条执行,可以马上出结果,不需要编译出包含机器指令的可执行文件(优点),但运行速度较慢(缺点)。 - 程序的调试
调试的过程可能会让你感到一些沮丧,但调试也是编程中最需要动脑的、最有挑战和乐趣的部分。
从某种角度看调试就像侦探工作,根据掌握的线索来推断是什么原因和过程导致了你所看到的结果。
调试也像是一门实验科学,每次想到哪里可能有错,就修改程序然后再试一次。
如果假设是对的,就能得到预期的正确结果,就可以接着调试下一个Bug,一步一步逼近正确的程序;
如果假设错误,只好另外再找思路再做假设。
“当你把不可能的全部剔除,剩下的——即使看起来再怎么不可能——就一定是事实。”
2. 常量、变量和表达式
3. 简单函数
4. 分支语句
5. 深入理解函数
6. 循环语句
7. 结构体
8. 数组
9. 编码风格
Linux kernel coding style — The Linux Kernel documentation
写注释主要是为了说明你的代码“能做什么”(比如函数接口定义),而不是为了说明“怎样做”。