冒号和他的学生们(连载22)——抽象思维

22.抽象思维

是谓无状之状,无物之象,是谓惚恍               ——《老子·道经》

冒号健步走进教室,学员们立刻正襟危坐,进入战备状态。

“如果说咱们是在合演一场戏,那么前面五节课只是一个过门。”冒号俨然一副自导自演的架势。

众人暗暗吃惊:这过门也忒长了点吧。

冒号随即探问:“还记得在范式总结中提到的迭代学习法吧?”

引号迅速应答:“就是在具体知识与抽象理论之间做折返跑。”

“记性不错。”冒号赞道,“在上本班之前,你们已经具备了一定的编程语言的基础,因此我们先从抽象的编程范式谈起,此后又回归到编程语言的讨论。”

句号推测:“照此逻辑,下面我们将再次返回编程范式?”

“我们的确要来个For Loop,但相信这是一个增量式的循环。”冒号用编程语言来强调他的学习理论。

逗号有些失望:“按计划不是该对Java语言作专题讨论吗?”

“你放心,Java它跑不了。”冒号看出他的心事,“语言是形,范式是神,这次我们将二者融合,争取做到形神兼备。具体地说,范式以OOP为主,语言以Java为主,同时可能涉及C、C++或C#等语言。另外,示例代码也会明显增多。”

逗号脸上的一抹乌云顿时消散开来。

冒号接着提醒道:“不过,秉承开班发言中的理念,我们的重心不在知识的枝节,而在知识的本源。因此无论讨论Java还是OOP,我们不追求系统和全面,但力求从不同的选点、角度和深度来展示知识的活性。”

讲到此处,冒号冷不丁提问:“程序员最重要的能力是什么?”

众人的答案五花八门:学习能力、逻辑思维能力、解决问题能力、专注力、沟通能力等等。

“毫无疑问,你们所说的都很重要。这本是个见仁见智的问题,我只是借此展开今后的话题。在我看来,抽象思维能力是最重要的。当然,不独计算机领域,其他科学同样需要这种能力。更广泛地说,抽象是人类认识和描绘世界最首要的工具。”不知不觉冒号又走上了形而上的路线。

叹号这时想起:“前面谈切面范式时,似乎专门提到过抽象与分解的重要性。”

“我们也曾提到,不同的范式正是对软件进行了不同角度的抽象和分解。”冒号加以补充,“那么什么是抽象呢?不妨概括为:去粗取精以化繁为简;由表及里以异中求同。再精炼些,抽象就是作减法和除法。”

问号半信半疑:“减法好理解,通过甄选减去非本质和不重要的部分,即去粗取精。可除法呢?”

句号忽然悟道:“透过现象看本质,发现不同事物之间的相同之处,即异中求同。同类归并,那就是除法了。”

冒号进一步解释:“用离散数学或抽象代数的语言来说,通过抽象而产生等价关系以及相应的等价类,便是集合的商运算。”

逗号嘀咕:“本来快明白了,经这么一描述,重新糊涂了。”

冒号笑道:“如果嫌数学语言高深,就用算术语言吧。乘法可看作同类复制,作为逆运算的除法自然是同类归并了。”

逗号眼中的迷惘渐渐散去,若有所悟:“嗯,经过减法和除法,大数变小数,复杂变简单。”

“能否把抽象说得再具体些?”问号话一出口便自感悖论之嫌:抽象的能具体吗?

冒号自明其意:“首先,抽象有角度之分。相同的实体(entity)经过不同角度的抽象,得到的模型(model)也会不同。就拿人这个实体来说,在拓扑学家眼里是三维连通集合,在理论力学家眼里是质点,在化学家眼里是碳水化合物——”

叹号接嘴:“在情人眼里是西施。”

“过滤缺点,抽取优点,西施就是这样炼成的。”冒号故意拉长了尾音。

众人不禁一乐。

时间: 2024-08-03 18:26:22

冒号和他的学生们(连载22)——抽象思维的相关文章

冒号和他的学生们程序员提高班纪事系列

冒号和他的学生们(连载27)--接口服务 冒号和他的学生们(连载26)--访问控制 冒号和他的学生们(连载25)--软件应变 冒号和他的学生们(连载24)--对象封装 冒号和他的学生们(连载23)--数据抽象 冒号和他的学生们(连载22)--抽象思维 冒号和他的学生们(连载21)--后台脚本 冒号和他的学生们(连载20)--前台语言 冒号和他的学生们(连载19)--平台语言 冒号和他的学生们(连载18)--系统语言 冒号和他的学生们(连载17)--语言讨论 冒号和他的学生们(连载16)--动态语

冒号和他的学生们(连载9)——泛型范式

