• 松本行弘的程序世界
图书条目标准图
21年品牌 40万+商家 超1.5亿件商品

松本行弘的程序世界

16.6 2.2折 75 九品

库存2件

北京海淀
认证卖家担保交易快速发货售后保障

作者松本行弘 著;柳德燕 译

出版社人民邮电出版社

出版时间2011-08

版次1

装帧平装

货号22

上书时间2024-12-27

诚意正心书店

七年老店
已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:九品
图书标准信息
  • 作者 松本行弘 著;柳德燕 译
  • 出版社 人民邮电出版社
  • 出版时间 2011-08
  • 版次 1
  • ISBN 9787115255075
  • 定价 75.00元
  • 装帧 平装
  • 开本 16开
  • 纸张 胶版纸
  • 页数 389页
  • 字数 611千字
  • 正文语种 简体中文
  • 原版书名 まつもとゆきひろ コードの世界~スーパー・プログラマになる14の思考法
【内容简介】
《松本行弘的程序世界》是探索程序设计思想和方法的经典之作。作者从全局的角度,利用大量的程序示例及图表,深刻阐述了Ruby编程语言的设计理念,并以独特的视角考察了与编程相关的各种技术。阅读《松本行弘的程序世界》不仅可以深入了解编程领域各个要素之间的关系,而且能够学到大师的思考方法。

《松本行弘的程序世界》面向各层次程序设计人员和编程爱好者,也可以供相关技术人员参考。
【作者简介】
  松本行弘 Ruby语言的发明人,在1993年发布了Ruby语言的第一个版本,以后一直从事Ruby的设计与开发。2011年加入著名SaaS厂商Salesforce旗下PaaS公司Heroku,任首席Ruby架构师,致力于加快RubyCore的开发。他还是NaCI及乐天技术研究所的研究员。著有Ruby in a Nutshell和The RubyProgramming Language等书。他的博客地址为http://www.rubyist.net/~matz/。
【目录】
目录

第1章我为什么开发Ruby

1.1我为什么开发Ruby

1.1.1编程语言的重要性

1.1.2Ruby的原则

1.1.3简洁性

1.1.4扩展性

1.1.5稳定性

1.1.6一切皆因兴趣

第2章面向对象

2.1编程和面向对象的关系

2.1.1颠倒的构造

2.1.2主宰计算机的武器

2.1.3怎样写程序

2.1.4面向对象的编程方法

2.1.5面向对象的难点

2.1.6多态性

2.1.7具体的程序

2.1.8多态性的优点

2.2数据抽象和继承

2.2.1面向对象的历史

2.2.2复杂性是面向对象的敌人

2.2.3结构化编程

2.2.4数据抽象化

2.2.5雏形

2.2.6找出相似的部分来继承

2.3多重继承的缺点

2.3.1为什么需要多重继承

2.3.2多重继承和单一继承不可分离

2.3.3goto语句和多重继承比较相似

2.3.4解决多重继承的问题

2.3.5静态语言和动态语言的区别

2.3.6静态语言的特点

2.3.7动态语言的特点

2.3.8静态语言和动态语言的比较

2.3.9继承的两种含义

2.3.11继承实现的方法

2.3.12从多重继承变形而来的Mix-in

2.3.13积极支持Mix-in的Ruby

2.4两个误解

2.4.1面向对象的编程

2.4.2对象的模板=类

2.4.3利用模块的手段=继承

2.4.4多重继承不好吗

2.4.5动态编程语言也需要多重继承

2.4.6驯服多重继承的方法

2.4.7Ruby中多重继承的实现方法

2.4.8Java实现多重继承的方法

2.5DuckTyping诞生之前

2.5.1为什么需要类型

2.5.2动态的类型是从Lisp中诞生的

2.5.3动态类型在面向对象中发展起来了

2.5.4动态类型和静态类型的邂逅

2.5.5静态类型的优点

2.5.6动态类型的优点

2.5.7只关心行为的DuckTyping

2.5.8避免明确的类型检查

2.5.9克服动态类型的缺点

2.5.10动态编程语言

2.6元编程

2.6.1元编程

2.6.2反射

2.6.3元编程的例子

2.6.4使用反射功能

2.6.5分布式Ruby的实现

2.6.6数据库的应用

2.6.7输出XML

2.6.8元编程和小编程语言

2.6.9声明的实现

