在这一版中,编辑周悦同学曾经给我邮件,对古文的使用,以及整本书的行文风格提出她的看法。借这个机会,我在邮件中回顾了我写这本书的整个历史,以及过程中的思想变化。不过看来,这些回顾还是有一点点成效的,呵呵——所以她才会在本书末尾的“编辑手记”中写着:没有完全被作者说服,但踏实下来了……

后来周筠老师和周悦编辑都建议把这篇邮件加到这本书的前言里去。我想了想,还是不必,要是这都写进前言了,我又有什么“料”是能拿来在博客里爆呢?呵呵,这个是笑话了——真实的是,这样的前言与第二版的前言风格差别太大。

==========

周悦,

您好。

正好,我借这个机会回顾一下我当初写这本书的状态以及思路。这大概可以说明“这本书为什么是这个样子”,以及”这个样子“究竟是怎么一个样子。

首先,书的篇章结构是一早就拟下来的。因为得到EHM这个图是早于这本书的,所以书自然地就按这个图的层次来展来了。书中的小节,则是边写边改的,并不完全是一开始就定下来。但是大约有70~80%的内容一开始就拟好了。关于这一点,我是想说明,书的整体层次、结构是设计过的,并非随心所欲。

但是这就出了一个问题,这本书一开始的基调如何?是打算写成怎么样的,以及写给谁看?这是一个好问题。但事情得回到五年前,回到我当时的状态,包括我当时如何理解这个环境、这个业界。很有趣的是,我回顾当初,却发现自己并非如现在一样的冷静与清醒。我在五年前的状态,是习惯“先否定一切,然后再尝试证明它”。也就是说,我选择了“先破后立”的一条路子。而且,这种否定感是非常强烈的,包括我写的文字,以及我当时的个性、心性、状态,都是如此。

所以,我一开始的时候,就决定在前六章(电子版)中否定掉许多工程界认可的东西;或者直接挖到这些东西的根本,找出它们原始的驱动力量;更或者就重述它们——以我自己的方式。而正是因为选择了这种风格,这本书才让许多读者“愉快”。因为蒙在这些东西上的浮尘太多了,被业界的、商业的以及技术牛人们鼓吹着的东西太多了,真正说“这些东西其实很简单”,以及还能找出“简单”的理由来的,并不多见——尤其是在五年前。

所以,前六章的风格,就是毫无顾及的批评,或者把东西说得足够简单。注意,在这个过程中,我会比较“放肆”,也不太“严谨”。因为这个风格,就是要选择一种“看起来极端一点”的方式来表达。比如说,我说李冰是看夫人下厨而“发现”烧山比挖山更有效的,这个就完全没有出处,又比如说“程序=算法+结构+方法”这个论点也不见得怎么高明。再如说,“工程不是做的,是组织的”就只是结论而没有论证过程。这些,都是在第一版中出现的“漏洞”。

但是我仍然坚持要保留它们。因为还有第七、八章。在第一版中,第八章的引言就是“管中窥豹”,与此类似的,第六章的引言是“取精去粗”,这些都是在暗示读者我对所说内容持以保留的态度。尤其是第八章,整体就是对正文的查漏补缺和反思。再加上在后来, 第二版中加入了第六、八章,还有第三版中加入了第十章,这些新的内容补全了一些观点,也使得整本书的内容变得完整起来。我想最终的这个版本,是经得起推敲的。

然而,仍然回到前六章上来。除了“取其极端”的思想方法之外,我在写作手法上也非常随意。更多是按照我的喜好来的。你在批注中提到的一些东西,例如“好蛮荒,好远古的”那是戏谑的口吻,因为前面的“挣钱的大师”是指比尔盖茨,算法、游戏、语言等等的大师,都有着与此类同的影射——我们这个时代看到的所谓大师,都是那个时代的投射来的影子——我们活在很多类似的背影之下。但是……不过……我们真的没有“工程的大师”。

