Ch:面向交互式教学的跨平台C/C++解释计算环境

时间:2023-04-25 15:54:03 公文范文 来源:网友投稿

文章编号:1672-5913(2009)05-0034-13

摘要:C语言是计算机程序设计入门教学中最流行也较难学的编程语言之一。本文介绍的Ch是一个面向交互式教学的跨平台C/C++解释计算环境,是一个完整的C语言解释器,支持最新C语言标准C99中大部分的新增特性以及C++的类,由交互式命令外壳(command shell)和教学专用且界面友好的集成开发环境(ChIDE)两大模块构成。Ch支持计算数组(computational array),提供了图形绘制库和高级数值函数库,能够方便快捷地解决许多工程和科学方面的复杂问题。在Windows系统中,Ch计算环境支持常用的Unix和Linux命令,帮助学生在熟悉的Windows环境中学习Unix和Linux。Ch还可以作为引擎脚本无缝地嵌入到编译的程序中,实现柔性编程。本文最后概括性地介绍了笔者在美国加州大学戴维斯分校多年教学实践中开发并使用的一套基于Ch的C程序设计教学平台。教学实践表明,使用这个平台在相当程度上提高了计算机程序设计教学的实用性、授课效果和学生学习的积极性,帮助学生充分理解和掌握计算机程序设计这一工程和科学领域的重要基本技能。

关键词:计算机程序设计教学;C语言;C解释器;C++解释器;数字计算;嵌入式脚本计算

中图分类号:G642

文献标识码:A

1引言

编写计算机程序解决复杂的工程和科学问题是工程师和科学家的基本技能之一。C语言是在工程和科学方面应用最广的编程语言之一,事实上,它是很多工程师和科学家的首选。C语言可以在各种计算机上运行,其中包括微控制器、微型计算机、手执设备、个人电脑、工作站乃至超型计算机。在2005年制造的90亿个微处理器中,只有不到2%的处理器用于新的个人电脑和工作站中,剩余的88亿个则用于工业机器、医疗设备、交通灯控制器和家用电器等的嵌入式系统中。C是编写诸如此类嵌入式系统硬件接口程序的标准语言,同时也是计算机编程入门教学中应用最广的计算机语言之一。但众所周知的是,C语言较难学,熟练掌握更需要相当长的时间。本文介绍的Ch是跨平台的C/C++解释计算环境,对于提高计算机编程入门教学具有良好的效果。

2背景

在过去的十多年中,编程范例发生的转变包括从非移植性特定语言编程到可移植性快速应用开发,从私有语言到开放语言,从系统编程语言到脚本语言。当初设计和开发Ch的主要目的是为了更有效地进行C语言计算机程序设计入门教学,同时兼顾智能机电系统方面的科研和工程应用[1][2]。经过十多年的教学实践和工程应用并不断完善,Ch现已从一个简单的教学和科研工具演变为一个可移植跨平台且通用简便的计算环境[3],并得到教师、学生、科研人员和工业界的广泛认可。经过十多年教学经验的积累,目前已经形成了以Ch为核心的C语言程序设计课程的教学平台[4]。

然而,Ch并不是什么全新的语言,Ch设计严格遵循了C语言标准,是C语言的超集。作为一个完整的C语言解释器,Ch支持1990年通过的ISO C89标准[5]的所有特性。在基于对象的编程方面,Ch也支持C++中的一些主要特性。我们为数值计算而扩展C语言的工作与ANSI C语言标准委员会为修改C语言标准所做出的努力是一致的。自从我1993年参与ANSI X3J11和ISO S22/WG14 C语言委员会修订C99后,Ch受益匪浅。很多诸如复数(complex number)[6]和可变长数组(variable length arrays, VLAs)[7]等原先在Ch中实现的新特性都添加到了的最新C语言标准C99[8]中。与其他大部分C语言编译器相比较,Ch支持更多C99的新增特性。我们鼓励C程序员使用这些新特征,诸如复数、可变长数组、IEEE 754浮点运算和泛型数学函数(type generic mathematical functions),因为它们可以极大地简化很多编程任务。

C语言最初是为系统编程而设计开发的,因此它在工程和科学应用方面存在一些缺陷。Ch是一个C/C++解释器,可用于跨平台脚本、高级数值计算和图形绘制、shell编程和嵌入式脚本。Ch借鉴了很多其他语言和软件包的特性和创意,它和其他一些语言和软件包的关系见图1。Ch的以下主要功能是一般的C语言编译器所无法提供的。首先,Ch可以解释C语言程序,在一台机器上开发的C语言程序可以在无需编译和链接代码的情况下在另一台机器上由Ch解释执行,这对脚本应用来说是非常理想的,比如通用网关接口(Common Gateway Interface,CGI)处理网页上的已填好表格。解释器对C语言计算机编程的教与学双方都是非常有帮助的,比如,运行时的出错信息能够更方便地指向源代码,使初学者更容易发现程序中的错误。Ch还能解释使用面向对象编程特性的C++程序。其次,一些应用于工程和科学方面的语言(如MATLAB和Mathematica)所具有的高级数值计算和图形绘制特性也被Ch扩展到C语言上。Ch中的一些数值计算方面扩展特性已添加到C99中。再次,Ch是一个具有高效的shell编程特点的超高级语言(very high-level language, VHLL)。有些需要编写数千行C语言代码才能解决的问题,Ch代码只需寥寥数行即可完成。此外,Ch还可以无缝地嵌入到用C或C++语言编写的编译应用程序中,使应用程序可以用C/C++脚本柔性编程,极大地扩展了应用程序的功能。本文将从教学的视角阐述Ch的这些独特功能。

3Ch是一个跨平台的C/C++解释器

在处理某些任务时,C语言功能及其编译/链接/运行/调试等繁琐过程不尽完美且效率不高。随着计算机硬件越来越便宜,计算速度越来越快,Ch作为跨平台C/C++解释器,其在程序设计效率、柔性及成本方面的优势已被越来越广泛应用,特别是在C语言程序设计教学上。

作为一个完整的C语言解释器,Ch支持ISO C89标准的所有语言特性和标准库。通过Ch软件开发包(Ch SDK),Ch可以支持C/C++函数库。比如,Ch支持POSIX、TCP/IP socket、Winsock、Win32、X11/Motif、GTK+、OpenGL、ODBC、SQLite、CGI、LAPACK、LDAP、PCRE、Gnome Libxml2、甲骨文公司的XML XDK、NAG统计库、用于计算机视觉的Intel OpenCV、用于图像处理的ImageMagick、用于信号处理的SigLib、美国国家仪器有限公司的NI-DAQ和NI-Motion等。

此外,Ch被设计成与平台无关,它可以在配有不同计算机硬件和操作系统的不同类型计算环境中运行,其中包括Windows、Mac OS X、Linux(x86、PPC、ARM架构)、Unix,FreeBSD和实时操作系统QNX。Ch跨平台特点可以使C/C++程序在多种操作系统上跨平台解释执行,而无须繁琐且与平台相关的编译过程。在一个平台上开发的程序可以在其他任何一个平台上运行。

在辅助初学者学习计算机编程方面,Ch有很多专门开发的警告和出错提示信息,而不用如段故障(segmentation fault)和总线错误(bus error)之类含义模糊且令人费解的出错提示信息。

推荐访问:交互 面向 解释 式教学 环境