Unix编程艺术——摘录一

Unix哲学

Unix本身所作出的榜样体现出来的。从整体上来说,可以概括为以下几点:
1.模块原则:使用简洁的接口拼合简单的部件。
2.清晰原则:清晰胜于机巧。
3.组合原则:设计时考虑拼接组合。
4.分离原则:策略同机制分离,接口同引擎分离。
5.简洁原则:设计要简洁,复杂度能低则低。
6.吝啬原则:除非确无它法,不要编写庞大的程序。
7.透明性原则:设计要可见,以便审查和调试。
8.健壮原则:健壮源于透明与简洁。
9.表示原则:把知识叠入数据以求逻辑质朴而健壮。
10.通俗原则:接口设计避免标新立异。
11.绒默原则:如果一个程序没什么好说的,就沉默。
12.补救原则:出现异常时,马上退出并给出足够错误信息。
13.经济原则:宁花机器一分,不花程序员一秒。
14.生成原则:避免手工hack,尽量编写程序去生成程序。
15.优化原则:雕琢前先要有原型,跑之前先学会走。
16.多样原则:决不相信所谓“不二法门”的断言。
17.扩展原则:设计着眼未来,未来总比预想来得快。


关于编程

看到该做的就去做——短期来看似乎是多做了,但从长期来看,这才是最佳捷径。

如果不能确定什么是对的,那么就只做最少量的工作,确保任务完成就行,至少直到明白什么是对的。

要良好的运用Unix哲学,你就应该不断追求卓越。你必须相信,软件设计是一门技艺,值得你付出所有的智慧、创造力和激情。否则,你的视线就不会超越那些简单、老套的设计和实现;你就会在应该思考的时候急急忙忙跑去编程。你就会在该无情删繁就简的时候反而把问题复杂化——然后你还会反过来奇怪你的代码怎么会那么臃肿、那么难以调试。

要良好地运用Unix哲学,你应该珍惜你的时间决不浪费。一旦某人已经解决了某个问题,就直接拿来利用,不要让骄傲或偏见拽住你又去重做一遍。永远不要蛮干;要多用巧劲,省下力气到需要的时候再用,好钢用在刀刃上。善用工具,尽可能将一切都自动化。

软件设计和实现应该是一门充满快乐的艺术,一种高水平的游戏。如果这种态度对你来说听起来有些荒谬,或者令你隐约感到有些困窘,那么请停下来,想一想,问问自己是不是己经把什么给遗忘了。如果只是为了赚钱或是打发时间,你为什么要搞软件设计而不是别的什么呢?你肯定曾经也认为软件设计值得你付出激情……

要良好地运用Unix哲学,你需要具备(或者找回)这种态度。你需要用心。你需要去游戏。你需要乐于探索。



Unix的故事

小型实验原型系统的后继产品往往备受令人讨厌的“第二版效应”折磨。由于迫切希望把所有首次开发时遗漏的功能都添加进去,往往导致设计十分庞大、过于复杂。其实,还有一个因不常遇到而鲜为人知的“第三版效应”:有时候,在第二系统不堪自身重负而崩溃之后,有可能返璞归真,走上正道。

最初的Unix就是一个第三系统。Unix的祖辈是小而简单的兼容分时系统(CTSS,Compatible Time-Sharing System),也算曾经实施过的分时系统的第一代或者第二代了(取决于不同的定义,具体我们在此不作讨论)。Unix的父辈是颇具开拓性的Multics项目,该项目试图建立一个具备众多功能的“信息功用体/应用工具(information utility)”,能够很漂亮地支持大群用户对大型计算机的交互式分时使用。唉,Multics最后因不堪自身重负而崩溃了。但Unix却正是从它的废墟中破壳而出的。

------------------------------华丽的分割线-------------------------

Unix于1969年诞生于贝尔实验室的计算机科学家Ken Thompson的头脑中。

Thompson曾经是Multics项目的研究人员,饱受当时几乎作为铁律而到处应用的原始批量计算的困扰。然而在六十年代晚期,分时系统还是个新鲜玩意儿。计算机科学家John McCarthy(Lisp语言的发明者)几乎是在十年前才首次发表了分时系统的构想,而直到Unix诞生前七年的1962年才第一次真正部署使用,因此当时的分时系统尚处实验阶段,像喜怒无常的野兽,性能极不稳定。

那个时代计算机硬件的原始程度,恐怕亲历者现在也很难以记清。那时最强大的机器所拥有的计算能力和内存还不如现在一个普通的手机。2视频显示终端才刚刚起步,六年以后才得到广泛应用。最早分时系统的标准交互设备就是ASR-33电传打字机——

个又慢又响的设备,只能在大卷的黄色纸张上打印大写字母。Unix命令简洁、少说多作的传统正是从ASR-33开始的。

当贝尔实验室(Bell Labs)从Multics研究联盟中退出时,Ken Thompson 带着从Multics激发的灵感—如何创建一个文件系统一一留了下来。他甚至没能留下一台机器来玩自己编写的“星际旅行”,这是个科幻游戏一—模拟驾驶一艘火箭在太阳系中遨游。Unix就在一台废弃的PDP-7小型机3(图2.1)上问世了。这台PDP-7成为了“星际旅行”

的游戏平台和Thompson关于操作系统设计思路的试验场。

Unix的完整起源故事可参见[Ritchie79],这是从Thompson第一个合作者 Dennis Ritchie的角度讲述的。Dennis Ritchie后来以Unix的合作发明者和C语言的发明者而闻名于世。Dennis Ritchie、Doug Mcllroy和其他一些同事,已经习惯了Multics环境下的交互计算方式,不愿意放弃这一能力。Thompson的PDP-7操作系统给了他们一条救生绳。

