浅谈高中生兴趣课学什么编程语言比较好
作者:汪思言
来源:《读写算》2013年第26
        首先,笔者要声明,本文不考虑NOIP(全国青少年信息学奥林匹克联赛)这个层面的问题(NOIP的语言指定为CC++Pascal三选一),而是单纯站在学生兴趣,并适当考虑今后的发展这一层面来进行思考。笔者个人的观点是:C#是比较适合高中生学习的一门语言。
        笔者首先是不赞成高中生初学编程学习CC++还有Pascal语言的。对于没有接触过编程的学生来说,任何一门计算机语言在他们看来并没有什么大的不同。伴随着强烈的好奇心,学生在学习的初始阶段兴趣会十分浓厚,课堂上常常流连忘返。然而随着时间的推移,不同的语言课学生表现出来的差异就开始体现出来,而这其实是语言本身的性质开始就决定了的。笔者曾经带过好几届的程序设计的兴趣班,除掉最后一届,之前教授的语言都是CC++。正如笔者如前所述,一开始学生热情高涨以至于教室人满为患,但后面却几乎没有人坚持下来。是笔者课上得太烂吗?还是有别的原因?经过细致的调查、反思,才出问题的关键所在。
        众所周知,现在个人电脑的操作系统基本上都是视窗化的了,不管是Windows,还是Linu
xMac OS编程课到底学什么,都无一例外。CC++最大的问题在于,使用CC++进行可视化编程学习周期太长,难度较大,看看一个简单显示窗体的程序,其主函数WinMain函数的长度、窗口类众多的成员变量、复杂的消息循环及分发结构就可以想像其难度了(C++使用MFC也没有好得太多)。基于这个原因,学生学习CC++的时间里,基本上都是在编写枯燥的控制台应用程序(因其界面和DOS程序相似,许多人将其误称为DOS程序),以及过深地陷入到算法的纠结中,还有重复去发明链表(List)、队列(Queue)、栈(Stack)这些数据结构(C语言的标准库中是不包含这些基本的数据结构的),而学生生活中的许多问题实际上算法都比较简单,但需要更友好的图形界面的呈现方式(比如一个随机选人的程序),这就导致学生在漫长的学习过程中不能学以致用而缺乏成就感,故而渐渐失去学习兴趣。而这在其他三门语言中是很容易就可以实现的事(事实上这在C#中最短不超过10行代码就可以完成了)。
        总的来说,CC++看似易学,实际上学习难度很大,对于偏向于实现简单应用的高中学生而言是不适宜的。笔者觉得它们更适合于那些进一步深入研究计算机软件开发,如系统级(如操作系统内核、嵌入式应用、硬件驱动,以及内存和或效率特别苛刻的电信级应用等)的开发人员学习。当然前面没有详细讨论Pascal,是因为其很多方面和C语言相似,但其应用基本上囿于教学领域,从长远着想故而不将其列入考虑范围。
        那么剩下的还有三门语言VBJava以及C#可选,哪一门高中生学习起来会比容易,兴趣会比较高呢?
        从学习的难易程度上讲,VB无疑是最简单的,而且一些地方的高中程序设计选修课教材教学语言选择的就是VB(教材用)。这样看上去貌似VB应该是最合适的语言了。其实不然,正如文中之前所强调的,立足于学生的生活实际。诚然,VB在学习难度上确实简单,但是使用VB编写实际应用的难度实际上要大于JavaC#,这是因为两个因素:一是JavaC#本身的标准库里包含了大量的实现好了的通用组件,可以很大地减少开发时间,而VB的库函数则要简陋得太多;二是JavaC#有大量开源的免费组件可以直接拿来用,使用他们可以站在巨人的肩膀上去解决问题,而VB几乎很少。另外,VB也有一个天生的缺陷,其本质上不是一个真正的面向对象语言,因为其本身不支持继承、多态这些面向对象语言的基本特征,而面向对象程序设计毫无疑问是现在及今后的主流。况且,JavaC#的学习难度比VB大不了多少,若从强调快速应用和长远发展的角度讲,JavaC#是更适合的语言。
        那么又如何从JavaC#中选择呢?笔者认为语言的选择也需综合其开发应用速度,配套IDE(集成开发工具)的易用性、功能完善性这些因素来考虑。提起Java,人们第一时间
肯定会想起Eclipse,据说它是最好用的Java开发工具了,但不知人们是否还记得Eclipse安装后Java的一系列配置步骤,相对于微软的Visual Studio 2008/2010/2012系列而言,其安装配置过程就显得有些繁琐了,当然代码自动完成、运行调试、自动部署这些功能就更不用说了。很多时候,C#的开发效率都是要高于Java的。另外,学习C#有一个好处,那就是有大把现成的详细的资料可供参考。是的,忘记强大的MSDNMicrosoft Software Developer Network)了吗?当然,有人会认为Java的跨平台特性是足以傲视雄的特征了,实际上C#也是一门跨平台的语言,其运行环境包括WindowsLinux,甚至流行的移动环境AndroidiOS都可以运行其程序。虽然C#Java目前同是面向对象语言里最受欢迎的两门语言,据近年来的调查研究发现,学习C#的人正在逐步上升,而学习Java的人正在逐步下降,这也说明了C#本身的魅力所在。