Linux 哲学的冲击

目前还没有读者喜欢这个。
Penguins gathered together in the Artic

Opensource.com

所有的操作系统都有其哲学。而且,操作系统的哲学至关重要。Linux 哲学是什么?它如何影响社区?它如何改变了软件开发的时代?

无论我们是否意识到,我们大多数人都有一种生活哲学。它可能像“善待他人”一样简单,也可能是一种非常复杂的人生哲学。

许多公司也有某种哲学。它们可能是未成文的或有据可查的。当我在 IBM 工作时,从 1974 年到 1995 年,IBM 的哲学是有据可查的,并且深深地根植于文化之中。IBM 的哲学涵盖了其商业行为以及如何对待员工、客户和供应商。IBM 的首要指令,实际上是公平、尊重和尊严地对待每个人。

在我开始深入研究 Linux 之前,我从来不知道它有哲学。我的意思是,哲学实际上能为操作系统做什么?经过一番研究,我发现所有的操作系统都有哲学。我也了解到操作系统的哲学至关重要。

例如,Windows 的哲学与数字设备公司 (DEC) 的 VMS 操作系统的哲学非常相似。它相当于“保护用户免受任何可能让他们陷入困境的事情”。当然,这种相似性的原因是 Windows NT 的主要开发者也是 VMS 的开发者。这两种操作系统的哲学都基于一个潜在的信念,即用户害怕计算机,需要免受其复杂性的影响。

MAC OS 也相差无几,尽管图形用户界面 (GUI) 桌面采用面向对象的方法,在许多人看来,这种方法提供了更一致、集成和更流畅的用户体验。MAC 和 Windows 都提供了命令行界面 (CLI),允许用户和操作系统之间进行低级交互。然而,Windows CLI 非常有限,命令很少,至少与 Linux 和 Unix 相比是这样。

MAC CLI 是一个 BASH shell,它提供了强大的功能,就像在 Linux 上一样。然而,它非常难以找到。shell 埋藏在大量的菜单选项中,只有当你知道它在那里并且正在积极寻找它时才能找到。

激进的概念

当 Unix 在 1960 年代后期和 1970 年代早期被开发出来时,开发者们的目标是构建一个与之前操作系统截然不同的操作系统。Unix 的哲学与其他操作系统截然不同。而 Linux 哲学自然而然地直接来源于 Unix 哲学

我发现 Mike Gancarz 在《Linux 和 Unix 哲学》一书的 引言 部分的以下引言非常有用。

操作系统本质上体现了其创造者的哲学…… Unix 操作系统的创造者从一个激进的概念开始:他们假设他们的操作系统的用户从一开始就具有计算机知识。整个 Unix 哲学都围绕着用户知道自己在做什么的想法。

哇!他们真的这么说了!听起来很精英主义和排外。但,事实并非如此。实际上,恰恰相反。

我的 关于 Unix 的最喜欢的引言之一 也适用于 Linux,通常归因于一个名叫 Doug Gwyn 的人,但无法可靠地获得关于他的信息。无论 Doug 是否存在,这仍然是一句伟大的引言

Unix 的设计目的不是阻止其用户做愚蠢的事情,因为那样也会阻止他们做聪明的事情。

这就是关于 Linux 的真相。它从不假设用户是无能的。它始终假设你知道你在做什么,并允许你做你告诉它做的任何事情。任何事情。无论它是否是无意中造成的坏事。这对于用户来说是巨大的力量。

Linux 平等地对待每个人,并允许每个人获得最大的权力。这是平等的。其他操作系统是精英主义和排外的,因为它们将权力保留或隐藏在僵化的图形用户界面之后,该界面只允许人们做开发者认为我们应该被允许做的事情。

启蒙

多年来,许多人试图在他们编纂 Linux 哲学的各个方面时启发我们其他人。

Mike Gancarz 首先撰写了 Unix 哲学,然后又撰写了 Linux 和 Unix 哲学。这些书列出了 9 条主要原则和 10 条次要原则。

Eric Raymond 在他的著作《Unix 编程艺术》中提出了 17 条 Unix 规则。

俄勒冈州立大学也有其 自己的 Linux 哲学,我认为它很好地描绘了工程师对 Linux 的看法。

与其在此处列出所有这些原则和规则,以及它们的所有含义,不如我在本文的“参考资料”部分列出了链接或书籍,可以从中获得这些信息。我将把它留给您,亲爱的读者,去查找它们并找出它们的含义。相信我,这将是一次非常有启发性的练习。

终端案例

