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

时间:2022-05-05 04:35:59

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

文章编号: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)之类含义模糊且令人费解的出错提示信息。

3.1交互式解释执行C/C++语句和表达式

C语言的所有语句和表达式都可以在Ch命令外壳(command shell)中交互解释执行并即时地显示在屏幕上。如图2所示,使用交互调用函数printf()得到“Hello, world”的输出。注意,在命令模式中执行相应语句时,C语言程序中语句末尾的分号是可省略的。上述执行操作所调用的函数printf()中没有分号。Ch shell中的默认提示符是可配置的。为简易起见,下文关于Ch shell的命令行叙述中只显示提示符>,而不列出完整路径。

Ch shell会对输入的C语言表达式直接进行求值,并将结果显示于屏幕上。比如,输入表达式1+3*2,输出的结果为7,如图3所示。

任何有效的C语言表达式都可以在Ch shell中求值。因此,把Ch当作计算器使用也是相当方便的。再举一例,在提示符后声明变量,接着在随后的计算中使用该变量,如图4所示。

以上C语句中,i是一个4字节的int型变量,i的整数值30将以十进制、十六进制和二进制数显示。Ch shell还可以方便地检查C语言结构或C++类的对齐,如图5所示。

本例中的int和double虽然分别占4和8个字节,但为了对齐,结构体s的int和double两个字段共占16个字节,而不是12个。

3.2交互式解释执行C/C++函数和程序

除了C语句和表达式之外,C语言的函数和程序也可以在Ch shell中进行交互式解释执行。C语言标准库中的所有函数都可以进行交互式执行,也可以在用户自定义的函数中使用。比如,在交互式解释执行如图6所示的代码:

在随机数值生成函数rand()中种入时间值srand (time(NULL))。在命令行中定义并调用的函数add()依次调用了泛型数学函数sin()。

函数文件中定义的函数也可被其他程序和表达式在命令外壳直接调用。Ch的函数文件是一种扩展名为.chf的文件,此类文件只含有一个函数定义。函数文件名和函数定义名称必须是相同的。

比如图7中的程序addition.chf就是函数addition()的函数文件。函数addition()可以用于程序或如图8所示的命令外壳中。

C/C++程序无需编译即可直接进行交互式执行。比如,要运行图9中的“hello.c”程序,只要在Ch命令shell中输入命令“hello.c”,得到的结果就是“Hello, world”,如图10所示。

Ch由上述命令外壳(command shell)和一个集成开发环境(Ch Integrated Development Environment,ChIDE)两大模块构成。ChIDE允许用户在IDE中编辑、调试或运行C/C++程序,其用户界面支持包括中文在内的30多种语言。ChIDE中含有现代IDE中常用的大部分功能。比如,它具有自动语法高亮显示,可帮助用户发现程序的一些语法错误。用户可设置断点,单步运行程序,在程序运行过程中监视变量和表达式值并修改变量值。ChIDE操作简便,是专门为教师授课和学生学习而开发的。ChIDE的特征和布局都是针对那些没有任何编程经验的初学者而设置的。比如,如图11所示,程序func.c连续或单步运行停在第9行时,可以在ChIDE中间的调试窗格内监控局部变量和全局变量的值。变量a和i以及表达式2*g的值可以通过将相应命令输入右下角的调试窗格中获取。教师课堂演示时,还可以方便地改变ChIDE中程序的字体大小。

4Ch的高级科学计算功能

科学数值计算并不是C语言设计的最初目的。比如,在C89中就很难处理多维数组。C99为C语言添加了可变长数组和复数,使得数值计算得到极大简化。Ch进一步扩展了C99的数值计算功能。在Ch中,数值分析方面的复杂问题往往只需调用一个函数即可解决。本部分将阐述Ch在科学计算方面对C语言进行的扩展。这些数值扩展极大地简化了工程和科学中复杂问题的编程。很多工程和科学上的实际问题都可以在课堂演示,在课后练习和项目训练中轻松解决,提高了教学的实用性,并极大地激发学生对计算机编程的兴趣和学习的积极性。

4.1高级数值计算

