[book]道法自然

前不久读了王咏刚的〈凌波微步〉和〈凌波微步II〉,感觉不错。今天把他老人家的《道法自然》也买了下来。

在dearbook看到关于这本书的长篇大评,也一块copy了下来:

http://www.dearbook.com.cn/book/viewbook.aspx?pno=TS0023954

认真的作者,真实的经历,实践的结晶(读者 Soundboy2005-5-31)0人同意、0人反对    
   这本书买了几个礼拜了,但是买的时候公司的事情很忙,只是做了一个翻阅,最近终于比较深入得阅读了。在这里把自己的感受写下。
   读此书,最大的收获之一就是比较轻松地理解了设计模式。说实在的,GoF的《设计模式》买了几年了,但是对于20几个模式始终没有建立起一个明确的概念。而了《道法自然》一书中,经典的模式被作者用浅显甚至诙谐的语句描述了出来,使得脑子里马上有了一个直观的感性认识。这个时候再回头来看严密经典的论述就轻松了许多。
   这本书在网上是比较有争议的一本,其中争议的一个焦点就是书名,有人认为起了这么个名字太虚了,技术人员应该务实。有人则认为这个名字形象、容易记。我的感觉是按照这个词在中国文化中的地位这本书的确是有点欠份量,但是此书的确是一本独到的书,应该有一个独到的名字。这个名字给了这本书一个清晰明确的ID,方便大家交流。
   这本书可能不适合对于软件工程已经很有造诣的高手学习,因为里面讲的东西几乎都可以在近年的一些流行经典书籍中找到更详细、严格的描述。当然抱着挑毛病的目的的除外。 也不适合刚刚学习了C语言而没有写过几个完整程序的学生阅读。因为讲的东西大多数都是只有在实际项目中才能体会的。而有一类人,他们掌握了C++等语言的基本语法,也做了一些项目,但是对于究竟怎么去从整体上把握一个项目确没有很好的想法,买了几本类似《UML用户指南》、《设计模式》等大师著作却因为自己理解能力有限而读得费劲,总感觉书上的理论过于抽象难以和实际的应用有个顺利的链接而放弃。很不幸我就是这类人,而这本书最适合的读者应该就是这类人。很庆幸我就是这类人之一。因此我感觉这本书很适合我阅读。
   此书的作者一定是阅读了大量的面向对象方面的书籍文献。我这么想到不是因为书后罗列了4页纸的参考文献,而是书中大量明确的和广泛交叉的引用。要做到这点如果不对原著中的观点充分理解几乎是不可能的。
   这本书不能作为学习面向对象知识的教材,而只能作为辅导书。作者在简介中说“如果吧面向对象大师们偏重理论建构的经典读物称为面向对象盛宴中的主菜,那么本指南若能充当佐餐的凉菜或者是饭后的甜点,作者就心满意足了。”看来作者对于自己的作品有着清楚的认识和定位。我看经典读物可以比作高能量的压缩食品,营养丰富但是并不可口。有了《道法自然》书的调配,美味和营养就可以兼得了。
   书中的“笨笨点评”我比较喜欢,可以使得在读书的时候喘口气,还获得了一些常识。如果还嫌书的正文不够通俗,那么点评中的话就更是聊天式的。
   关于书的价钱,很多人说是贵了,这本书一共将近450页,定价是45.00元,平均每页一毛钱。我是在网上买的34块多,平均每页几分钱。不是很便宜,但也绝对不是贵。其实书的价钱要是按照纸张的量来算那是收旧书的小贩,读者买的是书的内容。我的感觉是花这30几块钱是值得的。
   很多人批评这本书没有自己的新观点,而是把面向对象理论做了一汇编。这看来是事实,但这里的汇编绝对不是简单的罗列,而是放在了实际的工程中的有血有肉的展示。而且,任何知识到了一个真正理解了他的人的脑子里面,或多或少都要产生一些自己的东西的。仔细的看此书,里面还是有一些出彩的地方的:
   第14章、UML的消息和进程间调用函数的关系。“为什么UML把所有函数调用都称为消息。”这个结果可能很多人都知道,但是能回答为什么的有几个人呢。这个分析好像在其他书中没有提及的(抑或是我孤陋寡闻?),而且这个问题也是一个长期疑惑的问题。
   书上还着重提了一下C++语言里面多态的概念,其实这是绝大多数模式存在的基础,要是没有多态,大部分模式根本就不可能存在。可是现在学过C++、甚至写过C++程序说不清多态的人大有人在(我好像就是其中一个,大概知道,但是严格说清楚好像不行)。从这点上看此书像是一个优秀的学生学习设计模式做的笔记,把相关内容串起来了讲了一下。给一些没有老师的学生一个学习的指到路线。
   这本书虽然在设计模式上用了大量的笔墨,但是却不是一本专门讲设计模式的书,不能用来作为设计模式的教材。Bridge ,Interpreter 等模式书中就没有提及。我在刚开始读这本书的时候感觉最大的收获是通俗的的讲解了设计模式。等到继续阅读以后,发现让读者学习设计模式不是作者的最终目的。书中讲了一个实际的、完整的项目。前三分之二部分讲的系统分析等。
   以上文字写于2004年底,最近又把这本书拿出来翻了一下,感觉还是有新的收获,虽然早先看的很多都忘记了。的确,如果没有实践的机会,很多东西是很难深刻掌握的,这本书讲的就是实践中的东西,给我们了一个真实实践的过程记录,其中也包括了作者多年的总结。
   如果你感觉到自己写了不少的代码,但是总是感觉停留在代码工人的阶段。对于整个软件的结构无法把我,而实践中又没有多少理论学习的机会,一些大部头的著作看起来又有点费劲,那么这本书是再适合不过了。

