我的计算机软件价值观

我的计算机软件价值观

昨天的启动盘与GNU/Linux

我大概从2010年开始接触GNU/Linux操作系统,使用的第一个发行版是雨林木风的YLMF OS,现在已经改名叫StartOS。起初它的用户界面很类似Windows XP。现在回忆起来,当时对GNU/Linux的文件系统一窍不通,在把它安装到虚拟机以后很快就删掉了。至于如何想到要安装GNU/Linux的,有一段很长的故事。大概是在2008年,我还很年轻的时候。有一次,我家计算机的显卡出了故障,于是只能送修。家里能使用的只有一台很旧的惠普机,我在调整分辨率时失误,造成了黑屏。这时不知道如何恢复,便萌生了一个制作启动盘的打算。我开始了解Windows PE的知识,并且开始尝试制作启动盘。我找到了名为无忧启动的论坛,从中学习关于计算机启动的知识,逐渐尝试制作制作自己的Windows PE的启动盘。谈到启动盘,不得不想起大名鼎鼎的Grub for DOS启动管理器,简称grub4dos。它是一个基于GNU Grub的启动管理器,由国人chenall开发。它功能十分强大,现在很多启动盘都使用其作为启动器。由于Grub与Linux的密切关系——grub本身就是为Linux内核开发的,无意中,也许是偶然,我想尝试一下GNU/Linux。在那之前,我下载了一些grub4dos使用的gfxmenu的message文件,那是一种美化启动界面的文件。其中有一张上面画着KDE的Logo,当时的我还不了解KDE,也不知道它是GNU/Linux的一种桌面环境。于是,我选择了当时新生的YLmf OS,把它装在了vmware虚拟机上。不久,如文首,我就把它扔进了垃圾桶。可是后来,我没有放弃对其探索。出于好奇,我在启动盘上安装了CDLinux以及SLAX。并且了解到ubuntu这一个GNU/Linux发行版,在选择了10.04 LTS这个当时最新的版本之后,我将它安装在那个旧旧的惠普机上。在寻找关于GNU/Linux的信息的时候,经常会看到一长串命令前面有个sudo。很不解那是干什么用的,而后知道那是使普通用户暂时获得root权限的命令。第一次使用sudo命令,因为输入的密码不显示出来,我还以为程序出了问题。现在才知道,那本来就不需要显示出来。上网查到了让sudo不需要密码的方法。大家不知道的话,我可以教大家一下。运行visudo命令,这是会来到一个vi的环境,打开的是/etc/sudoers文件。输入下面的内容:your_user_nameALL=(ALL) NOPASSWD: ALL

保存后,使用sudo就不需要输入密码了,可是这很不安全。编辑环境是vi,不向普通的编辑器,没有学过的人是很难使用的,我那是深深的感觉到这一点。可是也不了解ubuntu自带的gedit,不知道用它来编辑sudoers文件。也不知道过了多久,我不再纠结sudo的问题。我开始发奋学习ubuntu linux,首先研究ubuntu的美化、本地化基本配置,研究GNU/Linux的命令。怀揣着一颗充满希望的心,我开始了ubuntu环境下的编程学习。

迈入编程殿堂

我第一次接触计算机编程,是在学习GNU/Linux之前。学校发了一张报名表,上面有一个西部集团杯的vb课程。也许因为从小喜欢计算机,对计算机编程也抱有一定兴趣,或许也是因为如果学得好,拿个奖的话,对升学也有一定帮助,我报了Visual Basic班的名。首次课,懵懵懂懂地按照老师的话,用鼠标拖出一个窗口,然后画一个按钮,一个输入框,双击后,再在代码框里输入if语句。因为老师不是从零开始讲起的,真的很难理解,严重地说真的是什么都听不懂。

后来,我从网上找到一个C语言的教程,名为《LinuxC编程一站式学习》,那是我编程的启蒙书,我也是从这本书入手,迈入计算机编程的神圣殿堂的。从看电子书起,到在图书馆发现这本书的印刷版,我将这本书带回了家。这也是我第一本编程书,如今看着自己摆满书桌的计算机书,真的是有种说不出的感动。我的C编程完全是在ubuntu下进行的,我不像很多初学者,使用Turbo C或者Dev-C++之类的IDE,而是靠着一个gvim加终端打遍天下。我很庆幸我学习了vim这个编辑器,能够熟练使用它的程序员真的是很受益的。我把网上有人写好的.vimrc配置文件拷贝下来,并装了几个vim插件。看着网上的人把vim打造成一个功能强大的IDE,我很是羡慕。并且羡慕他们开这一个终端,输入一行一行天书般的命令,很是帅气。更有甚者,不开X11,直接在控制台下工作。

