我们需要怎样的信息学教育?(中)

!!!盗版!!!

最近我们国家反盗版确实是抓得很严,比方说verycd现在都不敢提供影片下载了。话说回来我们的信息学教育,这就不能够不提到我们信息学教育中的严重的盗版现象了。我们知道,前几年,在一个阳光普照的上午,刹那间,番茄花园、雨林木风、电脑公司、深度……一系列盗版微软系统突然消失,其发行公司(网站)也开始转型。从此,中国人民想要买到盗版的微软系统就难多了。这,大概是反盗版行动中的一次很有力度的行动,从根源上消灭了不少盗版资源(但是是消灭不尽的)。

其实,盗版本无罪,因为根据中国的国情,人民普遍付不起正版软件的高额费用。比方说,现在Windows 7家庭普通版需要¥359,而且这是最简陋的Windows 7。而家庭高级版需要¥599,旗舰版更是高达¥2309(以上数据均来源于微软淘宝官方旗舰店),这对于我们草根阶级是无法接受的。因此,盗版就成了最好的选择,这无可非议。只要你不利用盗版软件从事商业用途,从法律上说,以研究为目的使用盗版软件应该构不上违法。

中国是盗版的重灾区,但这也成全了微软在中国的快速发展。使用盗版的前提是:仅以非商业性研究为目的,但不少人似乎是麻木了,不管是不是公开的商业的目的,盗版照用不误,为什么?因为连教科书都是这么编的!据说某大学教科书《C#和.NET3.0第一步》(作者:周礼,出版社:清华大学出版社)所使用Visual Studio及Windows系统为盗版的,有图为证!

连教科书都明目张胆地使用盗版,学生们则能不学习?

不仅仅是教科书,学校机房,尤其是中小学,使用的系统、软件,几乎可以说,除非是OEM正版,其他的一律都是盗版!Windows是盗版,Office是盗版,Adobe Photoshop/Flash是盗版,WinRAR是盗版……有正版的,最多是购买时附带的。

可能这点在中小学的机房比较严重,大学也许会好一点,因为大学的经费会比中小学多得多。而构建一个“正版化”的机房,其资金消耗是巨大的,因而机房“盗版化”也就正常了,这点我们也可以理解。但是,你起码也要教导学生盗版是不对的,起码也不能明目张胆、招摇过市。像上面这本书的作者,就尤为值得我们唾弃!

有关部门在外头反盗版做得不遗余力的时候,却忘记了我们的教育界!

Visual Basic

我记得高中是有教Visual Basic的。你说教VB有甚用?现在教材上教的都是VB6.0。虽然说Basic语言是为初学者设计的,但如今已是201x年,再教古老的VB6.0实在是过意不去。VB6.0是Win9X时代的产物,而现在系统都已经飙到了Win7,也就是说用VB6.0写出来的软件,很有可能是无法在更高级版本的Windows系统中运行的。

再说说VB6.0本身语言上的不好之处,我没学过VB,但我不愿意学(尽管这样我将看不懂用VB写的代码),因为我曾瞥过用VB写过的程序,一点好感没有。引用一位学过VB人士的话:其实VB误导了很多初学者。还有人说:要是当初没学VB,现在学习编程也就没那么困难了。其实说实在话,书上教的VB6.0一点内涵都没有。估计很多学生对待VB直接就是copy&&paste。

当然,一棒子打死VB也是不好的,因为微软也不肯放弃VB。VB6.0之后发展了Visual Basic .NET 2003,后来的版本把.NET去掉了,直接变成了Visual Basic 2005,直至今日Visual Basic 2010。这个.NET说明它靠的就是.NET Framework。确实,得益于.NET Framework,VB2005比VB6.0进步了不少,但我仍感它不好,因为它太不像高级语言了。

话说回来,教科书上貌似教的直接就是GUI编程,这点就很让人费解。因为GUI编程涉及的问题很多、很深奥,至今我也只敢在基本掌握C++语法的情况下尝试利用QT框架进行GUI编程,或者是在掌握Free Pascal(Object Pascal没学过)的情况下利用Lazarus进行GUI编程。而教科书让初学者直接从事GUI编程,这不是将旱鸭子推入水中吗?

什么?命令行编程太无趣?那就请看看你编的那些GUI程序吧,简陋难看不说,内容绝对比命令行编程更加无聊。

什么?命令行编程太难?恐怕是不愿意掌握基本语法吧。既然教科书想要让人人都有一点点的编程能力,那好歹就从语法上开始讲起吧。正是由于教科书这种跳跃式的教法,这才导致了不少低质量、问题繁多的代码。

什么?只有Visual Basic容易学习?错了,您大错特错!

不妨尝试一下Python!是的,Python,可能教育工作者们连听都没听过。但是,Python确实是一个不错的语言,它不仅易学,而且符合高级语言的哲学。虽然其执行效率不如C++,但其的内涵也远高于Visual Basic,可用Python做的事情也不逊色于Java。也就是说,Python是一个适合初学者,同时也适用于计算机专家,同时十分useful的语言。What’s more, Python is widely used now.比如说,Facebook的一些底层功能就是由Python实现的,Google也大量使用Python。而Python作为一种“粘合剂”,可以很容易地沟通由不同语言编写的程序模块,也就是说Python还可以作为一种中间语言。

Python没有begin/end,没有{},有的只有缩进。Python特立独行将缩进作为语法的一部分,而不是推荐项目,这能够使人养成良好的编程习惯。

而且,Python是开源的,相比需要¥¥的Visual Basic,我个人认为改学Python,还可以省¥¥

下面是我初学Python编的一个快速排序的程序:

[python] def QuickSort(a, l, r): i = l j = r x = a[(l + r) / 2] while i < j: while a[i] < x: i = i+1 while a[j] > x: j = j-1 if i <= j: t = a[i]; a[i] = a[j]; a[j] = t i = i+1; j = j-1 if i < r: QuickSort(a, i, r) if l < j: QuickSort(a, l, j) [/python]

再来一段Python高手的:

[python] def qsort(L): if not L: return [] return qsort([x for x in L[1:] if x< L[0]]) + L[0:1] + qsort([x for x in L[1:] if x>=L[0]]) [/python]

再来一段用Visual Basic写的(我感觉难看死了)

[vb] Public Sub Qsort(first As Long, last As Long, dtlist() As Long) Dim i As Long Dim j As Long Dim mid As Long Dim save As Long i = first

j = last
mid = dtlist((first + last) / 2)
Do
    Do While mid > dtlist(i)
        i = i + 1
    Loop
    Do While mid < dtlist(j)
        j = j - 1
    Loop
    If i <= j Then
         save = dtlist(i)
         dtlist(i) = dtlist(j)
         dtlist(j) = save
         i = i + 1
         j = j - 1
     End If
Loop Until i > j
If first < j Then Call Qsort(first, j, dtlist)
If i < last Then Call Qsort(i, last, dtlist)

End Sub [/vb]

(未完待续 在下篇中我会提出我对改革的建议)

Comments