时间:2022-08-22 03:37:24
序论:写作是一种深度的自我表达。它要求我们深入探索自己的思想和情感,挖掘那些隐藏在内心深处的真相,好投稿为您带来了七篇编程语言范文,愿它们成为您写作过程中的灵感催化剂,助力您的创作。
关键词:单片机;编程
中图分类号:TP312文献标识码:A文章编号:1009-3044(2007)03-10765-01
1 引言
随着单片机技术日新月益的发展,学习它的人可是越来越多了。对于初学者来说,好多人一开始总会被单片机的各种各样的编程语言搞糊涂了。因为单片机目前的编程语言常见的有四种,即汇编语言、C语言、PL/M和BASIC。究竟要学哪一种编程语言好呢?我们先来做个比较吧。
2 单片机的BASIC编程语言
BASIC是一种高级语言,它的英文含义是“初学者通用符号指令代码”,是在1965年5月,由美国科学家托马斯・库尔兹研制出来的。10多年后,微软公司把它移植到微型机上。几十多年来,BASIC语言一直被认为是初学编程的语言。它已经由QBASIC发展到VB#版本,具备了很多结构化思想和编程方式,如函数、模块、局部变量、全局变量、数据传递等。早期的BASIC语言由于生成的代码不是最终目标机器的代码,而是经过一个RUNTIME程序解释后运行的,所以执行效率低。而单片机的BASIC编译器是直接将程序代码编译成相应芯片的机器码,不需要在单片机的内存中驻留RUNTIME程序,执行效率与其他编译器编译出来的一样。
我们现在以MCS-Electronics公司开发出来的BASCOM-8051开发环境为例,简要介绍一下以BASIC语言为基础的单片机编程系统。
它和一般BASIC语言一样具有如:For、To、Step、If、Else、End 、Select Case等等命令,其用法及功能是没有什么区别的,因此初学者比较容易入门。
另外,它还有针对单片机硬件所设计的命令如:LCD命令可以用一条命令来实现LCD的显示操作。
Cls '清LCD屏
Lcd"Hello world." '向LCD输入字符串
类似于这样的命令主要是提供了直接对单片机及其外部硬件的操作,特别是提供了对单片机端口的直接操作,如:P1、P2、P2.1、P0.3等等,简化了整个开发过程,是开发人员重点学习的部分。
例如有硬件电路如图(1)所示,编程使发光二极管间隔两秒钟闪烁一次的程序如下:
While I = 2
P1.0 = Not P1.0
Wait I
Wend
End
3 单片机的PL/M编程语言
PL/M 语言是Intel公司从8080微处理器开始为其系列产品开发的编程语言,其特点是:
3.1 简单易学
PL/M-51语言只有两类语句:一类是说明语句,用于说明变量和过程;另一类是可执行语句,如赋值语句、条件语句和循环语句等。这些语句的功能和BASIC语言中相应的语句相似,如:
P1=02H;/*赋值语句*/
IF M>2 THEN N=P1;/*条件语句*/
DO I=0 TO 10;/*循环语句 */
3.2 可读性好
PL/M-51是一种结构化语言,其程序是块式结构,可采用缩进式方法书写源程序,使程序层次清楚,便于理解和阅读。一个完整的程序可由多个模块组成,而每个模块又是由多个程序块构成。
3.3 可靠性高
PL/M-51编译软件检查用户程序对单片机的各种资源使用情况,对冲突使用情况或不合理使用情况能提出警告,并能自动为用户程序合理分配内存。
3.4 隔离性好
PL/M-51中,既可有全局的静态变量,也可有局部的动态变量,对于全局性的静态变量,其性质和BASIC中的变量一样,该变量在整个程序中均有效。对于局部的动态变量,它只有在其所说明的程序块中或过程中有效,在该程序块或过程之外则无效。局部动态变量的特点是,当由多个人共同编制一个程序中的不同模块时,而不必担心是否使用了相同的标识符而发生冲突。模块化的程序设计增加了程序设计的灵活性的方便性。
3.5 兼容性好
PL/M-51可同汇编语言或其他语言的目标模块连接起来,生成可执行代码如果用户必须使用汇编语言编制一段程序,或是想利用已调好的汇编语言程序块,那么该段汇编可以很方便地连接到PL/M-51程序目标块中。
3.6 具有良好的算法库和库管理能力
PL/M-51语言具有INTEL公司所提供的算法库和库管理功能用户能利用现成的算法库完成加、减、乘、除等运算,并能建立自己的特定算法库,使得编程一劳永逸,提高软件的开发效率。
由上面几点可见,PL/M语言是类似于Pascal一种语言,是一种结构化语言。PL/M编译器好像汇编器一样可产生紧凑代码,可以说它是一种"高级汇编语言",可详细控制着代码的生成。但对51系列的单片机来说,PL/M不支持复杂的
算术运算、浮点变量而无丰富的库函数支持。学习PL/M无异于学习一种新语言。
4 单片机的汇编语言
汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少,程序执行效率高,由于它一条指令就对应一条机器码,每一步的执行动作都很清楚,并且程序大小和堆栈调用情况都容易控制,调试起来也比较方便。但是不同的类型的单片机,其汇编语言可能有点差异,所以不易移植。比如你在PIC12CE518单片机上用汇编语言编了一个程序,到了STC89C51单片机上那可就运行不了,因为他们的指令系统是有区别的。
单片机的汇编语言非常像其他汇编语言。指令系统比第一代微处理器要强一些。但单片机拥有不同存储区域使得其编程变得复杂一些,可是作为一位电子工程师,懂得汇编语言就可帮助你了解影响任何语言效率的特殊规定。例如,懂得汇编语言指令就可以使用在片内RAM作变量的优势,因为片外变量需要几条指令才能设置累加器和数据指针进行存取。同样的,当要求使用浮点数和启用函数时也只有具备汇编编程经验才能避免生成庞大的、效率低的程序,对于这方面的编程,没有汇编语言是做不到的。
5 单片机的C语言
单片机的C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。C语言具有功能丰富的库函数,运算速度快,编译效率高,有良好的可移植性,而且可以实现直接对系统硬件的控制。此外,C语言程序具有完整的程序模块结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障。与汇编相比,有如下优点:
(1)对单片机的指令系统不要求了解,仅要求对51的存储器结构有初步了解,至于寄存器分配、不同存储器的寻址及数据类型等细节均由编译器管理。
(2)程序有规范的结构,可分为不同的函数。这种方式可使程序结构化,将可变的选择与特殊操作组合在一起,改善了程序的可读性。
(3)编程及程序调试时间显著缩短,从而提高效率。 提供的库包含许多标准子程序,具有较强的数据处理能将已编好程序可容易的植入新程序,因为它具有方便的模块化编程技术。
单片机C语言作为一种非常方便的语言而得到广泛的支持,C语言程序本身并不依赖于机器硬件系统,基本上不做修改就可根据单片机的不同较快地移植过来。
综上所述,单片机的四种编程语言各有各的优缺点,作为单片机初学者,笔者认为还是应该先学习汇编语言,不一定要学得很精很熟悉,但要有一定的了解。因为汇编语言程序除了具有简洁明快、跳跃性强、占ROM资源少等优点以外,还因它和单片机底层硬件紧密联系,可以让初学者更加了解单片机硬件系统各种资源,熟悉各个功能模块的作用,从而为编出更高效率的程序打好扎实的基础。
用单片机汇编语言编写的程序代码效率高,但学习起来相对难度较大,而且对于一个大型项目,如果完全采用汇编语言来编程,就显得很繁琐,尤其是遇到算法方面的问题时,汇编语言根本就应付不了。况且现在单片机的主频在不断的提高,在高频率时钟的作用下,我们完全不需要那么高效率的代码;另外,单片机的ROM和RAM空间也在不断的增加,足够装得下你用C语言写的任何程序代码,单片机C语言相关的资料又多又好找,可移植性非常好,比如只需要改变一个IO口写个温度传感器的程序在任何一个单片机上都能使用。由此可见用单片机C语言进行程序设计,已成为单片机软件开发的一个主流,作为一个技术全面并涉足较大规模的软件系统开发的单片机开发人员最好能够掌握基本的C语言编程。
当然,有时候用单片机C语言也不能够实现所有要编写程序的功能,比如当想编写一个精确控制的定时程序时,用起汇编语言来还是比较方便的。因此想成为一个优秀的单片机编程技术员,最好就是能懂得单片机C语言和汇编语言的混合编程。
参考文献:
[1]蓝点方舟科技网. . 8051系列单片机BASIC语言开发环境简介[Z].
[2]/. PL/M-51高级语言特点[Z].
[3]王杰洁,耿英杰. 单片机C语言和汇编语言的简单比较[Z].
[关键词]编程语言;计算机;分析研究
中图分类号:TP311.11 文献标识码:A 文章编号:1009-914X(2017)02-0115-01
一、计算机编程语言的主要类型
(一)C语言
在20世纪80年代,C语言即得到了广泛的应用,同时由于其是基于B语言而开发所得,因而C语言在应用过程中逐渐凸显出兼顾高级语言、低级语言的优势,因而在当代计算机软件开发过程中应强调对其的合理化运用,同时将其含有的34种运算符、9种控制语句贯穿于计算机编程语言设定过程中,由此来丰富计算机语言表达能力,并强化其与用户间的有效沟通。此外,就当前的现状来看,现在的C语言包含有C、C++、C#和Objective-C语言等几种类型,因而由此呈现出语言紧凑、使用灵活、自由度较高的特点,为此通过对C语言的应用可由此优化语言交流环境,同时激发用户语言应用兴趣。另外,图形功能、逻辑判断功能、计算功能亦是C语言应用过程中凸显出的主要优势,即其可将抽象的数据信息直观化,因而应注重将其应用于计算软件开发过程中,并以C++、C#和Objective-C的设计形式扩大C语言应用范围[1]。
(二)Vinsual Basic语言
Vinsual Basic语言即可视化语言于1991年被相关专家学者开发出来,Vinsual Basic语言在运用的过程中透过面向对象机制⒏丛映绦蛏杓莆侍饧虻セ,且由此整合成对象集,继而便于用户对自身所需数据进行整合与操控。Vinsual Basic语言与C语言相比,其应用优势主要体现在以下几个方面:第一,Vinsual Basic语言在应用过程中由于其具备事件驱动编程及可视化编程特点,因而用户可透过该语言全面掌控到程序运作过程中所涉及到的内容,并对其进行合理化操控;第二,Vinsual Basic语言在开发过程中逐步实现了界面与程序的同步运行,即用户可通过界面操控不同类型对象,并基于编程简化的基础上对后期工作进行维修;第三,Vinsual Basic语言在应用过程中其适用范围较为广泛,因而可强化对其的有效应用[2]。
(三)JAVA
JAVA于1995年5月被推出,其作为程序设计语言中的一种,可实现跨平台、动态的Web、Internet计算,同时被广泛应用于Web设计领域中,支撑当前浏览器的运用。此外,就当前的现状来看,JAVA程序设计语言在应用过程中需要应用编程接口、虚拟机等部件的支撑,最终为Web服务、通信API等提供了良好的服务项目。
二、计算机编程语言选用原则
就当前的现状来看,计算机编程语言选用原则主要包括以下几个方面:第一,在计算机编程语言选择过程中应充分考虑到硬件环境因素的影响,且结合硬件技术更新速度较快的特点,尽量在计算机语言编程过程中将软件调整控制在较为简便的状态;第二,平台的支持性决定着编程语言应用成效,因而在计算机编程语语言选用过程中亦应强调结合C语言、Vinsual Basic语言、Python、PHP、JAVA各自优势,继而达到良好的语言选用状态;第三,在软件开发过程中由于计算机编程语言是程序运行的关键,因而程序员应对程序总体需求展开调查行为,且对其需求数据信息进行整合,继而在此基础上选用适宜的编程语言应用类型,避免编程错误问题的凸显;第四,在计算机编程语言选用过程中充分考虑程序员对编程语言熟悉度及语言开发成本是非常必要的,因而应着重提高对其的重视程度[3]。
三、常用的计算机编程语言选用技巧
基于计算机编程语言选用的基础上,要求程序员在C语言选用过程中应注重结合其可移植性,以混合编程的方法来达到语言选用目的。同时随着现代化计算机技术的不断发展,高校在开展实践教学过程中逐渐将C语言纳入课程教学范围内,就此提高了学生C语言应用能力,因而在计算软件开发过程中应着重强调对C语言的选用。此外,在Vinsual Basic语言选用过程中应注重结合其执行效率较低的特点,将其应用于复杂的程序环境下且保障执行效率满足程序运行需求。另外,在利用汇编语言进行程序编写的过程中应注重结合其结构较为复杂的特性,将其应用于初始化程序编写过程中,以此来形成效率较高的语言编写状态,并就此满足程序运行需求。在JAVA语言选用过程中应注重将其置入到Web服务环境下,同时提供灵活的环境,且以一次应用程序编写的形式将其应用于设备中,同时在JAVA语言选用过程中配置+、-、++、a>b?true:false等运算符号,由此满足JAVA语言应用需求。而在PHP语言选用过程中,应有助于结合PHP语言可应用于所有流行数据库、操作系统的特点,在语言选用过程中将其置入到特定环境下,并注重以C、C++进行PHP程度语言的拓展,且注重在PHP计算机编程语言选用过程中配置IS API筛选器,达到语言应用目的。除此之外,在Python计算机编程语言选用过程中应注重将其应用于EXCEL等日常操作中[4]。
结论
综上可知,编程语言的选用在计算机软软件开发过程中起着至关重要的影响作用,因而在此基础上为了提升整体程序运行效率,要求程序员在实际工作开展过程中应强化对汇编语言、Vinsual Basic语言、C语言优势的掌握,并结合编程语言选用技巧达到良好的语言选用状态,且就此提升整体软件开发效率,满足程序编写需求,同时就此提升计算机整体使用性能,与用户达成良好的语言交流及沟通。
参考文献
[1] 滕飞.基于C语言的计算机软件编程实验研究[J].无线互联科技,2014,21(11):47+79.
[2] 邢如意.Linux系统下计算机C语言的编程技巧分析[J].电脑知识与技术,2014,45(36):8674-8675+8690.
关键词:Web应用开发;JAVA编程语言;应用
JAVA编程语言顺应潮流随着互联网的兴起而成长壮大以其安全性、可移植性、多线程等特性赢得广大开发者的追捧。虽然JAVA在某些特定领域不是最优解,但作为互联网与产品需求间的衔接工具,JAVA仍然展现出其强大的适应能力和表达能力,相信在未来的一段时间里它仍然有很强的生命力和强大的号召力。
1 Web应用的特点
1.1 免安装
与以往的C/S模式不同,若想使用Web应用程序,你不再需要下载安装专用的客户端软件,无论你在什么地方使用什么样的网络什么样的操作系统这些都不会成为限制,只需要接入互联网打开浏览器输入Web应用的访问地址即可立即与服务端建立连接进行信息的交互。
1.2 最新内容
无需安装专用的客户端也就没有客户端版本限制的问题更没有客户端升级过程。只要通过浏览器打开Web应用程序,呈现在用户面前的总是最新的版本(此处可暂时忽略各级缓存造成的版本不同步问题)。
1.3 跨平台
当下的Web访问通常是基于开放的HTTP应用层协议的,所以只要依照HTTP协议标准开发Web浏览器就能与Web应用交互信息。由于在不同的平_都已经有了比较成熟的浏览器Web已经具备了类似于JAVA的“一次编写随处可用”的特性,系统运行环境不再是难以逾越的障碍。
1.4 开放互联
Web应用程序可以通过链接将彼此联系在一起,上一秒还在国内门户网站浏览下一秒可能就跳转到了国外的某个新闻站。每一个链接都能将用户引导至相应的内容上,所有用户都可以公平地访问内容,并产生新的内容。信息的传播与获取都只在弹指一挥间。
1.5 足够快
无论是服务器、数据传输设备还是互联网终端,硬件的进步从来没有停止过,计算、传输、渲染速度提升都已超乎想象,如今一部手机的硬件参数已经可以比肩三两年前的笔记本电脑甚至是台式机。硬件性能提升量的积累最终导致了一个质的转变:对于越来越多的软件而言,Web应用程序已经足够快,原生应用在逐渐被替代,轻结构的应用程序原来越多。
2 JAVA语言在Web开发中的优势
2.1 简单的语法
对于使用过C++、.NET甚至Javascript脚本语言的人而言上手JAVA不会非常困难,初学者总可以在JAVA中看到一些熟悉的影子。语法的通用性降低了学习的成本,这也是JAVA长期登上TIOBE排行榜的原因之一,也是使用者众多的原因之一。
2.2 平台无关性
平台无关起初是JAVA语言最大的卖点,虽然这一特性不是JAVA首创但无疑是JAVA使这一设计理念在代码界家喻户晓。JAVA虚拟机与字节码的组合使得支持JAVA虚拟机的系统都可以运行JAVA程序,“一次编程到处运行”从此真正地走进大众的视线之内掌握在广大程序员手中。
2.3 强大的类库
对于很多JAVA开发者而言所需要做的就是引用类库拼装优秀的已有代码,经过二十几年的发展JAVA编程语言基本上已经拥有了覆盖各行各业各种需求的类库。如果你使用JAVA编程并且遇到了一个非常棘手的问题,那么首先应该想到的肯定不会是自己动手去开发一个功能完善的类库,所有的JAVA程序员都知道不再需要重复地造轮子。
2.4 丰富的框架
做JAVA开发的程序员尤其是JAVA EE开发的程序员几乎不可能没听说过SSH框架,尤其是Spring,经过十几年的发展如今Spring已从一个轻量级的JAVA开发框架成长为全套的企业应用解决方案,并将触角延伸至移动端,它是JAVA语言在互联网行业广泛应用走向成熟的标志也是开发者学习各种设计模式的优秀样例。
2.5 成熟的中间件
Web中间件是一个能够独立运行的平台,它为上层的Web应用系统提供一个运行环境,并通过标准的接口和API来隔离其支撑的系统。有了中间件程序员的职责划分将更加清晰,开发效率也迈上了一个新的台阶。在中间件的辅助下架设一个Web应用将会是非常简单轻松的一件事。
3 JAVA语言在Web开发中的价值
3.1 JAVA的角色
毫无疑问JAVA语言胜任了早起Web开发的大量工作,在Web开发中JAVA可以编写客户端小程序、编写网页、处理Http请求、做业务逻辑处理、访问数据库、对接消息中间件、访问缓存等等。不过我们也看到了前后端分离JSP在逐渐退出历史舞台,还有已经退出历史舞台的applet,所以JAVA语言也并不是什么都擅长。如今,对于普通开发者而言JAVA在Web开发中更多地是承载业务逻辑。
3.2 Web开发需要什么
不是每一个网站、服务端都需要应对高并发、海量数据或满足高度一致性、高度实时性的要求,这些苛刻的条件在Web开发中通常也不会只采用一种语言去应对解决。根据特定的场景使用合适的技术、架构,此外还要认清一点:“技术不是解决问题的唯一途径,业务的问题也可以通过业务本身的合理安排来满足”,只有这样才能在Web开发中拥抱变化适应并生存。不使用JAVA一样可以开发出优秀的Web应用,今天如此未来更是如此,语言会随着方法的持续改进、经验的总结、新思想的产生而发生翻天覆地的变化,即便没有JAVA人们对信息化的需求依然存在。
4 JAVA语言在Web应用开发中的心得体会
在解决现实生活中的问题时需要充分结合JAVA语言的具体特性,根据需求方面的具体要求对问题域进行深入的分析,并在开发的过程中不断提炼、认识问题域。在开发Web应用时更多的需要考虑系统的可用性、扩展性、安全性、伸缩性,所以拘泥于某一种语言的特性或者语法并不利于解决问题,跳出语言的限制去思考问题更容易找到问题的根源。进阶时需要对JAVA虚拟机有所了解,jstat、jstack等常用的命令将会在紧急时刻协助你解决重大的卡死问题。学习JAVA语言在于不断地积累,不断地寻求挑战即便是简单的代码也有改进的空间,寻找改进空间的过程就是个人提高的捷径。
5 结束语
JAVA语言是互联网中众多语言中的一种,在互联网飞速发展过后JAVA语言大浪淘沙在TIOBE排行榜中稳居前三,并且在嵌入式设备、桌面设备、企业服务器三大领域各有建树。我们在称道其取得成绩的同时也应深受启发,唯有适应市场变化满足开发者偏好并且有严格规范的标准才能在各行各业开疆扩土。互联网作为工具将与用户日益丰富的信息化需求一路携手更丰富易用的JAVA语言特性深入人们未来的生活。
参考文献
[1]叶红美.计算机软件Java编程特点及其技术分析[J].电脑编程技巧与维护,2017(02).
[2]刘亦.计算机软件的设计与实现[J].电子技术与软件工程,2015(23).
[3]阿布都拉・买买提.关于计算机软件维护和管理的研究[J].信息与电脑(理论版),2015(17).
[4]许娜,刘景慧,刘敏,等.Java课程体系教学改革方案[J].中小企业管理与科技(上旬刊),2015(06).
摘要:本文以“C++程序设计”课程为对象,探讨了大学编程语言课的实例教学方法,进行了C++程序实例设计,并提出构建一个基于Web的程序实例自学系统,弥补了课堂教学实例数量不足的问题,同时在系统中提供了自适应实例学习控制策略作为学生实例学习的指导。
关键词:实例教学;实例设计;自适应;实例学习策略
中图分类号:G642
文献标识码:B
1引言
在编程语言课的教学中,程序实例具有非常重要的意义。好的实例设计有助于学生对内容的理解;大量实例的累积可以达到量变到质变的作用,使学生从看懂到领悟。在教学过程中,实例的选择和对学生实例学习的指导都将对编程语言课的学习有很大帮助。本文以“C++程序设计”课程为例探讨了实例教学方法。首先确定基于实例教学的总的思想和方法,然后重点探讨实例的设计和一个基于Web的自适应实例自学系统。
2基于实例的教学
C++课程基于实例的教学从两方面入手。其一为教学中恰当的实例选择运用;其二为课余时大量的实例提供与自学指导。具体包括:
(1) 实例运用上注意实例的连贯性,若知识点相关,则采用同一系列实例进行扩展,即题目内容相近,但针对不同知识点做局部改变扩展,使能快速理解实例,并专注于教学点。
(2) 适当采用实例的归纳、对比、类比等方法。如穷举法,通过多种实例类比,说明什么问题可以用穷举法解决;又如面向对象程序架构与程序设计思想,通过对同一问题进行结构化设计和面向对象设计的对比。
(3) 伴随教学进度分解一个复杂的综合实例,逐步讲解程序设计方法思想。采用问题引导的方法,由综合实例的某个步骤提出问题,引出新知识点,改进程序,层次推进至最终完成问题。
(4) 每讲完一次课程后,为学生总结本次课程的语法知识点和程序设计思想。提示下堂课将会涉及的前序知识点,以及与下堂课有直接关系的前序实例,并提出预备问题。布置与课堂实例的算法相似的程序作业,学生能通过知识的直接迁移来完成作业。
(5) 要求学生在课余根据相应知识点通过实例自学系统学习并练习相应实例来达到进一步的练习和提高,系统会根据学生在实例库中的学习情况进行相应的控制指导。
3C++程序实例设计
程序实例的设计是实例教学的重点,通过对领域知识点的分析总结,有针对性的进行实例设计。同时实例之间并不是孤立的,有意识的设计了有联系的各种实例组,形成系统的全面的实例库。
3.1领域知识点总结
对于“C++程序设计”课程,领域知识点涉及两个方面,其一为C++语法理解与应用,其二为如何应用程序设计思想解决实际问题。
首先从语法角度开始,每个语法考察点都是一个领域知识点。如:各种基本数据类型的长度、文字常量表示、符号常量表示、变量定义和类型转换等。
从程序设计角度讲,程序设计相关理论方法技巧都是一个领域知识点。程序设计思想涉及递归、迭代、穷举和分治等。程序设计方法与技巧包括数据设计、算法设计和程序架构设计。数据设计包括简单数据设计、数组数据结构应用和结构体应用等;算法设计包括分支算法、循环算法、循环嵌套和循环与条件语句的嵌套等多种程序设计技巧;程序架构设计包括函数设计和程序架构组织。面向对象程序设计思想包括类的抽取与设计(属性设计、方法设计、构造方法设计、访问控制设计)、应用类属性与类方法解决问题,应用类的聚合解决相应问题和应用类间的消息连接解决相应问题等。
3.2基于领域知识点的实例设计
将C++程序实例分为三个层次:
(1) 纯语法实例:用于演示基本语法,可以没有实际含义;
(2) 算法实例:有一定实际意义的算法思想实例,用于演示程序设计思想和方法技巧;
(3) 综合实例:需要多个知识点的综合设计实例,重点演示解决问题的思维方式和程序架构。
纯语法实例设计中,为每个语法知识点都设计若干相应的语法实例程序,一个实例会涉及多个语法知识点,但会有重点演示的语法知识点。将设计好的程序进行题目设计,通过总结学生作业、考试中的问题,找出相应语法容易出错的形式,设计了相应的问题形式,如读程序写结果,程序填空,错误辨析等。
算法实例一般都是解决实际问题的题目,针对每个程序设计方法知识点设计算法实例。每个实例涉及一个或多个重点演示的设计知识点。如鸡兔同笼问题,水仙花数问题应用的是双重循环技巧,也是穷举设计思想。
综合实例都是有一定意义的较复杂的实际问题,如我们设计的学生成绩分析系统,模拟停车场辅助系统,模拟选课系统等。综合实例只给出问题描述,而不是具体要求设计哪些类,哪些函数,锻炼学生对复杂问题的整体分析设计能力。每个实例都尽量将多个知识点应用进来。如学生成绩分析系统涉及类、对象、类的组合、模板、排序算法、文件操作和运算符重载等。模拟停车场系统也涉及类对象、继承、多态、类的组合、数组和搜索算法等。并且将每个综合实例分解为若干阶段,多个子问题,随着教学进度不断扩展引入新问题,通过不断修改程序来解决新的问题。
3.3实例的组织
在实例设计中,每个知识点都设计若干个实例。除了针对知识点外,还根据知识点之间的相关关系,递进关系,有意识的设计有各种联系的实例,创建多种形式的实例组。如:类比实例组(题目不同,算法相同);对比实例组(题目相同,算法不同);扩展实例组(基于知识点的递进关系,不断扩展的系列实例)等。
4基于Web的自适应实例自学系统
课余时大量的实例提供与自学指导是实例教学设计的一个重点。如何能达到这个目的,我们探讨了一个基于Web的实例自学系统,根据目标知识点,教学进度,实例的难易程度,实例之间的关联,以及学生的学习情况为学生选择实例,指导学生对实例的学习。
实例学习的指导策略为:由语法到算法,由易到难;根据学习情况优先选择扩展实例,若当前实例不理解则选择类比实例,若还不理解选择前序知识点实例,若实例理解选择知识点的其他实例,适当选择对比实例,达到一定程度增加难度;追踪一个综合实例。保证选择的任何实例都不含未学习的知识点。
4.1创建程序实例库
实例库不是实例的简单集合,为了与教学顺序和教学目标配合,并且在学生进行实例学时时提供相应的控制,需要设计实例库的组织形式。
首先保存设计好的所有实例。三种程序实例需要处理的内容不同,故分别构建语法实例表(实例编号,题目描述,题目内容,问题讲解,难度等级)、算法实例表(实例编号,题目描述,分析,程序,讲解,难度等级)、综合实例表(实例编号,题目描述,实例分解步骤)以及综合实例步骤表(实例编号,步骤编号,问题描述,程序,讲解,难度等级)。
保存总结出来的领域知识点。由语法知识点表(知识点编号,标题,语法描述)和设计方法知识点表(知识点编号,标题,算法思想描述)描述。
构造实例与领域知识点之间的关系。每个实例都涉及一个或多个语法知识点,语法实例一般会有一个(或多个)主语法知识点,算法实例与综合实例的分步实例会有一个(或多个)主设计知识点。建立实例与知识点之间的关系表(实例类型,实例编号,相关知识点编号,相关知识点类型,是否主知识点),标识出实例涉及的所有语法知识点,并标出语法实例的主语法知识点,和其他实例的主设计知识点。表结构为。
建立实例之间的关系。由实例关系表(关系类型,关系编号,实例编号,备注)构建不同的实例组。
一般教学领域知识点间有固定的前序关系。但程序实例之间却没有先序关系,每个实例都是独立的。但一个实例一般会涉及多个语法知识点,虽然许多语法之间是没有先序关系的,但教学进度却使这些知识点有了先序关系。故实例使用的先后顺序与教学顺序有关。为了能正确的提供学生适宜的实例,除尽量提供一些仅涉及当前知识点的实例外,还要将每个实例涉及的知识点都详细指出,同时构建教学进度表,在学生自主学习过程中屏蔽没学过内容的相关知识点。教学进度表将相应的学习目标知识点表的知识点按教学进度标识出顺序关系,可直接在教学目标相关的两个表中增加一个字段标识顺序号。
4.2学生信息库
课程的每个学生都是系统允许的用户,为每个学生提供学习状况记录,这里称为学生模型。学生模型由三个表组成,分别记录学生的能力程度、学习过程和学生当前追踪的综合实例及当前步骤。根据学生的学习过程情况浮动学生的能力值。学习过程记录所学的实例编号,实例类型,实例难度等级,实例关系编号,学习状况。学习能力程度记录当前的能力,用一个0~100之间的数表示。
4.3自适应学习控制策略
学生学习过程中,若让学生随意选择实例学习,那么众多的实例会使学生无所适从,故系统设计了自适应学习控制策略,其结合教学顺序,教学目标,实例难度,实例关系,并根据学生的学习状况提供适于学生的实例建议。其控制流程如图1所示。根据学生模型选中恰当实例,学生学习一个实例时,学习完后由学生选择对实例的学习情况:不理解,理解,能编程。记录学生模型,从新计算学生能力值,然后根据学生能力和学生在当前实例的学习情况,根据约定的策略推荐下个实例(屏蔽掉当前不适于学习的实例)。
图1 自适应学习控制流程
(1) 实例选择策略。
将学生能力分为5个等级,分别为(bad,lower,low,middle,high)。若学生能力为lower则选择语法实例,否则进入算法实例与综合实例;若学生能力为low,则选择初级实例;若学生能力为middle,则选择中级实例;若学生能力为hign,则选择高级实例;若学生能力为bad,则回溯。回溯方法为查看当前所有不理解的实例,根据实例包含的知识点,找出使用最多的知识点,选择其教学实例,若有与本实例呈系列的实例优先选择。
若学生当前实例学习状况为不理解,且能力没降级,则选择类比实例,若能力降级则选择低一级难度实例。若当前学习状态为理解,则选择类比实例(并专注设计程序),若能力升级也可选择高一级实例。若学习状态为会编程,且能力没升级,则进入其他实例,否则提供更高一级实例。
(2) 学生能力计算。
学习过程中,初次进入系统学习能力程度设为50,每学习一个实例,若状况为不理解则能力程度降低,若为理解则能程度上升,若为可编程则上升幅度更大,能力程度升降分值具体如表1所示。依据量变到质变的原理,能力值累积到一定程度,在学生的能力进入新的等级。学习能力值与能力等级的关系通过一个映射关系描述:
系统当然也允许学生自主控制策略选择。尤其在课程学完进行总复习的时候。提供了多种查询方式。如查询包含某知识点的所有实例。可以按步骤查看综合实例,按系列查看相关实例等。
5结束语
在编程语言课教学中很多学生反映,课堂上的有些例子来不及细想就过去了,有些内容仅用了一个例子讲解印象不够深刻,多数学生表示希望多看一些实例,只是没有来源,也有些学生看了很多参考书的实例,但反映还是不懂或不会编程序。程序实例自学系统的形式可以提供大量实例,并指导学生慢慢体会,逐步深入。在有限的学时下,课堂教学实例需要精心设计,同时要提供大量实例供学生课下自学,本文正是针对此问题探讨的解决方法。
参考文献:
[1] Yuji Yoneyamaa,Kotaro Matsushitab,Kenneth J. Mackinb, et al. Puzzle Based Programming Learning Support System with Learning History Management[A]. 16th International Conference on Computers in Education[C],2008, 623-627.
[2] 程静,杨明,邱玉辉. 基于知识点对象的个性化学习系统实施[J]. 西南师范大学学报,自然科学版,2006,31(5):120-123.
[3] 刘伟,付璐,余英良. 个性化CAI中教学策略的设计与实现[J]. 河南科技大学学报,自然科学版,2007,28(2):44-49.
[4] Natalia Stash,Alexandra Cristea,Paul De Bra. Learning Styles Adaptation Language for Adaptive Hypermedia[A]. AH 2006[C],2006.323-327.
Discussion about Example Teaching for Programming Language Course
ZHANG Jing-hua
(School of Computer Science of Technology, North China Electric Power University, Baoding, 071003, China)
关键词:常用;计算机编程语言;分析;选用;技巧
中图分类号:TP311.1
从1946年第一台计算机诞生至今,计算机的发展日新月异。随着计算机技术的不断提高,计算机在应用范围也越来越广,普及程度越来越高。现代社会的大部分行业离开了计算机将寸步难行。计算机有利于减少人为产生的工作失误,极大程度上提高工作效率。要充分发挥计算机的作用,不仅要研究计算机的硬件设计,还要开发出能够满足人们需要的计算机软件。
人们通过使用计算机编程语言编写程序让计算机解决各式各样的问题。随着计算机的更新速度加快,软件开发在计算机领域中的地位越来越重要。要提高软件的开发效率,就一定要了解计算机的编程语言。计算机编程语言的类型多种多样,主要可以分为机器语言、高级语言和汇编语言。每一门计算机编程语言都有其优点和缺陷。一名优秀的编程程序员都会掌握多门计算机编程语言,在编写程序的过程中有技巧地选用合适的计算机编程语言,实现不同编程语言之间的互补,大力提高软件的开发效率和使用性能。在计算机的编程语言中,比较常用的有C语言、Visual Basic语言和汇编语言。
1 常用计算机编程语言分析
1.1 C语言
C语言是目前使用范围最为广泛的编程语言。世界上大多数的软件程序都是由C语言编写出来的。C语言出现于1972年,是在当时出现的B语言基础上发展而来的。经过十几年的发展,到了20世纪80年代,C语言由于兼顾了低级语言和高级语言的作用而得到广泛运用。
与其他编程语言相比,C语言具有不可比拟的使用优势,具体体现在以下几个方面:第一,C语言具有34种运算符,语言比较丰富,表达能力比较强;第二,C语言具有32个关键字,9种控制语句,语言紧凑简洁,使用方式灵活;第三,C语言程序设计自由度高,使用方便;第四,C语言的功能强大,具备强大的图形功能、计算功能和逻辑判断功能;第五,C语言设计的程序可以在大部分系统中运行,可移植性强,适用范围大。
当然,C语言也存在类型检查机制相对较弱等缺陷。为了弥补C语言的缺陷,20世纪80年代在C语言基础上发展出了C++语言。C++语言保留了C语言的优点,增加了面对对象的机制。C++语言的出现,改变了C语言开发大程序比较吃力的状况,扩大了C语言的使用范围。更重要的是,C++一种集面向对象编程、泛型编程和过程化编程于一体的编程语言,是编程思想革新的代表语言之一。
1.2 Visual Basic语言(可视化编程语言的代表之一)
Visual Basic语言是微软公司在1991年研发出来的一种编程语言。Visual Basic语言的基本思路就是采用面向对象的机制,将复杂的程序设计问题分解为相对简单的对象集。与C++语言相比,它的使用方式更加灵活方便。可视化编程和事件驱动编程是Visual Basic语言的显著特点。使用Visual Basic语言开发软件时看到的界面与程序实际运行的界面是基本一致的,改变了过去编写程序与界面开发不同步的状况。程序员在设计界面时可以通过使用控件画出不同类型的对象,无需通过编写程序,可以减少编程的工作量,简化编写程序也方便了后期的修改维护。事件驱动编程是指应用程序是由运行过程中的事件决定的,比如用户的鼠标触动等,不进行预定的运行路径设定。事件驱动编程一般用于协助开发环境,受到了程序开发领域的重视。由于Visual Basic语言包含了事件驱动编程语言和可视化编程,使得Visual Basic语言在软件开发领域中的适用范围非常广泛。
1.3 汇编语言
计算机系统的应用程序的汇编工作都要有汇编语言来完成。由于汇编程序是利用计算机的硬件特性并能直接控制计算机的硬件的语言,它的执行效率比较高,但是在编写程序和调试时会比较复杂。
1.4 三种语言结构对比
1.4.1 C语言举例
1.4.2 Visual Basic语言举例
1.4.3 汇编语言举例
1.4.4 结构对比结论
经过对三种语言结构进行对比后,我们可以发现Visual Basic语言的语言结构最简单,汇编语言的语言结构最复杂,C语言的语言结构复杂程度介于两者之间。
2 常用计算机编程语言选用
2.1 选用原则
在选择计算机编程语言时,要注意以下原则:第一,要充分考虑软件运行的硬件环境。软件开发使用的汇编语言必须使用与运行的硬件环境。同时,考虑到现在的硬件技术更新速度非常的快。过去可以适用的语言,硬件技术升级后可能就无法适用。因此,在编程时要考虑软件的调整问题,尽量使软件调整更加简易。
第二,要考虑平台的支持性。要考虑平台对编程语言的支持下,根据编程语言的优势进行语言选择,使得编程语言可以发挥最大的优势。
第三,要考虑编写程序的实际需求。要根据编写的程序和编程语言的特点,来选择计算机编程语言。在一些比较特殊的软件开发时,程序员要使用专业的编程语言。专业的编程语言可以有针对性地进行软件开发,节省编程时间,提高编程效率,减少编程过程中出现的失误。
第四,要尽量选择熟悉的编程语言。每一位程序员熟悉的编程语言类型都不相同。程序员在编写程序时选择自己熟悉的语言,可以节省大量的时间,也便于过后的程序维护和修改工作。
第五,要考虑到开发成本的问题。不同的编程语言的编写成本都不相同,程序编写出来过后的维护和修改成本也不相同。程序员在选择编写语言时要根据项目的成本来限制编程语言的选择。
2.2 选用技巧
根据上述的原则以及对三种常用的编程语言结构的比较来看,可以得出以下这三种编程语言的选用技巧:
第一,C语言的可移植性最强,可以适用于大部分的运行环境。C语言的难度适中,加上高校的许多专业都开设了C语言课程,许多大学生都掌握了C语言。因此,在编程时可以优先适用C语言。面对C语言存在的缺陷,程序员可以调用其他语言进行混合编程。
第二,Visual Basic语言的掌握难度较低,但是执行效率比较低。使用Visual Basic语言可以简化编程过程,减少失误,因此Visual Basic语言更适合编写一些复杂而不讲究执行效率的程序。
第三,汇编程序的语言结构最为复杂,掌握难度大,但是运行效率比较高。因此汇编程序更加适用于编写一些初始化程序。
3 结束语
编程语言是计算机软件开发的工具,可供开发者选择的编程语言很多,选择合适的编程语言有助于提高编程效率和计算机软件的使用效率。要不断提高计算机软件的开发效率,就要重视计算机编写程序的选择。有这样,才能不断提高计算机的使用性能,在竞争激烈的计算机软件行业中占有一席之地。
参考文献:
[1]徐志伟,李伟.织女星网格的体系结构研究[J].计算机研究与发展,2012(08).
[2]刘君华,贾惠芹.虚拟仪器图形化编程语言LabVIEW教程[M].西安:西安电子科技大学出版社,2011(20).
[3]乔林.Visual C++6.0高级编程技术[M].北京:中国铁道出版社,2001(03).
关键词:计算机编程语言;高效;学习方法;探究
学习计算机编程语言时,大多数人都感觉知识点太多、语法规则复杂、基础理论抽象难懂、枯燥乏味,往往就失去学习兴趣,甚至半途而费,有始无终。依据笔者多年计算机编程语言的学习、教学和软件设计实战经验发现,只要具备一定的数学分析和逻辑推断能力以及较好的英语功底,采取科学高效的学习方法,必定取得事半功倍的学习效果,学好计算机编程语言也就指日可待了。
一、必须选择一款优秀而专业的集成开发环境
(一)提供诸多智能提示功能,有利于快速而规范地输入代码优秀专业的集成开发环境(IDE)能够以不同的颜色显示程序代码中的关键字和代码内容,一旦关键字输入有误,从颜色上即可判断出输入的关键字是否正确;对于程序中输入的错误或不合法的表示,能够及时地在错误列表面板的不同选项卡中显示出来,包括所有错误、警告消息的说明、行数、列数,帮助设计者快速找到问题所在;还能够以下拉列表的形式自动弹出输入对象的属性、方法或函数,只需要输入对象属性或方法的前几个字母就可以从弹出的下拉列表中选择输入,方便用户快速而规范地输入代码[1]。
(二)提供了方便的调试、测试、编译和运行程序功能无论是编程初学者还是熟练的程序员,出现程序错误在所难免。一般将程序错误分为语法错误和逻辑错误。语法错误就是编写程序时对命令基本格式、关键字或程序结构书写错误而导致的错误;逻辑错误就是编写的程序在语法上没有错误,但程序的运行结果错误。语法错误在程序运行时都会被编译器检查出来,并及时地给出提示信息;而逻辑错误不易被检查出来,可以在开发环境中通过设置程序断点,选择逐语句、逐过程运行方式查看变量的当前值来排除程序错误,而对于可能产生的错误或是其他可以中断程序执行的异常情况,可以使用异常处理语句(try…catch语句)构建各种用来处理程序异常情况的程序代码。
(三)有助于理解计算机程序运行机制,提高程序编写能力通过对程序反复的调试、测试,不断加深计算机对语句、程序结构和程序运行过程的理解,增强自身严密的逻辑思维和逻辑推理能力以及阅读程序、程序排错、程序编写能力。
二、主动培养计算机语言编程思维方式
由于计算机语言是人与计算机之间的交流语言,其交流的对象是计算机,因此就要按照计算机的特点和规则进行交流,交流的程度越深,思维方式就会越向交流对象靠近。在计算机语言的学习过程中,要主动培养自己的计算机语言编程思维方式[2]。该思维方式具有以下特点:
(一)严谨性计算机语言也是一种语言,与人类语言相比,更具有严谨性,特别注重语言本身的意思,而会淡化情感、表达方式、意境等超出文本本身的意思。每一条语句或命令都有严格的语法规则,每一个关键字都有特定的语义和用途。所以,在编写程序时来不得一点马虎,即使有一点点错误也得不到预期结果。
(二)准确性由于计算机编程语言具有严谨的语言体系结构,有明确而简单的语法规则,但表达能力极强,使得编写的每一条语句都要准确地表达,反复推敲,避免产生歧义或疏漏。如果表达准确了才会得到想要的结果;如果得不到预期的结果,那只能说明没有表达清楚,程序代码写错了。
(三)清晰性人的思维方式是以自己心中世界为基础的,有时是模糊的、不确定的,但计算机语言编程思维方式是清晰的。如果要通过编程解决实际问题,首先要按照计算机的执行方式和语言的表达方式进行分析,把分析的结果再转化为程序代码,所以对实际问题的分析思路、解决思路以及编程思路必须是非常清晰的。计算机编程思维方式与人的正常思维方式有很大的差异,往往使得许多初学者觉得计算机语言是很难学的。在编程思维方式上需要跨越心理上和思维上的障碍,重点掌握程序设计方法和编写程序的思路。编写程序就是把人的需求转化为计算机可以理解和接受的语言结构,这种转换很多时候并不容易,即使人的需求的小小变化,也可能会引起编程的巨大震动。计算机编程思维方式的改变,往往是最难的改变,甚至需要多年的培养和锻炼。因此,在学习计算机语言一开始,一定要主动培养自己严谨细致的做事风格和清晰准确的表达风格,还要养成自我反省和善于推敲的科学习惯[3]。
三、树立规范意识,培养良好的编程习惯
(一)缩进同一语句块中的语句应该缩进到同一层次,这是一个非常重要的约定。虽然缩进不是必需的,同样也没有编译器强制过,但是增强了程序代码的可读性,也体现出代码之间的包含关系及层次感。就好比文章的每一段都有两个字符的缩进一样,使得文章层次结构分明、易于阅读。
(二)空白空白也叫空字符,是程序语句中关键字之间、关键字与元素之间的分隔符。在程序运行过程中,编译器会忽略空白,但适当使用空白能够改善代码的格式,提高代码的可读性。
(三)注释编写注释同缩进一样,编译器也不会强迫一定要添加注释,但是良好的注释习惯,能够让人们更加轻松地了解代码的功能,便于后期维护修改代码,也使得代码更加优雅和可读。
(四)命名习惯统一规范的命名习惯,不仅给标识符起了一个容易记忆的好名,而且还能说明标识符的一些特性,达到“见名知意”的目的。常见的命名习惯有Pascal和Camel两种形式。Pascal形式就是所有单词的第一个字母大写,其他字母小写,常用于命名空间、类、函数等的命名;Camel形式就是除了第一个单词外,所有单词的第一个字母大写,其他字母小写,常用于变量、参数等的命名。
(五)大小写在不同的计算机语言中,大小写敏感性是不同的,这个规则尤为重要。即使在不区分大小写的编程语言中,按照约定俗成的习惯,为了区分和维护代码方便,在程序中一般将常量定义为大写形式,将变量定义为小写形式或以小写开始的形式。
四、灵活运用多种分析方法
(一)放缩法对于程序中需要执行次数特别多的循环结构来说,为了使得问题简单化,可以把循环执行的次数缩小到有限的几次进行分析和调试,只要程序在这几次能够正确运行,那么再扩大到原来的次数,也能正确运行。比如,在编写“实现从键盘输入100个数,找出其中的最大数和最小数”的程序时,可以采用放缩法,将本应循环输入100个数的语句改为5个数,然后进行分析和调试,如果程序测试正确,最后再改回到100个数的范围即可。
(二)分块法在阅读特别复杂的程序时,为了简化分析,可将程序逐层分为多个相对独立的程序块,直至分到最易理解的基本程序结构为止。同理,在编写复杂程序时,按照模块化程序设计思想,也要把实现的功能逐层分块,直到用最基本的程序结构实现为止。
(三)代入法对于某些难以分析的程序来说,可以采用代入值的方法来分析和研究。比如,在“实现从键盘输入5个数,找出其中的最大数和最小数”的程序中,可以任意输入5个数,验证程序运行结果是否正确,进而排除程序中的所有错误。五、需要多实践、多模仿刚开始学习计算机语言时,往往按照教材的编写顺序,学习语言的基本要素、语法规则、语句格式等基础理论知识。但随着这些理论知识的学习,很容易引起学习者产生枯燥无味的感觉。为了引起学习语言的兴趣和激发进一步学习的积极性,要特别重视上机操作实践。即使是教材上很简单的例题,也要亲手输入到计算机编程开发环境中运行一下。通过程序的运行结果,加深对计算机语言基础知识的理解和应用常识的了解。即便在程序运行过程中出现错误,通过对错误的分析和解决,逐步提高分析程序、纠错程序、编写程序的能力,同时对编程思维方式的培养有积极的促进作用[4]。随着自己计算机语言知识的增多、上机操作经验的积累以及编程能力的提高,逐渐会产生软件开发的欲望,但软件开发需要学习者具备软件设计、编程的综合能力。仅靠掌握计算机语言的基本知识和技能还远远不够,还需要大量地模仿项目案例,逐渐在这些项目的模仿实战中,找到软件开发所需要具备的其他知识和能力,同时也对自己创新能力的培养大有裨益。多次进行产业革新的沃尔玛的创始人山姆·沃尔顿曾说过:“我做的事多半都是模仿别人。”因此,在学习计算机编程语言时,通过大量项目案例实战,必须学会模仿别人的编程思路和方法。模仿的案例越多,积累的实战经验也会越多,编程思维也就越开阔,编出的代码也会越规范,运行效率也就越高。
>> 幼儿学哪种才艺比较好 人生“杂食”比较好 农村哪些投资项目比较好 还是还给你比较好 痔疮,怎样治疗比较好 到底怎样的处理比较好 懒女人命比较好 职场中笑比较好 嫁哪种男人会比较好 冬虫夏草怎么吃比较好 去爱人,还是被爱比较好? 欢庆春节时,喝什么饮料比较好等 痔疮手术后饮食,怎么吃比较好 一天吃几个鸡蛋比较好? 爸妈说:俩宝差几岁比较好? 浅谈高中生的数学兴趣 浅谈如何培养高中生对体育课的兴趣 浅谈高中生学习生物课的兴趣培养 浅谈如何激发高中生物理课学习的兴趣 浅谈如何提高高中生对体育课的兴趣和爱好 常见问题解答 当前所在位置:中国 > 教育 > 浅谈高中生兴趣课学什么编程语言比较好 浅谈高中生兴趣课学什么编程语言比较好 杂志之家、写作服务和杂志订阅支持对公帐户付款!安全又可靠! document.write("作者:未知 如您是作者,请告知我们")
申明:本网站内容仅用于学术交流,如有侵犯您的权益,请及时告知我们,本站将立即删除有关内容。 随着我国经济社会的进一步发展,家庭条件的不断改善,计算机已从以前的一种高档消费品正转换成人们日益依赖的必需品,越来越多的家庭开始配置了计算机。与此同时,信息技术的教学也越来越正规化,学生的学习兴趣也在多样化,不少学生对编写计算机程序兴趣浓厚。但众所周知,计算机语言众多,大家熟知的就有C、C++、Pascal、Java、VB、C#等语言,那么对于初涉计算机编程的高中生来说,如果学校开设相关的课外兴趣课学习什么编程语言会比较合适呢?这个问题仁者见仁,智者见智,笔者想在本文中谈一下个人的看法。
首先,笔者要声明,本文不考虑NOIP(全国青少年信息学奥林匹克联赛)这个层面的问题(NOIP的语言指定为C、C++、Pascal三选一),而是单纯站在学生兴趣,并适当考虑今后的发展这一层面来进行思考。笔者个人的观点是:C#是比较适合高中生学习的一门语言。
笔者首先是不赞成高中生初学编程学习C或C++还有Pascal语言的。对于没有接触过编程的学生来说,任何一门计算机语言在他们看来并没有什么大的不同。伴随着强烈的好奇心,学生在学习的初始阶段兴趣会十分浓厚,课堂上常常流连忘返。然而随着时间的推移,不同的语言课学生表现出来的差异就开始体现出来,而这其实是语言本身的性质开始就决定了的。笔者曾经带过好几届的程序设计的兴趣班,除掉最后一届,之前教授的语言都是C或C++。正如笔者如前所述,一开始学生热情高涨以至于教室人满为患,但后面却几乎没有人坚持下来。是笔者课上得太烂吗?还是有别的原因?经过细致的调查、反思,才找出问题的关键所在。
众所周知,现在个人电脑的操作系统基本上都是视窗化的了,不管是Windows,还是Linux、Mac OS,都无一例外。C和C++最大的问题在于,使用C和C++进行可视化编程学习周期太长,难度较大,看看一个简单显示窗体的程序,其主函数WinMain函数的长度、窗口类众多的成员变量、复杂的消息循环及分发结构就可以想像其难度了(C++使用MFC也没有好得太多)。基于这个原因,学生学习C或C++的时间里,基本上都是在编写枯燥的控制台应用程序(因其界面和DOS程序相似,许多人将其误称为DOS程序),以及过深地陷入到算法的纠结中,还有重复去发明链表(List)、队列(Queue)、栈(Stack)这些数据结构(C语言的标准库中是不包含这些基本的数据结构的),而学生生活中的许多问题实际上算法都比较简单,但需要更友好的图形界面的呈现方式(比如一个随机选人的程序),这就导致学生在漫长的学习过程中不能学以致用而缺乏成就感,故而渐渐失去学习兴趣。而这在其他三门语言中是很容易就可以实现的事(事实上这在C#中最短不超过10行代码就可以完成了)。
总的来说,C和C++看似易学,实际上学习难度很大,对于偏向于实现简单应用的高中学生而言是不适宜的。笔者觉得它们更适合于那些进一步深入研究计算机软件开发,如系统级(如操作系统内核、嵌入式应用、硬件驱动,以及内存和或效率特别苛刻的电信级应用等)的开发人员学习。当然前面没有详细讨论Pascal,是因为其很多方面和C语言相似,但其应用基本上囿于教学领域,从长远着想故而不将其列入考虑范围。
那么剩下的还有三门语言VB、Java以及C#可选,哪一门高中生学习起来会比容易,兴趣会比较高呢?
从学习的难易程度上讲,VB无疑是最简单的,而且一些地方的高中程序设计选修课教材教学语言选择的就是VB(教材用)。这样看上去貌似VB应该是最合适的语言了。其实不然,正如文中之前所强调的,立足于学生的生活实际。诚然,VB在学习难度上确实简单,但是使用VB编写实际应用的难度实际上要大于Java和C#,这是因为两个因素:一是Java和C#本身的标准库里包含了大量的实现好了的通用组件,可以很大地减少开发时间,而VB的库函数则要简陋得太多;二是Java和C#有大量开源的免费组件可以直接拿来用,使用他们可以“站在巨人的肩膀上去解决问题”,而VB几乎很少。另外,VB也有一个天生的缺陷,其本质上不是一个真正的面向对象语言,因为其本身不支持继承、多态这些面向对象语言的基本特征,而面向对象程序设计毫无疑问是现在及今后的主流。况且,Java和C#的学习难度比VB大不了多少,若从强调快速应用和长远发展的角度讲,Java和C#是更适合的语言。