程序员应该有哪些良好习惯呢?请看《程序员的自我修养》
[复制链接]
程序员的自我修养
念书的时候,作为标准的爱好技术的宅男,每天扫一遍各大高校BBS的技术版面,基本好比一日三餐一样平常。我对计算机技术方面的口味很杂,从汇编版到C++到Linux内核开发、Linux应用开发、游戏开发、网络、编程语言、体系结构、移动开发、开源闭源我都会参上一脚。
我始终认为技术优劣取决于需求,与很多持有“编程语言血统论”的程序开发者不同,我不认为C++或Java本身有什么直接可比性,或者OOP与函数式编程谁优谁劣,我始终坚持认为作为开发者,MOP(Market/Money Oriented Programming)才是唯一不变的编程范式。于是我往往不参与那些技术、平台、语言教派之间的宗教战争,这种论战基本上每周都会有,我很佩服论战各方见多识广、旁征博引、高屋建瓴的论断,但我往往只是灌灌水调节一下思绪。相反,我很关注一些与语言、平台等相对独立的基本的系统概念方面的问题,这些问题比较具体,也比较实用,比如:
为什么程序是从main开始执行?
“malloc分配的空间是连续的吗?”
“PE/ELF文件里面存的是什么?”
“我想写一个不需要操作系统可以直接在硬件上跑的程序该怎么做?”
“目标文件是什么?链接又是什么?”
“为什么这段程序链接时报错?”
“句柄到底是什么东西?”
这些问题看似很简单但实际上有很多值得深入挖掘的地方,比如第一个问题围绕着main函数执行前后可以延伸出一大堆问题:程序入口、运行库初始化、全局/静态对象构造析构、静态和动态链接时程序的初始化和装载等。我们把这些问题归结起来,发现主要是三个很大的而且连贯的主题,那就是“链接、装载和库”。
|