最近文章更新
- 1966年生产的广州 珠江 SB6-2型 ..
- HD6870/6850全面评测,让你大饱眼..
- 百万现金刚入门 中国7大奢华私人..
- 罕见4G希捷酷鱼系类万转SCSI服务..
- IBM 6x86MX PR333 CPU
- 采用MC68000 CPU的进口老计算机主..
- 1989年IBM-XT机软驱
- BC3型饱和标准电池拆解
- JUKO ST
- Kingston 品牌的CPU
- YAMAHA 719
- intel 30线 内存条
- intel mmx cpu和主板
- 首款xHCI 1.0正式版标准USB 3.0控..
- 《极品飞车:地下狂飙》纹理MOD视..
- USB接口加扩展子卡:影驰神秘GTX..
- 阿里巴巴将发布浏览器 核心不是W..
- 黄仁勋大秀NVIDIA LOGO纹身
- Google Earth上的奇特卫星图片
- 开火!讯景限量版HD 5970详细测试..
相关文章链接
本类文章排行
最新新闻资讯
本周下载排行
- ArcSoft TotalMedia Theatre 3 P..
- Windows 7 Build 7600 16385 RTM..
- 《姗姗来迟软件光盘+飞扬PE工具箱..
- MSDN Windows 7 RTL 7600 Ultima..
- Windows 7 Home Premium (x86) -..
- Windows Virtual PC (x86) - (Mu..
- MSDN Windows 7 Language Pack X..
- Windows 7 Language Pack (x64) ..
- Windows 7 Starter (x86) - DVD ..
- Windows 7 Professional (x86) -..
- Windows 7 Language Pack (x86) ..
- Windows 7 Home Premium (x64) -..
- Windows XP Mode (x86, x64) - (..
- 7127.0.090507-1820_x86fre_clie..
- DMG2ISO
本月下载排行
- ArcSoft TotalMedia Theatre 3 P..
- Windows 7 Build 7600 16385 RTM..
- 《姗姗来迟软件光盘+飞扬PE工具箱..
- MSDN Windows 7 RTL 7600 Ultima..
- MSDN Windows 7 Language Pack X..
- Windows 7 Home Premium (x86) -..
- Windows 7 Language Pack (x64) ..
- Windows 7 Professional (x86) -..
- 7127.0.090507-1820_x86fre_clie..
- Windows 7 Professional (x64) -..
- Windows 7 Starter (x86) - DVD ..
- Windows Virtual PC (x86) - (Mu..
- Windows 7 Ultimate (x64) - DVD..
- Lenovo Windows 7 Ultimate OEM ..
- Windows 7 Home Premium (x64) -..
- 阅览次数: 文章来源: 原文作者: 整理日期: 2010-07-12
Unix基本哲学
Unix基本哲学
; McIlroy 要求我们在设计时要考虑宽容性,而不是用过分纵容的实现来补救标准的不足。否则,正如他所指出的一样,一不留神你会死得很难看。
1.6.13 经济原则: 宁花机器一分,不花程序员一秒
在Unix早期的小型机时代,这一条观点还是相当激进的(那时机器要比现在慢得多也贵得多)。如今,随着技术的发展,开发公司和大多数用户(那些需要对核爆炸进行建模或处理三维电影动画的除外)都能够得到廉价的机器,所以这一准则的合理性就显然不用多说啦!
但不知何故,实践似乎还没完全跟上现实的步伐。如果我们在整个软件开发中很严格的遵循这条原则的话,大多数的应用场合都应该使用高一级的语言,如
Perl、Tcl、Python、Java、Lisp,甚至shell——这些语言可以将程序员从自行管理内存的负担中解放出来(参见
[Ravenbrook])。
这种做法在Unix世界中已经开始施行,尽管Unix之外的大多数软件商仍坚持采用旧Unix学派的C(或C++)编码方法。本书会在后面详细讨论这个策略及其利弊权衡。
另一个可以显著节约程序员时间的方法是:教会机器如何做更多低层次的编程工作,这就引出了……
1.6.14 生成原则: 避免手工hack,尽量编写程序去生成程序
众所周知,人类很不善于干辛苦的细节工作。因此,程序中的任何手工hacking都是滋生错误和延误的温床。程序规格越简单越抽象,设计者就越容易做对。由程序生成代码几乎(在各个层次)总是比手写代码廉价并且更值得信赖。
我们都知道确实如此(毕竟这就是为什么会有编译器、解释器的原因),但我们却常常不去考虑其潜在的含义。对于代码生成器来说,需要手写的重复而麻木
的高级语言代码,与机器码一样是可以批量生产的。当代码生成器能够提升抽象度时——即当生成器的说明性语句要比生成码简单时,使用代码生成器会很合算,而
生成代码后就根本无需再费力地去手工处理了。
在Unix传统中,人们大量使用代码生成器使易于出错的细节工作自动化。Parser/Lexer生成器就是其中的经典例子,而makefile生成器和GUI界面式的构建器(interface builder)则是新一代的例子。
(我们会在第9章讨论这些技术。)
1.6.15 优化原则: 雕琢前先得有原型,跑之前先学会走
原型设计最基本的原则最初来自于Kernighan 和 Plauger 所说的“90%的功能现在能实现,比100%的功能永远实现不了强”。做好原型设计可以帮助你避免为蝇头小利而投入过多的时间。
由于略微不同的一些原因,Donald Knuth(程序设计领域中屈指可数的经典著作之一《计算机程序设计艺术》的作者)广为传播普及了这样的观点:“过早优化是万恶之源”[9]。他是对的。
还不知道瓶颈所在就匆忙进行优化,这可能是唯一一个比乱加功能更损害设计的错误。从畸形的代码到杂乱无章的数据布局,牺牲透明性和简洁性而片面追求
速度、内存或者磁盘使用的后果随处可见。滋生无数bug,耗费以百万计的人时——这点芝麻大的好处,远不能抵消后续排错所付出的代价。
经常令人不安的是