Ch支持作为一类对象(first-class)的计算数组(computational array)。计算数组可以由类型声明符array进行声明。一维的计算数组作矢量处理,而二维数组则作为线性代数矩阵处理。对计算数组进行运算的操作符重载遵循线性代数的运算规则,如图12所示。

本例中,函数transpose()和inverse()分别用于计算转置矩阵和逆矩阵。对关键词array的处理方法跟C99中关键词complex的相同。在程序中使用计算数组时,应该包含头文件array.h。如果程序中没有包含头文件array.h,那么标识符array仍可作为变量名使用。

Ch含有针对科学数值计算的高级数值分析函数库。比如,线性方程组Ax=b,其中:

通过图13中的程序linsolve.ch调用函数linsolve()进行求解,输出结果如图14所示。

头文件numeric.h包含头文件array.h和数值函数的函数原型。函数linsolve()的算法基于广为应用的开源LAPACK,直接调用了LAPACK中的相关函数。用户无需担心用快速精确的数值算法进行的潜在的优化。通过高级数值分析函数库,用户只需调用一个函数就能解决诸如LU分解、QR分解、伪逆、奇异值分解、矩阵的特征值和特征向量、非线性方程、常微分方程等复杂数值分析问题。

这些高级数值函数对解决工程和科学类后续课程的复杂问题也是非常有用的。

4.2二维和三维图形绘制

图形绘制对数值结果的可视化和解释是极为重要的。C语言默认不支持图形绘制,C语言程序员往往用程序先生成一个数据文件,再使用如Excel之类的软件包,用数据文件中的数据绘制图形,这一过程对算法开发来说很不方便。Ch在C/C++的框架下,为二维和三维图形绘制提供了几乎最简捷的方案。使用图形库(graphical library)的绘图函数(plotting functions)或绘图类(class CPlot)成员函数(member functions),可以在Ch中方便地生成二维和三维图形。Ch可以用数据数组、数据文件或函数生成图形,将其显示于屏幕,保存为不同格式的图片文件,或以适当图片格式输出到标准输出流,并使用Web服务器在Web浏览器上显示。

下面三个例子分别展示了在Ch中绘制二维曲线、三维曲面和三维曲线的简捷功能。

图15所示为函数sinc(x)的二维曲线图形:

x的取值范围为[-10,10]。该图形是如图16所示的Ch程序sinc.cpp通过调用绘图函数fplotxy()实现的。

绘图函数fplotxy()的函数原型为:

Int fplotxy(double func(double), double x0, double xf, int num,

char *title, char *xlabel, char *ylabel);

其中变量func是拟绘图的函数,其自变量区间为[x0, xf],num为绘图取点数,title为图形名称,xlabel和ylabel分别为x坐标轴和y坐标轴的标识。

Ch的绘图函数是通过绘图类(class CPlot)实现的。比如二维曲线绘制函数fplotxy()调用方式:

fplotxy(func,x0,xf,num, title, xlabel, ylabel);

可以用绘图类及其成员函数实现如下:

CPlot plot;

plot.func2D(func,x0,xf,num);

plot.title(title);

plot.label(PLOT_AXIS_X, xlabel);

plot.label(PLOT_AXIS_Y, ylabel);

plot.plotting();

很多别的Ch绘图类的成员函数可以用来绘制不同的图形并达到各种各样的功能。

同样地,三维曲面也可以由Ch绘图函数简捷地生成。图17为数学函数sinr(x, y) 形成的曲面,sinr(x, y)为:

,其中该曲面绘制可由如图18所示的Ch程序sinr.cpp通过调用绘图函数fplotxyz()来实现,其中x在区间[-10, 10]取点数为80,y在区间[-10, 10]取点数为100。

绘图函数plotxyz()可以用来绘制三维曲线或表面。图19是由如图20所示的Ch程序helix.cpp调用plotxyz()生成的,其中t从0到10π的曲线段上含有300个点。在绘图函数plotxyz()中,前三个数组变量与参数函数x、y和z相对应,第四个变量为三维曲线取点数,其他变量与函数fplotxy(), fplotxyz()相同。

使用绘图函数的程序也可以用C++图形库(SoftIntegration Graphical Library,SIGL)[9]在C++编译器中进行编译和链接。比如,图16、18和20所示的程序可用微软的Visual C++来编译、链接SIGL图形库产生可执行的文件。ChIDE集成开发环境不但可以直接解释执行这些调用绘图函数的程序,而且还能够通过编译和链接的方式产生可执行的文件来执行这些程序。

以高级图形绘制和数值函数为基础,大量教学和工程应用工具包可被开发出来。现已开发的工具包包括控制系统工具包[10]和机构设计和分析工具包[11]。图21所示动画是一位学生为机构设计课程项目训练所开发的快速回归机构[12],只需短短34行代码即可实现该机构的数值和图形输出以及仿真。

5Ch命令外壳(Command Shell)和Shell编程

随着计算平台的日趋多样化,为学生提供除Windows的更多跨平台实践的机会就显得越来越重要了。Unix和Linux也是学生需要学习的重要操作系统。计算机的图形用户界面(graphical user interface,GUI)固然好用,但是在命令shell中却可以更简便地完成一些诸如建立多个目录之类的任务,而在处理多平台任务时更是如此。不同平台采用的图形用户界面往往是不同的。此外,shell编程的脚本可以高效地自动执行重复任务,比如系统管理、回归测试、快速编程。常见的Windows MS-DOS和Unix shell(包括Bourne shell,C shell和Korn shell)的语法都是非常繁杂的。和低级汇编语言的符号记忆形式类似,MS-DOS和Unix shell元字符组(metacharacters)的特殊含义很难被记住。因此,用MS-DOS和Unix shell编程语言编写的大篇幅shell脚本较难读懂,也不容易进行修改和维护。再者,MS-DOS和Unix shell编程语言的功能也十分有限。

Ch是一个无需中间字节码(bytecode)的解释器,它也是一个命令外壳(command shell)。Unix系统下,处理Ch shell命令的方法与Bourne shell和C shell之类的常规Unix shell采用的方法是相同的。跟其他Unix shell一样,Ch也能当作login shell使用。大部分Unix命令都是用C语言编写的。Ch为C语言和shell进行了几乎天衣无缝的衔接。在Windows系统下,Ch支持Unix和MS-DOS规范。作为一种可移植命令shell,Windows系统下的Ch包含了Unix shell中常用的200多个Unix命令,比如vi、ls、mv、grep、find、awk、sed和wget等。这样有Windows操作经验的学生可以在熟悉的环境中学习Unix和Linux,自然地过渡。Ch可用于交互式命令解释和shell编程设计。从shell编程的角度看,Ch是一种超高级语言(very high-level language,VHLL),并同时保留了shell的特性,比如命令行编辑、命令替换和别名等。作为命令外壳,Ch的大部分特性与常规的Unix shell相同。在命令shell和shell编程方面,Ch被设计得尽量接近C shell,但不完全相同。Ch shell是一种真正意义上的C shell,并且在Windows、Unix和Linux中都可以使用,因为Ch是C语言的超集,用Ch编写脚本更高效,而且易于维护。

Ch具有现代命令shell该拥有的大部分特性,其中包括历史替换、快速替换、文件名替换、管道、输入和输出重定向、别名、后台运行命令、敲tab键补全文件名和命令,以及使用键盘上的方向键重现命令。这些特性大部分都与C shell和Bourne shell兼容。

在Ch shell中,用户可以在shell的提示符后面输入命令。这些命令包括编译的可执行文件、shell脚本、C语言程序。例如,图22所示的这条命令便可建立dir1和dir2两个目录。

如果要在其他脚本诸如Bourne shell中执行Ch脚本,可以在Ch程序首行含有以下组织行:

#!/bin/ch

如图23所示为Ch脚本script1,该脚本的文件名为script1。在Ch脚本中主函数main()可省略。该脚本由替换命令`uname`生成的字符串与程序预定义的字符串“Linux”和“windows32”相比较来决定程序运行在什么操作系统上,字符串变量s1,s2的值“dir1”和“dir2”则作为mkdir命令的变量。如果该脚本在Linux或Windows操作系统中运行,就会建立dir1和dir2两个目录;如果运行在其他操作系统,则会产生出错信息。

6Ch作为嵌入式脚本引擎

设计软件系统时采用嵌入式脚本柔性编程已越来越流行。在嵌入式脚本的编程范例中,解释器或脚本引擎被嵌入到编译的应用程序中。应用程序可以通过嵌入的解释器执行脚本代码,该脚本代码还能依次调用应用程序和其他函数库中编译的函数并与其共享数据。虽然强大的可嵌入解释器可以极大加快软件开发和部署的速度,但这种柔性编程规范的方法和功能还有待进一步开发和充分利用。

比如,如果将C/C++解释器嵌入到一个自控程序中,对硬件和软件进行测试,则质保工程师就能用C/C++测试脚本调用编译的C函数和C++成员函数。编译的应用程序仅通过调用不同脚本就可用来测试不同产品,这些调用的脚本可以从图形用户界面输入或从文件调入。再如,嵌入式解释器可以为不同客户和应用定制产品,在不改变标准产品的情况下,可根据客户的具体需要给应用程序加入额外功能。应用程序在特定的点调用和执行脚本就能实现客户期望的具体行为。

用于嵌入式脚本的可嵌入解释器有好几种,但最理想的情况是,应用程序的编译代码和脚本代码使用同种编程语言。否则,在编译的二进制空间和脚本空间之间共享数据就会困难而复杂。

C和C++是最常用的编译应用程序开发语言。对于用C/C++编写的应用程序来说,嵌入一个C/C++解释器是最合逻辑的选择,如图24所示。用C/C++编写的应用程序和C/C++脚本均可无缝地共享内存、函数和头文件。

嵌入式Ch具有大量可用于嵌入脚本的应用编程接口(Application Programming Interface,API),比如可在编译的应用程序中跟踪和分析C/C++脚本代码。单个嵌入的解释器就能处理多个C/C++脚本,多个解释器也可嵌入到单个进程中,多个解释器还能嵌入多线程应用程序的不同线程。

虽然如何嵌入脚本引擎到编译的应用程没有包括在计算机编程入门课程中,但是图11所示用于教学的ChIDE中嵌入了Ch解释器,用来解释执行在编辑窗格中的C和C++程序。解释器执行C和C++源代码可以为程序调试提供更多明确的出错信息,而简单明确的出错信息对初学者调试程序尤为重要。再如,Ch解释器嵌入到Mobile-C(一个multi-agent平台),用以支持mobile C/C++ agent,而这种基于agent的移动计算可应用到各种智能机械电子和嵌入式系统中,用动态柔性编程来提高各项性能[13]。

很多龙头企业都在使用嵌入式Ch,如Agilent Technologies公司用嵌入式Ch调控仪器仪表,Lockheed Martin公司用嵌入式Ch做飞机的设计和仿真,ABB公司用嵌入式Ch作自动控制,LG Electronics公司用嵌入式Ch检测生产的电子产品。FunctionBay公司为处理C/C++脚本,将Ch嵌入到其拳头产品RecurDyn(这是一款用于多体动力学分析的软件程序)中。图25显示的是嵌入式Ch和基于mobile C/C++ agent的移动计算在工业机器人、移动机器人、嵌入式系统、智能交通和机电系统设计和仿真中的应用。

基于标准语言的可靠的嵌入式脚本引擎可以免掉开发人员在开发和维护私有脚本语言或解释器上的负担,而开发和维护一个跨平台的基于私有语言的嵌入式引擎在人力、硬件、软件、开发、测试、维护、系统管理、培训和技术支持等方面的成本是非常昂贵的。

7基于Ch的C程序设计教学平台

自从1992年以来,我在加州大学戴维斯分校每年教授工程类学生C语言计算机编程的入门课程。在课堂讲学中,我在笔记本电脑上以交互的方式使用Ch。Ch使我能够快速地演示C语言特征和编程原理,特别是在回答学生问题时。学生们可以快捷地体验C语言的不同特征,无需进行冗长的编译/链接/运行/调试的循环操作。经过10多年教学经验的积累,目前已形成了以Ch为核心的C语言程序设计课程的教学平台[4],体系结构如图26所示。它包括Ch计算环境(由Ch命令外壳和ChIDE集成开发环境两大模块组成)、C语言教材和课件(含350有详细注释的完整实例源程序、1400多页课堂授课用PPT、500多道习题)、讨论训练素材(含200多页课堂讨论用PPT)、教师指南(含教学目标、计划、试题库)和习题题解手册(含每章习题答案及相关源程序)。以上四部分内容是我们长期教学和科研经验的积累和不断完善的结果。

该教学平台主要面向没有任何编程经验的初学者,通过教与学,帮助学生理解和掌握C语言程序设计原理、编程与调试方法以及工程与科学计算算法程序实现,并能够用C编程来解决工程和科学实际问题。

该教学平台已被世界各国越来越多的高等院校所接受和采用。教学实践及反馈表明,该教学平台具有以下主要特征:

(1) 实现了C语言的直观交互式的教学方式,降低了C语言的学习难度

C/C++语句、表达式、函数和程序都可以在Ch命令外壳和ChIDE中解释执行。因此,教师可以在课堂上对C/C++语句、表达式、函数和程序等进行直观的交互式的演示教学,帮助学生形象化地理解C语言指针、结构体、数组、编程逻辑、编程调试等学习难点,让学生能像学习BASIC语言一样学习C语言。

(2) 使用高级数值计算、图形绘制功能以及工程用例,增强了C语言学习的生动性和实用性

该平台具有强大的高级数值计算、二维/三维绘图功能和底层硬件连接与工业控制功能,并附有丰富的工程及科学实际编程应用案例,可以形象而又便捷地展示和讲解使用C语言解决较复杂的工程和科学问题中的应用,有利于激发学生学习的积极性,提高教学的实用性。

(3) 支持跨平台功能,可帮助学生了解和熟悉不同操作系统下的C编程特点及方法

在美国、俄罗斯、欧洲、日本、中国等国家,Windows、Linux、Mac OS X、Unix等操作系统均被广泛使用,而在工业控制、嵌入式系统及Web服务器等领域,Linux操作系统占有更重要的地位。Ch具有跨平台的特点,可以帮助学生了解和熟悉C语言在不同操作系统中进行程序设计和执行的特点,有助于他们在今后工作和学习中适应不同操作系统环境下的程序设计、开发和应用。

(4) 此外,Ch教学平台中的Ch命令外壳、ChIDE以及教材等均支持ISO C89标准的所有语言特性和标准库、C99的大部分新增特性以及64位编程功能,是目前关于C程序设计知识最为完整的教学工具之一。在编写教材时,我们既考虑到初学者的需要,力求浅显易懂、深入浅出,同时也兼顾C语言知识和技能的系统性和实用性,并对一些疑难的高级知识点做了专门的实例化剖析,力求使之成为学生在后续课程学习及今后解决工程和科学领域实际问题时的重要参考资料。

8结语

Ch是一个完整的C语言解释器,同时支持C99新增的大部分特性和C++类。Ch的计算数组、高级数值分析函数、二维和三维图形绘制功能是C/C++框架下最便捷的形式,这些功能可用来方便地解决许多工程和科学中的复杂问题。Windows下的Ch计算环境支持常用的Unix和Linux命令,使学生能够在熟悉的Windows环境中学习Unix和Linux。Ch可作为一个C/C++脚本引擎被无缝地嵌入到其他应用程序中。越来越多的应用程序扩展后都具备了C/C++脚本功能。

