您的位置: 飞扬精品软件园 >> 文章中心 >> 系统教程 >> Unix系统 >> Unix基本哲学

相关文章链接

本类文章排行

最新新闻资讯

    Unix基本哲学

    Unix基本哲学


    • 阅览次数: 文章来源: 原文作者: 整理日期: 2010-07-12


    ;   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,耗费以百万计的人时——这点芝麻大的好处,远不能抵消后续排错所付出的代价。

        经常令人不安的是


    [1] [2] [3] [4] [5] [6] [7] [8]


查看所有评论

网友对Unix基本哲学 的评论

网名:
主题:
内容:
验证码: