编译器一:程序设计语言、编译器和开发环境之间的关系


MinGW -将GNU开发工具移植到Win32平台下的计划

Cygwin - 在Windows上运行GNU程序的模拟软件

 (2011-04-02 16:39:57)

    程序开发从时间先后顺序上可以分为三个阶段:1、编码阶段,2、编译阶段,3、运行阶段。

    在编码阶段我们使用程序设计语言,根据特定的文法利用程序设计语言来编码。就像是根据英语的语法用英语语言来写文章。当然一种语言也有很多版本,比如说Basic语言就有QuickBasic,Visual Basic(图形用户界面的Basic),Visual Basic2003,Visual Baisic 2010等。C语言就有ANSI C,以及目前比较流行的Microsoft C,Bordland TurboC,AT&T C等。编译器和语言的关系就是,翻译者和语言的关系,也就是说编译器能识别并翻译这种语言,然后生成目标程序。编译器除了提供编译功能外还会提供一些运行库,所谓运行库就是事先写好的子程序所组成的子程序库,例如C语言中的Printf函数,就是由C的运行库提供的。简单来说,编译器就是由编译程序和运行库组成的。在程序的编译阶段,就是使用编译器对源程序进行编译生成目标程序。

     在程序的运行阶段则是在一个特定的平台上,由这个平台来执行编译生成的程序。Java虚拟机是一个平台,DOS 和 Windows 也是平台,编译器的作用就是沟通源程序和程序的运行平台。源程序相对于一个运行平台来说是不可识别的,但当编译器将源程序编译成为这个平台所能够识别的目标语言以后,程序就可以在这个平台上运行了。

      应该看到,编译器在其中起到了桥梁的作用。我们现在可以明确一些概念了,程序设计语言只是语言,它本身很难说有什么好坏,这就如同说“汉语和英语哪个好”一样。我们可以使用某种程序设计语言书写自己的程序,向计算机表达自己希望完成的功能。这个阶段,我们称为编码阶段。

    编译器由编译程序和运行库组成,编译程序负责将源程序翻译成为目标程序,运行库提供了一些基本的子程序给程序编写者使用。编译器有两个特性,第一个是对语言的支持,例如 TC 编译器是支持 ANSI C 的,而 GCC 则是一个能够支持多种语言的编译器。然而不同的编译器除了提供对某种语言的支持以外,还可能对该语言进行了某些功能扩充。但是编译器在对语言的支持上,差别不是很大,因为程序设计语言都是基于一个标准来制定的,例如 ANSI C。第二个特性就是对运行平台的支持。平台指的是一个程序运行所需要的所有软件和硬件的基础。编译器对运行平台的支持,是通过将源程序编译成为目标程序,以及编译器所提供的运行库来实现的。例如,TC只能将C源程序编译生成,使用 80x86 CPU,操作系统为 DOS 的 16bit DOS 程序。VC只能将C源程序编译生成 80x86CPU、操作系统为 Windows的 32bitWindows 程序。使用编译器对源程序进行编译被称为编译阶段,这个阶段编译程序将源程序编译为某个平台的目标代码。程序在具体的平台上运行时,被称为运行阶段。

    应该指出,在编码阶段使用到的是程序设计语言,以及编译器所提供的库函数,这个阶段产生的是源程序。在编译阶段使用的是源程序和编译器,这个阶段产生的是目标程序。在运行阶段使用到的是目标程序和运行平台,这个时候产生的是程序运行结果。

     接下来认识一下开发环境。为了能够方便程序设计者进行编码、调试等工作,编译器制造商在制作好一个编译器以后,都会提供一个集成开发环境(又称为IDE)。在这个 IDE 中,用户可以完成编码、编译、调试、运行的全部工作。并且在最新的IDE中,可能还会提供一个可视化的设计功能,可以方便用户进行程序界面的设计。例如 VB 等。另外一个方面,开发环境除了包括 IDE 以外,还包括了程序运行的平台。比如硬件是 IBM PC 兼容机,操作系统是 Windows 等。

      有了以上的基础我们来了解一下C语言的编译器,C语言编译器可以分为C和C++两大类,其中C++是C语言的超集,可以向下支持C。目前主流的C语言编译器有:

   一、TC 2.0(Turbo C 2.0 简称)

   TC 2.0,DOS平台下的编译器。最为经典的C语言编译器,系统体积小,简单易学,容易上手,而且很多前人或书籍的程序均基于该编译器,是学习C语言的首选。不过它不支持鼠标,但读者如果掌握几个快捷键,操作时对鼠标可能就不怎么需要了。

   二、TC 3.0(Turbo C++ 3.0简称)

   TC 3.0,也是DOS平台下的编译器件。目前比较不错的C/C++语言编译器,支持鼠标,语法着色,多文档,错误跟踪也很好,操作与TC2.0有很多类似,TC2.0会用那么 TC3.0也很快会用,缺点是以前很多代码是用TC2.0设计的,而由于TC3.0语法要求的严格性,如要求函数必须定义类型,所以向下存在一定的兼容性问题,所以对于初学者选择起来很矛盾,建议先学会使用TC2.0,而把TC3.0作为能力的补充和平时工具之用。

   三、VC++ 6.0

这个正是我们熟知的Visual Studio 和 Visual Studio.net 2002, 2003以及2005(Whidbey)中带的C++编译器。Windows平台的编译器。目前主流的C/C++语言编译器,包含强大的类和内嵌WinAPI的MFC,具有可视化的编程界面。对于TC等的作品也具有向下兼容的特点,建议读者选用作为C语言过渡到Windows平台编程的首选工具。当然,作为学习,该系统显得有点庞大,不过通过入门的学习,调试旧的Tc程序也可以。

             四、Borland C++ 

这个是Borland C++ Builder和Borland C++ Builder X这两种开发环境的后台编译器。Borland C++由老牌开发工具厂商Borland倾力打造。该公司的编译器素以速度快,空间效率高著称,Borland C++ 系列编译器秉承了这个传统,属于非常优质的编译器。

标准化方面早在5.5版本的编译器中对标准化C++的兼容就达到了92.73%。目前最新版本是Borland C++ Builder X中的6.0版本,官方称100%符合ANSI/ISO的C++标准以及C99标准。嗯…这正是我前面所指的“完全符合C++标准的编译器”。

        五、GNU C++ 

著名的优秀C++编译器。Linux/Unix平台上的首选,而且支持N中硬件平台,如果想进行跨平台编译的话,这是一个不错的选择。特点是有非常好的移植性,你可以在非常广泛的平台上使用它,同时也是编写跨平台,嵌入式程序很好的选择。

另外在符合标准这个方面一直都非常好,GCC3.3大概能够达到96.15%。但是由于其跨平台的特性,在代码尺寸速度等优化上略微差一点。 

基于GNU C++的编译器有很多,比如: 

          六、Intel C++ 

著名CPU制造厂商Intel出品的编译器,Special Design for Intel x86!对于Intel x86结构的CPU经过特别的优化。在有些应用情况下,特别是数值计算等高性能应用,仅仅采用Intel的编译器编译就能大幅度的提高性能。 

              七、Digital Mars C++ 

网络上提供免费下载,Zortech/Symantec C++的继承者,其前身在当年惨烈的C++四国战中也是主角之一。

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值