[沧海拾遗]读<Linux/Unix设计思想>个人所思

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

<Linux/Unix设计思想>一书主要介绍了unix系统设计中的一些原则,其中包含了九个主原则和十个原则。

九大主原则

  • SMALL
即“小即是美”。小则灵活,并易于改变去适应变化。而大则牵一发而动全身,一旦改变就会伤筋动骨。说到这个原则,就想起我们it界那个长久以来口口相传的笑话,说工程师老是被pd说改需求改需求,从而狂燥甚至发狂。笑一笑后,是不是该想一想,之所以出现这么难以改变的情况,是不是将系统设计和实现得太过大了呢?所以才会在有变化的时候如果痛苦?
  • 1THING
即“让程序只做一件事”。这类似于OOP编程思想中的SRP原则(单一职责),以前理解这个原则大约是觉得这样做的一个理由这样易于维护,或者可读性强上。但是看了这本书的介绍后发现,单一职责的优点不仅在可读性和维护性这些上面,还在性能上。因为一个方法如果小,则在调用完毕后,它使用的局部变量等就可以马上回收,降低资源的开销。
  • PROTO
即“尽快建立原型”。这里提到的一个产品的三个系统感觉相当有意思。所谓三个系统分别是:第一系统,是指在资源紧迫情况下,而开发的预研性质的系统;第二系统是在第一个系统出现后,看到第一个系统的价值后,也看到第一个系统实践的结果后而产生的,在第一系统的基础上做出大量的优化和扩展;第三系统是在第一和第二系统出现后,去芜存精,最终比较完美的一个产出。如果投身于第一个系统的开发,你要冒很大的风险,因为它极有可能失败,但是在开发第一个系统的团队中工作将是一件最有激情的事.如果投向第二个系统,前期还好,你有可能接触到最顶尖的设计,但是到后期,就没意思了,就是重复的添加功能而已。不过不经历第一系统的后期也无法进入第三系统,所以在工作中,评估产品的阶段,选择投向其中,未尝不是一个好的方法。
  • PORT
即“可移植性高于效率”。之所以推崇这个是因为作者认为计算机的性能总是越来越强,因此效率应该不是程序关心的第一优先级,但是向更高性能计算机的移植性却是程序应该关注的。这个我觉得倒是有所保留,近年来随着处理数据的海量化、什么云啊,大数据啊,就说明现在的计算机的性能增长速度还赶不上我们要处理的数量量增长速度。而且最近几年并发编程为什么这么火,因为硬件生产商已经无法保持业界的摩尔增长率了,所以只能通过软件的方式来保持性能的增长。而并发多核的编程就是在这种情况被程序员所追捧。
  • FLAT
即“使用纯文本来存储数据”。为什么呢?因为这样可以使数据具有最大的可移植性。
  • REUSE
即“充分利用软件的杠杆效应”。在编程中有一个原则尽量去重用别人已有的代码,来提高自己的工作效率。但是有时候你不得不承认,去读懂一些人写得代码,远没有自己重写来得简单。因此如果你要重用别人的代码,那么尽量重用一些优质的代码吧,并且要时刻提醒自己,别人的代码是不安全的。。。
  • SCRIPT
即“尽量使用shell脚本”。普适地来讲,就是我们在实现程序时尽量选择一些可移植性高的编程语言,比如说java。
  • NOCUI
即“避免强制性用户界面”。这个不是太好理解,也没遇到过这种场景,以后再说。。。
  • FILTER
即“将程序用途过滤器”。就是使程序拥有输入、输出和异常处理,这样就可以将一个大型程序分解成若干个过程,并相互约定沟通方式,这不就是我们多人并发完成某项功能所需要做的事情吗?

十大次原则

  • custom
即“让用户定制系统”。这个对于选择linux的人来说很有感受,什么东西都想控制在自己手中。但是说到底还是要了解你的产品所面向的群体对这个产品的定位,有些人就是想傻瓜一点,那就傻瓜一点吧。
  • kernel
即“使内核最小化”。这也符合了小即是美的原则,如果将系统内核设计得小而轻量,然后其他人可以自由的在此基础上扩展,这就是一个完美的方案了。成为其他人的平台,进而构建一个生态圈,是由小变大,立于不败的不二法则。
  • lcase
即“统一小写”。这个属于个人风格了。
  • trees
即“不要将数据固化到纸上,节约树林”。
  • silence
即“沉默是金”。指有些场景不需要向用户反馈信息时,就不要反馈。
  • parallel
