程序员编程开发思路(编程之开发平台与运行平台)

编程是一项复杂性的工作,解决复杂性的思想就是分治,分层抽象。

编程是一个系统性的工程,其所依托的平台也是如此。

一、程序开发平台

程序开发平台也就是集成开发环境(IDE,Integrated Development Environment ),是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套件。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。如Visual Studio、Eclipse、JBuilder、PyCharm等。

开发平台除了提供编辑器、编译器、链接器、调试器等主要工具以外,通常还提供图形界面环境,可以集成一些应用程序开发框架。这样写代码便可以利用现成的库(函数库、类库),还可以通过框架去继承一些已有的类,通过重载(如C 重载虚函数)去扩充一些功能。

程序员编程开发思路(编程之开发平台与运行平台)(1)

标准C和C 定义了9个不同的翻译阶段。当然,实现没有必要在代码中分成9个独立的阶段,但是翻译的结果必须好像已经这样做了一样,这9个阶段是:

1 物理源字符被映射到源字符集中。其中包括三字符组合(trigraph)替换以及诸如把回车/换行映射到一个单独的MSDOS环境下的换行字符那样的东西。在C 程序中,任何不在基础源字符集中的字符都被它的通用字符名替换。

2 所有以反斜杠结束的行都和它们接下来的行合并,并且删去反斜杠(物理行转换为逻辑行)。

3 源码被分析成预处理标记,并且注释被一个单独的空字符所替换,C 双字符被识别为标记。

4 调用预处理指令并且扩展宏,对于任何被包含的文件循环地重复步骤1到4。

5 源字符退出字符常量序列,普通字符名被映射成执行字符集成员(例如,'\a'将在ASCII环境下转换成7的一个字节值)。

6 相邻的字符串被连接。

7 传统的编译:词汇和语义分析,并翻译成汇编语言或机器码。

8 执行任何待解决的模板实例(C )。

9 链接:解决外部引用,准备好程序映像以便执行。

二、程序运行平台

操作系统是程序的运行平台。同一硬件平台能够运行多用户、多道程序是操作系统的功能,所以用户程序需要在操作系统的调度下运行,以便统一多个程序的资源管理。操作系统既是用户使用的界面接口,也是程序开发的接口。

程序员编程开发思路(编程之开发平台与运行平台)(2)

如在显示屏上显示一串字符的hellowWord。

#include <stdio.h> int main() { puts("hello World"); return 0; }

编译成链接成的应用程序helloWord.exe与操作系统的交互如下:

(以下文本用OS表示操作系统(Operating System),用EF(Executable File)表示可执行文件或需要运行的程序helloWord.exe)

1 用户告知OS执行EF(点击或输入EF路径);

2 OS检索EF是否是可执行文件,并通过程序首部信息确定代码和数据在EF中的位置并计算出对应的磁盘块地址;

3 OS创建一个新的进程,并将EF映射到该进程结构,表示由该进程执行EF;

4 OS为EF设置CPU上下文环境,并跳到程序开始处;

5 OS的调度程序选中EF进程;

6 执行EF的第一条指令,发现缺页异常,OS分配一页物理内存,并将代码从磁盘读入内存,继续执行;

7 EF执行puts()函数(系统调用);

8 OS找到要将字符串送往的显示器,通常设备是由一个进程控制的,所以,OS将要写的字符串送给那个进程;

9 OS控制设备的进程告诉设备的窗口系统它要显示字符串,窗口系统确定这是一个合法的操作,然后将字符串转换成像素,将像素写入设备的存储映像区;

10 视频硬件将像素转换成显示器可接收的一组控制/数据信号;

11 显示器解释信号,激发显示屏显示字符;

程序员编程开发思路(编程之开发平台与运行平台)(3)

-End-

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页