删除一段代码,跟谋杀一个人,有什么区别......!?阅读源码,寻找真相...
Premature optimization is the root of all evil ---- Donald Knuth
Work --> Right --> Fast...软件工程不仅仅适合大型多人项目,小型单人项目也需要用精心安排的steps来提高质量和效率。
灵魂拷问:What is Type?
- CPU指令层面的类型,主要就是指令operand的字节长度。
- C/C++代码中有各种类型,基础类型可与CPU指令类型对应,抽象类型可以是一块有特定含义的内存,或是数据和操作的集合。C/C++代码编译后,代码编译成CPU指令,类型消失,即运行时的无类型。
- Python变量没有类型,它们都只是对象的ref,但对象有类型!
- Declare时,只要有一点不同,就是不同Type。就像听装可乐和塑料瓶装可乐,都是可乐,但确是不同的Type。同样volumn的听装可乐,外观形状完全一样,但coca和pepsi就是不同的Type。
- function也有类型,返回值类型和参数列表类型的组合,如果是class method,还要带上class name。
- 类型既是功能的体现,也是某种程度的安全保证。
- 理解expression与statement的区别,前者evaluate后,是一个有类型的值。
- 狂野的C++中,类型可以被模板化,还可以包含编译期的constexpr,这让类型有了metaprogramming的能力。
编译器为什么要将指令(.text)和数据(.data&.bss&.rodata)分开存放?
- 不同的section加载到内存后,可以设置不同的权限(按page),更安全;
- 节约内存,当存在多个相同image的进程时,只读区域(.text&.rodata)可以共享。
- 方便disassembling(手工编写的汇编,很容易实现不分开的效果)。
-- 目录[6] --
-- 文章[15] --