全Mac团队

今天讲一件我前天发生的事情。

这学期我选了一门《软件工程》课,课程要求我们组成5人或6人的开发小组完成老师布置的项目。小组模拟现实生活中的软件开发进行XP编程:小组中的一人充当用户,由他在老师给下的软件要求的基础上进行充实,我们关于软件要求的问题也问他;另外的人分成两个小队,分配任务后进行结对编程。前天正好是我们小组约定第三次开会的日子。

我讲的事情与敏捷开发无关,而是关于我们的开发环境的。

我之前写过一篇文章《学校应当使用跨平台软件》,提到我在得知我们小组使用Java来做我们的项目时有多么课开心。得知这一消息是在我们小组第一次开会之前,那时我们还没见面,只是简单的用电子邮件讨论了一下。

在我们第一次的会议上,我就看到我们小组5人中,除了我以外有两人在用MacBook Pro。这让我一下子安心了许多。第一次的会议决定了用eclipse来作为我们的开发环境就顺理成章了。不过由于eclipse的GUI Builder不如NetBeans那么好用,我们又换成了NetBeans这样的工具。

几天后我与和我组队的同学进行结对开发的时候,我发现她带了和我一样的MacBook。这样我们小组用Mac的人又多了一人了。这样就只差我们组的用户没有被确认了。中间的一次会议中,他来的有点晚,我们还猜过他用什么电脑,有人说他可能是用的PC,不过都不会影响大局了。

前天的会议末尾,我们“正式”的问了他的开发环境,他向我们确认了他也在使用Mac。这下我们全部的成员都使用MacBook了。我们的leader打趣说,我们甚至可以使用Cocoa来开发程序的界面,因为结合XCode,用Cocoa写界面实在太简单了。我们还讨论了大家用Mac的原因,多数人同一它的笔记本质量实在太好了。这一点我是深有体会。

其实,全组成员都用Mac倒不是重点,重点是大家都使用Java。我在那篇《学校应当使用跨平台软件》上表达了对学校要求学生使用非跨平台的软件的不解。我觉得学生有权利选择自习喜欢的平台,而学校强制学生使用单一平台上的软件,相当于剥夺了学生对平台选择的权利。有人说Windows平台的使用人数最多,证明Windows平台好用,因此学校使用Windows平台教学也无可厚非。对于哪个平台好用,我觉得别人永远都无法代替我做出决定。即时全球的人都用Windows,我还是觉得Windows难用。我对Word的态度也是一样。

那篇文章发布了之后,过去的同学在Twitter给我说“Windows已经是事实上的标准,而且买电脑都有Windows的使用授权。世界上有那么多人选择windows本身已经证明windows好用了……”,最后还诘问我“我很难理解你为什么对m$那么大意见,而不是对intel”。其实我对微软没有什么意见,从一个计算机专业的学生的角度来看,微软能做出像Windows这样的产品本身就很了不起了。微软的前领导人Bill Gates我也非常尊重。我也从来不写“M$”,因为我觉得微软的软件定价也没有不合理之处。只是Windows的操作习惯不符合我的口味而已。Intel的CPU好不好,我不做CPU层面的开发工作,无法判断。不过我身边有同学用HP的笔记本,用的是AMD的CPU,经常开机没一会风扇就嗡嗡响倒是真的。

我非常感激Sun,它的Java基本上实现了跨平台的理想。Swing也比.NET、Cocoa、GTK+、QT之类的图形类库更跨平台。我曾经想过,如果Sun运作得当的话,可以像Apple那样推出家用计算机,硬件上用自己的Sparc,软件跑的是Solaris,应该也会相当不错。只可惜没落到了今天这般地步。

学校应当使用跨平台软件

今天下午收到课程项目小组的邮件,多数人支持使用Eclipse来作为我们项目的开发工具,当时我就松了一口气。我今年暑假选了一门《软件工程》课,课程要求5到6个同学组成小组来完成老师布置的项目。课程不限用什么语言和工具来开发,只要支持软件工程,如重构、XP等操作的开发环境都可以使用,只要小组成员都支持就可以。老师预先批准的开发工具有Visual C#.NET、Visual Basic.NET和Eclipse/Java。其它的开发环境也可以,但要老师批准。

让我一直很担心的原因是我在课间听到很多同学都在讨论用C#来开发。我日常使用MacBook,没有在上面用BootCamp安装Windows环境,也不希望使用Windows。因此即使微软提供了供学生下载使用的免费版的Visual Studio 2008 Express,我们三年级以上的学生有校园版的MSDNAA可以下载企业版的Visual Studio,我因为没有Windows平台,也无法安装它们。如果我们小组的多数成员投Visual Studio的票,我下功夫学习C#倒是其次,而且要很难受的用学校的电脑来完成项目。

用Java的好处是它是跨平台的。目前Java的虚拟机已经支持绝大多数平台,而它的编译工具也支持很广泛的平台环境。更何况还有Eclipse这个横跨Windows、Linux和Mac OS X的优秀集成开发环境,因此我觉得Java是一个更不错的选择。而且我们之前的课多数是要求用Java来写作业,因此我们可以省去了熟悉语言环境的时间。

我过去一直以为欧美的大学里应该自由软件相当盛行才对,不过到了加拿大才知道这里也是相当落后的。从学校的机房来看,大机房里90%的机器都是用Novell网络集成的WindowsXP,只有一排机器运行Solaris和Cent OS。而且那些运行Windows的机器早已换成了大屏幕,UNIX机器还在使用可怜的15寸显示器。我以为至少计算机系会多用一些自由软件,结果只有少数老师的机器运行Linux,多数运行的是Windows和Mac OS X。更有我们上学期的计算机伦理课老师,要求我们提交Word格式的作业,却拒绝接受PDF格式的。我们学校还算好的,滑铁卢大学的计算机系因为和微软有协议,我们使用Java的时候,他们的学生都要使用C#来做作业,真是骇人听闻。好在和国内相比,加拿大的Mac电脑使用量较高,因此学校对非Windows系统还算支持,学校的统一网络也是UNIX服务器来支持的。

我不是自由软件的强硬支持者,因为毕竟自由软件的商业模式还有待发展。我现在希望的是至少学校应该使用跨平台的软件。就拿普通作业来说吧,为什么一定要求学生提交Word格式的文档呢?虽然现在可以运行在其它平台上的文档工具也支持Word,但毕竟Word不是那么的方便。Adobe Acrobat应该也支持PDF文档批注的功能,学生用Word或者Pages或者TeX把作业导出成PDF格式再提交不也是可以批注吗?上学期老师在要求我们提交Word格式的作业时说,学校的任何Windows机器上都有Word 2007可以使用,因此我们也可以完成作业。但这给学生带来了相当大的不便,自己的机器用的才是最顺手的,为了完成作业要到学校的机房进行,这多么令人难过。而我在Mac OS X上有Pages可以把文档保存成Word格式,还要因为担心兼容问题而在Windows机器上用Word再检查一遍。

很早之前,朝陽科技大學資訊管理系洪朝貴写过一篇文章——《好公民不助長非法拷貝 — 請停止散佈 .doc 檔》,讲了Word格式的文档的盛行带来的社会问题。其中“后记(II)”里写到:

有些人說: 「微軟已提供免費的 reader, 怎麼可以說散佈 .doc 檔就是助長非法拷貝呢? 」 問題是, 這 reader 只能在 Windows 底下執行。 對於不使用 Windows 作業系統的人而言, 這當然是鼓勵他非法拷貝啊! 換做是您, 會為了讀一個檔案去買一個作業系統嗎? 說實話, 不要假清高。

这些内容解释了为什么非跨平台的软件给社会带来了不便,这是我在学校切实的体会。2008年秋季学期开始时,我选了一门《人机界面交互》课程。里面的作业要求学生使用C#来完成。说实在的,人机界面不过是研究界面对用户的影响之类的问题,与使用什么工具来实现没有什么关系。但限于教授的知识结构,生生的把我们限制在了一个并不便宜也不好用的操作系统上。那门课我学得相当难受,因为每次作业我都要去学校的机房去做。结果期中考完试后我忍无可忍,注销了那门课。用一门语言把学生逼死,这不是相当令人难过吗?亏了这门课不是必修。

蔡志浩写过一篇文章《放下屠刀,立地成佛》,里面讨论台湾的学校使用商业的微软Office而不是自由免费跨平台的OpenOffice.org。文中的最后一段话我相当赞同:

請各位老師停止使用微軟的辦公室軟體,改用 OpenOffice.org。放下屠刀,立地成佛。這不是軟體使用偏好的問題,而是教育工作者的良心問題。要做到這一步,其實並不難。你知道該怎麼做,你也找得到時間去做。這只是一念之間的事:學生的受教權,在你的一念之間;你使用軟體的自由,也在一念之間。就看你能否作出正確的選擇了。

在这里我希望计算机教育业者能思考同样的问题。