Unix基于演化的哲学
关于 "Unix 哲学" 一词的一些基本问题
当我们要开口说 "Unix 哲学" 的时候, 立刻就会遇到问题.
"哲学" 的问题
首先是 "哲学" 的问题. 什么是 "哲学"? 我们能不能说 "Unix 哲学".
要知道, 如果我说 "中国先秦哲学", 一定会有人说这是对 "哲学" 一词的误用. 因为中国先秦是没有一门学术叫做 "哲学" 的. 这不是什么钻牛角尖的奇谈怪论, 甚至冯友兰也认为中国没有哲学. 他在《中国哲学史》中说, 中国只有论理学而无哲学, 但论理学中是可以有哲学思想的, 故而可以将之整理, 写一部哲学史出来.
或者我们可以这想, 一个话即然说了出来而没有语病, 那这个话一定是可以这样说的. 我们要分辩的, 只是我们在什么意义上使用这个词.
比如, 按冯友兰的意思, 我们当然是可以说 "中国先秦哲学" 的, 但我们说 "中国先秦哲学" 时, 我们说的不是中国先秦的一门系统学术, 这个学术叫哲学; 而是中国先秦的思想中, 零星包含的哲学思想.
所以, 当我们说 "Unix 哲学" 的时候, 我们在什么意义上使用 "哲学" 这个词.
当我们在说 "Unix 哲学" 时, 明显不是在 "马克思主义哲学" 或 "后现代哲学" 的意义上在使用 "哲学" 一词.
因为 "马克思主义哲学" 和 "后现代哲学" 必须要包含一整套的系统说理, 但 "Unix 哲学" 明显包含什么系统说理.
当我们在说 "Unix 哲学" 时, 大概是在 "摩托车修理哲学" 或 "烤蛋挞的哲学" 的意义上在使用 "哲学" 一词.
当我们这样说时, 大概是一个固定的用法: 一种具体的技术 + "哲学". 它大概的意思是, 在进行某种技术操作时, 生发出某种哲思, 进而产生某种智慧.
从经验所得话多要点使人产生对一类事物的普遍判断, 而技术就由此兴起 ... 凭经验的, 知事物之所然而不知其所以然, 技术家则兼知其所以然之故. 我们也认为每一行中的大师匠应更受尊敬, 他们比一般的工匠知道的更真切, 也更聪明, 他们知道自己一举手一抬足的原因.
----- 《形而上学 · 卷一 · 章一》
Unix 哲学大概是能符合亚里士多德说的: 经由经验而产生普遍判断, 进而可以使掌握它的人得以知道举手抬足的原因.
在所有这些发明相继建立以后, 又出现了即不为生活所需, 也不为人世快乐为目的的一些知识, 这些知识出现在人们开始有闲睱的地方.
----- 《形而上学 · 卷一 · 章一》
当然, 亚里士多德认为智慧有高下之分, 以实用为目的智慧最低, 以快乐为目的智慧次之, 啥目的也不为的智慧最高. Unix 哲学显然是最低的智慧.
为什么没有其它计算机哲学
众所周知, Unix 是一款计算机操作系统, 一如 windows 操作系统.
那么为什么没有计算机哲学, 操作系统哲学, windows 哲学呢?
动物凭现象与记忆而生活 ...... 人从记忆积累经验 ...... 从经验所得许多要点使人产生对一类事特的普遍判断, 而技术就由此兴起.
---- 《形而上学 · 卷一 · 章一》
工程和设计的每个分支都有自己的技术文化 ...... 资深工程师们在工作中会积累大量的隐性知识, 他们用类似禅宗 "教外别传" 的方式, 通过言传身教传授给后辈.
软件工程算是此规则的一个例外: 技术变革如此之快, 软件环境日新月异, 软件技术文化暂如朝露.
---- 《Unix 编程艺术 · 第 1 章 哲学》
我们前边说了, 这里所说的 "哲学" 是指的, 从一种日常的操作的积累中涌现出的普遍性的智慧. 那什么样日常操作的积累可以涌现出这种可以被称为 "哲学" 的智慧呢?
放盐 3 克的操作不行, 但盐少许的操作或许可以.
放盐 3 克只是一个称量的动作, 而放盐少许则将这个操作通达到了 "咸淡" 的味道上.
这种 "少许" 就是所谓的 在工作中积累的大量的隐性知识, 这种知识不是通过统计一下一万个吃过这道菜的人, 发现大多数人认为 3 克盐是最合适得来的. 而是在老师傅带着小师傅做了一万次之后, 小师傅自己领悟到的.
而这种老师傅带着小师傅做一万次, 就是所谓 "他们用类似禅宗 '教外别传' 的方式, 通过言传身教传授给后辈".
然而软件工程的问题在于, 软件工程的技术发展如此之快, 以至于我们在这种工程操作的活动中, 来不及积累出可以称之为 "哲学" 的智慧, 操作本身就被新的技术替代了.
当老师傅还在说, 盐少许的时候, 小师傅已经拿出鸡精来了.
所以, 软件工程很少会出现这种技术积累出的 "哲学". 因此也就不会有什么计算机哲学, 操作系统哲学或 windows 哲学了.
正如我们不应该问为什么中国没有发展出资本主义, 而应该问为什么英国发展出资本主义一样, 我们不应该问为什么没有其它计算机哲学, 而应该问, 为什么有 Unix 哲学.
Unix 作为一个操作系统有什么样的特殊性, 使其在暂如朝露中的软件技术文化中涌现出一套可以传统的 "哲学".
这个问题的答案, 就是 Unix 哲学本身了.
Unix 的谱系
小型实验原型系统的后继产品往往务受令人讨厌的 "第二版效应" 折磨. 由于迫切希望把所有首次开发蝗遗漏的功能都添加进去, 往往导设计十分庞大, 过于复杂. 其实, 还有一个因不常遇到而鲜为人知的 "第三版效应": 有时候, 在第二系统不堪自身重负而崩溃之后, 有可能返璞归真, 走上正道.
---- 《Unix 编程艺术 · 第 2 章 历史 -- 双流记》
起源
在计算机的上古时代, 计算机都是以 "批处理" 方式进行工作.
所谓批处理的工作方式指的是, 先把编好的程序输入给计算机, 而后计算机运行程序; 计算机运行完一批程序后, 再把第二批编好的程序输入给计算机, 计算机再运行程序.
因为计算机比人快, 所以采用这种工作方式的结果就是, 程序输入的速度跟不上计算机运行的速度. 最后, 大部分时间, 计算机都在闲置着等干活.
于是当时人们就想, 能不能让计算机同时处理多个用户的程序, 由于计算机足够快, 让每个用户都觉得自己独占计算机一样.
那么如何让计算机同时处理多个用户的程序呢?
翻电的小李老师在夏令营里说过他读书的习惯: 同时读六本书. 如何同时读六本书呢? 先读第一本的第一章, 再读第二本的第一章, 直到读完第六本书的第一章, 而后重新拿起第二本书来读第二章.
当时让计算机同时处理多个用户的程序也采用这样的思路.
让计算机先处理第一个程序一段时间, 再处理第二个程序一段时间, 直到处理完最后一个程序一段时间, 而后重新处理第一个程序一段时间.
因为计算机足够快, 而每次处理程序的这一段时间足够短, 所以感觉上, 计算机在同时处理多个程序.
1961 第一个分时系统 TCSS 被研发出来. 所谓分时系统指的是, 把 cpu 的处理能力按时间分成 "时间片", 再把这个时间分配给不同程序使用.
TCSS 的成功研制被美国国防部高度重视. 1962 年由 DARPA ( 国防部高级研究计划局 ) 出资 300 万美元启动 MAC 项目, 完善 TCSS.
1964 年贝尔实验室, 麻省理工学院和通用公司承担了研制任务, 开始了 Multics 项目, 该项目试图建立运行在大型机上的一个具备众多功能的, 能够很漂亮地支持大群用户的分时操作系统.
Multics 就是 "第二版效应" 中的那个 "第二版". 最后它因不堪自身重负而崩溃.
诞生
贝尔实验室有一个工程师叫 肯 · 汤普逊 参于了 Multics. 他在 Mutics 上编写一个游戏名叫 "星际旅行" 的游戏.
1969 年贝尔实验室终于因为的研发进度太慢退出了 Multics 项目.
回到贝尔实验室的汤普逊因为再没有可以运行他的 "星际旅行" 而整日失魂落魄的游荡在办公室里. 直到他找到了一台废弃的 PDP -- 7 小型机.
他为了能运行他的 "星际旅行", 在这台 PDP - 7 上延着 Multics 的思路, 开发出一个更轻的操作系统, 并把它戏称为 Unix. Multics 中 multi 是 "复杂, 多", 而 unit 则是 "统一的意思."
当时与汤普逊一起参于过 Multics 的同事们, 已经习惯了 Multics 环境下的交互计算方式, 看到 Unix 后大喜过望.
发明 C 语言的 丹尼斯 · 里奇 后来评价道:
我们希望保留的不仅仅是一个良好的编程环境, 还包括一种能够形成伙伴关系的系统. 经验告诉我们, 远程访问 ( remote-access ) 和分时系统支持的公用计算, 其本质不是用终端机代替打孔机来输入程序, 而是鼓励频繁的交流.
---- 《Unix 编程艺术 · 第 2 章 历史 -- 双流记》
计算机不仅应被视为一种逻辑设备而更应视为社群的立足点, 这种观念深入人心.
Unix 被开发出来后, 除了运行汤普逊的星际旅行外, 主要承担的工作是为贝尔室验室的专利部门进行 "文字处理" 的支持工作. 而这让汤普逊和他的伙伴们成名正言顺购买了一台功能强大多的 PDP - 11 小型机.
直到此时, 贝尔实验室的高层们还没有意识到他们编写的字处理系统就快孵化出一个哲作系统来了. 直到 1972 年, Unix 的装机量只达到 10 台.
发明 "管道" 工具的道格拉斯 · 麦克罗伊描述那个时代:
上界的压力和纯粹出于对技艺的荣誉感, 促使人们在有了更好更多的初步思路后, 去重写或抛开己有的大量代码. 从来没听说过竞争和势力范围何护: 好东西太多了, 没有人需要把这些创新占为己有.
开放与内战
就这样, 罗马在燃烧, 而我们还在拉小提琴.
---- 《Unix 编程艺术 · 第 2 章 历史 -- 双流记》
1958 年为了解决反托拉斯案例达成的和解, AT&T ( 贝尔室验室的母公司 ) 被禁止进入计算机机关的商业领域. 根据协议规定, 贝尔室验室必须将非电话业务的技术许可给任何提出要求的人.
1971 年为了更好的将 Unix 移植到其它机型上, 丹尼斯 · 里奇发明了 C 语言, 1973 年里奇和汤普逊重写了 Unix 系统.
1974 年在《美国计算机通信》上发表的一篇论文中第一次公开展示 Unix. 全求各个研究实验室和大学都要求体验 Unix. 于是汤普逊将装有 Unix 的磁带和磁带盘一包包地寄给他们.
Unix 因其小巧而可以运行在小型机上. 在那个没有个人机的时代, 大型机和小型机代表了两种文化. 大型机代表着拥有中心化权力的政府机构, 公司和高校. 而相对管制较松的小型机则代表了自由和反传统, Unix 黑客们可以纵情挥洒的去推翻伴随 "大计算" 的所有技术假定和商业实践.
1976 年至 1976 年, 汤普逊利用年休在加州在学伯克利分校教学. 这使伯克利成为了 Unix 研究的的学术重镇. 1977 年伯克利发布了第一版 BSD ( Berkeley Software Distribution ).
1980 年, DARPA ( 国防部高级研究计划局 ) 委托伯克利主机科学研究组实现全新的 TCP/IP 协议栈. 从此互联网文化开始与 Unix 文化自边缘开始融合.
1982 年, SUN 微系统公司出世, 他们综合了斯坦福大学设计的硬件和伯克利分校开发的 Unix, 取得了辉煌的成功, 开创了工作站产业.
1983 年, IBM PC 可使用不下六种的 Unix 通用操作系统.
同年, 美国司法部在针对 AT&T 的第二起反托拉斯诉讼中获胜, 并拆分了贝尔系统. 这次判决将 AT&T 从 1958 年的禁止将 Unix 产品化的和解协议中解脱出来. 而这将 Unix 系统拖入商业公司的内战中.
首先 Unix 的产业化破坏了 Unix 的源码自由交流, 进而大公司的为了追求差异化带来的利益而抛弃了 Unix 的跨平台兼容性.
与是 Unix 社区分为了两派, 以程程序员和工程师为代表的长发派站在伯克利分校一边, 而商业为目标的人则倾向于 AT&T.
长发派, 重唱着十年前的 Unix 早期主题, 喜欢标榜为企业商国的叛逆者. 比如一家小公司贴的海报那样, 上面画着一个标着 "BSD" 的 X 翼星际战机快速飞离巨大的 AT&T 死星, 后者在熊熊的烈火中粉身碎骨. 就这样, 罗马在燃烧, 而我们还在拉小提琴.
---- 《Unix 编程艺术 · 第 2 章 历史 -- 双流记》
而此时微软正在个人电脑的领域悄然崛起. 1990 年, 微软的第一个成功的图形操作系统 Windows 3.0 巩固了微软的统治地位, 并为微软在九十年代最终垄断桌面应用市场创造了条件.
1989 年到 1993 年是 Unix 的中世纪. 当时, 似乎 Unix 社群所有的梦想都破灭了.
---- 《Unix 编程艺术 · 第 2 章 历史 -- 双流记》
重生
塔能鲍姆教授是荷兰阿姆斯特丹自由大学的教授. 他给学生教 Unix 相关的知识.
但 AT&T 将 Unix 产业化后, 将 Unix 的源码私有化, 大学无法再使用 Unix 源码了.
塔能鲍姆教授为了能够继续教 Unix, 手动编写了一个类 Unix 的核心程序, 他称这个程序为 Minix.Minix 意为 "小型 Unix".
在编写过程中, 为了避免版权纠纷, 谭邦宁 ( 即塔能鲍姆教授 ) 完全不看 Unix 核心源码, 并且强调他的 Minix 必须能够与 Unix 兼容.
---- 《鸟哥的 Linux 私房菜》
1991 年, 芬兰赫尔幸基大学计算机科学系的学生李纳斯开宣布了 Linux 计划.
李纳斯因学习的专业和兴趣, 需要经常使用 Unix 系统, 而整个赫尔幸基大学只有一个 Unix 系统, 同时仅提供 16 个终端.为了不用排队等待使用 Unix 的时间, 李纳斯购买了 Minix 系统, 装在自己的电脑中.
但是 Minix 是一个仅供教学用的操作系统, 很多功能并不十分完善. 而塔能鲍姆教授也对完善 Minix 系统兴趣不大. 于是李纳斯索性决定自己写一个自己用的 Minix.
于是最初版本的 Linux 系统就此诞生了.
为了进一步完善 Linux 系统, 李纳斯将 Linux 系统的源码放在网络上免费让大家下载使用, 同时 Linux 开放源代码, 黑客很容易参考其源码为 Linux 写出驱动程序和软件.
当志愿者完成了驱动程序或软件的开发, 李纳斯会对其测试, 如果没有大的问题, 这个驱动或软件就会被加入到 Linux 系统核心当中.
后来, 随着 Linux 核心的功能越来越多, 更多的志愿者加入了测试程序的队伍中来.
这群素未谋面的虚拟团队, 在 1994 年终于完成了 Linux 核心正式版 1.0.
与此前各种版本的 Unix 不同, Linux 和 BSD 的开发相当不同, 它们根值于互联网.
---- 《Unix 编程艺术 · 第 2 章 历史 -- 双流记》
黑客社区的的许多高级领导人也都是 Unix 的老前辈, 八十年代分拆后的伤痛尤在, 他们将 Linux 作为实现 Unix 早期判逆梦想最后和最大的希望, 而汇聚在 Linux 旗下.
---- 《Unix 编程艺术 · 第 2 章 历史 -- 双流记》
1998 年, 各个黑客社区的领导们召开了一次峰会, 这次会让为社区开发的方式确立了一个新的标记: 开源.
Unix 起源于 Multics, 它是权力机构对于机器高效利用的诉求的体现.
这种诉求催生了人们以技术和系统作为社区进行合作的冲动.
而 Multics 的失败和 Unix 的诞生, 使得 Unix 走向其初衷的反面: 自由和反叛.
Unix 的历史中, 最大的规律就是: 距开源越近就越繁荣. 任何将 Unix 专有化的企图, 只能陷入停滞和衰败.
---- 《Unix 编程艺术 · 第 2 章 历史 -- 双流记》
在 Unix 历史中最诡异但非常合逻辑的事情是, 1958 年 AT&T 的与反托拉斯案例达成的和解协议, 使 Unix 暴露在知识产权的保护之外, 这反而为 Unix 带来了开放和繁荣; 而 1983 年 AT&T 解除了和解协议的禁令, 将 Unix 重新置入知识产权的保护中, 反而使 Unix 拖入黑暗的中世纪.
Unix 基于演化的哲学
Unix 哲学 ( 同其它工程领域的传统一样 ) 是自下而上的, 而不是自上而下的. Unix 哲学注重实效, 立足于丰富的经验. 你不会在正规方法学中找到它, 它更接近于更本能的半隐性知识, 即 Unix 所传播的专业经验. 它鼓励那种分清轻重缓急的感觉, 以及怀疑一切的态度, 并鼓励你以幽默达观的态度对待这些.
---- 《Unix 编程艺术· 第 1 章 哲学》
提供机制, 而非策略
关于 Unix 哲学是什么, 有无数的社区大佬们说过无数个版本.
但我认为, 可能里边最重要的是 x Window 的设计者提出的 "提供机制, 而非策略" .
X Window 是一个基于 Unix 的图形界面软件. 当时图形界面还是一个新玩意. 面对如何设计一种图形界面, 当时有两个选择: 一种是把系统行为的逻辑尽可能的推到使用端, 还是把这些逻辑深藏于底层.
为了支持更多的 Unix 的系统而成为一个极端通用的图形界面, X Window 选择了后者. 将系统底层的行为逻辑暴露出来, 提供其运行的机制, 使用者可以根据自己的环境订制自己的策略.
而我们知道, 微软的 Windows 选择了前者, 他把系统的底层的行为逻辑包裹的很严, 用户只能完成被设计好的操作. 但这也有明显的好处, 就是对于用户来说, 系统成了一个不用操心的黑箱, 显得 非常的简单.
"提供机制, 而非策略" 表达了一个非常重要的信念: 最终用户永远比操作系统设计人员更清楚他们需要什么, 而他们也有能力为自己的行为负责.
贝尔实验室的 Dick Mamming 在 1950 年代便树立了此信条: 尽管计算机稀缺昂贵, 但是开放式的计算模式, 即客户可以为自己写出应用程序, 这一点势在必行, 因为 "用错误的方式解决正确的问题总比用正确的方式解决错误的问题好".
---- 道格拉斯 · 麦克罗伊
"提供机制, 而非策略" 的原则的代价是, 用户将面对看起来更复杂的系统逻辑, 这促使非专业的用户去选择看起来更简结的操作系统.
( 这让我莫明的想起罗振宇说罗辑思维要做 "知识的运营商", 什么是 "运营商" 呢, 就是把底层复杂的过程都打包处理掉, 而给客户提供最终简单的服务. 这是典型的 "提供策略, 而非机制" 的逻辑. )
但这个原则也有至关重要的优势: 机制是长久有效的, 而策略则非常短暂.
策略有着很强的 "语境": 它是为了解决特定的问题或满足特定的诉求而对机制的应用. 今日流行的策略明日可能走入死胡同.
机制则不同, 它是演化的基础. 一方面系统在面对不同的情境采时根据其机制采用不同的策略, 另一方面, 将机制暴露出来, 也使机制在不适就时可以进行迭代.
正是演化使机制成为长久有效的.
工具哲学
拿不准, 就穷举.
---- 肯 · 汤普逊
瑞士军刀是很多人口袋里的好帮手. 它有刀刃, 螺丝起子, 开罐器, 牙签等工具. 功能更齐备的, 还有像拨塞钻, 放大镜等工具.
---- 《Shell 脚本学习指南 · 前言》
如果提供机制, 那么要以什么形式将机制提供出来呢?
用工具来提供.
工具可以看作是使用者与提供者之间的桥梁. 一方面工具的设计者通过工具将机器的能力提供出来, 另一方面工具的使用者通过工具来使用机器的能力.
使用者自然是有自己使用工具的习惯, 而设计者也应该尽量满足使用者的习惯. 但是作为设计者如何能够猜中用户的使用习惯呢?
答案是不用猜中, Unix 采用一种简单粗暴的方式来解决这个问题: 拿不准, 就穷举.
设计者应该尽可能的工具所提供能力的使用方式, 并让使用者通过选项来选择自己的使用方式. 这也是 "提供机制, 而非策略" 的极好体现: 工具提供解决问题的所有可能, 而使用者决定如何使用工具来决定问题.
这种工具哲学的设计思经常被恰当的比喻为 "瑞士军刀".
瑞士军刀的隐喻包含着两层意思: 从工具内部来讲, 它应当提供足够多的使用方式, 同时从处部讲, 它不应当也不可能是刀能的. 无论瑞士军刀如何方便, 砍树请使用电锯.
这是工具哲学的另一面: 模块原则:
- 除非别无它法, 不要编写庞大程序;
- 组合小工具, 完成大任务, 因此在设计工具时, 就要考虑工具的拼接组合;
- 为了让工具具有足够的通用性, 就当让 策略与机制分离, 让接口与引擎分离;
- 工具应当缄默, 一方面它相信用者敲下命令时知道自己在做什么, 另一方面作为一个协作的环节, 如果运行正常就不应该打扰用户;
- 工具产生的一切知识,应当以数据的形式保存, 以供协作的其它工具使用.
工具哲学的实质是指向协作的. 这种协作不是其于中心化管控的分工协作, 而是其于分布式的为自己独立负责的匠人的协作.
在 Unix 哲学中, 使用者是全完为自己行为负责的 是一个极为重要的假设.
程序是写给人看的
因为协作, 程序不是写给机器看的, 而是写给人看的. 这要求两点:
- 透明, 只有工具内部是透明的, 使用者才能理解其机制;
- 简洁, 简的逻辑可以让人们快速理解;
正是因此, Unix 中几乎所有东西都以文本文件的形式体现出来. 甚至硬件设备都要以文件的形式呈现.
因为文本文件是人类可读的 ( 而二进制文件则是人类不可读的 ).
而透明与简洁又使得程序本身变得更加建壮:
只要求足够多的眼球关注, 就可以让所有软件的缺陷浮现.
---- 《大教堂与集市》
迭代与演化
对于软件设计和实现来说, Unix 有一点很好, 即从不相信任何 "不二法门" ...... 如果说相信别人宣称的 "不二法门" 是不明智的话, 那么坚信自己的设计是 "不二法门" 简直就是愚蠢了.
---- 《Unix 编程艺术 · 第 1 章 哲学》
最终指向协作的 Unix 哲学诸原则, 使得其具有了分布式迭代的可能.
不同的人以不同的目的, 使用 Unix 提供的工具, 并在使用中发现更好的机制.
而透明和简洁的原则使得在工具中增加这些更好的机制变得可能.
而更好的机制又能带来更好的策略, 使更多的人可以使用 Unix 提供的工具.
如此, 一种分布式的迭代模式就此形成. 想想 Linux 的虚拟团队就是建基在这种迭代模式下的.
正是在这个意义上, 我们才真正能说 机制是长久有效的, 而策略非常短暂.
这种迭代就是演化.
相信演化的力量, 而不是精巧的设计 是 Unix 哲学的基本气质:
"过早优化是万恶之源."
---- 《Unix 编程艺术 · 第 1 章 哲学》
Unix 哲学的这种气质即根植于它诞生于中心化大程序 Multics 项目的废墟这上这一出生, 也根植于当时 Unix 所基于的小型机本身自由和反传统的文化隐喻中.
而 Unix 开放与分裂的历史和其在 Linux 上的重生, 也一再证明, 这种 相信演化 的气质正是 Unix 作为一个操作系统可以在暂入朝露的软件文化中涌现出可以传承的 "哲学" 的原因.
另一条路
翻电的小李老师在 《翻转问答 · VOL 9 | 互联网在越来越糟么? 怎么办》一期节目中, 提到从谱系学的角度提到互联网其实是来自由美军对于控制的诉求.
这当然是对的啦. 但是我想补充的是, 同时, 在互联网的诞生中, 还有这样一层谱系, 就是黑客文化和 Unix 哲学.
它们代表着另外一种力量, 塑造着今天样貌.
而这并不是我们经常想象的, 工程师们通过技术无意识的影响着世界. 而是他们有意识的让这种世界不落入赛博朋克小说所描述的糟糕的世界.
技术文化本身是有政治隐喻的.
世上有两种密码, 一种是防止你的小妹妹看你的文件; 另一种是防止当局者阅读你的文件资料. 本书写的是后一种情况.
---- 《应用密码学》
工程师们, 作为知识分子, 有意识的用自己所掌握的技术抵抗着让世界变提更糟的力量, 密码学是其一, Unix 哲学亦是其一.
小李老师在同一期节目中也提到, 互联网的问题其实是 "系统 ( 技术 ) 入侵生活" 的问题.
这也是我们这一代人所必需要面对的问题. 你不关心技术, 但技术关心你.
所以我们要通过积极的自我技术建立一套系统, 用技术对抗技术, 用系统对抗系统.
( 如果关注我早的朋友可能会发现公众号的签名改了. )
那我们如何通过积极的自我技术建立一套系统, 了解 Unix 哲学, 或许会有点启发吧.