再如“什么C呀,Pascal呀之类的”,那一段整个儿滴都不严谨。因为没有人说过第一个写汇编的人写的就是“Hello World”,也没有人说过是因为GOTO而导致大家把代码写到一个文件里头。这一段以及类似的段落,不要当成"正史"来读,我也没有当成正史来写,也不必去掉这些口水话的成分。因为写得越随意,大家才越不会追究它。

“很久以前,很久很久以前”,用的是童话的口吻;“这还需要分析吗?需要吗?”这种句式,是用的周星驰电影中台词的桥段。至于后面说到“论及日本,‘国家中的画匠’几个字就打发了”,如果你看看朱老先生的原文,你就知道这里对是日本文化的讽诋了。类似于这些的,我其实是在书中表达我“当时——写到相应文字的同时”的情绪。并不见得是为读者考虑,或者为书的风格来“设计”。

在前六章中,是非常缺乏这样的“设计”的。但是我个人认为,正因为缺乏设计,所以才流畅。相对于我后来在第二版中添加的“你看得到工具的本质吗”这新的一章,这六章要好得多,自然得多,引文也在上下文中更贴切。因为是有“写”和“创作”的情绪在里面的。而后来添加的许多章节,其实都偏重了分析,偏重了解说,引经据典都具有了明确的目的性,反不如前。

不过,从另一面来看,前几章取其谐,后几章取其庄。这本书的整体特点,大概就是这样一个由谐到庄的过程。因为这也是我这五年来对待“软件工程”的一个过程。我的确存在这样一种态度的转变的历程,渐而渐地来了解整个工程业界的形成、发展,以及其中的必然性。能看得到本质,能讽喻而不是盲信它, 我们才有以旁观者的身份切入的机会。由谐至庄、历经三版、耗时五年……这些东西也许正是这本书的价值与特色,正是这样真实的、显得粗糙地表现了“一个人”、“一批人”的转变和持续反思,才是它存在的意义所在。

所以,在我看到您的一些改动中,是把这种味道给改没有了的。您也许想把它改成“一本书”,或者“有某一种(确定)风格味道的书”。但事实上,它不是这样的书,它是三个版次渐进而来的。我正好不希望把这种味道调和掉。我甚至希望有一种方法——例如在书的文前页里的EHM图里面用颜色标示——来把这种渐次的、继承的味道给表现出来。

书的历史,是一种财富。与您讨论到这些,或能让您再次审校我在批注上的回复时,别有一些想法。

礼。

===

周爱民(aimingoo)
2009.11.23

转载于:https://www.cnblogs.com/java0818/archive/2010/02/01/2144445.html

