目录
1. 序言
我从小接触计算机,用过一些众所周知的商业软件。原本并不知道开源这回事,接触开源纯属偶然的契机。
那时已是2019年了,我需要一款乐谱编辑软件来制作乐谱。由于多年以前爱去图书馆,我当然知道可以用Overture、Siberius这样一些商业软件,于是上网搜索。然而那时想要从网上下载商业软件已非易事,这或许是保护正版、打击盗版政策的结果。
不过就在这时,记不清是通过什么渠道,我了解到MuseScore,于是免费下载以后就使用了。后来顺藤摸瓜,才了解到原来MuseScore是一款开源软件,已不再通过商业模式售卖,才允许用户免费下载使用。
这就是MuseScore 3的软件界面,图中的乐谱是我去年输入的帕格尼尼小提琴曲《无穷动》。
2. 软件使用者对开源软件应持有的态度
就像上面的例子一样,开源这种趋势,让用户有了另外一种更便捷的选择。根据我自己的试用,一些开源软件已经可以满足学习和工作的需要,其中某些开源软件的质量,甚至可以与对等的商业软件媲美(见附录)。
看起来,因为有了开源软件,个人和单位无需支付大量的金钱购买昂贵的商业软件,也不用“科学”上网下载盗版软件。开源软件是一种高性价比的产品,既然有了开源软件,又何必再用先前的那些商业软件呢?
然而,人是社会中的个体,人的一切行为,应当与当前社会的习惯相匹配。商业软件的品牌,就源于在社会中得到的长期、广泛的应用。有些商业软件,因为大家都在用,并且已经用这些商业软件建立了大量的文件,所以就应当使用商业软件。试想一个自认为追寻开源趋势的个体,放弃了通用的办公软件Microsoft Office,转而使用开源的LibreOffice,结果用Writer写的论文老师用Word打不开,用Calc制作的报表领导用Excel打不开,用Impress制作演示文稿准备做报告时却无法用会场的PowerPoint打开,那么就会面临很大的麻烦。
所以,对于使用开源软件,还需要持有谨慎的态度。在学习和工作中,大家通用什么软件,个体就要用哪种软件,哪怕是推崇开源的人鄙视的商业软件,也一定要使用。如果认为哪个开源软件好的话,可以在不违背当前社会习惯的前提下自行使用,达到期望的效果。
3. 软件开发者对开源软件应持有的态度
众所周知,软件开发者编写程序代码时,需要参考很多资料。而开源软件的源代码开放,似乎为软件开发提供了更大的便利。
然而,我见过一些学生在完成老师布置的任务时,照搬开源代码。程序倒是编译运行成功了,然而当老师提出新的需求时,学生却只能望着代码发呆。本以为有了开源代码,试图把代码读懂以后就可以自己改程序了,结果事与愿违,事倍功半。
问题的根源在于,有些学生不具备程序设计所需的算法基础,只会试图“参考”开源代码完成任务。毕竟,开源,开放的只是软件的源代码,不可能传递软件的架构和程序设计的思维方式。只有扎实的程序设计算法基础,清晰的软件开发思路,才能让软件开发的过程事半功倍。
我认为,开源软件的源代码,最值得参考的地方,是这款开源软件所用的开发环境、开发语言和调用的库。我们在开发自己的软件时,软件的架构一定要自己搭建。在这个基础上,程序的细节,通过搜索开源代码的写法和学习库的例程,慢慢打磨。这样一来,才能基于扎实的算法基础,灵活组合和修改开源代码,完成高质量软件的开发。
4. 简短的结论
开源是我非常看好的趋势。多年前有新员工问我推荐什么软件,我不知道怎么回答;而现在,我会回答,我推荐开源软件。
但在学习和工作中,还应当持谨慎态度,不可盲目推崇开源软件。软件使用者应当遵循社会习惯,使用大家普遍使用的软件;软件开发者要有扎实的程序设计算法基础,对软件架构要有清晰的思路,开放的源代码仅供细节设计时参考。
只有谨慎地对待开源软件这种趋势,才能让学习和工作收到更好的效果。
附录
以下是部分商业软件和与之对等的开源软件的对照表。
商业软件 | 开源软件 |
---|---|
Microsoft Office | LibreOffice |
Adobe Photoshop | GIMP |
CorelDRAW | Inkscape |
MATLAB | GNU Octave |
Overture, Siberius | MuseScore |
Cakewalk , Sonar | 世界树(Sekaiju) |
OriginPro | SciDaVis |
SDL TRADOS | OmegaT |
查询网站: