1. 不懂Unix的人注定最终还要重复发明一个蹩脚的Unix。2. 以太网的发,就有一半的知识会过时。4. Unix具有非常彻底的灵活性。5. 让每个程序就做好一件事。6. 假定每个程序的输出都会成为另一个程序的输入,
原创 2022-12-22 18:50:54
523阅读
Unix编程艺术——Unix哲学题外话:一个月之前,刚刚读完《unix编程艺术》这本据说有些“愤青”的书,读书的过程,感觉是种享受,不但unix本身是艺术,连作者著书也是艺术,本想就本书写篇读感,但是感觉现阶段的自己还总结不了书中的精华。​ ​​Unix编程艺术​​主要介绍了Unix系统领域中的设计和开发哲学、思想文化体系、原则与经验。此文大致摘录了Unix的哲学。web程序员也应该看看此书,软件
转载 2022-07-27 09:05:52
588阅读
Unix哲学一言以蔽之模块原则 (使用简洁的接口拼合简单的部件)计算机编程的本质就是控制复杂度要编写复杂软件而又不至于一败涂地的唯一方法就是降低其整体复杂度——用清晰的接口把若干简单的模块组合成一个复杂的软件。如此一来,多数问题只会局限于某个局部,那么就还有希望对局部进行改进而不至牵动全身。清晰原则 (清晰胜于技巧)维护成本是高昂的,在写程序时,要想到你不是写给执行代码的计算机看的,而是给人——将
原创 2013-10-15 08:57:54
797阅读
最小立异原则如有可能,尽量允许用户将接口功能委派为熟悉的程序来完成不能委派时,那就效仿接口设计评估 简洁:一个事务处理需要的动作时间及复杂度需要较低的上限 表现力: 接口可以触发相当广泛的行为 易用: 易用性同要求用户需要记忆的东西成反比 透明: 用户在使用接口的时候,几乎没有什么问题、数据或程序的相关状态需要记忆 脚本化能力:很容易被其他程序调用CLI和可视接口之间权衡 CLI:丰富的表现力,高度的脚本化能力,易用性低(需要费劲的记忆),透明度通常也较低 GUI:易用,不能脚本化,处理规模大的问题需要机械性重复操作 长远来看,为了既能服务一般用户,又能服...
转载 2012-02-12 13:18:00
142阅读
2评论
什么应是可配置的Unix提倡建立机制而把策略决定权留给用户,往往会导致选项过多。不应该配置:能够可靠自动检测的东西;用户不应该看到优化开关;能用脚本包装器或简单管道完成的任务,就不要使用配置开关实现。配置放在哪里/etc目录:管理员设置的系统级选项支持#开头的注释不去别隐匿的空白符多个连续的空行视为单个空行词法上把文件视作简单的用空白符分割的标记序列,或多行标记,但支持以字符串语法对内嵌空白符的...
转载 2012-02-07 21:58:00
166阅读
2评论
近来翻看《Unix编程艺术》,读至17种原则时,遂觉其甚好。便拿来和大家分享: 1.模块原则:使用简洁的接口拼合简单的部件。 2.清晰原则:清晰胜于机巧。 3.组合原则:设计时考虑拼接组合。 4.分离原则:策略同机制分离,接口同引擎分离。 5.简洁原则:设计要简洁,复杂度能低则低。 6.吝啬原则:除非确无它法,不要编写庞大的程序。 7.透明性原则:设计要课件,以便审查和调试。 8.
原创 2012-09-26 22:07:57
702阅读
2点赞
6评论
Unix下有很强大的专用代码生成器,如用yacc/lex来构建语法分析器和词法分析器、用autoconf或automake生成makefile等。这些工具具有很强大的功能,但还有一些简单轻巧的代码生成方式,下面是《Unix编程艺术》中的两个例子。生成ASCII显示的代码如果在程序中直接通过初始化器来写出所有行,会出现对齐、每行很难保证79字符的问题。Ascii源码的解决方法是通过脚本生成这部分...
转载 2012-02-05 15:32:00
110阅读
2评论
微型语言:小型、专门应用领域特制、大量减少程序行数的语言。1. 使用微型语言把编程问题的规格说明提升一个层次,更具表达力,更紧凑;2. 规格说明文件越来越像微型语言。理解语言分类法案例分析sng: 透明,结构化的数据文件使得相应的编辑、转换和生成工具无需要知道其他方的设计假定。 regexp:Glob表达式,基本正则表达式,扩展正则表达式,Perl正则表达式。正则表达式是微型语言能够多么简练的极端例子。 Glade:X,GTK(和Qt是两个流行开源X工具包),说明GUI窗体及属性、代码生成。 m4:扩展字符串,键值对。 XSLT:复杂,但是仍然是微语言:有限的分类,不包含数组和数据结构;有限.
转载 2012-02-04 20:09:00
99阅读
2评论
如果在我目前的职业生涯中要选出一本对我影响最大的书籍,我一定会选择ESR的《UNIX编程艺术》。第一次读此书时资历尚浅,更多的是当做一本课外读物来看,但是随着职业中接触了更多不同的操作系统,完成了更多项目产品的设计、架构、实现,对书中所讲内容产生了更大的共鸣。在第三次读此书之际,把书中很多有价值的思想提取出来给自己一个总结,希望也能给大家带来一次分享。本书关注的重点:不止于方法,更重乎理念。知识(
推荐 原创 2014-01-09 22:22:23
9988阅读
5点赞
6评论
透明性,来点光。Beauty is more important in computing than anywhere else in technology because software is so complicated. Beauty is the ultimate defense against complexity.透明性是被动品质,可显性是主动任务。透明性:没有阴暗的角落和隐藏的深度;能够预测到程序行为,能够看透机器干什么(整个)。可显性:做什么,怎么做。文档就是为了提高可显性。要必须尽力做到有帮助(具体)。可显性降低进入门槛;透明性则减少代码中的存在成本。研究实例audacit
转载 2012-01-31 14:28:00
129阅读
2评论
由于兴趣原因,近段时间特别想在某些开源的架构或者项目上吸取那么一点值得借鉴的经验或者方法。想来想去,一向口碑不错的UNIX中应该有值得学习的东西。找来了《UNIX编程艺术》的英文版,读了一天感觉实在是太慢,最终还是转向了中文版本。       总结一下自己觉得对我来说比较有用的部分原则或者知识:1.每个软件只做好一件事,如果需要做一项新的工作,重新设计一个软件而不要再在原来的软件上增加新的
原创 2021-07-08 14:09:54
235阅读
由于兴趣原因,近段时间特别想在某些开源的架构或者项目上吸取那么一点值得借鉴的经验或者方法。想来想去,一向口碑不错的UNIX中应该有值得学习的东西。找来了《UNIX编程艺术》的英文版,读了一天感觉实在是太慢,最终还是转向了中文版本。       总结一下自己觉得对我来说比较有用的部分原则或者知识:1.每个软件只做好一件事,如果需要做一项新的工作,重新设计一个软件而不要再在原来的软件上增加新的
原创 2022-03-11 14:40:29
248阅读
1. AWK语言是图灵完备的,而且可以读写文件。2. AWK最早设计的目的是针对报表生成的一种小巧、有表达力的专用语言。不幸的是它在复杂度和能力上做得并不好。作用语言并不紧凑,但是它依靠的模式驱动框架阻止了它的通用性——这是两个世界最糟糕的部分。新派脚本语言可以完成awk所能完成的任何任务,它们的等价程序至少和它一样易读。3. awk西湖几十年被废弃,还因为现代的shell具有浮点运算、关
原创 2021-07-08 14:09:53
222阅读
1. AWK语言是图灵完备的,而且可以读写文件。2. AWK最早设计的目的是针对报表生成的一种小巧、有表达力的专用语言。不幸的是它在复杂度和能力上做得并不好。作用语言并不紧凑,但是它依靠的模式驱动框架阻止了它的通用性——这是两个世界最糟糕的部分。新派脚本语言可以完成awk所能完成的任何任务,它们的等价程序至少和它一样易读。3. awk西湖几十年被废弃,还因为现代的shell具有浮点运算、关
原创 2022-03-11 15:08:56
119阅读
转载请注明出处:http://blog.csdn.net/horkychen学习了<<Unix编程艺术>>第一章关于哲学的部分, 做个汇总.现在已经对精简设计, 舍弃华而不实是被普遍认可的.但早在Unix发展的时期, 这一条原则却是在实践中不断提炼出来的.
转载 2012-05-29 08:32:00
84阅读
2评论
多道程序设计:分离进程为独立的功能Unix的最具特点的程序模块化技法就是将大型程序分解成多个协作进程。Unix提倡把程序分解成更简单的子进程,并考虑接口:降低进程生成的开销。提供方法简化进程间通信。提倡使用能由管道和套接字传递的简单、透明的文本数据格式。真正的挑战不是协议语法而是协议逻辑:协议设计既要有充分的表达能力,又能防范死锁。从性能调整中分离复杂度控制在开发出可以把全局复杂度降至最低程度的干净体系之前,关注性能问题便是过早优化。线程提高了复杂度,应尽量少用线程。将程序划分为多个协作进程的另一重要原因是提高安全性:仅信任较少的代码,而让大部分操作都运行在用户级。Unix IPC方法1 把任
转载 2012-01-31 21:22:00
107阅读
2评论
优化 Unix经验告诉我们最主要的就是如何知道不去优化,最强大的优化工具就是不做优化(摩尔定律)。如果仅仅是为了减少资源使用的一个常数部分而优化是不值得的,更明智的做法是把高次的指数级降下来。善用profiler估量程序,并谨记工具误差,降低误差影响的一个方法是在相同负载下多次profiler。最有效的代码优化方法是保持代码短小简单,永远不要将核心数据结构和时间关键循环抛出缓存。性能往往受限于IO(尤其是网络程序),经验法则是尽可能降低时延:对可以共享启动开销的失误进行批处理;允许事务重叠;缓存。工具编辑器:vi、emacs代码生成器:yacc、lex自动化编译:make版本控制:VCS运行期
转载 2012-02-14 22:59:00
94阅读
2评论
使用的时候也一定会有一个比较好的实践方式。按照这样的一个经验设计,或许一个接口的代码行数以及实际的物理行数(我理解应该是包
原创 6月前
16阅读
# JavaScript 编程艺术 JavaScript 是一种广泛应用于 Web 开发中的编程语言。它可以通过与 HTML 和 CSS 相结合,为网页添加交互性和动态效果。本文以《JavaScript 编程艺术》为基础,介绍 JavaScript 的基本语法和常见应用。 ## JavaScript 基础 ### 变量与数据类型 JavaScript 中的变量是用于存储数据的容器。可以使用
原创 2023-08-04 05:20:48
43阅读
第一部分 Java 精 髓1991年,Sun Microsystems公司开始研究一种新的计算机语言,这种语言最后撼动了传统编程的基础。起初,这种语言被命名为Oak,到1995年正式命名为Java。Java在两个方面改变了编程的过程。第一,Java集成了有利于编制Internet程序的特性。第二,Java发展了计算机语言的精髓。因此,Java的重要性体现在两点:对Internet的内嵌支持和对计算
转载 精选 2007-10-24 21:35:15
1037阅读
  • 1
  • 2
  • 3
  • 4
  • 5