words-of-a-master-programmer
## 模块、进程、线程的区别
模块是 EXE, DLL 在文件映射到内存中的结构,这个模块就叫做结构。因为在文件里面很多的空余的空间都省去了,当系统把执行文件搬到内存里面去的时候,把执行文件展开了,所以,它在内存中的位置就是一个模块。
线程是给模块分配一个堆栈,就开始运行。因为一个应用程序有一个主线程,就是 C 语言中的 main. 主线程可以自己创建很多的线程。所以从模块到开始执行,如果它要有一个完整的空间映像,这个映像就叫进程。
其实,进程不是一个执行单位,进程的执行是通过它的主线程来执行的。最早的时候, UNIX 是没有线程的概念的,这时进程就等于主线程。但是现在的操作系统中,这两个概念是完全不同的。进程并不是一个执行的单位。它仅仅只是一个任务,所以进程也可以叫做一个执行的任务,但是真正是通过线程去工作的。线程可以是主线程,也可以是主线程创建的线程。
## 其他
我们从语言的发展可以看到,计算机语言的发展是不断地向人的思维进行靠拢的一个渐进的过程。正因为现在所有的编程语言都以人为中心,以人的思维为出发点,所以编写程序时就会跟机器的实现相脱离。这就导致很多人看上去都会编写程序,但是编写出的程序总是出现这样、那样的问题,或者效率极低。而这样的程序员又不能从根本上解决这样的问题,因为他对机器和编程语言的关系和原理不了解。
所以说,要成为一个真正的高手,就必须知道计算机的过去,了解它的现在,才能预测将来。要知道你所做的程序在硬件上是怎样被运行的。