zoukankan      html  css  js  c++  java
  • 等度的流明——代码之美·序

     

    没想到华章已经把这篇序在china-pub上放出来了,那我也就公开了罢。不过更没想到的事情是,这本书有38位作者固然是令人称奇,而这本书(中文版)共有八篇序,大概也是出版中少有的了罢。

    代码之美Beautiful Code(中文版)(9.22日china-pub全国独家首发) 

    等度的流明
    
            ——代码之美·序
    
    一
    ~~~~~~
    我上一次印象深刻的美的体验,大概已经是在十年之前了,那只是在午后睡醒,面对窗外的
    一棵大梧桐树时的感觉。不过这并不是说我这十年来都只看到了丑的事物,而是说我已经忘
    了去观察既已存在的美。
    
    直到我拿到这本《代码之美》,我忽然地回到了那种仰望着星星烁耀的夜空,或低头沉思于
    一两句大家文字的日子里。那时刻我既不是在思考,也不是在分析,更不是在解释,而只是
    在感受自然的、文字的,或将自然蕴于文字之中的,美。
    
    
    二
    ~~~~~~
    有一本书开启了一个时代,而我们如今仍然在这个时代之中而不知觉于这本书的深远影响,
    那是三位图灵奖得主合著的《结构程序设计》(1)。其中Dijkstra将人“理解一个程序的种
    种思维方法”归为三种:枚举、数学归纳和抽象。
    
    显然Wirth先生更为深层地看到了程序的本质,他说“程序=算法+数据结构”(2)。他揭示
    了这样一个事实:一个未知的、无序的世界是不可能实现“程序”的,于是我们抽象它——
    使它成为结构,或者对象,或者网,或者某个相对规则的事物。然后,我们再着之以“算法”。
    
    《代码之美》这本书,三十八位大师,在三十三章的内容中详细讨论了代码中抽象的过程、
    算法的过程和编程的过程。显然的,这些正是程序中最深刻的美。如同花之蕊,叶之脉,以
    及维系花蕊叶脉的美的,那些汁液。这种对美的触及,使他在我面前闪耀着与前两本书等度
    的流明。
    
    
    三
    ~~~~~~
    “只有在不仅没有任何功能可以添加,而且也没有任何功能可以删除的情况下,设计师才能
    够认为自己的工作已臻完美。”(3)然而编程的过程呢?我们最初只是想实现一个功能。但
    为了实现它,我们写了一段功能代码、一段测试代码、一段功能代码的配置代码,一段功能
    代码的配置代码的测试代码……
    
    如此往复不休。
    
    我们回到原始的问题,原本只是要做一个“实现某项功能”的代码,我们却为何把代码做到
    了“往复不休”的绝地?
    
    或者你做的事情并不完美,但是你应该知道所谓完美的终极。代码要不停的测试,以及为测
    试代码再写测试代码,这一过程也不是美的。或许你认为它“必须”,但你应知道它终究不
    美。
    
    四
    ~~~~~~
    大师们也并没有创生完美的能力,他们只是在一步步地进行着。在这本书里,Adam Kolawa
    告诉你的,Lincoln Stein告诉你的,以及Elliontte Rusty Harold等等告诉你的,就是
    那经年累月地或亦步亦趋地进行过程,和那个“终极完美”的定义。
    
    这只是过程和隐于过程中对美的追求。而“美”是什么,还是在你的心底。你心中原本就没
    有美的感受,如何写得出美的代码?所以代码写到烂处,写到心胸滞涩处,便不如寻一清静
    所在,捧《代码之美》一册,回顾一下,品味一下,吐故纳新一下了。
    
    看得多远,取决于你站得多高;要想成为他们,你得先知道他们。
    
    这就是我的建议了。
    
    注:
    ~~~~~~
    (1) 《结构程序设计》出版于1972年,作者分别是1972、1980、2001年图灵奖得主Edsger W.Dijkstra、
    C.Anthony R.hoare和Dahl。
    (2) 《算法+数据结构=程序》出版于1975年,作者Pascal之父Niklaus Wirth,是1984年图灵奖得主。
    (3) 出自Antoine de SaintExupery,法国战士与文学家。本书的第3章中Jon Bentley引用。
    

  • 相关阅读:
    Java——Spring MVC数据绑定
    Java——Spring MVC环境配置
    IDEA创建maven web工程
    Java——JDBC Template
    Java——基于AspectJ的AOP开发
    Java——Spring AOP
    JDK12不包含JAXB-API
    [转载]Docker容器无法被stop or kill问题
    常用工具/代码库
    Docker常用yml
  • 原文地址:https://www.cnblogs.com/encounter/p/2188626.html
Copyright © 2011-2022 走看看