【VC++开源代码栏目提醒】:网学会员VC++开源代码为您提供跨平台CC++解释计算平台Ch 的教学魅力 - 职业资格参考,解决您在跨平台CC++解释计算平台Ch 的教学魅力 - 职业资格学习中工作中的难题,参考学习。
31Computer Education 专题策划二 跨平台C/C解释计算平台Ch的教学魅力 特约主持人:程 辉 专题策划人:奚春雁 张 玥 Ch平台国际研讨会Ch Workshop,http://www.asmemesa. org/ chworkshop/于2008年10月12在北京召开,来自国内外著名高校和工业界的专家、学者及相关部门领导莅临并作了精彩发言。
本次国际性Ch研讨会由国际电气与电子工程师学会IEEE和美国机械工程师学会ASME主办,国家自然科学基金委员会和国家教育部高等教育司协办,旨在研讨C/C解释计算平台Ch的功能,交流美国及中国高校如何利用Ch平台提高C程序设计课程的教学质量,以及Ch在高校工程类课程教学科研及工业中的应用等。
清华大学张尧学院士参与了本次研讨会的组织工作;教育部理工处领导吴爱华作了关于教学改革及教学创新的重要讲话;美国加利福尼亚大学戴维斯分校程辉Harry H. Cheng教授、浙江大学谭建荣院士等作了专题报告;中国科学院计算技术研究所倪光南院士在总结性发言中指出,Ch平台是一个适合于中国计算机程序设计教学的优秀平台。
Ch平台是程辉教授在美国加州大学戴维斯分校从事16年C语言程序设计教学和科研实践中,针对C语言的众多难点,积累开发的一种跨平台嵌入式C/C程序解释器。
Ch平台抛弃了传统的抽象教学方式,由面向底层内核的交互式命令外壳和教学专用且界面友好的集成开发环境两大模块构成,从而形成了一种新的C程序设计教学平台和新的教学模式。
教师可以使用这个平台,在课堂上开展直观的程序交互式演示教学,帮助学生形象化地理解C语言指针、结构体、数组、编程逻辑、编程调试等学习难点,同时这个平台也是学生有效自学和课后实践的工具。
该平台具有强大的高级数值计算、二维/三维绘图功能和底层硬件连接与工业控制功能,可以形象而又便捷地展示和协助教师讲解C语言在解决较复杂工程和科学问题中的应用,从而提高教学的实用性,激发学生的学习积极性。
Ch跨平台的特点使 32 Computer Education 专题策划二 C/C程序可以在Linux、Unix、Windows等多种操作系统上跨平台解释执行,无须经过繁琐且与平台相关的编译过程。
此外,Ch也是一个可嵌入的脚本引擎,可以无缝地嵌入到已编译的程序中,实现脚本的柔性化编程,可方便地实现诸如移动计算等的新计算范式。
目前,该平台已被全球各高等院校及工业界广泛应用于教学和解决各种科学与工程问题中,取得了显著效果,得到了各界专家学者的高度评价。
美国国家标准学会C标准委员会主席汤姆·麦克唐纳说:“Ch首次实现了跨平台、复数、可变长数组以及IEEE浮点计算等C99的标准功能。
我不得不说Ch在质量和开发环境的完整性上给我留下了极为深刻的印象。
” 法国巴黎大学计算机科学教授杰姆·菲特评价说:“教师和学生都非常欣赏Ch。
在我的教学生涯中,第一次能够将指针如此清晰地讲授给对C程序设计完全陌生的初学者,并让他们自然地接受和理解。
” 美国加州大学伯克利分校戴维·奥斯兰德教授指出:“Ch是一个教学和研究的优秀平台,我用它来做机电和控制方面的教学和研究。
对我来说,一个解释器的最重要优点是跨平台、可移植,Ch使C程序能够跨平台执行。
另外,Ch有非常友好的数学和图形功能,而在C、C或Java中实现此类功能则需要装载大量资源函数库,而每一个都有各自的使用规范,使用起来很繁琐。
我对Ch中提供的绘图功能印象尤为深刻,这对工程科学应用非常有用,使用也很方便。
” 随着大学教育的普及化,C语言已成为最普及的程序设计教学语言之一。
提高大学生C/C的程序设计能力和实际动手能力,对他们的专业发展及今后的就业具有非常重要的意义。
清华大学和浙江理工大学在利用Ch开展大学生程序设计基础教学中已经取得了良好的成效。
例如,在2005年浙江省计算机二级考试中,浙江理工大学采用Ch平台学习C程序设计的学生在“C程序设计”考试中的平均通过率达到96.7,其中二本学生的通过率更是达到了100,教学效果非常显著。
《计算机教育》杂志始终关注本领域的教育教学改革和创新。
我们特别约请了部分参会的专家、学者,为读者详细介绍研究和使用C/C解释计算平台Ch的经验和体会。
我们希望通过对Ch平台全面而详细的介绍,不断提高C程序设计课程及相关课程的教学质量,进一步促进计算机教学的创新和计算机教育培训体系的改革。
33Computer Education 专题策划二 适合中国计算机程序教学的跨平台 C/C解释计算平台Ch 中国科学院计算技术研究所 倪光南院士 美国加利福尼亚大学戴维斯分校程辉教授所设计和开发的C/C解释计算平台Ch是一个适合于中国计算机程序设计教学的解释计算平台。
首先,Ch支持跨平台执行C/C程序,它可以在Linux、Unix、Windows等多种操作系统上运行,特别适合中国的国情。
众所周知,《国家中长期科学和技术发展规划纲要2006-2020年》所部署的“核高基”重大专项研究中,中国将大力发展“基础软件产品”,其中最重要的就是操作系统。
在该专项研究的支持下,中国将发展基于Linux等
开源软件的操作系统,或基于自主开发并与Linux兼容的操作系统,因此,中国今后的操作系统平台将不再是Windows一统天下,而是朝着Linux、Windows等多种操作系统多元化发展的方向迈进。
与此相适应,中国的程序设计语言教学也不应当只教
VC、VB这类依赖于Windows平台的语言,而是应当教一些跨平台语言,在像Ch这样的平台上流畅运行,这是落实国家软件发展战略的需要。
其次,Ch平台既可编译执行,又可解释执行,具有良好的交互性。
过去,很多学校将BASIC语言作为程序设计的入门语言,就是考虑到解释执行的BASIC语言比一般编译执行的语言更容易学。
可是BASIC语言的用途有限,不宜作为程序设计语言的首选,而C/C语言的功能强、应用广,但却难教、难学。
现在,Ch语言平台支持了C语言的所有特性和C语言的大部分特性,又具有解释执行语言易教、易学的优点,很适合作为程序设计语言教学的首选。
一些学校的教学实践表明,采用Ch教学的效果比较明显,老师和学生的反映良好。
此外,Ch还是一个可嵌入的脚本引擎,可以无缝地嵌入到已编译的程序中,因此可以用C/C脚本做柔性编程,这使Ch特别适合应用于嵌入式系统。
目前中国已成为一个制造大国,但中国制造业的附加值和利润大多很低,缺乏竞争力。
为了优化我国制造业的产业结构,就要大力发展嵌入式系统提升制造业的竞争力,因此我国迫切需要大批掌握嵌入式系统核心技术的人才。
如果学生掌握了Ch,就会比较适合承担与嵌入式系统相关的工作,较好地适应人才市场的需求。
这是因为,一方面,大多数嵌入式系统是用C/C编程的,另一方面,Ch作为一个可嵌入的脚本引擎,可以提高嵌入式系统的效能。
最近的“黑屏”事件促使人们重新审视中国的信息安全问题和计算机的教育培训问题。
人们发现,过去中国的计算机教育培训体系过分倾向于微软一家公司的产品,而其他大国都不是这样。
如美国排名靠前的十多所名牌大学的大多数计算机系都配备Unix或Linux实验室,许多大学只有Unix或Linux实验室,只有极少数只配备Windows实验室;俄罗斯信息技术和通信部长要求,到2009年,俄罗斯所有学校都安装LinuxRissian OS。
近年来,我国有关部门也已着手改革如在40所重点大学建立Linux技术培训与推广中心等,但要完全纠正上述倾向,还要继续努力。
我们相信,在程序设计语言教学中推广Ch平台,将会有助于推进计算机教育培训体系的改革。
34 Computer Education 专题策划二 文章编号:1672-5913200905-0034-13 Ch:面向交互式教学的跨平台 C/C解释计算环境 程 辉 美国加州大学戴维斯分校 摘 要: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语言较难学,熟 特别鸣谢:该项工作得到美国加州大学戴维斯分校大学外联和国际合作项目University Outreach amp International Programs的资助,在此特别表示感谢。
作者简介:Harry H. Cheng程辉,博士,ASME会士,IEEE 高级会员。
现为美国加州大学戴维斯分校机械与航空工程、计算机科学教授 集成工程实验室主任http://iel.ucdavis.edu。
Ch平台的设计者、开发者和使用者,曾参加C语言国际标准的修订工作,最新的C语言国际标准C99采用了多项Ch功能。
联系方式:hhchengucdavis.edu 35Computer Education 专题策划二 练掌握更需要相当长的时间。
本文介绍的Ch是跨平台的C/C解释计算环境,对于提高计算机编程入门教学具有良好的效果。
2 背景 在过去的十多年中,编程范例发生的转变包括从非移植性特定语言编程到可移植性快速应用开发,从私有语言到开放语言,从系统编程语言到脚本语言。
当初设计和开发Ch的主要目的是为了更有效地进行C语言计算机程序设计入门教学,同时兼顾智能机电系统方面的科研和工程应用12。
经过十多年的教学实践和工程应用并不断完善,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 number6和可变长数组variable length arrays VLAs7等原先在Ch中实现的新特性都添加到了的最新C语言标准C998中。
与其他大部分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的这些独特功能。
图1 Ch和其他一些计算机语言和软件包的关系 3 Ch是一个跨平台的C/C解释器 在处理某些任务时,C语言功能及其编译/链接/运行/调试等繁琐过程不尽完美且效率不高。
随着计算机硬件越来越便宜,计算速度越来越快,Ch作为跨平台C/C解释 36 Computer Education 专题策划二 器,其在程序设计效率、柔性及成本方面的优势已被越来越广泛应用,特别是在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、Linuxx86、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的命令行叙述中只显示提示符gt,而不列出完整路径。
图2 Ch命令shell用户界面 Ch shell会对输入的C语言表达式直接进行求值,并将结果显示于屏幕上。
比如,输入表达式132,输出的结果为7,如图3所示。
图3 Ch shell对输入的C语言表达式直接求值并显示结果 任何有效的C语言表达式都可以在Ch shell中求值。
因此,把Ch当作计算器使用也是相当方便的。
再举一例,在提示符后声明变量,接着在随后的计算中使用该变量,如图4所示。
图4 把Ch当作计算器使用 以上C语句中,i是一个4字节的int型变量,i的整数值30将以十进制、十六进制和二进制数显示。
Ch shell还可以方便地检查C语言结构或C类的对齐,如图5所示。
图5 使用Ch shell检查C语言结构或C类的对齐 本例中的int和double虽然分别占4和8个字节,但为了对齐,结构体s的int和double两个字段共占16个字gt struct tag int i double d s gt s.i 20 20 gt s .i 20 .d 0.0000 gt sizeofs 16gt 132 7 gt int i gt sizeofint 4gt i 30 30 gt printfquotxquot i 1e gt printfquotbquot i 11110 37Computer Education 专题策划二 节,而不是12个。
3.2 交互式解释执行C/C函数和程序 除了C语句和表达式之外,C语言的函数和程序也可以在Ch shell中进行交互式解释执行。
C语言标准库中的所有函数都可以进行交互式执行,也可以在用户自定义的函数中使用。
比如,在交互式解释执行如图6所示的
代码: 图6 交互式解释执行
代码 在随机数值生成函数rand中种入时间值srand timeNULL。
在命令行中定义并调用的函数add依次调用了泛型数学函数sin。
函数文件中定义的函数也可被其他程序和表达式在命令外壳直接调用。
Ch的函数文件是一种扩展名为.chf的文件,此类文件只含有一个函数定义。
函数文件名和函数定义名称必须是相同的。
图7 函数文件addition.chf 比如图7中的程序addition.chf就是函数addition的函数文件。
函数addition可以用于程序或如图8所示的命令外壳中。
C/C程序无需编译即可直接进行交互式执行。
比如,要运行图9中的“hello.c”程序,只要在Ch命令shell中输入命令“hello.c”,得到的结果就是“Hello world”,如图10所示。
图8 函数addition用于命令外壳中 图9 “hello.c”程序 图10 C程序“hello.c”运行结果 3.3 使用ChIDE编辑和调试C/C程序 Ch由上述命令外壳command shell和一个集成开发环境Ch Integrated Development Environment,ChIDE两大模块构成。
ChIDE允许用户在IDE中编辑、调试或运行C/C程序,其用户界面支持包括中文在内的30多种语言。
ChIDE中含有现代IDE中常用的大部分功能。
比如,它具有自动语法高亮显示,可帮助用户发现程序的一些语法错误。
用户可设置断点,单步运行程序,在程序运行过程中监视变量和表达式值并修改变量值。
ChIDE操作简便,是专门为教师授课和学生学习而开发的。
ChIDE的特征和布局都是针对那些没有任何编程经验的初学者而设置的。
比如,如图11所示,程序func.c连续或单步运行停在第9行时,可以在ChIDE中间的调试窗格内监控局部变量和全局变量的值。
变量a和i以及表达式2g的值可以通过将相应命令输入右下角的调试窗格中获取。
教师课堂演示时,还可以方便地改变ChIDE中程序的字体大小。
/ File: addition.chf / int additionint a int b int c c a b return c gt int i 10 gt i addition10 i 20 gt srandtimeNULL gt rand 4497 gt rand 11439 gt double adddouble a double b double c return absin1.5gt double c gt c add10.0 20 30.9975 / File: hello.c / include ltstdio.hgt int main printfquotHello worldnquot return 0 gt hello.c Hello world 38 Computer Education 专题策划二 图11 用ChIDE单步执行、监控变量并在调试 命令窗格中使用调试命令 4 Ch的高级科学计算功能 科学数值计算并不是C语言设计的最初目的。
比如,在C89中就很难处理多维数组。
C99为C语言添加了可变长数组和复数,使得数值计算得到极大简化。
Ch进一步扩展了C99的数值计算功能。
在Ch中,数值分析方面的复杂问题往往只需调用一个函数即可解决。
本部分将阐述Ch在科学计算方面对C语言进行的扩展。
这些数值扩展极大地简化了工程和科学中复杂问题的编程。
很多工程和科学上的实际问题都可以在课堂演示,在课后练习和项目训练中轻松解决,提高了教学的实用性,并极大地激发学生对计算机编程的兴趣和学习的积极性。
4.1 高级数值计算 Ch支持作为一类对象first-class的计算数组computational array。
计算数组可以由类型声明符array进行声明。
一维的计算数组作矢量处理,而二维数组则作为线性代数矩阵处理。
对计算数组进行运算的操作符重载遵循线性代数的运算规则,如图12所示。
图12 由类型声明符array声明计算数组 本例中,函数transpose和inverse分别用于计算转置矩阵和逆矩阵。
对关键词array的处理方法跟C99中关键词complex的相同。
在程序中使用计算数组时,应该包含头文件array.h。
如果程序中没有包含头文件array.h,那gt array double a23 123456 b22 gt b atransposea 14.0000 32.0000 32.0000 77.0000 gt binverseb 1.0000 0.0000 0.0000 1.0000 gt a 100a 5 105.0000 205.0000 305.0000 405.0000 505.0000 605.0000 39Computer Education 专题策划二 么标识符array仍可作为变量名使用。
Ch含有针对科学数值计算的高级数值分析函数库。
比如,线性方程组Axb,其中: 2306A121 b1300125x???????????????????????????????????????? 通过图13中的程序linsolve.ch调用函数linsolve进行求解,输出结果如图14所示。
图13 用数值分析函数linsolve求解线性方程组 图14 求解结果 头文件numeric.h包含头文件array.h和数值函数的函数原型。
函数linsolve的算法基于广为应用的
开源LAPACK,直.
上一篇:
CodeBlocks中文版使用手册
下一篇:
关于大学英语教学