《大道至简》一书第三版,与编辑就本书写作风格的讨论相关推荐

  1. C++程序设计分析 (基于谭书第三版)

    C++程序设计分析 (基于谭书第三版) 因为某些考试中需要,而我也正好学习过其它编程语言,对C++也有些基础,所以往下划出了一些 谭书(第三版)的重点内容,谭书有一些不能过编译的代码和错误也修改了.下 ...

  2. 《深入理解计算机系统(原书第三版)》pdf

    下载地址:网盘下载 内容简介  · · · · · · 和第2版相比,本版内容上*大的变化是,从以IA32和x86-64为基础转变为完全以x86-64为基础.主要更新如下: 基于x86-64,大量地重 ...

  3. 《Fundamentals Of Computer Graphics》虎书第三版翻译——第五章 线性代数

    或许图形学程序最常用的工具就是能对点或者向量进行变换的矩阵.在下一章节,我们可以看到如何用矩阵表示一个向量,以及如何用向量与方阵相乘表示不同基.我们还将描述如何使用这种乘法来实现向量的变换,如缩放.旋 ...

  4. 《Fundamentals of Computer Grahpics》虎书第三版翻译——第四章 光线追踪

    光线追踪 计算机图形学的基本任务之一是绘制三维物体:获取一个场景或模型(由许多在3D空间中排列的几何物体组成),并生成一个二维图像(从一个特定的视角观察到的物体的图像).这和几个世纪以来建筑师和工程师 ...

  5. 《Fundamentals of Computer Grahpics》虎书第三版翻译——第一章 介绍

    1.1 图形领域 在任何领域进行强分类是危险的,但大多数从事图形学行业的人都会赞同以下这些计算机图形学的主要领域: 建模:使用数学规格进行建模,这些数据是能存储在计算机上的形状和外观属性.例如,一个咖 ...

  6. 计算机科学导论(原书第三版)框架总结

    计算机科学导论 文章目录 计算机科学导论 绪论 数字系统 数据存储 数据运算 计算机组成 计算机网络和因特网 操作系统 算法 程序设计语言 软件工程 数据结构 抽象数据类型 文件结构 数据库 数据压缩 ...

  7. 《Fundamentals of Computer Grahpics》虎书第三版翻译——第二章 各种各样的数学

    大部分图形学只是把数学直接转化成代码.数学越清晰,对生成的代码越清晰;这本书的大部分内容都集中在如何正确的使用数学.本章回顾了高中和大学数学中的各种工具,旨在作为参考而不是教程.这本书的主题看起来像是 ...

  8. 《Fundamentals Of Computer Graphics》虎书第三版翻译——第六章 矩阵变换

    线性代数的机制可以用来表达在3D场景中排列对象.用摄像机观察它们并将它们放到屏幕上所需的许多操作.几何变换,如旋转.平移.缩放和投影可以通过矩阵乘法来完成,而用于实现这一目的的变换矩阵是本章的主题.我 ...

  9. 读书笔记:写给大家看的设计书(第三版)

    1 4大基本原则 对比(Contrast) 要避免页面上的元素太过相似.如果元素(字体.颜色.大小.线宽.形状.空间等)不相同,那就干脆让它们截然不同.对比的根本目的一是增强页面效果,二是有助于信息的 ...

最新文章

  1. Trustzone——利用硬件对数据加密,秘钥存在芯片里
  2. Leetcode1706. 球会落何处[C++题解]:模拟
  3. ielts indicator 考前准备 checklist
  4. 深度学习笔记 第五门课 序列模型 第二周 自然语言处理与词嵌入
  5. python有框架吗_Python几种主流框架
  6. html 二级菜单延迟消失,如果让子菜单延迟消失?
  7. micropython web ws2812_MicroPython实例之TPYBoard v102炫彩跑马灯WS2812B
  8. Linux设备驱动模型-Device
  9. html5中nav标签(导航链接)的详细介绍
  10. 方法重载overload
  11. VLookup函数和单元格引用
  12. 一文读懂反向传播算法原理
  13. 无人车系统(七):Udacity ‘s无人驾驶仿真环境(社区介绍)
  14. 在PS中,1PX等于多少毫米?
  15. 100人PJ?へへ。バージョン1.0の反省書を書かなければなりません、今日。
  16. html表单中添加手机短信认证,表单提交前验证短信验证码是否正确
  17. 40 岁的时候,我转行成为一名前端开发者!
  18. 揭开 Java 注解的神秘面纱
  19. 使用Google身份验证进行ssh二次验证
  20. 安全狗2周年“全民大抽奖”活动

热门文章

  1. 《大话设计模式》第29章-OOTV杯超级模式大赛—模式总结(四)
  2. COM First Teck.
  3. spring框架学习(一)入门
  4. 【原】 动态加载dll
  5. 如何使用Hadoop的JobControl
  6. db和model用哪个开发大型项目 thinkphp_Java程序员开发大型应用程序时,必须要掌握几个的技巧...
  7. PowerShell-1.入门及其常用
  8. 计算机网络-UDP协议
  9. 【Linux 内核】进程管理 task_struct 结构体 ⑤ ( files 字段 | nsproxy 字段 | 信号处理相关字段 | 信号量和共享内存相关字段 )
  10. 【设计模式】面向对象 - 多态 ( 面向对象 3 要素 | 多态 提升 程序扩展性 | 多态示例 )