PDP8

PS:

分时系统:多终端共享,多用户操作交互式系统。

原文地址:https://www.cnblogs.com/fenqinearl/p/10901596.html

时间: 2024-11-10 12:36:07

Unix编程艺术——摘录一的相关文章

《Unix编程艺术》读书笔记(1)

<Unix编程艺术>读书笔记(1) 这两天开始阅读该书,下面是自己的体会,以及原文的摘录,虽然有些东西还无法完全吃透. 写优雅的代码来提高软件系统的透明性:(P134) Elegance is a combination of power and simplicity. Elegant code does much with little. Elegant code is not only correct but visibly, transparently correct. It does

Unix编程艺术读书笔记(一)

 Unix编程艺术读书笔记(一)这本书是一位面试官告诉我的,很感谢他的指点,关于面试的详细过程,我想以后再写,当然我也意识到自己的不足,一方面是面试的技巧,还有一方面就是学习的方法.阅读这本书很享受,加上之前的积累,一些疑惑,还有一些基础的不足,在这本书里找到了归宿. 下面,一起来享受这本书的精华吧 Unix诞生与1969年,那时候我们还在闹文革吧,可一个可以改变21世纪甚至更远的未来的操作系统问世,至少现在的Linux是基于Unix的设计哲学.Unix是唯一一个在不同种类的计算机,众多厂商

读UNIX编程艺术(一)

对于开发人员来说,正确的编程实践其实非常的重要.这些正确的编程实践决定了你是否能够继续的做正确的事情,以及你是否真的能够懂得什么是软件开发.我相信,并非所有的人都真正的懂得什么是软件开发.即使你就食与这个行业,又工作了许多年,但是你也不一定真的了解它.因为了解它需要真正的思考和认真的实践,相信并非易事.但是学习总是能够加快这一过程.拿别人的经验和我们的实践相印证,也许能够让我们更加的接近真理.而无限的接近真理不就是人的最终追求么?说白了,这就是人类生存的目的. 其实编程这个工作,真的是理论和实践

读《UNIX编程艺术》一感

我记得早在2006年的时候就开始频繁使用awk做文本处理方面的工作,07年的时候周围有人用perl,我还感到很不解,觉得写得很复杂,没有awk one liner 那么方便和神奇.一直在了解awk的具体使用方法.在积累的一定时间之后,感觉到很自豪终于算是比较精通了.今天是2016年X月X日,10年后,我突然翻到<UNIX编程艺术>awk那章的时候:书中内容,简要说---- “在1990年代后,awk就已经很少被使用了,原因在于,awk分为两部分,前半部分是面向特定场景的范式,后半部分是无限外延

do one thing,and do it well -- 《UNIX编程艺术》书评 --luikimfai

断断续续的把<UNIX编程艺术>看完了, 实话说还记得的也就do one thing,and do it weill 和 保持程序模块化 这两点, 作者是一个UNIX大师, 全书并不讲解UNIX是怎么搞出来, 而注重于UNIX的编程思想. 程序总是会过时的,代码必须随时代不断演化, UNIX漫长的进化过程中, 正是这些编程思想保证了其长盛不衰的生命力.    自己最近才转行做邮件底层相关开发的, 对介绍smtp协议部分能看懂, 但在读其他的例子的时候就只能不求甚解,只抓编程思想,领悟编程艺术

UNIX编程艺术 PDF下载

网盘下载:UNIX编程艺术 PDF下载 – 易分享电子书PDF资源网 作者: [美] Eric S·Raymond 出版社: 电子工业出版社 译者: 姜宏 / 何源 / 蔡晓俊 出版年: 2006-2 页数: 525 定价: 59.00元 装帧: 平装 ISBN: 9787121021169 内容简介 · · · · · · 本书主要介绍了Unix系统领域中的设计和开发哲学.思想文化体系.原则与经验,由公认的Unix编程大师.开源运动领袖人物之一Eric S. Raymond倾力多年写作而成.包

JS DOM编程艺术的学习—— JS学习笔记2015-7-5(第76天)

由于看高程3卡住了,所以现在在学习JS DOM编程艺术来巩固基础: 一.在看JS DOM 编程艺术的时候,有个作者提到的方法很实用, 就是在JS中变量和函数的命名方法:  变量的命名方法为使用下划线,比如: var temp_color = ['red','blue']; 函数就使用驼峰法,比如: function current_date(){}; 这样的习惯可以帮助理解,提高可读性,在理解变量和函数名的时候就很方便了: 二.还有个收获就是关于“对象”的理解又加深了 之前对于什么对象的属性,对

Javascript Dom编程艺术(第2版)读书笔记

Javascript Dom编程艺术这本书我看的是第2版的,真心觉得这本书不错,它将DOM编程的一些基本原则,及如何让Javascript代码在浏览器不支持的情况下,或浏览器支持了Javascript但用户禁用它的情况下做到平衡退化,让最基本的操作仍能顺利完成,以及如何让结构与样式分享做到真正的渐近增强叙述得很清楚,也很容易理解接受.我也是看了这本书之后,才对代码优化,结构,行为,样式有了进一步的加深理解. Javascript Dom编程艺术(第2版)读书笔记,布布扣,bubuko.com

【DOM编程艺术】综合示例

index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title>Jay Skript And The Domsters</title> <script src="scripts/modernizr-1.6.min.js"></script> <l