首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

1.5 程序设计环境

Programming Environments

编译器和解释器并不是孤立存在的,程序员的工作需要有一组其他工具的辅佐,前面已经提到过的还有汇编器、调试器、预处理器和连接器。编辑器是每个程序员都熟悉的东西,它们还可能提供交叉引用的功能,帮助程序员找出各种对象的定义位置,给出它们的使用点。美观打印程序能帮助我们贯彻有关的格式规定,风格检查程序强制性地要求某些语法或者语义规定,可能比编译器所要求的更严格一些(见探索1.11)。配置管理工具能帮助我们追踪一个大软件系统的分别编译模块(还可能存在着许多不同版本)之间的依赖关系。也存在一些精读工具,它们不仅能用于正文形式,还能检查二进制形式表示的中间语言。剖析程序和其他性能分析工具通常与调试器一起使用,能帮助我们检查程序里的哪些部分消耗了最大量的运行时间。

在较早的程序设计环境里,各种程序设计工具通常是独立执行的,用户需要显式地去调用。举个例子,如果一个程序以一个“总线错误”(非法地址)信息而非正常终止,用户可能选择调用一个调试器,去检查操作系统卸下来的“内核”文件。程序员也可能想通过设置断点、启动追踪等方式,在调试器的控制下重新运行这个程序,设法去弄清程序里的错误。一旦找到了错误,用户就要调用编辑器去做适当的修改,而后再重新编译修改后的程序,此时可能还需要配置管理器的帮助。

更新型的程序设计环境提供了许多集成工具。一旦在这种集成环境里发生了非法地址错误,用户屏幕上就可能出现一个新窗口,出错的源代码行在窗口里用高亮显示。可以直接在这一窗口里设置断点、启动追踪,而不必去显式调用调试器,还可以直接修改源代码,不必另外调用编辑器。编辑器还可能结合有关语法知识,为所有标准控制结构提供模板,并能随着程序的键入过程检查语法。如果用户在做了一些修改之后要求重新运行程序,他们也不必去显式调用编译器或配置管理器,一个新的程序版本就会被自动创建出来。

设计和实现

功能强大的开发环境

复杂的开发环境也是一柄双刃剑。Common Lisp环境的质量被认为对其广泛传播起了举足轻重的作用。另一方面,Smalltalk的图形环境的特殊问题(包括强调特殊的字体、窗口风格等),也使这一语言难以移植到通过正文界面访问的系统上,或者移植到具有不同“视感”风格的图形系统上。

人们已经为许多不同的语言和系统开发了集成化的环境。对于Smalltalk而言,这种环境是最基本的东西——几乎无法区分这一语言与它的图形环境。这样的环境也广泛用于Common Lisp。在个人计算机上这类环境也很常见,这方面的例子包括微软的Visual Studio环境、Apple的Project Builder环境,等等。Unix下有一些商品的和开源的环境可用,许多比较容易的集成可以在emacs等复杂的编辑器里实现。

检查你的理解

10. 请说明编译和解释之间的不同。这两种方式比较起来各有哪些优点和缺点?

11.   Java是编译性的还是解释性的(或者两者都是)?你为什么这么说?

12.   编译器与预处理器之间的区别是什么?

13. 原始的AT&T C++编译器所用的中间形式是什么?

14. 什么是P-代码?

15. 什么是自举?

16. 什么是即时编译?

17. 请提出两个语言的名字,其中的程序能在自己运行的过程中为自己写新的片段。

18. 请简单描述三种“不寻常的”编译器,即那种用途不是为了在微处理器上执行高级语言程序做准备的编译器。

19. 请列举并描述6种在一个大型程序设计环境里支持编译器工作的常见工具。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论