泛型范式 算法是脊,数据是肉:思想是鸡,结论是蛋 --题记 冒号重新开讲:"你们会不会经常遇到这种情景:一遍又一遍地写着相似的代码,有心将其归并,却因种种原因无法践行." 逗号心有戚戚焉道:"是啊,有时明明两个函数的实现几乎一模一样的,就因为某些参数不匹配,无法合而为一." "有一种编程范式可以解决这个问题,它打破了不同数据结构之间的壁垒,让你的代码不再臃肿,这--就是泛型编程."冒号的语调和说辞不免令人联想到电视上的减肥广告,"Gen

冒号和他的学生们(连载1)——开班发言

开班发言 授人以鱼不如授人以渔 --古语 冒号开了个程序员提高班,今天迎来了首期学员,他们是问号.句号.逗号.引号和叹号,皆为IT业的新兵.望着台下洋溢着青春与渴望的脸庞,冒号开始了他的开班发言-- 大家好!先自我介绍一下,本人姓冒名号字解之.诸位不必叫我老师,就叫老冒好了.比在座各位痴长几岁,"老"是担得的,"师"却不敢妄言.在下编程多年,自觉小有所成,不敢专藏,特开此班与众共享.虽系一家之言.一孔之见,若能抛砖引玉,又何惧方家之哂?疏谬之处,还望海涵斧正,不致自

冒号和他的学生们(连载2)——首轮提问

首轮提问 敬畏老师莫如敬畏真理 --题记 众人面面相觑,一阵沉默后开始窃窃私语,显然有些不太习惯这种教学方式--笔记本上还没写两个字呢,老师就把球给踢回来了. 冒号也不说话,只是微笑地望着大家. 还是问号打破僵局,开始发问:"老师--" 冒号扬手打断他:"这里没有老师,唯一的老师是你自己.本班的一个特色是:师生角色模糊,大家自主学习,相互启发,教学相长." 问号顿了顿:"老冒--"全班哄堂大笑,"学软件开发,当然得先学语言,计算机语言这

冒号和他的学生们(连载27)——接口服务

27.接口服务 律己宜严,待人宜宽 --<洪应明·菜根谭> 叹号幡然反省:"以前我们做OOP编程时,总是专注于如何利用其他类来解决问题,而较少考虑自己设计的类对其他类的影响." 引号翻开以前的笔记:"前面提过,OOP的世界是民主制的,所有对象都是独立而平等的公民,有权利寻求服务,也有义务提供服务.看来我们是光惦着权利而忘了义务了." 冒号继而提出:"作为服务的提供者,最重要的是讲诚信.首先,服务要有可靠性,不能阳奉阴违--即接口必须履行它的承诺

冒号和他的学生们(连载26)——访问控制

26.访问控制 夫轻诺必寡信,多易必多难 --<老子·德经> 问号提问:"信息隐藏是否专指用private来控制访问?" "这正是我们的下一个焦点."冒号微颔,"访问修饰符(access modifier)除了可以应用于类成员外,在Java和C#中还能应用于整个类.public类自然是公开的,而缺省的类在Java 和C#中分别仅对同一package和assembly开放." 逗号不觉有异:"这有什么讲究吗?" &q

冒号和他的学生们(连载25)——软件应变

25.软件应变 潜其心能观天下之理,定其心能应天下之变 --<吕坤·呻吟语> 第七课刚一开堂,冒号就提了一个问题:"如果把一个Java程序中所有的private关键字换成public,请问该程序还能工作吗?" "应该还能工作,除非--此前不能工作."问号小心翼翼地回答. 冒号接着问:"既然如此,何必费事区分它们呢?" 叹号嘴一撇:"当然是为了信息隐藏啰." 冒号步步紧逼:"隐藏什么信息呢?又为什么要隐藏?

冒号和他的学生们(连载24)——对象封装

24.对象封装 阴阳地理两分张,隐者为阴显者阳 --<玉髓经.曜星论> "用广东话说,真是有型有料又有性格啊!"叹号啧啧连声,"这哪里是在设计软件,分明是在设计心仪的对象嘛." "我们可不就是在谈对象设计吗?"冒号笑着反问,"在OOP的世界里,每位程序员都是造物主.保持热情.专注力和审美情趣,说不定哪一天就像希腊神话里的皮格玛利翁一样,雕塑的美女变活了." "哇,那可就美了!"逗号极尽夸张之调.

冒号和他的学生们(连载23)——数据抽象

23.数据抽象 善张网者引其纲,不一一摄万目而后得 --<韩非子·外储说右下> 问号抢着说:"我知道了:过程抽象的结果是函数,数据抽象的结果应该是数据类型." 冒号首肯:"数据类型与数据运算是程序语言的基本要素,除了内建的类型与运算外,程序语言还提供了用户定义(user-defined)的扩展机制,以提高编程者的效率.正如函数是一些基本运算的复合,自定义类型通常是一些基本类型的复合.不过单纯的复合类型并不是真正意义上的数据抽象,我们关注的是抽象数据类型(ADT).