即“并行思考”。多核计算机总要发挥它的作用吧。
  • sum
即“部分之和大于整体”。这个取决于一个好的设计,如果将各部分组合成整体的成本太大,则有可能部分之和小于整体了。
  • 90percent
即“寻找90%的解决方案”。这个大家估计深要体会,有时候为了解决那10%甚至1%才会出现的问题,往往要投入巨大的精力,这个时候舍弃那1%的杞人忧天也许未尝不是一个好的抉择。不过如果你要冲向巅顶的话,你势必要面临这1%的挑战,这也是程序员乐此不疲的事情。
  • worse
即“更坏就是更好”。不过理解起来似乎是与其做不好,还不如选择一个已有较差的方案。
  • hier
即 “层次化思考”。对系统、软件分层,有利于维护开发。
Linux_Unix设计思想.pdf Linux_Unix设计思想.pdf Linux_Unix设计思想.pdf Linux_Unix设计思想.pdf 立即下载

相关推荐

Linux-Unix设计思想

Linux的开发方式与Unix的原理有效地结合起来,总结出LinuxUnix软件开发中的设计原则。《Linux\Unix设计思想/图灵程序设计丛书》前8章分别介绍了LinuxUnix中9条基本的哲学准则和10条次要准则。第9章和第10章将Unix系统的设计思想与其他系统的设计思想进行了对比。最后介绍了Unix哲学准则在其他领域中的应用。

现代AI编码助手与终端复用技术融合:从Claude Code到OpenCode的全景实践

AI编程助手与终端复用器融合实践 本文探讨了AI编程助手(如Claude Code和OpenCode)与终端复用技术(tmux/iTerm2等)的融合实践。通过终端复用器,开发者可以实现AI会话的并行执行、持久监控和自动化交互。文章系统梳理了三类核心工具(会话编排器、终端增强插件、监控与UI工具)的工作原理,并详细介绍了Claude Code生态(Maniple、claude-tmux)和OpenCode生态(@runecraft/spawn、opencode-pty等)的具体配置与使用方式。

vortex5的博客 1609

Linux/Unix 设计思想概述

Unix设计哲学

诸葛浪 2301

最全浅谈UNIXLinux-操作系统的设计哲学,2024年最新卧槽

/ 虚拟内存结构体// 进程号// 指向父进程的指针// 子进程列表// 存放文件系统信息的指针// 一个数组,包含该进程打开的文件指针就是 Linux 内核对于一个进程的描述,也可以称为「进程描述符」。源码比较复杂,我这里就截取了一小部分比较常见的。其中比较有意思的是mm指针和files指针。mm指向的是进程的虚拟内存,也就是载入资源和可执行文件的地方;files指针指向一个数组,这个数组里装着所有该进程打开的文件的指针。

m0_61068088的博客 1036

Linux/Unix设计思想》随笔

Unix 哲学的几条准则看似简单。事实上,它们简单到会容易使人们忽略其 重要性。这就是它们颇具欺骗性的地方。其实,简单的外表下掩盖着一个事实: 如果人们能够始终如一地贯彻它们,这些准则可是非常行之有效的。 以下这份清单会让你对 Unix 哲学的准则有初步的认识。本书其余部分则会 帮助你理解它们的重要性。 (1) 小即是美。相对于同类庞然大物,小巧的事物有着无可比拟的巨大优势。 其中一点就是它...

花神的博客 1018

Linux/Unix设计思想

Mike Gancarz 1.Unix开发基于Multics分时操作系统 2.NIH(Not invented here,非我发明) 3.GPL:GUN公共授权协议,适用于软件的法律协议。开源 4.Unix哲学: 1)小即是美:易理解、维护、低消耗系统资源、易于其他工具结合 2)让每一个程序制作好一件事 3)尽快建立原型(prototyping):”第三个系统”概念 4)舍高效而取可移植性 5)使用纯文本文件来存储数据:二进制严格禁止 6)充分利用软件的杠杆效应:借用代码模块...

weixin_58088629的博客 391

LINUX UNIX设计思想

1. UNIX哲学,集思广益的智慧;一个人加上一百万人的智慧 ;Unix演化过程:汇编-B语言-C语言。 2. Unix哲学概述:小即是美;让每一个程序只做好一件事情;代码重用;     着眼于小处,只做好一件事!!!! 3. 永远都没有做完的软件,只有发布的软件。    尽快建立原型。我们根本就没有时间来浪费! 4. 使用最频繁地计算机才最强大!     不要花太多的时间去优化程序。