2.6.10上下文相关的实现

2.6.11单位的实现

2.6.12词汇的实现

2.6.13层次数据的实现

2.6.14适合DSL的语言,不适合DSL的语言

第3章程序块

3.1程序块的威力

3.1.1把函数作为参数的高阶函数

3.1.2C语言高阶函数的局限

3.1.3可以保存外部环境的闭包

3.1.4块的两种使用方法

3.1.5最终来看,块到底是什么

3.1.6块在循环处理中的应用

3.1.7内部迭代器和外部迭代器

3.1.8在排序和比较大小中的应用

3.1.9用块保证程序的后处理

3.1.10用块实现新的控制结构

3.1.11在回调中使用块

3.1.12块处理的特别理由

3.2用块作循环

3.2.1块是处理的集合

3.2.2块应用范围的扩展

3.2.3高阶函数和块的本质一样

3.2.4用Enumerable来利用块

3.2.5Enumerable的局限

3.3精通集合的使用

3.3.1使用Ruby的数组

3.3.2修改指定范围的元素内容

3.3.3Ruby中的哈希处理

3.3.4支持循环的Enumerable

3.3.5用于循环的each方法

3.3.6使用inject、zip和grep

3.3.7用来指定条件的select方法

3.3.8排序与比较大小的方法

3.3.9在类中包含(include)Enumerable模块

3.3.10List的内部包和块的区别

第4章设计模式

4.1设计模式(1)

4.1.1设计模式的价值和意义

4.1.2设计模式是程序抽象化的延伸

4.1.3Ruby中的设计模式

4.1.4Singleton模式

4.1.5Proxy模式

4.1.6Iterator模式

4.1.7外部与内部,哪一个更好

4.1.8内部迭代器的缺陷

4.1.9外部迭代器的缺陷

4.2设计模式(2)

4.2.1模式与动态语言的关系

4.2.2重复使用既存对象的Prototype模式

4.2.3亲身体验Io语言

4.2.4Ruby中的原型

4.2.5编写抽象算法的TemplateMethod模式

4.2.6用Ruby来尝试TemplateMethod

4.2.7动态语言与TemplateMethod模式

4.2.8避免高度依赖性的Observer模式

4.2.9Observable模块

4.2.10Observer模式与动态语言

4.3设计模式(3)

4.3.1软件开发的悲剧

4.3.2开放-封闭原则

4.3.3面向对象的情况

4.3.4非面向对象的情况

4.3.5OCP与TemplateMethod模式

4.3.6Observer模式

4.3.7使用Strategy模式

4.3.8Strategy模式与OCP

第5章Ajax

5.1Ajax和JavaScript(前篇)

5.1.1通信及异步页面更新

5.1.2技术要素之一:JavaScript

5.1.3技术要素之二:XML

5.1.4XML以外的数据表现形式

5.1.5技术要素之三:DHTML

5.1.6JavaScript技术基础

5.1.7原型模式的面向对象编程语言

5.1.8使用prototype.js库

5.1.9prototype.js的功能

5.2Ajax和JavaScript(后篇)

5.2.1巧妙使用DHTML

5.2.2获取document节点

5.2.3获取和更新标签数据

5.2.4设定事件处理程序

5.2.5追加标签节点

5.2.6本地HTML应用

5.2.7和服务器间的通信

5.2.8使用Prototype.js的优点

5.2.9在服务器上保存数据

5.2.10Web应用的脆弱性

5.2.11使用JavaScript的感觉

第6章RubyonRails

6.1MVC和RubyonRails

6.1.1模型、视图和控制的作用

6.1.2用秒表的例子来学习MVC模式

6.1.3生成视图和控制部分

6.1.4GUI工具箱与MVC

6.1.5同时使用工具箱和MVC

6.1.6MVC的优缺点

6.1.7Web应用中的MVC

6.2开放类和猴子补丁

6.2.1开放类

6.2.2猴子补丁的目的

6.2.3猴子补丁的技巧

6.2.4灵活使用开放类的库

6.2.5猴子补丁的几点问题

6.2.6其他办法

6.2.7RubyonRails和开放类

6.2.8ActiveSupport带来的扩展

6.2.9字节单位系列

6.2.10复数形和序数

6.2.11大规模开发和Ruby

6.2.12信赖性模型

6.2.13猴子补丁的未来

第7章文字编码