这使我回忆起当时制作DOS启动盘的画面,我曾经给DOS分过一个分区,装了ms-dos7.1加上Windows 3.1。当时寻求的就是这种黑底白字的效果,然而DOS完全不能满足我的胃口,认识了GNU/Linux以后,我发现它也可以不仅可以实现那种命令行的效果,而且比DOS强大很多,并也可以选择是否启用X11,就像DOS是否安装Windows 3.1图形界面一样。这表现在GNU/Linux至始至终就是一个运行在32位保护模式下的操作系统,而DOS是运行在16位实模式的。Windows 2000之前的Windows操作系统例如win98、win95、win3.x其实都是运行在DOS内核之上的,老一辈的计算机用户可能都熟悉用一张DOS启动盘启动win98的故事。而且windows 98属于混合16位、32位的操作系统,这就是为什么它经常动不动就蓝屏的原因。

这有还有个小故事,当时在装DOS以后,激活主分区的时候不小心碰了一下分区表,造成分区表错误,几个分区被弄丢了。当时心急如焚,最终还是花了一晚上时间用disk genius把丢失的分区搜索出来,并且修复了分区表。从此,对于分区表的操作甚佳小心。

话说回来,GNU/Linux就是我一直在寻找的,DOS的替代品。

我在一步一步地,参照教程学习GNU/Linux环境下的C编程。后来,从VB班转到Pascal班,学习算法。但最终还是发现,C语言不愧是最受欢迎、最强大的编程语言。当时的我是个纯C党,也就是不使用C++的人,这似乎是像Linux内核之父李纳斯·托沃兹的作风。

自由的捍卫者与其追随者

以前看到过一幅画,画上幽默的画着一头长着长角的角马,它的名字叫”GNU”。

向大家推荐一本书,叫《若为自由故》,是自由软件之父理查德·斯托曼的传记。他,本为一名无名的电脑程序员,却因为“自由”二字成名于计算机界。三十年前,他在软件界发起一场革命热潮,为”自由软件运动“而呼吁。他,是“自由”二字的传道士,并且给无数程序员们带来了福音。他,是一名斗士,一名理想主义者。

读了这本书以后了解理查德斯托曼的故事,以及这头角马的来历。他本为麻省理工大人工智能实验室的程序员。一次,他因为自己的打印机不能正常工作,于是想要改写打印机的驱动程序,然而,商家不提供驱动的源代码,这使他颇为苦恼。那个时候,同行之间写的程序代码都是共享的,然而随着时间的推移,软件被商业化,以至于程序员们不能随便修改程序代码。

斯托曼看不惯这一点,于是辞去了麻省的工作,发起了一个名叫GNU的计划,初衷是为了创造一个完全自由的操作系统。在那里,你可以自由的获得软件并且修改它,传播自己的作品,分享他,同时因为他人的分享而受益。随即,他成立了自由软件基金会,并且与律师一起编写了一个自由软件许可证,为了“反版权”开拓出一条崭新的道路。这条许可证后来成为当今软件界最为广泛采用的一条。

第一次拿到这本书,我就被封面上的斯托曼迷住了。一个长头发、络腮胡的黑客形象浮现在我眼前,封面上的他凝视着远方,似乎在思索什么,同时也在寻找着什么。后来我知道,这位思想者在思索着“自由”,这贯穿整本书的二字。在我以前的印象里,他像一个宗教领袖一样神秘并且令人尊敬。这本书让他在我中脑海中的印象渐渐地清晰起来。实际上,他是一个有血有肉、脾气倔强、难以合作的怪老头。

我很早以前就接触到自由软件,他所倡导的。当我渐渐接触它,我尝到了它的甜头。自由软件是一种可以不受限制地自由使用、复制、研究、修改和分发的软件 。这方面的不受限制正是自由软件最重要的本质。这是理查德·斯托曼宣扬的。他认为,一个好的软件,便该自由自在地让人取用,而不是用来作为相互倾轧、剥削的工具。他的精神是完全反商业的,即便当比尔盖茨拥有亿万家产,他仍然坚持自己的理念,在自由的阵地上奋斗。

如今,已经六旬的老者斯托曼依然在满世界奔波,捍卫着自由。虽然有些固执,但是我喜欢这一点,也尊敬他在当今社会,当年他发起的自由软件运动的原始教义被慢慢的弱化的时候,他却依然坚持着。三十多年来,他从来没改变过,动摇过,始终宣扬着自己的观点——自由。作为自由软件之父,他将被人永远铭记。

虽然我不能保证我以后写出的程序全部像他一样贡献出去,但我从心底里佩服他——在商业大潮中独自为了梦想而战斗的男人。偏执也好,极客也好,对这名为了消除孤独而选择孤独的胖胖的大叔,我毫不吝啬地献上我的敬意。

渐渐冷静的头脑与Mac的身影

当时的我似乎为了自由而疯狂,常常在QQ的签名上挂着鼓吹自由软件的言论。但是到现在为止,我火热的头脑似乎已不再那么火热。对于自由软件的鼓吹者,我不再那么拼命的宣传自由软件,或是极力抵制商业软件。作为自由软件的受益者,我虽然没有放弃它,但却也不敌对那些封闭源代码软件。每件物品的存在,每个事情的发生,都有它独到的意义。如果没有GNU,没有Linux,或者没有FreeBSD,我相信微软的Windows将把软件界垄断。但如果没有Windows,我们今天可能不会有这么多网络游戏可玩,或者不太可能出现电脑病毒,而更没有杀毒软件存在了。在和GNU/Linux亲密接触数年以后,我从一个新手,渐渐成为一个初级黑客。不敢说我的编程水平高,因为我毕竟只写过一些小的程序,命令行的技术也称不上出色。曾经的我的确为自由软件疯狂过,但此时此刻,我对软件的看法不再那么绝对,不像《完全用GNU/Linux工作》作者王垠那样,为了一个操作系统的问题而退学。面对一个哲学问题,开放还是封闭,一个计算机软件界的战争,自由还是商业,我选择了中立的态度。

对于GNU/Linux的厚爱,我没有放弃,但我也不痛恨微软或者苹果。如今,我有了苹果电脑,使用的是上面自带的OS X系统。笔记本上也同时安装了Windows 10与ubuntu linux 16.04。对于苹果电脑,有些人买了以后就把自带的OS X卸载掉,装上上手的Windows系统,对此我的看法并不是对他们感到歧视,说他们不知道OS X的好处,或者说他们不会使用OS X,很低级的那种话。每个人有每个人的习惯,爱好,以及他倾向的操作系统。我装Windows 10,主要是为了与大部分用户兼容,为了网络游戏,或者与那些只会用Windows的人保持一定的共同语言。而对于苹果的OS X,我的iPod touch需要使用上面的ITunes,并且认为苹果的用户界面真的是非常华丽。作为一个用过GNU/Linux的人,对于OS X的命令也有些熟悉,因为GNU/Linux是一个类UNIX操作系统,而苹果是一个基于Mach微内核,以及FreeBSD的UNIX系统。虽然GNU命令与BSD命令不完全兼容,但是还是有些类似的地方,一些UNIX的影子。

现在的我,很舒服地工作在OS X平台下,日常的很多工作都在它下面进行。我是用的Qt编程API是全平台的,我在ubuntu和OS X下都安装了它,但由于ubuntu下的Qt Creator的输入法似乎存在问题,我在画界面的时候,还是使用Mac下的Qt Creator。我在上面用brew安装了vim,把GNU/Linux下的配置文件拷过去,和终端一起当做IDE用。

现在越来越多的程序员开始使用Mac了。买到一本日本的杂志,名为《Software Design》。这期的杂志主要讲述Mac平台下的程序员故事。作为UNIX的继承者,OS X正如官方所说,是个坚如磐石、高效的操作系统操作系统。很多不支持GNU/Linux的Windows软件也有相应的Mac版本。苹果硬件贵是众所周知的,并且它把硬件与软件捆绑,是一种很明智的售货方式。

作为GNU/Linux的爱好者,我知道很多人用苹果系统是从来不用终端的,他们不知道苹果也可以输命令来用。但我不嘲笑他们,因为自己也曾经对UNIX命令一窍不通。

至于,BSD命令与GNU命令的不同,我在苹果机上安装了virtualbox虚拟机,并且装了好几个收藏的GNU/Linux发行版。为了好玩,我还收藏了PC-BSD系统,以及一个名为Haiku OS的类似于BeOS的操作系统。

GNU/Linux真的走偏了吗

看到过一个帖子,楼主说”当人们为Linux的不断壮大,不久就要挑战Windows的时候,却没有发现,Linux忘却了自己本身的理念——开源,自由。”他还说道,一些大企业以及知名软件的加入,看起来是对Linux有益的,但违背了初衷。那些闭源软件只是看中了Linux这块市场,把它当做蛋糕来啃食。Linux未必没有病毒,我见过用bash脚本编写的蠕虫病毒,只不过是使用GNU/Linux的人比较少,大部分Windows平台下的游戏,以及大众化的程序使它充斥着病毒。如果病毒,广告的滋生,以及越来越傻瓜化,以及挑战的的缺乏,是否会对Linux造成威胁呢?

有些人表示,只有小白才会安装很多闭源的软件。又有人说所谓新手友好的发行版令人呕吐,新手友好什么都不算,只有用户说了算才是硬道理,当GNU/Linux完全用于娱乐时,它就死了。因为它本身就不同于Windows,可是有些偏激的开发者和用户要求它成为Windows的系统。

不过,那么多组织为了推广GNU/Linux费尽心思,就算用了违背自由软件的初衷,也是很不容易的。假如GNU/Linux变得更加简单,没有什么不好,没有人希望使用电脑时不停折腾,没有人不想要一个合适的环境。

又有人说,觉得闭源不想用那就不要用,其他用户未必跟这位楼主想得一样,软件和系统的开发者更加不会互相考虑。楼主可能是钻牛角尖了,其实有多少闭源软件不是问题,重要的是自己有选择的权利。自由软件的本质不是为了限制人们开源,而是为了有更多的选择。用GNU/Linux有许多理由,简单来说,黑客工具多、免费不要钱、看起来帅,这些都是。它是个开放的平台,没有理由拒绝闭源软件。商业软件完全被自由软件取缔是一件不现实,也是不可能的事情,GNU/Linux的灵活、机动性允许了自由软件与收费软件共存的可能,自由这个准则,使商业公司在这个平台下拥有同等的自由。又例如,RedHat Linux不就是一个商业的Linux版本吗。GPL没有限制软件的商业化,而BSD条例就更宽松了,只要你喊一声,我是用了BSD技术,管它开源还是不开源呢。苹果就利用了BSD这一点,造就了现在的OS X。GNU保障的是用户的自由,人们想怎么用就怎么用。有些人不理解开放和自由,处处建立起对其他用户的种种鄙视,用着自由的系统,却怀揣着干扰别人自由的心。

可能,对于程序员或者仅仅的使用者,他们的视角是不一样的。如果真的不接受GNU/Linux的现状,可以去投靠FreeBSD。

Linux与FreeBSD

一个可爱的小企鹅,一个拿着叉子的小恶魔。这是Linux与FreeBSD的形象,他们确实有很多相似之处,比如它们都是基于UNIX演变过来的,并且都由非盈利组织及团队开发的,并且目标都是创建最有用、最可靠的操作系统。

来谈谈区别。事实上,Linux只是一个操作系统的内核,而FreeBSD是个完整的操作系统。很多Linux用户不理解FreeBSD,而FreeBSD用户也不熟悉Linuxer们的心情。

一个单独内核,一个完整的操作系统

一个拥有五花八门发行版,一个具备完整的系统架构。

一个向所有领域进发,一个适合研究技术。

一个需要你告诉别人你怎么做的GPL,一个更加宽松的BSD许可。

一个在桌面应用颇有成效,一个在终端具有传统优势

一个从x86从零开始编写UNIX的一大群hacker,一个从UNIX移植到x86版的一群experthacker。

我把两个操作系统的区别罗列了一下。完美的操作系统是不存在的,正如人人都有缺陷,两个不断发展的操作系统也如此,但这并不意味着他们不好。而是各有各的优点,各有各的弱点。

相对Linux,FreeBSD具有以下特点:民主、富有凝聚力、分享、有义务、艺术性、以及坚持。它的社区是个团队,团队首领会被定期选举,而却抉择都是民主议程。FreeBSD的代码比Linux整齐,系统也优秀。每个人对它的热爱使之成为了一个充满美的操作系统。乔布斯的理解,也使得它的苹果成功了。技术上FreeBSD历史更加悠久,代码也健壮。而Linux社区以Linus作为精神领袖和凝聚力象征,当他太长时间掌控一个组织,容易积累错误。BSD社区的人更温文尔雅,给人以君子之感。

因为很多人对FreeBSD的认识比较少,使用范围也小,导致它在对一些新产品的驱动支持还不如Linux。如今,FreeBSD也有Linux的二进制兼容。双方各有各的支持者,只要互相说自己没有对方好,就会跳出来与之争辩。而我看来,GNU/Linux是一个优秀的操作系统,如果说它比FreeBSD更优秀,会引起很多人的不满。它们间的差异更多的是哲学上的问题,它们之间是相互取长补短的关系。

例如,又一次我在ubuntu-cn IRC上说道自己在用苹果系统,有人就很反对,说苹果多么多么渣。我没有回绝,因为每个人对待事物的角度会因自我的不同而不同。我们不应该整天说那个操作系统不好,好与不好没有绝对,只有相对的。

关于作者

今天写这篇文章的作者,比起昨天,稍渐成熟,但还差得远。从纯C党,到慢慢接触C++和Java。平时的我在苹果系统下工作,但我暂时不打算学习Objective-C和Swift编程,以及MFC。主要在研究Qt,并准备攻破Java写安卓程序,也在学习bash以及python。朝着UNIX hacker的目标努力,希望读到这篇文章的朋友能够理解UNIX的睿智从我对软件的价值观了解到什么。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注