混沌的博客 1611

linux编程思想

量变产生质变。          无论我现在是什么ii

u011367978的专栏 1389

Linux/Unix设计思想Linux and the Unix Philosophy)

小即是美 尽快建立原型 采用短周期迭代式反馈的开发模式 优先考虑程序和数据的可移植性(采用文本方式存储数据的原因) 应保存一些自己编写的常用的工具集,里面包括一些程序和脚本。在一台机器到另一台机器,一个项目到另一个项目,一份工作到另一份工作的时候始终如影随形。 充分利用软件的杠杆效应 避免NIH综合征,充分利用他人已有的成果 尽量利用工具实现自动化 程序不创建数据,只处理数据,因此

Android系统开发-VR OS-系统安全隐私 636

经典文摘:Linux/Unix设计思想

Mike Gancarz是一位技术布道者。他是Linux/Unix最主要的倡导者之一,也是最早开发X Window System的先驱。他把一些在Unix/Linux社区里口口相传的哲学思想总结提炼,写成了《Linux and the UNIX Philosophy》这样一本完整的Unix/Linux哲学理论书籍。他在书中提出了九条训格之言:      一、小即是美      二、让每一个程序只做...

我心依旧,明月长歌 1500

Linux/Unix设计思想:软件的杠杆效应》后感

Linux/Unix设计思想:软件的杠杆效应》后感CSDN送一本书给我,本来我是选择Python相关的书,可惜没有货了,CSDN的美女给我一个目录列表,我选择了这本《Linux/Unix设计思想》,当我到下面这个故事时,深深地打动了我,让我不断反思,久久不能入睡,下面将这个故事分享如下: 我的姑姑却在一年时间内,卖出了价值将近一百万美元的特百惠产品。当我听说这件事情时,我首先想到的就是:“这

大坡3D软件开发 2992

Linux/Unix设计思想”手记

说明:本笔记来自于"Linux/Unix设计思想" unix哲学准则 小即是美 让每一个程序只做好一件事情 尽快建立原型 舍高效而取可移植性 适用纯文本来存储数据 充分利用软件的杠杆效应 使用shell脚本来提高杠杆效用和可移植性 避免强制性的用户界面 让每一个程序都成为过滤器 unix 哲学10条次...

lzc721的博客 282

关于Linux/Unix系统的设计思想:没有消息就是最好的消息

在使用Unix系统时 假如该目录为空 那么输入ls命令,它只会返回命令提示符 [hacker4444@localhost /]$ ls [hacker4444@localhost /]$ 很多人不明白,空目录为什么不能这样显示呢? [hacker4444@localhost /]$ ls [hacker4444@localhost /]$ DIRECTORY : NO ...

aaaa8470852的博客 1358

Linux/Unix设计思想书笔记与感想

英文名:Linux and the Unix Philosophy 作者:Mike Gancarz    翻译:漆渀(ben) NIH - Not Invented Here 准则1:小既是美                                                        SMALL 易于理解、维护消耗的系统资源较少易于

fengjie87的专栏 679

linux/unix设计思想

看了《linux/unix设计思想》这本书,觉得书的大部分内容都闲扯的太远了,以下简单的总结下本书的核心,帮助大家节省时间和金钱。 linux/unix设计思想: 1) 程序应该小而专一,程序应该尽量的小,且只专注于一件事上,不要开发那些看起来有用但是90%的情况都用不到的特性;  2) 程序不只要考虑性能, 程序的可移植性更重要,shell和perl,python等脚本相比c有更好的移植性; 3...

weixin_34397291的博客 227

Linux/unix设计思想》—后总结

这本书并没有在操作系统实现上下功夫去讲,而是讲了操作系统的道,颇有中国道家一般思想。至于对我如何去总结呢?我想主要是记录一下对自己感触最深的几点就行。因为整本书都是总结,经验之谈。有很多东西,它很难讲清楚,更没法用精确的数据分析得出结论,至此,经验变得越发的重要。     首先,系统设计思想给我们讲了一些计算机世界的一些思维。系统是个大程序。大程序的思维和处理,给了我们很多的启发。”程序思维”,

u010717334的专栏 1332
上一篇: [举重若轻]gnome3远程桌面nx安装
下一篇: [沧海拾遗]java并发之CountDownLatch、Semaphore和CyclicBarrier
yanhandle
博客等级 码龄15年 19粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值