读书笔记第四周《松本行弘的程序世界》

读书笔记第四周

《松本行弘的程序世界》

?? 这本书讲述了Ruby之父松本行动弘站在一个程序语言的设计者角度,分析了当今各种流行的编程语言的特点,以及他是如何在Ruby语言中权衡取舍的,读这样一本书,回过头来看各种编程语言时候油然而生一种高屋建瓴的感觉。 主要看了面向对象与设计模式两章。

面向对象

?? 书中为我们展示了随着计算机行性能的提升,以及人们都快速开发大型软件的渴望,使得编程语言从面向过程逐渐向面向对象演变。一直以来大家面向对象都有着自己的理解,作者也阐述了他对于面向对象的理解,并对面向对象的语言的特性进行了解读。 
?? 首先是多态特性,松本认为多态是面向对象技术的最重要的一个概念。因为它使得程序员只需要关注我们要处理什么,而不是怎么去处理。这样在引进新的数据时,只需要简单的追加,而不是修改原有的代码,使得程序可扩展性大大提升。 
?? 为了对抗数据复杂性,数据抽象化应运而生,。因为数据类型的增多,使得分别管理程序处理内容与处理数据对象的复杂性越来越高,因为我们要时刻注意数据与处理方法的一致性。因此便想到将数据与处理方法结合在一起,这样即使对数据基础的操作有改动,在外部通过这些操作写的代码却不需要改动。这样我们处理的就不再是简单的数据,而是一些具有自身动作的一些现实物体的抽象,面向对象编程由此得名。 
?? 随着我们抽象出的类越来越多,复杂度依旧很大,随之我们发现这其中其实有很多具有相似性质的类。我们便把相同的特性提取出来,称为父类,不同的特性便利用继承重载来体现。文中关于多重继承与单一继承的讨论让我受益匪浅,其对各自的利弊做了详细的讲述,主要考虑到多态继承用的不好容易让类之间的关系变得错综复杂以及可能带来的内容冲突,但是单一继承会导致同时具有两个类特性时必然有一个类的特性无法继承导致必须复制部分代码,Ruby提出max—in模块,将相同的写到模块中,在具有此模块特性的类直接进行继承,从而实现共通。与此同时,限制max-in模块不能实例化也不能继承普通类,使得类的关系依旧保持着树状,可以说十分巧妙的实现了多重继承。

   之后讲到动态类型与面向对象思想紧密的联系,可以说面向对象的思想极大的促进了动态类型的发展,虽然静态类型具有在编译的时候就能看到类型不匹配,以及可以让编译器进行优化的优势,但是动态类型可以让代码变得更加简洁(因为舍弃了类型定义语句,同时也获得了强大的适应类型变化的能力,即如果开发过程中发现类型定义不当,不必更改所有关联的代码。

设计模式

?? 假如把数据构造抽象化,就出现了抽象数据类型,把抽象数据类型中共同的部分抽象出来,就产生了继承的工具,那么将软件实现抽象化,就产生了设计模式。因为我们在实现一个系统中,如何设计我们需要的类其实是一件十分困难的事情,但是有了设计模式的概念,我们就可以将过去优秀的人的设计模式借鉴一下,就可以做出优秀的设计。 
?? 作者为我们介绍了利用Ruby的delegate库简洁的实现了Proxy模式,以及如何实现Template Method,Observer模式等,无奈自己实际项目经验太少,无法完全理解,对Ruby语言不算熟悉,例子也无法体会到妙处,决定留到以后再重看一遍。

  

原文地址:https://www.cnblogs.com/zsl96/p/8640640.html

时间: 2024-10-13 02:18:25

读书笔记第四周《松本行弘的程序世界》的相关文章

这些基础知识你都了解吗?——《松本行弘的程序世界》读书笔记(上)

1. 前言 半个月之前买了这本书,还是经园子里的一位网友推荐的.到现在看了一半多,基础的都看完了,剩下的几章可做高级部分来看.这本书看到现在,可以说感触很深,必须做一次读书笔记! 关于这本书,不了解的可以去网上查查.作者是Ruby语言的创始人,可谓是程序世界中的高手,开卷有益,不管你是哪个层次的编程人员,相信都能或多或少的汲取到你想要的营养. 下面将总结一下看完本书我记录下的一些知识点.有的是书中的原话,有的是我个人的理解,供参考. 2. 面向对象 2.1 多态性 面向对象三大原则:继承.封装和

《松本行弘的程序世界》读书笔记

1. 前言 半个月之前买了这本书,还是经园子里的一位网友推荐的.到现在看了一半多,基础的都看完了,剩下的几章可做高级部分来看.这本书看到现在,可以说感触很深,必须做一次读书笔记! 关于这本书,不了解的可以去网上查查.作者是Ruby语言的创始人,可谓是程序世界中的高手,开卷有益,不管你是哪个层次的编程人员,相信都能或多或少的汲取到你想要的营养. 下面将总结一下看完本书我记录下的一些知识点.有的是书中的原话,有的是我个人的理解,供参考. 2. 面向对象 2.1 多态性 面向对象三大原则:继承.封装和

<松本行弘的程序世界> 读书笔记

第一章 编程语言不是从安全性的角度考虑以减少程序员犯错误,而是在程序员自己负责的前提下为他提供最大限度发挥能力的灵活性. 第二章 根据对象的不同类型而进行适当的处理,就是多态性的基本内容.根据数据类型来调用合适的方法而不是修改原来的方法代码,本就是编程语言应该完成的事情,实现这一点才是真正的多态. DRY原则: Don't Repeat Yourself. 减少重复冗余的代码 管理对象的两种方法:原型(用原始对象的副本来作为新的相同的对象)和模版(类) 动态语言允许调用没有继承关系的方法,而静态

松本行弘

松本行弘认为以往人们在开发编程语言时过于看重"计算机",而忽视"人",过分强调运行速度. 而松本行弘提倡机器不是主人,是工具,而真正的主人应该是"人",于是他打算开发一种更人性化的编程语言,这就是后来的Ruby. 松本行弘还提出语言不但是表达思想的工具,也是人类进行思想的方法,使用的语言不同,人也会产生不同的思想模式. 松本行弘说编程语言也会产生类似的作用.他认为一个好的编程语言不但应该可以执行程序任务,也应该帮助程序员形成更好的编程逻辑. 松本

《WF in 24 Hours》读书笔记 - Hour 2(1) - 第一个Workflow程序

创建第一个Workflow项目 1. 创建Workflow项目 – 选择Workflow Console Application 2. 添加CodeActivity 3. 打开CodeActivity,添加一行代码到Execute方法中 1 public sealed class CodeActivity1 : CodeActivity 2 { 3 // Define an activity input argument of type string 4 public InArgument<st

Android编程权威指南-读书笔记(二)-第一个小程序

Android编程权威指南-读书笔记(二) -第一个小程序 第一个例子介绍 应用名为GeoQuiz.用户通过单击True或False按钮来回答屏幕上的问题,GeoQuiz可即时反馈答案正确与否. 这个例子为我们简单介绍了几个基本组件的使用,以及基本的事件监听.让我们对基本组件的使用和事件的监听有一个基本的了解. 这篇文章分为2个部分,第一部分就是创建简单的UI.第二个部分就是对这个UI增加代码来响应一些操作. (注:所有不明白或者不理解的东西其实都不重要,后面都会有更详细的介绍.) 本章的目标

读书笔记利用T-SQL语句快速清理ZBLOG程序的SQL SERVER2012数据库内容

最近使用了ZBLOG+SQL SERVER搭建了一个博客系统,采用的是ASP程序,因为我数据量很小,使用插件生成HTML文件的话,就没有必要使用PHP了,而且我上次也讲过,PHP的博客程序存在一些问题,很消耗资源,而且数据量也不能做的很大,更重要的是静态化还是不能抵抗流量的冲击. 环境配置:windows server服务器+ZBLOG ASP程序+SQL SERVER2012数据库+域名(读后感http://www.simayi.net读书笔记)+读书主题. 好了,下面还是讲述我最近学习的T-

《大话存储2》读书笔记——第1章 混沌初开 存储世界的前世今生

信息 所谓“物质”也好,“非物质”也好,最后都是通过“信息”来表现.唯一可以确定的是,“信息”是客观存在的,世界在生物眼中就是“信息”,世界通过“信息”来反映,脱离了“信息”,世界什么都不是.任何“物质”其实都是表现的一种“信息”,只要“信息”存在,世界就存在. 数据 “信息”如此重要.如果失去了“物质”,仅仅是客观消逝了,但是如果失去了“信息”,那么一切都消逝了.要把这种逻辑刺激保存下来,所需要的不过是一种描述信息的信息,这种信息就是“数据” 文件系统 操作系统的代码块,其作用是:管理磁盘上的

【疯狂Java讲义-读书笔记】1.5 第一个Java程序

1.5.1 编辑Java源代码 使用任何无格式的文本编辑器 1.5.2 编译Java程序 编译命令:javac -d destdir srcFile 一个源文件里定义了多个类,将编译生成多个字节码文件. 配置Sublime Text 3环境   http://blog.csdn.net/wolinxuebin/article/details/41049551# 1.5.3 运行Java程序 解释运行:java 类名 java -classpath dir1;dir2;...;dirN 类名 1.