程序员的编程心法--序章
2015-04-09 19:45
197 查看
程序员的编程心法
-----------序章之前在学习LINUX网络编程时,有个学长告诉我,编程不光要写好代码,还要懂得代码在底层在内存,在CPU运算过程中到底是如何运行的,要站在系统的角度上审视一个程序,思考自己的程序是否能够移植到别的平台上,是否可以封装成一个独立的函数。要了解编译器级别,机器级别的代码运行才能在编程的道路上走的更远。
为此我也买了本It界的圣经《深入理解计算机系统》这本书正好解决的就是这个问题,这本书就是再讲LINUX环境下的编程与很多要注意的地方。
我决定以这个标题开始,总结记录我学习这本书的过程,程序人生,与诸君共勉。
从哪个最经典的程序HELLO,WORD!说起,以后的文章均建立在Linux的环境下,编译器为GCC。这个程序的生命周期我是从一个源程序开始的,即是从程序员写好这个程序开始的。
首先它是一个源文件hello.c 经过编译后才能成为一个可以运行的程序,我们现在来浅析下这个编译的过程。
首先是hello.c文件这是一个纯文本文件,里面存的是文本,在计算机中以ASCII码来保存,接着进入预处理阶段(之前的博文已经详细讲了预处理)此时文件变为hello.i此时的程序依然是文本形式,接着是编译器处理(编译器级别的处理开始了)文件变为hello.s此时依然是文本文件不过高级语言程序文本已经被转化为汇编程序文本,下来由汇编器处理文件变为hello.o这是一个可重定位目标程序(全是二进制的)最终由连接器将此程序需要的库中的函数连接起来,————》生产a.out(或者自己起名字)可执行文件。
到此这个程序算是成了,接下来就可以运行了。作为序章顺便对计算机系统做一个小结:
计算机系统由一个硬件与软件组成,他们协同做事以保证应用程序的正常运行,就像这个最简单的程序,其实运行这个程序的大部分时间都用在了,存储器,寄存器,总线设备,内存中的复制数据,所以存储类设备也是系统的一个重要组成部分。其实不管是寄存器,高速缓存,硬盘,主存,其实都是一个缓存体系。操作系统内核是应用程序和硬件之间的媒介:
它提供三个最基本的抽象
1.文件是对总线设备的冲抽象。
2.虚拟存储器是对主存和磁盘的抽象。
3.进程是对处理器和内存和总线设备的抽象。
计算机系统的一个重大课题就是对不同的层次结构进行抽象,来隐藏其中的复杂性。
相关文章推荐
- 程序员的编程心法--序章
- VB程序员的FTP编程指南1.7-用VB实现FTP的一个例子(大结局)
- 用于测试C++/C程序员的基本编程技能、编程质量以及对C++/C的理解程度的一份考卷试题
- JAVA程序员必读:---编程中的一些共同的问题
- [浪子学编程][MS Enterprise Library]ObjectBuilder内功心法之中国特色
- 编程之禅-程序员的哲学
- 程序员与编程[侯捷老师帖]
- [ASP.NET入门随想二]瘦子与胖子的故事——WEB程序员的编程环境与任务
- 底层编程对程序员的灵魂有好处?
- 成为真正的程序员——编程之道1
- VB程序员的FTP编程指南1.1-文件传输协议FTP概述
- 程序员必看之★编程原则(中英文对照)★--《Enough Rope to Shoot Yourself in the Foot
- 程序员的梦想:意图编程
- 程序员编程修养
- [侯捷老师帖]程序员与编程
- VB程序员的FTP编程指南1.3-列出、改变目录
- VB程序员的FTP编程指南1.5-其它的ftp支持命令
- 从学生到程序员(一) 关于编程
- Google中国编程挑战赛专访李开复: 做终身程序员是一件好事情 2005.11.23
- 编程之道-程序员的哲学