7.1文字编码的种类

7.1.1早期的文字编码

7.1.2纸带与文字表现

7.1.3文字是什么

7.1.4走向英语以外的语言(欧洲篇)

7.1.5英语以外的语言(亚洲篇)

7.1.6Unicode的问世

7.1.7统一编码成16位的汉字统合

7.1.8Unicode的两个问题

7.1.9Unicode的文字集

7.1.10文字表示的不确定性

7.1.11Unicode的字符编码方式

7.2程序中的文字处理

7.2.1文字编码有多个意思

7.2.2只能处理文字集中包含的文字

7.2.3纷繁复杂的文字编码方式

7.2.4影响力渐微的Shift_JIS与EUC-JP

7.2.5Unicode有多种字符编码方式

7.2.6为什么会发生乱码

7.2.7字符编码方式错误

7.2.8没有字体

7.2.9变换为内部码时出错

7.2.10发生不完全变换

7.2.11文字集的不同

7.2.12字节顺序错误

7.2.13从编程语言的角度处理文字

7.2.14以变换为前提的UCS方式

7.2.15原封不动处理的CSI方式

7.2.16使用UTF-16的Java

7.2.17使用UTF-8的Perl

7.2.18用UTF-16的Python

7.2.19采用CSI方式的Ruby1.8

7.2.20强化了功能的Ruby1.9

7.2.21是UCS还是CSI

第8章正则表达式

8.1正则表达式基础

8.1.1检索“像那样的东西”

8.1.2正则表达式的语法

8.1.33个陷阱

8.1.4正则表达式对象

8.1.5选项

8.1.6正则表达式匹配的方法

8.1.7特殊变量

8.1.8字符串与正则表达式

8.1.9split的本质

8.1.10字符串的扫描

8.1.11置换

8.2正则表达式的应用实例与“鬼车”

8.2.1解析日志文件的方法

8.2.2避免使用$的方法

8.2.3从邮件中取出日期的方法

8.2.4典型拼写错误的检索方法

8.2.5Ruby1.9的新功能“鬼车”

第9章整数和浮点小数

9.1深奥的整数世界

9.1.1整数是有范围的

9.1.2尝试位运算

9.1.3操作特定的位

9.1.4表示负数的办法

9.1.5Ruby的整数

9.1.6挑战公开密钥方式

9.2扑朔迷离的浮点小数世界

9.2.1计算机对小数的处理

9.2.2固定小数点数不易使用

9.2.3科学计数法也有问题

9.2.4小数不能完全表示

9.2.5有不能比较的时候

9.2.6误差积累

9.2.7不是数的特别“数”

9.2.8计算误差有多种

9.2.9误差导致的严重问题

9.2.10BigDecimal是什么

9.2.11能够表示分数的Rational类

第10章高速执行和并行处理

10.1让程序高速执行(前篇)

10.1.1是不是越快越好

10.1.2高速执行的乐趣与效率

10.1.3以数据为基础作出判断

10.1.4改善系统调用

10.1.5数据可靠吗

10.1.6只需改善瓶颈

10.1.7profiler本身成了累赘

10.1.8算法与数据结构

10.1.9理解O记法

10.1.10选择算法

10.1.11调查算法的性能

10.1.12高速执行的悲哀

10.1.13性能优化的格言

10.2让程序高速执行(后篇)

10.2.1确认程序概要

10.2.2发现瓶颈

10.2.3使用更好的profiler

10.2.4高速优化之一:削减对象

10.2.5高速优化之二:利用立即值

10.2.6高速优化之三:利用C语言

10.2.7高速优化之四:采用合适的数据结构

10.2.8全部以C语言计算

10.2.9还存在其他技巧

10.3并行编程

10.3.1使用线程的理由

10.3.2生成线程

10.3.3线程的执行状态

10.3.4传递值给线程的方法

10.3.5信息共有所产生的问题

10.3.6数据完整性的丧失

10.3.7死锁

10.3.8用锁来实现对资源的独占

10.3.9二级互斥

10.3.10用队列协调线程

10.3.11锁模型与队列模型的比较

10.4前景可期的并行编程技术,Actor

10.4.1何谓Actor

10.4.2操作Actor的3种处理系统

10.4.3Erlang的程序

10.4.4Pingpong处理的开始

10.4.5启动pingpong程序

10.4.6Erlang的错误处理