基于Ch的C程序设计教学平台是在美国加州大学十多年教学和科研中不断积累和总结而成的一项重要教学成果,并形成了独特的教学模式。该教学平台包括跨平台的C/C++解释性计算环境(由Ch命令外壳和ChIDE集成开发环境组成)、成套的教材及课件、相应的讨论训练素材和完整的教师指南。教学实践及反馈表明,该平台能增强教学的实用性,提高授课效果,降低初学者学习计算机程序设计的门槛,并有助于激发初学者对计算机编程的兴趣和学习的积极性,帮助他们真正理解和掌握如何应用计算机编程这一种重要工具来解决工程和科学中的实际问题。Ch和Ch教学平台可从网上下载[3][4],希望它能使您的教学和编程任务更加快乐有趣。

参考文献:

[1] H. H. Cheng,“Scientific Computing in the Ch Programming Language”,Scientific Programming,Vol. 2,No. 3,pp. 49C75,Fall 1993.

[2] H.H.Cheng,“Extending C and FORTRAN for Design Automation”,ASME Trans.,Journal of Mechanical Design,Vol. 117,No. 3,pp. 390C395,Sep 1995.

[3] Ch―an Embeddable C/C++ Interpreter,.

[4] H. H. Cheng,C for Engineers and Scientists:An Interpretive Approach,New York:McGraw-Hill,Inc. March 2009; iel.ucdavis.edu/cfores;中文版将由高等教育出版社出版.

[5] International Standard:Programming languages - C,ISO/IEC,Geneva,Switzerland,1990.

[6] H. H. Cheng,“Handling of Complex Numbers in the Ch Programming Language”,Scientific Programming,Vol. 2,No. 3,pp. 76C106,Fall 1993.

[7] H. H. Cheng,“Extending C with Arrays of Variable Length”,Computer Standards and Interfaces,Vol. 17,pp.375C406, 1995.

[8] International Standard:Programming languages - C,ISO/IEC,Geneva,Switzerland,1999.

[9] SoftIntegration Graphical Library,/products/silib/graphlib/.

[10] Y. Zhu,B. Chen and H. H. Cheng,“An Object-Based Software Package for Interactive Control System Design and Analysis”,ASME Trans. Journal of Computing and Information Science in Engineering,Vol. 3,No. 4,pp. 366C371,Dec. 2003.

[11] H.H.Cheng and D. Trang,“Object-Oriented Interactive Mechanism Design and Analysis”,Engineering with Computers,An International Journal for Simulation-Based Engineering,Vol. 21,No. 3,pp.237C246,May 2006.

[12]M. Campbell and H. H. Cheng,“Teaching Computer-Aided Mechanism Design and Analysis Using a High-Level Mechanism Toolkit”,Computer Applications in Engineering Education,Vol. 15,No. 4,pp. 277C288,2007.iel.ucdavis. edu/.

[13] Mobile-C:A Multi-Agent Platform for Mobile C/C++ Code,.

Ch: a Pedagogically Effective Cross-Platform Interpretive C/C++ Computing Environment

Harry H. Cheng, Professor

(University of California, Davis, USA)

Abstract: C is one of the most popular languages used to teach introductory computer programming. A pedagogically effective cross-platform C/C++ computing environment called Ch is introduced in this article. Ch is a complete C interpreter. It supports most new features added in C99 and classes in C++. Ch consists of both command shell and user-friendly IDE called ChIDE. In addition, Ch supports computational arrays, a graphical plotting library, and advanced numerical functions for solving complicated problems in engineering and science conveniently. Furthermore, the Ch computing environment in Windows supports commonly used Unix and Linux commands. It allows students to learn Unix and Linux in a familiar Windows environment. Ch can also be seamlessly embedded in other applications as a C/C++ scripting engine for flexible programming. Finally, a Ch-based teaching platform developed and used at the University of California, Davis over the years for teaching introductory computer programming in C will be briefly presented. Experience indicates that this C/C++ interpreter based teaching platform increases the effectiveness of teaching computer programming for real-world problem solving and lowers the barrier for beginners to learn computer programming. It helps students to fully understand and master the working principle of computer program design for solving problems in engineering and science, which is one of the most important and basic skills for engineers and scientists.

Keywords: teaching computer programming;C language;C interpreter;C++ interpreter;numerical computing;embedded scripting

注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文

上一篇:以Flash为主线的互动媒体专业课程体系建设 下一篇:浅谈“计算机基础”课件的制作