编程环境中语言设计的影响是什么?
编程环境通常在两个主要方面影响语言设计,例如促进程序从组件进行单独编译和组装的功能,以及辅助程序测试和调试的功能。
单独编译 - 在任何大型程序的结构中,通常希望多个程序员或编程小组设计、编码和测试程序的元素,然后再将所有元素最终组装成一个完整的程序。这需要语言具有结构,以便单个子程序或其他元素可以单独编译和实现,而无需其他元素,然后可以组合成最终程序,而无需转换。
单独编译由这样一个事实构建的问题:在编译一个子程序时,编译器可能需要关于其他子程序或共享数据对象的数据,例如
对任何被调用子程序期望的参数数量、顺序和类型进行要求,使编译器能够测试对外部子程序的调用是否准确。编码不同子程序的语言也可能需要已知,以便编译器可以设置合适的“调用序列”指令,以便在实现过程中以该子程序的正常形式与外部子程序共享数据和控制数据。
对任何被引用的变量的数据类型进行声明,需要允许编译器确定外部变量的存储表示,以便可以使用适合该变量的访问规则(例如,公共环境块内的正确偏移量)来编译引用。
对外部表示的数据类型的定义,但可以在子程序内部声明一些局部变量,需要使编译器能够为局部信息分配存储空间并评估访问规则。
测试和调试 - 大多数语言都包含一些功能来辅助程序测试和调试。一些例子如下:
执行跟踪功能 - Prolog、LISP 和一些其他交互式语言支持能够识别特定语句和变量以便在执行期间检测的功能。
断点 - 在交互式编程环境中,语言提供程序员可以确定程序中某些点作为断点的功能。当在执行期间进入断点时,程序的执行会被中断,并且控制权会被传递到终端的程序员手中。程序员可以检查和转换变量的值,然后从中断点恢复程序。
断言 - 断言是在程序中插入的条件表达式,作为单独的语句,例如,assert (X>0 and A = 1) 或 (X=0 and A>B+10)。断言陈述了在程序中该点变量的值之间应该存在的关系。