Linux 哲学通过可以轻松打开终端模拟器以访问 CLI 及其随之而来的强大功能来体现。首先,可以使用 Ctrl-Alt-F [1-7] 键访问多个虚拟终端。即使 Linux GUI 桌面也在低语,“使用原力,卢克,”对所有使用它们的人说。Linux 有几个优秀的 GUI 桌面环境可供选择,以便每个用户都可以选择自己最喜欢的那个。然而,只需单击一下即可获得 CLI 的强大功能,终端模拟器和 shell 都有多种选择。

我最喜欢的 GUI 桌面终端模拟器是 Konsole。Konsole 允许在 GUI 窗口中使用选项卡在终端会话之间切换的多个终端会话。当然,您可以在所有会话中使用您最喜欢的 shell,也可以在每个会话中使用不同的 shell,具体取决于您的需求。

为了获得更大的灵活性,可以使用 screen 程序,它在单个终端会话中提供多个 shell 会话。这在远程登录时尤其有用,因为如果您的连接失败,screen 会话以及在 screen 会话中启动的各种 shell 中运行的所有程序都会继续运行。

Linux CLI 轻轻地诱惑;它以其强大的功能引人入胜。它的灵活性吸引了我。它改变了我——当然它改变了我使用计算机的方式。我仍然使用 GUI 桌面,但在很大程度上是为了为我提供多个 Konsole 会话以及在其中运行 screen 的灵活性,而不是为了运行 LibreOffice、Firefox 和 Thunderbird 等程序。

完全控制

Linux 不会扶着你走路。它假设您在键入命令时知道自己在做什么,并且它会继续执行该命令,而不会询问您是否真的想这样做。它给你完全的控制权。

想象一下,如果尝试使用钉枪,钉枪会问你是否真的想射出那个钉子,并且在你大声说出“是”字之前不允许你扣动扳机,那会造成什么样的混乱和挫败感。Linux 允许您随意使用钉枪。其他操作系统会让你知道你可以使用钉子,但不会告诉你用什么工具来插入钉子,更不用说让你把自己的手指放在扳机上了。

是的,在权力强大的地方存在危险。明智地使用这种力量也可以用来完成许多伟大的事情。

Linux 的首要指令

我已经开始相信,Linux 哲学的总结非常简单。

尊重所有用户。

这相当于允许每个用户以他们自己的方式使用各种强大的工具来做事。这意味着在设计和构建软件系统时,将灵活性、简单性和自由度作为最重要的考虑因素。它促成了软件的创建,这种软件是一种艺术品,在 Unix 诞生近 45 年和 Linux 诞生 20 多年后,它仍然美丽而强大。

这一切如何转化为现实世界?在未来的文章中,我将告诉您更多我的观点,在这些文章中,我将讨论一些个别原则及其在日常系统管理任务和 Linux 生活的其他方面的应用。

参考文献

  1. Eric Raymond:《Unix 编程艺术》, http://www.catb.org/~esr/writings/taoup/html/index.html
  2. Mike Gancarz:《Linux 和 Unix 哲学》;Digital Press,2003 年,ISBN 1-55558-273-7
  3. 维基百科: http://en.wikipedia.org/wiki/Unix_philosophy
  4. 俄勒冈州立大学: http://web.engr.oregonstate.edu/~traylor/ece474/lecture_verilog/beamer/linux_philosophy.pdf
  5. 最佳 Unix 引言: http://www.linfo.org/q_unix.html

本文的法语译文可以在 此处 查看,由 Fabrice Dumont 提供。

标签
David Both
David Both 是一位开源软件和 GNU/Linux 倡导者、培训师、作家和演讲者。自 1996 年以来,他一直从事 Linux 和开源软件工作,自 1969 年以来一直从事计算机工作。他是“系统管理员 Linux 哲学”的坚定支持者和传播者。

21 条评论

嘿!我会在适当的时候愉快地诋毁 MS 产品,但我不会称 Microsoft 命令提示符“非常有限,命令很少”。命令提示符的问题主要集中在微软打算让管理员而不是普通民众使用它这一事实上。但 30 年的开发使其非常强大和健壮。添加 GNUwin32,您就可以获得大量基本的 Unix 命令来增强 Microsoft 环境。再加上 Power Shell 和 WMIC,您可以做一些非常令人印象深刻的事情。

不是诋毁,而是在陈述事实。你的最后两句话证明了我的观点。

回复 作者 Skip Frizzell (未验证)

先生,感谢您,做得很好。令人遗憾的是,有些人不了解简单性和经济性
的规模。

在某些情况下,给予用户控制权是很好的,但总的来说,文明建立在劳动分工和专业化的基础上。我年轻时曾经玩过 Linux,但现在我有了家庭,我不想了解 init 系统,就像我不想自己换汽车机油或自己做衣服一样。我们甚至在网上订购杂货,并雇用别人来修剪草坪。

不限制用户的想法如何等同于您需要“了解 init 系统”?您可以作为普通用户运行 Linux,而不必为系统的任何修补和构建而烦恼。我已经这样做了多年。当人们说“我曾经使用 Linux,但现在我没有时间使用它了”之类的话时,很明显您从未真正了解 Linux,因为如果您了解了,您肯定除了 Linux 之外没有时间做任何事情。

回复 作者 Mirza (未验证)

胡说八道!我无法告诉你我多少次不得不重启某些服务,编辑 /etc 中的 fstab 或其他文件或任何东西。灵活性和强大功能是以必须学习内部流程为代价的,以便在大多数人希望用计算机完成其他事情时能够修改它们。大多数人使用的默认设置应该是自动化的,并且是不可见的。

回复 作者 Sevis Vanto (未验证)

这不是胡说八道。这取决于您选择运行的基于 Linux 的系统发行版。例如,运行 Ubuntu 会为您提供大多数人使用的所有默认设置,Mint、Mageia 和许多其他发行版也是如此。运行具有更多控制权的系统会执行您所描述的关于编辑 /etc、/var 和其他地方的文件的操作,但总的来说,这远非理所当然,而且并非全有或全无。Arch Linux、Gentoo 或 Slackware 为您提供了相当多的控制权,并且使用命令行有所帮助;Debian 也是如此,但需要较少的细节;然后您有 Fedora、Suse 和许多其他类型的系统,它们介于两者之间,根据您想要或需要的内容为您提供各种程度的控制权。拥有控制权甚至不必很困难,例如,我多次使用 OpenBSD,尽管在 /etc 中编辑了一些文件,但它是我配置最少的系统之一,即可使所有功能正常工作。有可能鱼与熊掌兼得。

回复 作者 Mirza (未验证)

我确实使用 Ubuntu,并且之前使用过 Mint 和 Debian。多年前我使用过 Suse 和 Red Hat。我谈论的问题甚至 Linus 也经历过。他曾经讲过一个故事,他的儿子无法将笔记本电脑连接到学校打印机,因为他没有 root 密码。我会打开一些旧的备份驱动器,并且无法访问文件,直到我运行 sudo chown。即使在 Ubuntu 中,诸如此类的事情也一直在发生。

回复 作者 Dennis Decker Jensen (未验证)

在没有提及 GNU 或 GPL 的情况下,您怎么可能写一篇关于 Linux 哲学的完整文章?您遗漏了实现最终用户自由的最重要部分。

GPL 为希望修改自己软件的用户提供了权力,但它没有说明操作系统是否隐藏起来。现在有很多关于 GPL 影响的文章。

回复 作者 Kevin Bush (未验证)

操作系统和 Linux 内核不是一回事……操作系统是位于内核之上的工具。这些工具具有基于 GNU 哲学的 GPL 许可证。

回复 作者 Kevin Bush (未验证)

如果您想深入了解细节。Unix 与 C 绑定在一起,而不是更抽象、更高级的语言(如 Lisp),并且 Unix/C 允许程序“抓取”内存,而不是使用 OS 内存分配算法。尚未证明这种方法更优越,因为它会导致许多内存泄漏/安全问题,并且 C 程序员的大量时间都花在避免这些问题上。这也使得两个程序很难相互通信和共享状态。如果 Unix 没有赢得操作系统战争,那么谁知道现在的世界会是什么样子,但可能会有更少的黑客窃取我们的身份并在计算机世界中横行霸道。

David,先生,感谢您写了一篇很棒的文章。作为 IBM 的同事(1977 年 - 2002 年),我有一两条评论。
IBM 在帝国时代之前的哲学是基于三大基本信念,并围绕这三大基本信念展开的,
1) 追求卓越。每个真正的 IBM 员工所做的一切都应该在态度、计划和执行方面达到最高水平。
2) 成为世界上最好的服务组织。IBM 最初的世界级基准围绕卓越和服务展开。
3) 尊重个人。这是对 IBM 同事、客户、承包商、供应商、政府附属机构和客户以及竞争对手的相互尊重。当 IBM 失去对个人的尊重时,整个羊毛衫都 unravel 了。

话虽如此,您错过了 unix 哲学(特别是 gnu/linux 哲学,又名 RMS)的最重要部分——自由。Gnu/Linux 尊重用户作为个体,这主要意味着 gnu/linux 尊重用户的四项自由。

