论文部分内容阅读
随着我国经济社会的进一步发展,家庭条件的不断改善,计算机已从以前的一种高档消费品正转换成人们日益依赖的必需品,越来越多的家庭开始配置了计算机。与此同时,信息技术的教学也越来越正规化,学生的学习兴趣也在多样化,不少学生对编写计算机程序兴趣浓厚。但众所周知,计算机语言众多,大家熟知的就有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#是更适合的语言。
那么又如何从Java和C#中选择呢?笔者认为语言的选择也需综合其开发应用速度,配套IDE(集成开发工具)的易用性、功能完善性这些因素来考虑。提起Java,人们第一时间肯定会想起Eclipse,据说它是最好用的Java开发工具了,但不知人们是否还记得Eclipse安装后Java的一系列配置步骤,相对于微软的Visual Studio 2008/2010/2012系列而言,其安装配置过程就显得有些繁琐了,当然代码自动完成、运行调试、自动部署这些功能就更不用说了。很多时候,C#的开发效率都是要高于Java的。另外,学习C#有一个好处,那就是有大把现成的详细的资料可供参考。是的,忘记强大的MSDN(Microsoft Software Developer Network)了吗?当然,有人会认为Java的跨平台特性是足以傲视群雄的特征了,实际上C#也是一门跨平台的语言,其运行环境包括Windows、Linux,甚至流行的移动环境Android、iOS都可以运行其程序。虽然C#和Java目前同是面向对象语言里最受欢迎的两门语言,据近年来的调查研究发现,学习C#的人群正在逐步上升,而学习Java的人正在逐步下降,这也说明了C#本身的魅力所在。
综上所述,笔者认为学习是一个由表及里,由浅入深的过程,从简单应用到高级应用再到系统级应用,对于算法的学习从了解、到熟悉、再到深入研究,是一个比较合理的学习过程。俗话说,“兴趣是最好的老师”、“师父领进门,修行靠个人”。找到一门合适的语言,利用其易于学习、上手快的特点,通过培养学生快速开发一些贴近他们生活实际的小程序,让他们建立编程解决问题的意识,将学生引入编程世界的大门,且能够使他们长期保持对于学习编程的浓厚兴趣,在将来还可以长远发展和学习,这是十分重要的,笔者认为C#可担此大任。笔者不仅这样认为,同时也是这样践行的。在选用C#作为教学语言后的实践中,笔者的课外兴趣课取得了较好的反响。因此,笔者大胆在此建议其他高中的同仁们不妨小试一下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#是更适合的语言。
那么又如何从Java和C#中选择呢?笔者认为语言的选择也需综合其开发应用速度,配套IDE(集成开发工具)的易用性、功能完善性这些因素来考虑。提起Java,人们第一时间肯定会想起Eclipse,据说它是最好用的Java开发工具了,但不知人们是否还记得Eclipse安装后Java的一系列配置步骤,相对于微软的Visual Studio 2008/2010/2012系列而言,其安装配置过程就显得有些繁琐了,当然代码自动完成、运行调试、自动部署这些功能就更不用说了。很多时候,C#的开发效率都是要高于Java的。另外,学习C#有一个好处,那就是有大把现成的详细的资料可供参考。是的,忘记强大的MSDN(Microsoft Software Developer Network)了吗?当然,有人会认为Java的跨平台特性是足以傲视群雄的特征了,实际上C#也是一门跨平台的语言,其运行环境包括Windows、Linux,甚至流行的移动环境Android、iOS都可以运行其程序。虽然C#和Java目前同是面向对象语言里最受欢迎的两门语言,据近年来的调查研究发现,学习C#的人群正在逐步上升,而学习Java的人正在逐步下降,这也说明了C#本身的魅力所在。
综上所述,笔者认为学习是一个由表及里,由浅入深的过程,从简单应用到高级应用再到系统级应用,对于算法的学习从了解、到熟悉、再到深入研究,是一个比较合理的学习过程。俗话说,“兴趣是最好的老师”、“师父领进门,修行靠个人”。找到一门合适的语言,利用其易于学习、上手快的特点,通过培养学生快速开发一些贴近他们生活实际的小程序,让他们建立编程解决问题的意识,将学生引入编程世界的大门,且能够使他们长期保持对于学习编程的浓厚兴趣,在将来还可以长远发展和学习,这是十分重要的,笔者认为C#可担此大任。笔者不仅这样认为,同时也是这样践行的。在选用C#作为教学语言后的实践中,笔者的课外兴趣课取得了较好的反响。因此,笔者大胆在此建议其他高中的同仁们不妨小试一下C#,或许会有所收获。