转载于:https://www.cnblogs.com/aiwz/archive/2005/09/24/6333167.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277303.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言编手机蓝牙软件的代码,51单片机C语言的简易蓝牙锁代码

#include#define uint unsigned int#define uchar unsigned charuchar r_buf; //蓝牙接收到的字符存储缓冲区sbit PWMAP2^0; //电机驱动模块接口sbit IN1P2^2;sbit IN2P2^1;sbit STBYP2^3;sbit LED1P0^0; //LED灯接口sbit LED2P0^1;sbit LED3P0^2;sbit key1P1^0;…

列表嵌套字典,根据字典某一key排序

在返回列表嵌套字典时候,往往需要对数据进行一定的处理:按照字典中某一个key排序 In [87]: a [{"name": "牛郎", "age": 23},{"name":"许仙", "age": 20},{"name":"董永&q…

display: inline-block 布局

三个元素display: inline-block; 布局 ,其中一个元素中存在其他元素也用了display: inline-block; 无法垂直居中,将这个元素设置为display: inline; 转载于:https://www.cnblogs.com/Running00/p/11163751.html

GCC精彩之旅

在为Linux开发应用程序时,绝大多数情况下使用的都是C语言,因此几乎每一位Linux程序员面临的首要问题都是如何灵活运用C编译器。目前 Linux下最常用的C语言编译器是GCC(GNU Compiler Collection),它是GNU项目中符合ANSI…

写出C语言中5种数据类型的名称及其关键字,求C语言中的32个关键字及其意思?...

关键字如下:一、数据类型关键字(12个):(1) char :声明字符型变量或函数(2) double :声明双精度变量或函数(3) enum :声明枚举类型(4) float:声明浮点型变量或函数(5) int: 声明整型变量或函数(6…

想要设计自己的微服务?看这篇文章就对了

欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 本文由我就静静地看 发表于云社区专栏 本文通过使用Spring Boot,Spring Cloud和Docker构建的概念验证应用程序的示例,为了解常见的微服务架构模式提供了一个起点。 该代码在Github上…

函数的嵌套调用

在函数的内部调用其他的函数 def index(): func() print("index") def func(): index() # def index():# func()# print("index")## def func():# print("func")# index()#def my_max(x,y): #这个函数的作用就是比大小谁大打印出…

mysql 开发进阶篇系列 41 mysql日志之慢查询日志

一.概述 慢查询日志记录了所有的超过sql语句( 超时参数long_query_time单位 秒),获得表锁定的时间不算作执行时间。慢日志默认写入到参数datadir(数据目录)指定的路径下。默认文件名是[hostname]_slow.log,默认超时是10秒,默认不开…

分数相同名次排名规则C语言,如何给数据排名(相同分数相同名次)-excel篇

使用Rank函数来做数据排名该函数是返回一个数值在一个数字列表中的排名。语法:RANK(number,ref,order)RANK(对象,范围,参数)number(必填参数):是特定单位格中的数据,需要在整个数字列表中排名的单个对象。ref(必填参数):是指需要排名的整体数列。即范围&…

子窗体列表在菜单中的实现

想在菜单中加入子窗体的列表,上网找了半天,都很麻烦,后来看看了菜单的属性,发现里面有个MdiList属性,设置成true,搞定,晕。 转载于:https://www.cnblogs.com/catzhou/articles/258450.html

MySql的连接查询

若一个查询同时涉及到两个或者两个以上的表,则称之为连接查询。常见的包括:等值连接查询,自然连接查询,非等值连接查询,自身连接查询,外连接查询(左右连接)。 1.等值与非等值连接查询…

linux下ssh通过公钥登录服务器

经常会通过ssh登录远程服务器,一种是通过密码方式登录,一种是通过公钥登录。 如何设置通过公钥登录服务器 1. 首先生成自己的公钥和私钥 ssh-keygen 命令用来生成公钥和私钥-t 用来指定密钥类型(dsa | ecdsa | ed25519 | rsa | rsa1&#xff…

qt运行C语言后无显示,qt designer启动后不显示界面问题的原因与解决办法-站长资讯中心...

Qt 5.6.1无论是在vs里双击ui文件还是直接启动designer.exe都一直无法显示界面,但任务管理器中可以看到该进程是存在的。前几天还正常的,但昨天加了一块NVIDIA的显卡(机器自带核显),可能与此有关。幸好还可以通过QtCreator打开ui文件进行编辑。…

OpenSolaris北京用户组的第一次活动

OpenSolaris北京用户组的第一次活动作者: BadcoffeeEmail: blog.olivergmail.comBlog: http://blog.csdn.net/yayong2005年10月10月15号,OpenSolaris北京用户组在北京西郊宾馆会议厅组织了成立以来的第一次活动。尽管OpenSolaris早在2005年6月14日就正式开放源代码&…

. SQL多条件查询存储过程

编辑器加SQL多条件查询存储过程 2010-05-13 17:06:29| 分类: SQL | 标签: |字号大中小 订阅 . 例一、 ALTER proc SelectProduct ProdID varchar(10), ProdName nvarchar(30), CategoryID varchar(5), MinPrice decimal(10,2), MaxPrice decimal(10,2) a…

矩阵转置c语言的思路,矩阵转置 (C语言代码)

解题思路:注意事项:参考代码:#includeint main(){int n,s[100][100];void transposition(int(*p)[100], int n);scanf("%d", &n);for (int i 0; i < n; i){for (int j 0; j < n; j)scanf("%d", *(s i) j);}transposition(s, n);return 0;}vo…

Android PermissionUtils:运行时权限工具类及申请权限的正确姿势

Android PermissionUtils&#xff1a;运行时权限工具类及申请权限的正确姿势 ifadai 关注 2017.06.16 16:22* 字数 318 阅读 3637评论 1喜欢 6PermissionUtil 经常写Android运行时权限申请代码&#xff0c;每次都是复制过来之后&#xff0c;改一下权限字符串就用&#xff0c;把…

实现带下拉菜单的工具栏按钮

在工具栏中使用真彩色图标 实现带下拉菜单的工具栏按钮 20050916转载于:https://www.cnblogs.com/henryzc/archive/2005/11/08/271346.html

文件目录管理与显示c语言,Centos 7 文件和目录管理

查看权限在终端输入:ls -l xxx.xxx (xxx.xxx是文件名)那么就会出现相类似的信息&#xff0c;主要都是这些&#xff1a;-rw-rw-r--其中&#xff1a; 最前面那个 - 代表的是类型中间那三个 rw- 代表的是所有者(user)然后那三个 rw- 代表的是组群(group)最后那三个 r-- 代表的是…

Linux基础监控小工具nmon

nmon是一种在AIX与各种Linux操作系统上广泛使用的监控与分析工具&#xff0c; nmon所记录的信息是比较全面的&#xff0c;它能在系统运行过程中实时地捕捉系统资源的使用情况&#xff0c;并且能输出结果到文件中。nmon工具可以帮助在一个屏幕上显示所有重要的性能优化信息&…