Linux 理念的影响

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

Opensource.com

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

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

许多公司也有某种理念。它们可能是不成文的,也可能是文件充分记录的。当我在 1974 年到 1995 年在 IBM 工作时,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 在 20 世纪 60 年代末和 70 年代初被开发出来时,开发者们的目标是构建一个与之前的操作系统截然不同的操作系统。Unix 的理念与其他操作系统明显不同。而 Linux 的理念自然而然地直接来源于 Unix 哲学

我发现 Mike Gancarz 在《Linux and the Unix Philosophy》一书的引言部分中对 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 命令提示符“非常有限,命令很少”。命令提示符的问题主要集中在 Microsoft 希望它被管理员而不是普通大众使用这一事实上。但 30 年的开发使其变得非常强大和健壮。添加 GNUwin32,你就可以获得大量基本的 Unix 命令来增强 Microsoft 环境。再加上 Power Shell 和 WMIC,你就可以完成一些非常令人印象深刻的事情。

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

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

不限制用户的想法如何等同于你需要“了解 init 系统”?你可以作为普通用户运行 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 允许程序“抓取”内存,而不是使用操作系统内存分配算法。尚未证明这种方法更优越,因为它会导致大量内存泄漏/安全问题,并且 C 程序员的大量时间都用于避免这些问题。这也使得两个程序很难相互通信和共享状态。如果 Unix 没有赢得操作系统之战,那么谁知道现在的世界会是什么样子,但黑客盗取我们的身份并在计算机世界中横行霸道可能会更少。

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

话虽如此,你错过了 unix 哲学(尤其是 gnu/linux 哲学,又名 RMS)的最重要部分---自由。Gnu/Linux 尊重用户作为个人,这首先意味着 gnu/linux 尊重用户的四项自由。

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

当然,当 IBM 失去对个人的尊重并贬低其员工时,它就崩溃了。T.J. Watson 曾经说过,“带走我的资源、我的建筑物、我的机器等等——但是,给我留下我的人,我就会重建它!”

IBM 将沦为历史,成为过去。但是她的人民,哦,我的,将带着 gnu/linux 和自由走向 21 世纪。我们不回头看,我们不往后退,我们不回头。我们自由了,我们正在前进!

干杯,

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

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

谢谢!

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

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 是 20 世纪 80 年代的 Linux。现在已经消失了,唉。

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

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

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

Linux 的理念:力量和自由

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

知识共享许可协议本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.