第二十八章 DragonFlyBSD
第三节 Linux 与苦难哲学
在许多狂热的 FreeBSD 粉丝里,他们甚至不允许别人把 FreeBSD 写作 freebsd,要和你强调,F 和 BSD 都是大写的。还说这是什么尊重之类的东西。大抵和孔乙己的茴香豆的茴的有四种写法一样吧:“FreeBSD 拼写有四样写法,你知道么?”,“不能写罢?……我教给你,记着!‘FreeBSD’、‘freeBSD’、‘Freebsd’、‘freebsd’这些字应该记着。以后做 FreeBSD 管理员的时候,写文档要用。”
我觉得这是一种病,用自己的要求规范别人,起码和孔乙己是一样的。
狂热粉一到店,所有喝酒的人便都看着他笑,有的叫道,“狂热粉,你脸上又添上新伤疤了!”他不回答,对柜里说,“温两碗酒,要一碟茴香豆。”便排出九文大钱。他们又故意的高声嚷道,“你一定又把 FreeBSD 这个单词小写了!”狂热粉睁大眼睛说,“你怎么这样凭空污人清白……”“什么清白?我前天亲眼见你在群里用小写拼出了 freebsd,被群主和管理员吊着十循。”狂热粉便涨红了脸,额上的青筋条条绽出,争辩道,“小写不能算错……特殊的表达方式!……读书人的事,能算错么?”接连便是难懂的话,什么“人非圣贤,孰能无错”,什么“特殊语法”之类,引得众人都哄笑起来:店内外充满了快活的空气。
讨论了这些可笑的大小写问题,再来说说以前经常说的苦难哲学。
能用 Windows 在几秒钟内完成的工作,非要在 Linux上瞎折腾,QQ 是腾讯公司软件,嘴上说着 GNU 精神,手上开始装 virtual box 或者 wine crossover。这算哪门子 free?这就是苦难哲学,你知道离不开 QQ ,那就无法选择 Linux。当然每个人选择百分之几的生活都是自由的,只是,不累吗?这不是自由,是束缚。都到 Linux 了,还是依赖于 QQ。这是苦难哲学彻头彻尾的体现。具体表现就是自己折磨自己,重复造轮子,不尊重现实。那些说着不要管是什么,先写个项目的人,都是这种人 ,造成了更大的悲哀。是不尊重软件工程的表现,完全无视用户与市场需求。写出来的东西别人怎么用,怎么看?吹嘘什么命令行比图形化好,说什么开发周期,加几个框框就能影响开发周期了?无不是受苦难哲学的影响,仿佛多经过一些步骤在类 UNIX 上实现了和 Windows 类似的功能是多么牛逼的一件事。有人连 fcitx 和 rime 都分不清就和我说 ibus 好,真是有趣的苦难哲学呢。
如何定义苦难哲学呢?
造轮子(无意义重复前人工作),忽视已有软件开发原理;
明明能用 A 完成非要用什么意义价值观这种玄而又玄的狗屁原则问题这种东西来捆绑自己用 B 完成;
鄙视一切用鼠标的软件,去背什么 vim 键盘图;
那么回过头来,用 WP 手机的用户是否也是苦难哲学的受害者?使用 Linux 桌面,FreeBSD 桌面的用户是否也是苦难哲学的践行者?
在某种意义上来说,确认如此。一些人非要在 Linux 下学习 C 语言,说什么更清楚的了解 IDE 的工作方法,说什么预处理编译汇编链接在 IDE 下不直观,非要折腾自己用什么 GCC。GCC 好用吗?对于初学者来说有什么用?那些是编译原理课程所需要的,而不是 C 语言。作为一门编程语言课程,绝不能无限的扩展其课程内容,况且目的不同,什么指针这种东西在高级语言里是几乎看不到的,吹嘘什么更理解指针与数组的实现原理是苦难哲学的表现,无异于屠龙术。我还是那句话,编译原理和算法导论没有用,大部分企业公司用不到,要对自己有一个定位,是搬砖的就不需要学习量子力学。除非仅仅出于爱好或者学术目的。
用户需求决定了软件的开发方向,而缺乏商业支持的开源产品往往无视之。用 GPL 协议捆绑用户也是一种苦难哲学。按照这个观点,用 Windows 就不是苦难哲学了?不然,能用 Linux 很快完成的工作,为什么非要用 Windows?到底这种东西是不是工具,我认为人非工具,而这种该是工具的则一定是工具。
我尊重那些将其珍视为亲人朋友而非工具的用户,但是请务必意识到,人是具有社会属性的,请多多关心他人,无论是谁。
我不止一次的看到这句话“多谈技术,勿水”,有时候则是其变种“你写过什么项目吗?”,“这里用什么可以实现”,“试编程,完成……”这种句子。有时候甚至是英文,是中英混杂的。我觉得这破坏了语言的纯洁性。
因此很多计算机行业或者爱好者的圈子都有专门的“水群”,还有个组织的名字更加有趣,叫做“水立方”来“水”。他们认为的“水”不完全是与计算机或者其主题无关的东西,有时候只是随便发发以显示自己的权威。
“如果你不按照我的方式去做,我们就没有交流的前提存在。”这就是他们的观点。“闻道有先后,术业有专攻”,韩愈的《师说》就阐述了这个道理,我们和他的不同之处无非就是时间罢了。这些和天赋什么东西完全无关。这并不比造火箭那样复杂。所以我不认为这种规则,双方平等对话的规则是建立在遵守一方先有规定的基础上。现在计算机界中引入了这样一个政治词汇“政治正确”就是为了反对这种固有规则。
看起来有些荒谬,技术和这些有什么关系?关我屁事?是的,和我以前说的那样,总是认为这些东西是无用的,技术强就是最厉害的。这是缺乏人文关怀的体现。这些无用之物不是因为其真正无用,而是太有用了以至于不知道怎么用。从而认为其是玄学。联系是普遍的。
Linus 说自己没变,是 Linux 社区脏了。所谓“强者制定规则,弱者只能遵守”,但是强者一开始就最强?强者的存在意义是什么?我认为强者有更大的责任去发展创新。否则便与社会达尔文主义无二——“优胜劣汰,适者生存”。这是极其不正确的,更是不尊重科学精神的行为。自然科学的结论怎么能够不经过验证,证伪就按到社会科学领域头上?倘若都是“竞争”,那为何要构建什么“和谐社会”,诺贝尔和平奖为什么要颁给“为促进民族国家团结友好、取消或裁减军备以及为和平会议的组织和宣传尽到最大努力或做出最大贡献的人”?直接打不就好了,你自己说的,谁强谁上。计算机行业也很简单,一样照这个套路来,谁技术高谁钱最多,谁说了算,谁在社会上受尊敬。显然不是,有谁记得和乔布斯同月去世的丹尼斯·里奇呢?每个人的选择都是自由的,你完全可以退出那些你不想也没有能力改变其规定的组织。就好比 Funtoo Linux 之于 Gentoo Linux 社区。
我极力避免使我的组织成为这种东西。我给人们更多选择,也坚持原则。
回过头来,”水”是什么意思。我们都知道这个道理:“一个团体或组织里的人越多,其水平就越接近社会平均水平。”好比知乎豆瓣乃至于 B 站都遇到过商业化的困局。现在的用户几乎根本给不了他们多大的商业价值,而扩招则会降低其专业水准和用户氛围。那既然你允许别人加入,又要不影响这种东西,如何做到?除非对方水平更高,如此其加入能得到什么有意义的东西?所以我们更喜欢新人。而非固执己见的老程序员,甚至还要你叫他“叔叔”。这明显不是一个圈子的人。你和他谈生活,他和你谈年龄,你和他谈技术,他和你谈经验,你和他谈项目,他和你谈工资。我们必须有这种觉悟,谈技术要有拿得出的东西,但不必奇货可居。
有人把这些都扯开了,认为完全靠“人”。此言差矣,封建制度之所以维持这么久,就在于这么一套制度或者几套制度。①中央集权 ②专营制度 ③科举制度 ④思想专制。这是完全靠人的吗?西方其法治才是源远流长。没有任何人能够脱离生活谈技术。现在几乎没有那种所谓“追求真理”的人了。也没有颜回那种有所得乐而忘忧的人了。不还是为了生存?我不懂如今大谈区块链,大数据,人工智能的人和古代那种大谈孟子治国,孔子育人的老儒有何区别。怕也是一个孔乙己。“FreeBSD”中的“F”和”BSD”都要大写,不然就有四种写法。你应该学会罢,将来做运维的时候要用到。
有些入门者也很搞笑,也谈“勿水”,自己进来本来就是“水”的过程。人越多,专业组织水平越低。我力图改变这种局面。还是老话,同心同德,大家想的不一样,就没必要浪费时间了。有人还为新手写了本书,叫“提问的艺术”,或者直接说 read fuck。诚然我承认不是每个人都和孔子一样有教无类,是个教育家。但是我还是愿意给出更多帮助,因为,曾经每个人都如此。
最后奉劝读者,勿用百毒,善用 Google、Duckduckgo 等。这也是你能看懂本文的前提所在,否则你不可能明确地理解我的意思。我承认读者自己的阅读理解是对作品的再次创作,但此处请务必不要。
什么是苦难哲学,这个词不是我生造出来的,而是切实存在的,在学界这么多年我看到很多充斥着苦难哲学的地方以及构成这些地方的成员和他们所开发的软件。
软件工程,是将软件开发规范化,流程化以提高软件开发效率的一种工业方法。
软件工程第一步就是用户需求分析,大多数苦难的来源就是因为无视这一步,总是认为“写”代码是最重要的,而“算法”更是其吹捧的重中之重,所以写文档,用户需求分析什么的,和自己没多大关系。自己只管写代码就好,有没有人用?造轮子?那都不是我所需要考虑的问题,无视科学,不尊重科学是苦难哲学产生的重要根源。
有人认为自己是做内核开发的就很牛逼,但其实不过尔尔。
连 Linux 内核不是完全开源(见 GNU Linux-libre 项目,一个完全开源的 linux 内核)这一事实都不知道,还认为内核完全都是开源的,还能说出“不开源那我是怎么编译”这种胡话,真是令人忍俊不禁。这些骄傲的人儿不在少数,我在 USTC 和 TUNA 都见过很多,或者说都是这种人。对此我不予置评。都是被苦难哲学毒害无法自拔的人们啊。
开源软件的质量通常很差,存在各种问题,甚至是非常易于发现的问题。就拿图形化界面的 ZenmapGUI 来说,至少存在两个重要 bug。一是经常性地在输入框无法输入任何文字,且与输入法键盘无关(问题在多台计算机均复现);二是当切换扫描窗口时,扫描输入的日志会被清空,找不到日志。所以我很好奇这些人究竟自己用没用过自己开发出来的软件,因为凡是用过的,都有这种问题。这难道说不上是一种苦难吗?(已经报告 bug 但未回应)原因在于人力和资金问题,开发者水平参差不齐,能力有限,二是本身有本职工作,无法分心顾忌太多。
这种简单的 bug 随处可见,比如安装 Debian 时,如果你创建了普通用户,那么你使用 su 命令或者 sudo su 命令都不会成功,因为其并未改动 sudo 的配置文件(应加入 ALL=(ALL) 一行)。虽然只是一行只差,但足够困扰新手了,反观 windows 绝不会有这种问题,蓝屏了重启你多半是能够开机的,但 kernel panic 怎么办呢?我想重启是无用功。是技术问题吗?是其根本不关心这些问题。
所以产生了 FreeBSD Handbook 文档要不要翻译,有什么意义的问题,当然缺乏人手各种推诿是主要原因。会的不用翻译,不会的翻译了也没用,还是不会。
计算机哲学目前没有一个完全大一统的理论体系。计算主义是一大主流,源自毕达哥拉斯学派,其认为数是万物本原,数是和谐统一美的东西,构成了世界。
黑客帝国就蕴含了计算主义:如何证明我们真实存在,而不是计算机模拟的数字信号?
苦难哲学看上去只是一种行为方式,如在 Windows 平台安装 VIM,并声称其比记事本强一万倍。但不然,苦难哲学只是通过这些行为表现出来,其根源还需要进一步批判思索。
许多开源小将不懂何为开源却大谈开源。
“你写小说为什么不用 LaTeX,为什么用 Word?”
“你凭什么说 LibreOffice 不兼容 Word,你怎么不说 MS Word 不兼容 LibreOffice?”
“自由与软件基金会的 ‘Free’ 的意思就是免费,不要钱。”
“为什么你不用 GIMP,去用 PS。”
以上种种就是我看到的一系列笑话。他自己说的那些东西有可用性吗?
小学生说 libreOffice 好用,于是我去安装了一个,先不提反人类的界面设计,就说他 10 分钟崩溃了 3 次,连崩溃前的编辑记录都没有,“这玩意也是人能用的?”我不禁感叹道。他甚至没有小一小二四号字,只有 12345678 这种东西。这个东西首行缩进的设置都够呛,都是厘米以单位的,而且首行缩进不随着段落文本的调整而调整。这无疑贯彻了开源哲学的反人类。
小学生说 LaTeX 好用,我看了半天也没发现对于一个文字工作者来说这东西有什么好用的。
小学生说 GIMP 比 PS 好用则更是无中生有。
小学生说 Free 是免费就更加是谬论,Free 是自由而非免费,也就是说收费开源是被允许的,微软的开源模式就是这样的。微软事实上并不是闭源的,它是有条件的开源的,条件是购买一定数量的 Windows 副本,而且有正当理由。还有人说 Windows 是闭源的,说明这个人不仅不懂 Windows,更不懂什么是开源。自己不信可以看看 https://www.microsoft.com/en-us/sharedsource/enterprise-source-licensing-program.aspx
说他是小学生都是侮辱了小学生,这就是一个脑瘫罢了。这就是苦难哲学简称闲的没事干,在那造轮子。
这种人比那些巨苣更加令人感到恶心,他不仅没有技术,还在那里半瓶子水晃荡。
他举例 Windows 似乎是一无是处,事实上是这样吗?
当然不是。
举例 NTFS 文件系统,这个文件系统是 Linux 一辈子都做不到的。这个文件系统的稳定性远远超过所谓的什么 xfs ext,更不要 btrfs 了,那就是一个笑话。至于 zfs 这种文件系统更是好笑,设计上只能扩大文件分区,无法缩小。
NTFS 无论你怎么意外断电他都能顺利开机,反观 Ext 这种东西根本没有可靠性可言。
最令他们忽视的是 Windows 的兼容性。
2021 年代的 Windows 11,甚至还可以运行 26 年前 windows 95 程序,而且更甚至地是不需要重新编译源码。
这是任何一个 Linux 系统都做不到的,他们甚至连几天前的程序都不能够兼容。
他们的程序会依赖特定的 C 库,依赖特定的内核版本。而这些都是改不了的,除非你的 Gentoo。就算是 Gentoo 也不是能够任意选择的。Linux 程序也有兼容性?这就是一个笑话罢了。
还有人说 Linux 软件不需要兼容性,哈哈哈哈,看看这些开源小将多么荒谬吧!
不要提及 Macos,那是苹果战略性的不兼容,而且他想兼容就可以兼容,老的软件有老的行为,新软件有新行为。
Windows 的图形界面的稳定性是 Linux 一百年也达不到的。Xorg 和他所谓的替代品 wayland 就是两座屎山。
开源软件根本上就是违反软件工程的,因为其第一步就没有进行用户需求设计,他们才懒得管用户到底看不看得懂 LibreOffice 那一串二十几个没有介绍的图标是什么作用的,他们才懒得管你到底会不会编译程序。
这些小学生连以上这几点常识都没有就出来半瓶子晃荡,叮铃咣当乱响。
Copy link
Edit on GitHub