第一图书网

冒号课堂

郑晖 电子工业出版社
出版时间:

2009年10月  

出版社:

电子工业出版社  

作者:

郑晖  

页数:

476  

字数:

570000  

Tag标签:

无  

内容概要

本书是以编程范式和抽象机制为主线阐述编程设计思想的图书。它以编程语言为形、以编程范式为神、以抽象机制为本,采用课堂对话的形式讲述编程要义,深入浅出、寓教于乐。其中编程范式以OOP为重点,编程语言以C++、Java和C#为主。书中上半部着重介绍一些常用的编程范式,并对流行的编程语言的主要特色和应用范围作了简明扼要的介绍。书中下半部对OOP的核心概念和思想进行了细致而深入的剖析,而后阐述了一些重要的设计原则和思想,并让它们在经典的设计模式中得到印证。

书籍目录

上篇:编程范式与编程语言 第1课 开班导言 1.1 开班发言——程序员的4层境界 1.2 首轮提问——什么语言好? 1.3 语言选择——合适的就是好的 1.4 初识范式——程序王国中的世界观与方法论 1.5 开发技术——实用还是时髦? 第2课 重要范式 2.1 命令范式——一切行动听指挥 2.2 声明范式——目标决定行动 2.3 对象范式——民主制社会的编程法则 2.4 并发范式——合作与竞争 第3课 常用范式 3.1 泛型范式——抽象你的算法 3.2 超级范式——提升语言的级别 3.3 切面范式——多角度看问题 3.4 事件驱动——有事我叫你,没事别烦我 第4课 重温范式 4.1 函数范式—-精巧的数学思维 4.2 逻辑范式——当算法失去了控制 4.3 汇总范式——一张五味俱全的大烙饼 4.4 情景范式——餐馆里的编程范式 第5课 语言小谈 5.1 教学计划——接下来的故事 5.2 数据类型——规则与变通 5.3 动态语言——披着彩衣飞舞的脚本语言 5.4 语言误区——语言的宗教情结 第6课 语言简评 6.1 系统语言——权力的双刃剑 6.2 平台语言——先搭台后唱戏 6.3 前台语言——视觉与交互的艺术 6.4 后台脚本——敏捷开发的利器下篇:抽象机制与对象范式 第7课 抽象封装 7.1 抽象思维——减法和除法的学问 7.2 数据抽象——“做什么”重于“怎么做” 7.3 封装隐藏——包装的讲究 第8课 抽象接口 8.1 软件应变——随需而变,适者生存 8.2 访问控制——代码的多级管理 8.3 接口服务——讲诚信与守规矩 第9课 继承机制 9.1 继承关系——继承财富,更要继承责任 9.2 慎用继承——以谨慎之心对待权力 第10课 多态机制 10.1 多态类型——静中之动 10.2 抽象类型——实中之虚 第11课 值与引用 11.1 语法类型——体用之分 11.2 语义类型——阴阳之道 第12课 设计原则 12.1 间接原则——柔胜于刚,曲胜于直 12.2 依赖原则——有求皆苦,无欲则刚 12.3 肉聚原则——不是一家人,不进一家门 12.4 保变原则——与魔鬼打交道的艺术 第13课 设计模式 13.1 创建模式——不要问我从哪里来 13.2 结构模式——建筑的技巧 13.3 行为模式——君子之交淡如水 13.4 闭班小结——软件无形,编程有道索引设计手记编辑手记

章节摘录

  上篇:编程范式与编程语言  第1课 开班导言  1.1 开班发言——程序员的4层境界  讲解  冒号开了个程序员提高班,今天迎来了首期学员,他们是问号、句号、逗号、引号和叹号,皆为IT业的新兵。望着台下洋溢着青春与渴望的脸庞,冒号开始了他的开班发言——  大家好!先自我介绍一下,本人姓冒名号字解之。诸位不必叫我老师,就叫老冒好了。比在座各位痴长几岁,“老”是担得的,“师”却不敢妄言。在下编程多年,自觉小有所成,不敢专藏,特开此班与众共享。虽系一家之言、一孔之见,若能抛砖引玉,又何惧方家之哂?疏谬之处,还望海涵斧正,不致自误误人。  客套已毕,言归正传。本班主要采取讨论的形式,只要是软件开发中值得讨论的,但凡本人力之所及,均可共同探讨。  本班的宗旨是:学会不如会学,会学不如会用,会用不如被用。对于一个软件开发者来说,这意味着4个阶段:  学会(知其所然)——掌握一些具体编程知识的初级程序员。  会学(知所以然)——能快速而深刻地理解技术并举一反三的程序员。  会用(人为我用)——能将所学灵活运用到实际编程设计之中的高级程序员。  被用(我为人用)——能设计出广为人用的应用程序(application)、库(Library)、工具包(toolkit)、框架(framework)等的系统分析师和架构师。  至于被用的更高层次,如发明出主流的设计模式、算法、语言,乃至理论等,则可称得上计算机专家了。本班的目的,正是为各位向更高阶段的提升助一臂之力。  大家可能都习惯了在小学、中学和大学里的课堂,那里的知识大多是系统而完备且貌似终极的,那里的学习大多是单向而被动的。但习惯并不意味着享受,更多的是因为别无选择。你们曾被引入一座座知识殿堂,被告知它们如何美轮美奂、巧夺天工,尽管很多时候你们或不以为然、或不解其妙,但还是不得不记下每一处被指点的细微结构。很少有人带你们看看当初为建造这些殿堂而打下的地基、搭设的脚手架,哪怕只是上漆前的模样也好,更遑论一瞻数易其稿的设计图纸了。那些与殿堂相比显得有些原始、甚至丑陋的东西,被有意无意地挡在视线之外。可没有那些,你们将来如何为这些宫殿添砖加瓦,又如何另起楼阁呢?  ……


编辑推荐

  《冒号课堂:编程范式与OOP思想》以课堂对话的形式讲述编程要义。  评点编程语言,阐发软件设计思想。  寓庄于谐,深入浅出。

图书封面

图书标签Tags

广告

下载页面


冒号课堂 PDF格式下载



自认没能耐评论这书,所以转一下豆瓣里,另一位大牛Milo Yip的评论:
****://book.douban****/review/3395468/
  首先声明,自从2010年初开始写书评后,偶然认识本书作者。因对本书内容感兴趣,才从当当自购本书,并承诺会写书评。但本人因同时间开始业余翻译工作,共花了数月才读毕本书。为保持尽量客观独立,本文刊登前并未经他人审阅。
  
  本书分为两部分,上篇为“编程范式与编程语言”,下篇为“抽象机制和对象范式”。先分别谈上下篇,再谈综合感想。
  
  上篇‧编程范式与编程语言
  
  编程语言向来是计算机世界里的信仰话题,时常产生各种口舌之争。但编程语言不是自然语言,编程语言并非因巴别塔或地域而造成混乱,而是人类为了用不同的思考方式,方便解决不同的问题,而去设计各式各样的编程语言。要为特定问题选择合适的编程语言,并把语言使用得流利、地道,我们需要的不仅是文法(语法和语意),最重要是学习使用语言的设计哲学。而每个语言在设计上支持不同的编程范式(programming paradigm),例如过程式、函数式(FP)、面向对象(OOP)、元编程等等。林林总总的范式,代表用不同的思考方式去编程。
  
  虽然本人在学生涯中曾学习过不同种类的编程语言,但是工作上主要使用支持OOP的语言。可能由于没学过编译原理,更少机会接触不同编程语言及范式的理论基础。本篇是一个不错的简介。尤其是当中比较新的发展,如并发/并行、函数、切面等范式,本人一直没有特别关注,所以本书对我而言可作为一个当代编程语言现况的简介。本篇虽然涉及不少思想概念,但以广度为主,深度为次,觉得内容像科普,读得有趣又轻松。
  
  下篇‧抽象机制和对象范式
  
  第7至10章主要谈OO的几个重要概念,包括封装、继承和多态。但其内容摒弃一般的直观式解释,而是深入地讨论这些概念的定义,分析使用动机,以及使用时的原则。文中举出的例子也十分有意思,例如多次描述Java SDK类库里某些类的设计问题,应如何避免等。在语言方面,经常比较C++、Java和C#怎样实现一些面向对象概念,指出很多语言间的细节差异。由于我常用的编程语言是C++,对值和引用的语意不够敏感,觉得作者用第11章一整章专门讨论这个题目,对我有所得着。第12章对我则可重温一些SOLID等原则。第13章专门讨论设计模式,但篇幅略短,对一般入门者可作为简介。
  
  综合感想
  
  先谈一些个人经历。我是由Basic和C等过程式语言踏入编程之门,那时觉得过程式的思想很自然,只是把问题分而治之。五、六年后,再自学C++,发觉语法虽然有些复杂,但最大问题,是改变不了思想去用面向对象设计。那时候读的C++书籍,主要篇幅集中在语法上,只是以一些很简单的例子(如常见的***plex、Linked List和Shape)去说明OOP,心里觉得很不踏实。例如当时会思考,一个足球游戏中,过程如何变成对象:
  
  void Kick(Player* player, Ball* ball, Vector* direction);
  
  应该改写成以下哪一个样子呢?
  
  void Player::Kick(Ball& ball, const Vector& direction);
  void Ball::Kick(Player& player, const Vector& direction);
  
  回头看来,其实问题在于,当时缺乏把需求以对象方式抽象的思维,只是想把过程式的写法用C++语法表示出来。后来发现必须认真学习面向对象设计,便开始阅读Booch大神的《Object Oriented Analysis and Design with Applications》。正值高中之年,感到此书艰涩非常。此后,经历多年,透过阅读一些UML书籍,以及设计方面的书籍如《Design Patterns: Elements of Reusable Object-Oriented Software》、《Agile Software Development, Principles, Patterns, and Practices》等等,配合更多的实践,才感到习惯了基本的面向对象设计方式。
  
  虽然以上提及到的都是好书,但如果当年有这本《冒号课堂》,相信能更容易地掌握一个全局观,也更有效地有系统地学习这些知识。本书的内容非常严谨,我没有找到任何笔误错漏,内容编采有原创性,文字水平也高,我觉得完全不亚于英文书籍,甚至可考虑出版英文版。个人建议,正在学习或使用OOP语言的朋友,可先阅本书,再看相关的参考文献。本书时效长久,相信多年以后,仍可不时翻阅,温故知新。
  
  意见方面,本人觉得本书内地版封面是一败笔。对没读过作者的博客,内地版书名亦欠吸引力。若非作者介绍,也没注意到这本书。另外,可能由于个人阅读习惯,会跳过摘要、预览、提问等环节,直接阅读内文。参考条目方面,个人较喜欢置于书末,而非置于节末。不过这些都是个人喜好而已,各有利弊。但比较混乱的,是采用中括号(如[1])去同时表示脚注和参考条目。此外,可能由于我中文的不足,文中经常遇到不认识的中文字,询问太太,她说很多都是小说常用的,而我基本上不看小说。不知道是否可以像simple English一样,尽量采用常用简单的文字,但这样风格可能会有所不同。
  
  最后还有一点值得留意,本书采用对话形式的文体,内容围绕冒号老师和他的几位学生之间的对话。这是我第一次阅读这种文体的技术书籍。对话生动,人物性格突出。这令我想起《论语》中,孔子和学生们以对话形式进行有教无类、因材施教的教学。我羡慕这种理想的小班教学模式,希望自己能成为其中的学生。但是,教育界里,有多少位老师能有如此学识,又能如此开放地和学生进行讨论交流呢?假如,我能上这样的课……
你认为这篇评论: 有用 38 没用 1


这本书原先一直在网上看,痛定思痛还是买到手上,有空时常翻翻

对编程范式做了很简单的介绍,通俗易懂

但是觉得对范式之间的比较好像不是很足,总体来说是本很不错的入门书籍


编程范式,比较新颖的感念


看了一半,忍不住上来发表评论,范式部分写的很好,适合各层次读者(超级高手除外),难能可贵的是编程基础薄弱的人也能从中汲取丰富的营养,用作者的话说是在心中种下了种子,确实是好书!


如果你想深入思考编程的真谛,你一定要看此书,它会带你登堂入室!

如果你想提高你设计编程的实力,你一定要学习此书,它会带给你的一双翅膀,开拓你的眼界!


这本书很值得一读,但还是要有一点编程基础才行。


绝对精华,不看后悔,里面的思想够消化一阵的


书不错,很喜欢,语言幽默,让枯燥的知识变的更有趣,读起来很轻松。修炼内功、开阔视野的好书。


我的基础一般,看了觉得很受用。但是觉得不过瘾,只是作了一个介绍,没有深入写


寻觅已久想要得到的书。。


值得反复回味的书


很不错,涨了见识。


如果希望向架构师方向发展,这是我看过的国内最好的原创书籍之一


几年前在blog上看到 冒号课堂 久久不能忘怀,里面虽然有很多不懂的地方,可让我大开眼界了,期待作者再出书,本想连<大话设计模式> 一起买的.毕竟看了二遍,可感觉还是不够,特别是最后面的模式PK赛.写的太好了,在伍迷的博客上看到他最近出新书了,所以打算等这二本书合订成一本后再买。。


从书的一开始我就被深深的吸引了,作者在第一部分将了一些编程范式,而且总结的很详细和深入。最主要的不是很刻板的讲述一些东西,让人看的心旷神怡。第二部分还真在看的过程中,已经有了良好的感觉。因暂时每看完就不多说!


关于OOP的资料实在是太多了,现实中环境也很常见,前半部分关于范式的内容能否给个导读和实践指南。书我只知道 lisp 和scheme的一部分书籍,还有程序设计语言概念和结构,erlang的几本书。


很强大的一本书,对进一步登堂入室很有帮助。看这本书之前,最好是有OO的编程基础,已经对面向对象有一定的认识。


文字叙述的很多。。。


很好,就是有点虚无缥缈。


看了一些,感觉不错,赞叹作者的文字功底,语言诙谐,准确。


我看的有点晕,自己水平太次了。


看完以后没太多了解 虽然关于描述的很多 但实际上讲解的内容还是对于工作也好 没有太大的帮助 程序员不太需要知道这么多


每页1/4空白,1/5废话,每个章节后的总结不伦不类


相关图书