`
ruilin215
  • 浏览: 1105645 次
  • 性别: Icon_minigender_2
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

与读者们谈谈《大道至简》这五年

阅读更多

:)

广个告先【china-pub书讯】:http://www.china-pub.com/196277

《大道至简》第三版(点评版)

【前天拿到这本书的纸版了,印得不错。封面的风格也很谐调,开心ing...】

与读者们谈谈《大道至简》这五年

======

《大道至简》第三版(点评版)终于出版了,我得了点空想来写些东西——无论是回顾或者反思,都是必要的。但是真当我开始在键盘上敲字的时候,却连个标题都拟不出来。

我不是个“出书”的人,也不是一个“作家”。08年在北京的时候,因为没具体工作,所以一些社会活动里用了“技术作家”这个头衔,现在想起来,颇为后悔:我的主职,离作家这个角色其实很远。

但我的确写书。我常常给我的朋友们提到,我写第一本书(《Delphi源代码分析》)的时候,都没有考虑过能不能出版——即使不能出,就发成电子版好了。我写源代码分析,仅仅是因为我想那样做,并且认为努力一点,终可以做得到。直到后来写《大道至简》以及《JavaScript语言精髓与编程实践》都是这样的心态。先摆正了心态,再来做事,再来做人,再来说我做成了什么样子,我觉得,这样一步步地来讲,才是一个程序员的讲法。

首先很抱歉,这三本书,没有一本是“为读者写的”,或者写给“看”书的人看的。看书,有人着眼厚薄,有人着眼纸质,有人着眼文字上的好坏或功夫,这些都有。我当然也都在乎,出版社用的纸不好了、编辑对文字上改过了火,这些我也都是要说的。但是这些都不是因为“读者喜欢”,而是因为我想认真地对事对人,想认认真真的出版一本书。这么些年,我发给杂志社、出版社的稿件,甚至于电子邮件,我都会花不少的工夫排版、校订,我觉得那是一件事,该尽力做细。如同这三本书,我也只是把他们当成几件事情,决定了要做,就做细。没别的什么原因,动机,或者动力。

回到《大道至简》。一本书,出了三版,有很多人喜欢,也不少批评。但我很快就冷静了下来,不再回应读者们的观点。但在这个过程中,我的确发现最初版本的《大道至简》不够完整与严谨,于是在第二版,我补写了两章三节,说清楚工程中的“管理”问题,以及如何认识“语言不过是工具”的问题。而到了第三版,我又补写了一章,只为了说清楚“工程不是做的,是组织的”这个问题。所以到现在这一版,“工程层状模型(EHM)图”中的各个环节,才算是真的说清楚了,才算对这本书有了一个完完整整的交待。如同我上面说过的,这并不是“为了读者”,而是出于对“写一本书”这件事情的尊重。

很多朋友与我谈到古文,包括评论《大道至简》这本书中引用的、撰写的古文。但我事实上不是古文方面的行家(*1)。我读书也多以现代的、技术类的书为主,兼读一些哲学的、历史的和社会学的。但总体来说,我读书不多,因为我读得太慢,一本书可能要读好几个月。我手边的书多在收集、整理、归目,这对我写东西来说,是有好处的。更确切的说,我读书的目的,多是为了解决问题和写书写文章,而非乐趣。求知并不是什么乐趣的事情,思考也不是什么乐趣的事情,同样,写古文也不是什么乐趣的事情。而我毕竟在《大道至简》中写了、引用了大量的古文。为什么?因为,那些古文也是我讨论工程问题的一条暗线(*2)。我甚至认为,在第二版中加入的“愚公移山记-续”,所讨论的工程问题比全书所论的更加重要,所以我才又写了一篇“幕后”,来细述这些(*3)。

但凡一件事情,我们都该有自己的观点。对于这观点,应该先说清楚它,再坚持它,再尝试否定它。《大道至简》一书三版,便是我在说清楚自己的观点。而我这五年来沉默与坚持,便是不断地向自己挑战:我说得对吗?我在陈述一种什么样的道?这是道吗?这是未来吗?这是方向吗?以及,这一切或许原本就是错的?!

我看过几乎所有网友对这本书的评论,感谢大家。但回到我对自己的质问上,我仍然有自己的观点:《大道至简》是工程的一个方面,是实践者的一个可能的视角,但不是全部。仅从这个方面、视角看去,软件工程就是这样的一个格局,解决的以及面临的就是这样的一些问题。而我,在这格局与问题面前,给出的就是这样的一个答案。所以,事实上我请六位专家好友一起来点评这本《大道至简》的时候,“对专家所论,我不予反驳”这一主张,非但是出版所需,也实在是我无法反驳什么。因为在EHM这个视角上,我的观点就是那些,没有超越,也无有藏私。观点与看法就摆在那里,大家请畅所欲言(*4)。

很多东西,谁都懂,做的时候却总是不停地犯错,那是为什么?因为我们太重于“具体的方法”,而忘了看一看“具体的问题”,以及问题背后的真相。这些问题与真相,就是《大道至简》要说给大家的。而我,则时时在反思我之于工程的观点,并在工作中去实践他们、应用他们。我看到的现实问题,离《大道至简》所述的并无背离,甚至有些错误总在一遍又一遍地重演(*5)。我自己也在一点点地尝试、寻求解决之道,毕竟《大道至简》更多的只是给出了问题以及原则,而无有答案。我们怎么思考,怎么实践,怎么做一个具体的工程,还是在我们自己的手边、脚下,以及心中。

很感谢这一版中的点评专家、好友们,谢谢大家的支持;感谢在这几年中给我发来邮件的读者朋友们,谢谢你们的关注;感谢博文视点的编辑、编审与工作人员们,谢谢大家努力、细致的工作。更要感谢一直以来支持我、鼓励我、帮助我的周筠老师。七年时间、三本书,感谢周老师在这崎岖不平的著书出书道路中,予我无私的扶植与帮助,予我至微的关怀与开导。许多朋友并不知道,为消除“古文过多”的问题,周筠老师遂字遂句的批改过这本书——现在这本书读起来能令人更愉快一些,也是有周老师的功劳的。呵呵。

虽然我不是作家,但写书这件事,我仍将持续下去。如我一向说的,写书于我而言,只是一件事,只是思考的一个过程和工具,以及阐述我对于软件开发、工程与架构的观点的一种方式。很抱歉我不能以读者为先,写出一本标题上看来、或文字上读来让读者愉悦的书。但反观如今的出版市场(请注意我强调市场这个词),真正认真“写书”的又有几个呢?把书当成一回事,而不是一个道具的人又有几个呢?写书、出书等等,连自己要做的事都不尊重,连自己的言行与观点都不能负责,那么高喊着“为读者写书”、“写出读者爱看的书”等等,也不过是高阔之谈论,或市利之烟尘罢了。

在我正在写第四本书的过程中(*6),谨以此文回顾我这些年来的经历,并向读者们坦陈我对书的、写作的感受。再一次请读者们原谅,愿大家能喜欢这样一个认真写书的人,以及认真写的书。

其它(一):
=======

《大道至简》这本书五年来出了三版,大概如下:

2004.11.01 - 2005.03.22,开始写“大道至简”第一版至完稿。
2005.11.06,第一版(电子版)发布。

【下载】:http://www.delphibbs.com/keylife/images/u40/thinking.in.flexible.engineering.zip

2006.06 - 2006.12,开始写第二版至完稿。
2007.03,第二版,电子工业出版社出版。

【china-pub书讯】:http://www.china-pub.com/34356

2009.08 - 2009.11,开始写第三版至完稿。
2010.01,第三版(点评版),电子工业出版社出版。

【china-pub书讯】:http://www.china-pub.com/196277

其它(二):
=======

(1) 与任真先生校订“愚公移山”的邮件:

http://blog.csdn.net/aimingoo/archive/2010/02/01/5275775.aspx

(2) 与邹欣先生就《大道至简》一书中的两个主要问题的讨论

http://blog.csdn.net/aimingoo/archive/2010/02/01/5275783.aspx

(3) 《大道至简》幕后故事,下载:

http://blog.csdn.net/aimingoo/archive/2007/05/17/1612450.aspx

(4) 旧文重发:行在道上,从局部到全局——与师者高焕堂、赵善中先生谈《大道至简》

http://blog.csdn.net/aimingoo/archive/2010/02/01/5275767.aspx

(5) 本来面目——大教堂、集市,与作坊

http://blog.csdn.net/aimingoo/archive/2009/04/23/4104813.aspx

(6) 第四本书是讲Erlang语言的,暂订名为《Erlang开发全景》,是由浅入深的一本书,现在有写到100多页。另外,第五本书是在规划中,应该与架构和工程都相关的,与《大道至简》是一个系列,将架构等其它角色纳入工程的范围来讨论,目前有近百页的初稿在写。^.^

分享到:
评论

相关推荐

    node-v9.2.1-linux-x86.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v9.1.0-linux-s390x.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    2024年中国MXene行业研究报告.docx

    2024年中国MXene行业研究报告

    TensorFlow安装步骤

    附件是TensorFlow安装步骤,文件绿色安全,请大家放心下载,仅供交流学习使用,无任何商业目的!

    ISO IEC 27001-2022 信息安全、网络安全和隐私保护信息安全管理系统要求.pdf

    ISO IEC 27001-2022 信息安全、网络安全和隐私保护信息安全管理系统要求.pdf

    广东工业大学电工学考试试卷B期末考试试题回忆版.doc

    此试题是考试后回忆版本,你会发现是惊喜。恭喜你考个好成绩。

    编译程序构造的一般原理和基本方法.pdf

    编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本

    node-v8.9.4-linux-x86.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    计算机二级【公共基础知识速学教程】.pdf

    内容概要:这份资料包含了计算机二级公共基础知识速学教程的内容大纲,涵盖了数据结构与算法、程序设计基础、软件工程基础、数据库设计基础等多个章节。其中包括了算法复杂度、数据结构、栈、队列、链表、二叉树、查找、排序等内容,以及程序设计方法、软件工程概念、数据库设计原理等知识点。 适用人群:适合希望系统学习计算机二级公共基础知识的学生、计算机专业学习者、程序员、软件工程师以及对数据结构、算法和数据库设计感兴趣的人群,希望通过系统学习提升自己的计算机基础知识和技能。 使用场景及目标:该教程可用于计算机相关专业的课程学习、自学提升或备考计算机二级公共基础考试。学习者可以通过逐章学习和实践,掌握数据结构与算法、程序设计基础、软件工程基础和数据库设计基础等知识,提高自己在计算机领域的理论基础和实践能力。 其他说明:学习者在使用这份教程时,可以结合实际案例和练习题进行深入学习和巩固。建议按照章节顺序系统学习,理解各个知识点的概念和应用,并通过实践项目或练习加深对计算机基础知识的理解和掌握。通过系统学习,可以提升自己在计算机领域的专业水平和能力。

    IEC 60364-7-722-2018 低压电气装置.第7-722部分:特殊装置或场所的要求.电动车辆的电源.pdf

    IEC 60364-7-722-2018 低压电气装置.第7-722部分:特殊装置或场所的要求.电动车辆的电源.pdf

    ISO IEC 27021-2017 信息技术.安全技术.信息安全管理系统专业人员的能力要求.pdf

    ISO IEC 27021-2017 信息技术.安全技术.信息安全管理系统专业人员的能力要求.pdf

    减速振动控制有限公司

    减速振动控制有限公司

    2024年中国5G基站射频元件行业研究报告.docx

    2024年中国5G基站射频元件行业研究报告

    node-v8.11.3-linux-arm64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    云服务H13831题库HCIE CloudService SolutionsArchitect

    云服务H13831题库HCIE CloudService SolutionsArchitect

    2023年美赛特等奖论文-C-2307166-解密.pdf

    大学生,数学建模,美国大学生数学建模竞赛,MCM/ICM,2023年美赛特等奖O奖论文

    大模型简历模板之CV简历模板1.doc

    大模型简历模板通常包括个人信息、求职目标、教育背景、工作经历、技能专长、项目经验、荣誉奖项等内容。通过清晰的排版和详细的描述,展示出个人的专业能力和职业发展规划,吸引用人单位的注意。

    SBC0001345K.8 SBC0001345K.10 手册

    SBC0001345K.8 SBC0001345K.10 手册

    node-v10.15.1-linux-armv6l.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    MAGLINK LX 控制台手册

    MAGLINK LX 控制台手册

Global site tag (gtag.js) - Google Analytics