MS 的一些错误是为保护而混淆,但大多数是为了作为设备锁定(主要是为其供应商和附属机构提供营销创新)。Apple 对这种无稽之谈和不尊重也负有责任。即使在今晚,我的双启动 mac mini(Snow Leopard、Gnu/Linux Mint)也试图将我的系统“升级”到完全不兼容的“新”版本的“他们的”代码,而丝毫没有意识到我不需要它!!

IBM 当然会因为失去对个人的尊重和贬低员工而走向衰落。T.J. Watson 曾经说过,“带走我的资源、我的建筑物、我的机器等等——但是,把我的员工留给我,我就会把它重建起来!”

IBM 将会作为过去式载入史册。但是她的人民,哦,我的,将会带着 gnu/linux 和自由迈向二十一世纪。我们不会回头看,我们不会往后退,我们不会回到过去。我们是自由的,我们正在前进!

干杯,

Doug Gwyn 确实曾经存在过,并且是 20 年前 comp.lang.c Usenet 论坛上最权威的贡献者之一。我相信他过去在美国军方的弹道研究实验室工作(我记得他有一个 brl.mil 地址)。他还感谢 K&R 的前言。所以是一个真实的人和一个传奇的 C 程序员。

很高兴知道这一点。由于我的职业生涯中没有大量 C 编程的需求,所以我没有 K&R 的副本,但您对它的引用对我来说已经足够了。我非常感谢您提供的信息。

谢谢!

回复 作者 Tim Greening-Jackson (未验证)

GUI 可能会出现,GUI 可能会消失,但 CLI 会一直存在。

http://ldo17.tumblr.com/post/104365910477/cli-versus-gui-deathmatch

Linux 这个词似乎被用作一个整体。
操作系统是编译器和其他“操作系统”的工具,linux 是内核。
Linux 没有 GUI,操作系统 GUI 与内核是分开的,尽管内核可以提供允许 GUI 运行的模块。
GNU - 自由软件基金会,提供基于“GNU 哲学”构建的许可证 (GPL),这些 GPL 许可证用于构成“操作系统”的许多程序中。

似乎有些困惑:Linux 不是操作系统,它是一个为“操作系统”提供动力的内核……菜鸟。

附:忘了补充。

1. Linux 内核开发人员有他们遵循的哲学。
2. 为用户空间(操作系统)创建工具和程序的软件开发人员通常遵循 GNU 自由软件基金会的哲学。
4. 编译“GNU/Linux 操作系统”的发行版开发人员也有他们遵循的哲学(并非所有都相同)。

有趣的文章,但只有在对 Unix 和 Linux 的起源知之甚少的情况下才有趣。Linux 源自 Minix,而不是 Unix,而 Unix 源自 Multics。

多年来,Linux 变得越来越像 Unix,而 Unix 几乎消失了。Multics 旨在成为通用操作系统。它未能实现这一目标,但其设计原则并没有导致 Ken Thompson 和 Dennis Ritchie 开发 Unix。

奇怪的是,文章中没有提及 Thompson、Ritchie 或 Tanenbaum。

虽然 WNT 确实是从 VMS 移植过来的(很明显——看看字母表就知道了!),但我不同意 VMS 的强大功能对用户是隐藏的。当然,您需要阅读手册;那是在线教程出现之前的时代。但我不同意 DEC 将用户视为需要保护自己免受伤害的孩子。还记得 RSX-11 吗?DEC 是 1980 年代的 Linux。现在消失了,唉。

至于您描述的 Linux 哲学,并非所有发行版都坚持这一点。Gnome 桌面以其保护性而闻名,而最近版本的 Ubuntu 似乎正在尝试模仿旧的 Mac 桌面;对于新手来说,发现命令行的存在可能很困难。这大概是因为他们想引诱走一些想要像孩子一样对待的 Windoze/Mac 用户。诚然,越来越多的民众不希望了解他们任何基本工具的工作原理;但我们在开源社区中不需要他们。

我不同意本文中的很多内容。Windows 很复杂,MacOS 也很复杂。将高级功能隐藏在难以使用的 cli 或非 cli 界面下并不会使经验不足的用户更容易使用。而是使高级用户难以使用它们。

在我看来,windows 和 mac 的哲学是:强迫用户按照我们希望的方式做我们希望他们做的事情。使用户难以执行可能损害我们商业利益的事情。

Linux 的哲学:权力和自由

长期以来,Linux 的使用难度不再高于 windows/mac。只是有些供应商为 windows 用户提供的支持较少或没有支持。因此,有些网站运行不佳,或者无法使用专用软件。

知识共享许可协议本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 授权。
© . All rights reserved.