10.4.7Erlang的使用场所

10.4.8面向Ruby的库“Revactor”

10.4.9Revactor的应用场合

10.4.10另一个库Dramatis

第11章程序安全性

11.1程序的漏洞与攻击方法

11.1.14种软件漏洞

11.1.2因权限被窃取而成为重大问题

11.1.3安全问题的根源

11.1.4“守护神”引起的问题

11.1.5多样化的攻击手段

11.1.6缓冲区溢出

11.1.7整数溢出

11.1.8SQL注入

11.1.9Shell注入

11.1.10跨站点脚本攻击

11.1.11跨站点伪造请求

11.1.12社会工程

11.2用异常进行错误处理

11.2.1异常的历史

11.2.2Java的受控异常

11.2.3Icon的面向目标判断

11.2.4Ruby的异常

11.2.5异常发生

11.2.6异常类

11.2.7异常处理的设计方针

11.2.8异常发生的设计原则

第12章关于时间的处理

12.1用程序处理时刻与时间

12.1.1时差与时区

12.1.2世界协调时间

12.1.3夏令时(DST)

12.1.4改历

12.1.5日期与时间的类

12.1.62038年问题

12.1.7DateTime类

12.1.8Time与DateTime的相互变换

第13章关于数据的持久化

13.1持久化数据的方法

13.1.1保存文本

13.1.2变换成文本的Marshal

13.1.3使用Marshal模块

13.1.4复制有两种方式

13.1.5仔细看Marshal的格式

13.1.6不能保存的3类对象

13.1.7制作面向对象数据库

13.1.8试用PStore

13.1.9变换为文本的YAML

13.1.10用YAML制作数据库

13.2对象的保存

13.2.1高速的ObjectPrevalence

13.2.2ObjectPrevalence的问题点

13.2.3使用Madeleine

13.2.4访问时刻信息

13.2.5让Madeleine更容易使用

13.2.6Madeleine的实用例Instiki

13.3关于XML的考察

13.3.1XML的祖先是SGML

13.3.2XML是树结构的数据表现

13.3.3优点在于纯文本

13.3.4缺点在于冗长

13.3.5不适合重视效率的处理

13.3.6适合于信息交换的格式

13.3.7XML的解析

13.3.8XML处理库REXML

13.3.9XML的代替

第14章函数式编程

14.1新范型——函数式编程

14.1.1具有多种函数式性质的Lisp

14.1.2彻底的函数式编程语言Haskell

14.1.3延迟计算:不必要的处理就不做

14.1.4灵活的“静态多态性”类型系统

14.1.5近代函数式语言之父OCaml

14.1.6强于并行计算的Erlang

14.1.7用Ruby进行函数式编程

14.1.8用枚举器来实现延迟计算

14.2自动生成代码

14.2.1在商业中利用Ruby

14.2.2使用Ruby自动生成代码

14.2.3消除重复代码

14.2.4代码生成的应用

14.2.5代码生成的效果

14.2.6编写代码生成器

14.2.7也可以使用XML

14.2.8在EJB中使用代码生成

14.3内存管理与垃圾收集

14.3.1内存管理的困难

14.3.2垃圾收集亮相之前

14.3.3评价垃圾收集的两个指标

14.3.4垃圾收集算法

14.3.5引用计数方式

14.3.6标记和扫除方式

14.3.7标记和紧缩方式

14.3.8复制方式

14.3.9多种多样的垃圾收集算法

14.3.10分代垃圾收集

14.3.11保守垃圾收集

14.3.12增量垃圾收集

14.3.13并行垃圾收集

14.3.14位图标记

14.4用C语言来扩展Ruby

14.4.1开发与执行速度的取舍

14.4.2扩展库

14.4.3看例题学习扩展模块

14.4.4QDBM函数

14.4.5初始化对象

14.4.6实现方法

14.4.7关于垃圾收集的注意事项

14.4.8其他的RubyAPI

14.4.9扩展库的编译

14.4.10扩展库以外的工具

14.5为什么要开源

14.5.1自由软件的思想

14.5.2自由软件的历史

14.5.3Emacs事件的发生

14.5.4开源的诞生

14.5.5OSS许可证

14.5.6开源的背景

14.5.7企业关注开源的理由

14.5.8Ruby与开源

14.5.9选择许可证的方法
点击展开 点击收起

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP