少年黑客对自由软件的自由漫谈
编者按：本文作者是一位初一学生，是我们的“开放投稿计划”的第一位投稿者（calvinlin）的同龄人，这篇文章是他对 Unix/Linux、自由开源软件的一些观点。
自由软件
117.175.175.104
真是英雄出少年，不禁想起我在这个年纪也是指点江山，激扬文字，粪土当年万户侯。<br />
<br />
感觉有点像王垠 (无贬义)。<br />
<br />
问题：王垠当年提倡「完全用 linux 工作」，然而最近又发文挺 windows 喷 unix，这中间究竟经历了什么？<br />
链接：zhihu.com/question/21523811
来自四川成都的 Chrome 91.0|Windows 10 用户
2022-03-24T11:27:02.000
117.175.175.104
个人觉得观点有些偏激。国家是阶级矛盾不可调和的产物，而全世界有 197 个国家，所以世界并不将属于开源，也不属于闭源，或者说属于开源，也属于闭源。<br />
<br />
当然，每一个坚信自己的信条并努力践行的人都值得遵重。生活是个缓慢受锤的过程，人一天天老下去，奢望也一天天消失，最后变得像挨了锤的牛一样。希望你可以永远生猛下去，什么也锤不了你。
来自四川成都的 Chrome 88.0|Windows 10 用户
2022-03-24T11:58:10.000
117.177.29.19
初一就会这么多了，真是后生可畏，初一时我还只想着凑够网费去游戏厅练连招。
来自四川自贡的 Internet Explorer 11.0|Windows 10 用户
2022-03-24T14:15:23.000
117.89.197.46
我也是一名初中生(准确来说，初三了），同时也热爱着开源与 linux。虽然在我所处的环境中，并没有多少人了解开源，我也并不被理解，但我仍将向他们介绍开源。我同时也热爱编程，对python, java有少量了解（起步晚，见笑了），我的父母并不支持我学习编程，一方面是因为学业繁重，另一方面是因为他们对于编程并不了解（他们觉得编程会搞坏电脑），但我仍然会坚持学习，因为我心中的热爱。支持这位与我年龄相仿的作者，愿我们永葆激情！也支持linux.cn，在这里，我找到与我志同道合的人，对技术也有更多了解，感谢这个平台。<br />
<br />
无论我们年龄
来自江苏南京的 Chrome 91.0|Windows 10 用户
2022-03-24T19:15:03.000
120.11.99.207
Linux一直是geek的玩具，但是对于99%的人来讲，我们只是需要一个得心应手的工具，养家糊口，仅此而已。
来自河北沧州的 Chrome 99.0|Windows 10 用户
2022-03-25T12:46:41.000
117.89.197.46
才发现剩余部分没发出来：<br />
无论我们 年龄性别民族 如何，都可以为开源贡献自己的力量！<br />
我是微影(Peng),22年我还太小，试看十年后，我一定会让我的名字在开源界有一席之地！<br />
<br />
（我的archlinux滚挂了，只好先用Windows?）
来自江苏南京的 Chrome 91.0|Windows 10 用户
2022-03-26T08:50:55.000
124.95.212.142
希望linux发展的越来越好
来自辽宁的 Chrome 99.0|Windows 10 用户
2022-03-26T09:15:10.000
113.3.200.226
年纪越大了，懂的多了后反而写不出来这种文章了。还是年轻好，能随意的表达自己。
来自黑龙江牡丹江的 Firefox 98.0|GNU/Linux 用户
2022-03-26T17:09:16.000
118.112.52.108
niu
来自四川成都的 Firefox 98.0|GNU/Linux 用户
2022-03-27T09:19:22.000
117.89.197.46
希望我们能留住这种激情
来自江苏南京的 Chrome 91.0|Windows 10 用户
2022-03-27T19:51:48.000
111.35.223.8
所有的工具，最简单的往往最实用，就像筷子，流传千年依然再用，电脑最伟大的发明很多人我觉得不会说是系统，而是鼠标，一个鼠标走天下。windows的成功，确实让很多人认为他就是电脑，因为对于软件来件这是一门专业的行业。专业的人才会知道他的奥秘，而普通只会知道哪个东西用着方便。如果知道原理才去用，那么世界上95%的人用不了电脑，用不了手机。所以说让系统简洁化，模块化才是能通向普及话的道路。哪怕就像一个旅行者包袱很沉，也不会轻易放弃行囊的东西，因为寻找是需要付出时间代价的。越简洁，越通用。而对于电脑来说简洁不是没
来自山东烟台的 Chrome 93.0|GNU/Linux 用户
2022-03-27T21:57:07.000
111.35.223.8
所有的工具，最简单的往往最实用，就像筷子，流传千年依然再用，电脑最伟大的发明很多人我觉得不会说是系统，而是鼠标，一个鼠标走天下。windows的成功，确实让很多人认为他就是电脑，因为对于软件来件这是一门专业的行业。专业的人才会知道他的奥秘，而普通只会知道哪个东西用着方便。如果知道原理才去用，那么世界上95%的人用不了电脑，用不了手机。所以说让系统简洁化，模块化才是能通向普及话的道路。哪怕就像一个旅行者包袱很沉，也不会轻易放弃行囊的东西，因为寻找是需要付出时间代价的。越简洁，越通用。而对于电脑来说简洁不是没
来自山东烟台的 Chrome 93.0|GNU/Linux 用户
2022-03-27T21:57:10.000
111.35.223.8
所有的工具，最简单的往往最实用，就像筷子，流传千年依然再用，电脑最伟大的发明很多人我觉得不会说是系统，而是鼠标，一个鼠标走天下。windows的成功，确实让很多人认为他就是电脑，因为对于软件来件这是一门专业的行业。专业的人才会知道他的奥秘，而普通只会知道哪个东西用着方便。如果知道原理才去用，那么世界上95%的人用不了电脑，用不了手机。所以说让系统简洁化，模块化才是能通向普及话的道路。哪怕就像一个旅行者包袱很沉，也不会轻易放弃行囊的东西，因为寻找是需要付出时间代价的。越简洁，越通用。而对于电脑来说简洁不是没
来自山东烟台的 Chrome 93.0|GNU/Linux 用户
2022-03-27T21:57:11.000
编者按：本文作者是一位初一学生，是我们的“开放投稿计划”的第一位投稿者（calvinlin）的同龄人，这篇文章是他对 Unix/Linux、自由开源软件的一些观点。

> 
> 编者按：本文作者是一位初一学生，是我们的“公开投稿计划”的第一位投稿者（calvinlin）的同龄人，这篇文章是他对 Unix/Linux、自由开源软件的一些观点。
> 
> 
> 公平的讲，这篇文章的论证并不算很严谨周密，观点也略有偏激，但是编者作为从业 20 多年的自由及开源爱好者，初读此文，非常惊异。慨曰，“吾道不孤也！”
> 
> 
> 


![](/data/attachment/album/202203/24/100922oiw5eeeqe5wgqvcf.jpg)


### 导读


“天下没有免费的午餐。”


这句话只说对了一半。对于软件业，或者更准确一点，对于**自由软件业**，这并不一直是对的。


商业软件公司正在控制着我们 —— 普通计算机用户甚至专业的程序员 —— 的大脑，在我们的潜意识里面，似乎只有大公司的东西才质量好。下面是几个场景：


* 我倾向通过**收费**的网课、系列视频或者文章来学习技术，而不是阅读软件自带的**免费**文档或者是**免费**的外语甚至中文标准，因为前者更容易。
* 免费的东西都是**劣质**的。只有收费的东西才可以保证质量高。
* 才不会有人将优质资源公开免费，除非他们有着特殊目的。
* 大公司的软件比一群只因为兴趣爱好的人写的软件更稳定、更值得信赖。


绝大多数普通用户都会认为这几条全都是正确的，甚至一些**有着几年经验**的“高级”程序员也是。他们宁愿买某公司的 **IDE** 来开发，而不是使用轻量级的、**免费**的 Vim，后者毫无疑问是大多数 UNIX/Linux 程序员的必备。


这一切的一切，都是因为：


### 一、奇妙的商业软件


自从 Windows 系统成功，成功商人比尔•盖茨就被各种各样的人放在各种各样的地方“膜拜”。一方面可能是因为他太有钱，一方面可能是因为他做了这么个系统（网络上还有很多人宣称比尔•盖茨设计并实现了 Windows 系统）。


然而，在这个“伟大”的窗口系统死机、蓝屏之时，大多数人骂的却是他们的电脑：“什么破电脑！见鬼！”，而不是系统（顺便说一句，还有人将 “Windows” 称作电脑）。真奇妙。


转观无数的 Linux 开发者（哪怕是林纳斯•托瓦兹），都没有受到这样的待遇。


软件是值得付钱的，连自由软件领袖理查德•斯托曼都没有否认这一点。但是，你真的确定那些糟糕的、动不动就“该应用程序无响应”的东西值得这么多钱吗？我反正觉得不是。


“某窗口系统”还有一个十分神奇之处，它好像是支持 POSIX 的，毕竟设计某新 32 位系统的时候这不就是其中一个目标吗？（当然有的人会跟我说那应该是 ISO C）


实际上呢，好像它只支持了为数不多的几个系统调用，剩下的几乎都是标准库函数（`strlen` 那样的），就连基本的 POSIX 风格的 `open` 都没有……


与之对比的是对各种标准都支持的 Linux。它支持全套的 POSIX （streams 除外），性能测试也不错（当然，“某窗口系统”的裸机测试也不错。注意，是裸机），更令人骄傲的是，优秀的进程创建以及文件系统。与此相比，窗口系统的文件系统以及进程创建就不尽人意。



> 
> * 关于对 POSIX 的支持，参见《UNIX 环境高级编程》第二章
> * 关于进程创建以及 Windows 系统的相关情况，参见《操作系统概念》 第十六（Linux）以及十七章 （Windows） 以及 《Linux 内核设计与实现》第一章
> 
> 
> 


我知道有些人又要说啥了：我们的安全认证等级（A1 那样的玩意儿）比你们高！



> 
> * 关于安全等级参见《操作系统概念》 第十四章
> * 这里安全认证单单是指对文件的访问权限的丰富，某系统可以设置 XXX 没法访问之类的
> 
> 
> 


这是无法避免的，传统 UNIX 的设计就从来没想过这一点，用户被抽象成了 **同组**、**拥有者**以及**其他**（当然，`root` 总是有权限）。但就我个人的观点来说，这就足够了，毕竟我没见过有多少用户会创建两个用户，他们甚至还在用 Administrator 或者是以一些愚蠢的字符为名字，例如 “abc123”。


再来看看软件。


### 二、设计哲学 (当然不是


“某窗口系统”的软件挺多，包括 IE 这样的令人头疼的浏览器（哦不，它已经被放弃了）、各种没人碰过的游戏以及一大堆更没人碰过的**附件**。这些是随着系统一块安装上去的，想卸载必须手动，十分的麻烦。还有类似 Power Point 这样的有用的“高级软件”，单个软件就包含了数不尽的功能，当然，它十分的贵。


了解 Linux 的同学大概已经知道我会说什么了。没错，我要说的就是不同系统下的设计哲学。


这更是一个差距，Linux 下面的每一个软件都平均不足 10 MB，并且都有着自己独特的分工。`wc` 就是统计文本文件的、`cat` 就是显示文件内容的（就是这么简单）、`grep` 就是在文件里头查找的，类似这样的软件数不胜数。利用 UNIX 的设计哲学之一 —— 管道 —— 就可以很方便的统计一个文件中含 Linux 这个词的行数（bash 不算很精通，见谅）：



```
$ grep "Linux" foo | wc -l 

```

而在那个操作系统呢？你应该需要用记事本先打开那个文件，复制到另一个 `.doc` 文档里头，然后再找一找“查找”键，然后按一下。或许你还需要划到最底下看一看有多少行……


那来个更难一点的呢，看一看当前目录下所有后缀名为 `.txt` 的文件里头有多少行包含 Linux？


对 UNIX 来说小菜一碟：



```
$ find ./ -name "*.txt" | xargs grep "Linux" | wc -l 

```

在另一个“伟大的系统”上呢？


我想不需要多举例，大家就能看出来这两个系统谁设计的更好了。



> 
> 还是会有人说，这个系统本来就是给程序员用的，那个系统本来就是给普通用户用的。的确，那为什么你这个程序员还在用“某窗口系统”呢？
> 
> 
> 


### 三、“真幼稚”


曾经在一个复古的群聊中，有这样一个大佬，引用我对他的评价：



> 
> 此人身高八（划掉，七）尺，自诩风度翩翩，常以“京中美男子”而自拟。爱为人师，尝以“全栈大佬”自号，实则不知汇编、C 为何物者也。 其曰：“仅学可令吾发家之事”。因不习 C。遇人求问，常为省流量，略回 “..” 二字，甚含深意也。 吾不与其为友，另有它故：其人曰：“C 者，垃圾也”，吾对之曰：“尔乃垃圾之中上等者也”，羞怒之下移吾出群，回看，其语已撤回也。
> 
> 
> 


他还有一个口头禅，“真幼稚”。如同高雅的文言文里写的一样，他只是为了发家才学编程。所以对于开源、自由之类的…… 你可以想象到他的反应。


开源幼稚吗？


我想不是的。


正如理查德•斯托曼在演讲中说的：



> 
> 软件好像是菜谱。最开始，你从朋友家里拿到了一份，回到家你就开始琢磨了：是放点糖还是放点辣椒呢？都可以。愿意研究的人，可以将菜变得更好吃，更符合一部分人的口味，然后传给别人。所有人都能吃上美味的饭菜。（非原文，演讲的具体内容参见《若为自由故》）
> 
> 
> 


商业软件做了什么？


软件还是菜谱。一个大厨对你说：“菜谱保密”，你就只能吃他做的菜，而不能自己料理。饭店的菜好吃，没错。但是没人知道菜里头还有什么。如果你想要把菜谱给别人，他们就把你扔到监狱里把你叫做“贼”。这是现实。


更过分的呢？


大厨把菜谱给你了，里面还塞着一个计时器。你能照着菜谱做 30 遍，满了限额之后，他们就要求你付钱。不付？那菜谱就会自动销毁，甚至在上面写上几个大字：这人是个穷光蛋。


软件是值得付钱的，我再三强调，一个优秀好用的软件是值得我们高兴地为它付钱的，甚至更优秀的软件会让我们为它的作者塞钱、捐款。然而，我从没见过有值得五千块钱的软件，没有理由为一个设计落后的微内核，整个系统靠着毫秒级速度的 IPC 来工作的系统付上这么多钱。如果说 UNIX 值得 5000，我觉得无可厚非，因为 UNIX 是这个星球上设计最好的系统之一。


“最好的系统”不是乱说的。拿 UNIX 其中一个衍生品 —— Linux 来比较，就比较日常用户的体验。启动最慢、内存占用最大的 Firefox 也只需要几秒钟时间，按一下鼠标就可以。对于那个系统，就应该不需要多说了吧……


### 四、这到底是系统的原因吗


前面的所有内容都在说 Linux 和“某窗口系统”。抛开金钱，这两个都可以算得上地球上十分优秀的操作系统。Linux 以及 UNIX 注重简洁，而“某窗口系统”注重用户体验和美观，裸机性能测试也十分不错。但这里，我们要讨论的是，到底是什么使得窗口系统在日常使用中如此的慢？


#### 设计


首先我要说的就是设计。


微内核设计是十分优雅的，这一点我们无法反驳。然而，它却好像并没有为内核减轻多少开销，毫秒级的 IPC 到处都是。它的内核太小了，就连系统调用都放在了**动态库**里，导致正常应用的启动要进行多次重链接。


它的窗口框架也不尽人意。回调一直是 POSIX 所极力避免的东西，该标准中几乎没有关于回调的内容，而是异步、`poll`、`select` 这样更符合人类逻辑的东西。


而它呢，窗口框架的所有消息（就是那个 `Msg`）都靠回调来处理，正这样导致了响应速度的不尽人意。一个小小的窗口点击、移动都成为了事件。


转过来看 UNIX/Linux，与其窗口框架类似的是信号。传统信号通过 `signal()` 设置，而现代的则通过 `sigaction()`，无论接口怎么不一样，都有着“默认操作”，即 `SIG_DFL`。所以如果让我给窗口系统提一个修改意见，我首先会说：“请加一个 `RegisterMsgs` 调用，为每一个 msg 都提供一个 handler，并支持设置默认以及忽略操作吧！”



> 
> 有关 signal 的详细内容参见《UNIX 环境高级编程》
> 
> 
> 


#### 自作聪明的用户


你可以看到一系列“某某安全管家”的应用程序。在 XP 时代，这是必不可少的，他可以防止你的系统被人闯入。然而，现在都…… 2202 年了，还是有数不胜数的自作聪明的用户（甚至程序员）尝试安装他们，安装七八个同时烧电脑的情况也很正常。


我曾经在我的 8.1 以及 10 上重装系统并且不安装任何电脑管家，结果性能提升了至少两倍，和 Linux 并没有相差太多。


当然，我没有说“某某管家”没有用。实际上它们是非常有用的，无数的安全人员编写了他们，但是现代内核不再需要如此严格的保护了，所以说到底，这还是早期系统太差劲的原因。


然而 “某某安全极速浏览器”的性质就截然不同了，从来没有人需要过这种应用，而实际上它们就是个套壳。编写这种应用的人和诈骗完全一样，将他们闭源并且加上几个广告，就变成了自己的“国产”浏览器。


### 五、自封后路的窗口系统


综上所述，那个商业系统就是被各种糟糕的后台程序搅黄了，而它们总是喜欢位于后台的原因，根本上就是商业原因 —— 看看你右下角那一个个小图标，它们应该比桌面上显眼吧！


同时，计时并且催促你赶紧交钱的软件，也肯定需要放在后台吧。


也就是说，可怜的商业窗口系统，自己告别了原来属于自己的 —— 无穷尽的自由软件开发人员。


### 六、未来


随着计算机科学的发展，越来越多的大佬从小学五年级、六年级就开始学习编程（calvinlin 哥甚至三四年级开始玩 shell，那时候我还在玩 cmd.exe）。


随着他们技术的成长，一部分人会毫不犹豫地选择换到 Linux，而另一部分则继续选择使用有着很多 IDE 的“某窗口系统”。但是无论是哪个系统，我都相信，这些少年黑客会毫不犹豫地投入到开源软件之列中，为世界贡献一批又一批的人类高质量开源软件。追求自由，是孩子们的天性，不是吗？


那时，GNU 计划、Linux 内核都将会卓越成长，向世界展现开源的魅力！


世界将属于开源！




---


作者简介：intirain （或者 rain 也行），喜欢 UNIX、x86、RISC-V 上的 C。




---


via: <https://github.com/LCTT/Articles/pull/7>


作者：[intirain](https://gitee.com/intirain) 编辑：[wxy](https://github.com/wxy)


本文由贡献者投稿至 [Linux 中国公开投稿计划](https://github.com/LCTT/Articles/)，采用 [CC-BY-SA 协议](https://creativecommons.org/licenses/by-sa/4.0/deed.zh) 发布，[Linux中国](https://linux.cn/) 荣誉推出

