如果我说模型是一些特征的载体,那这些特征就是抽象出来的。你抓住了需要的特征,凸显出来,忽略了无关的特征。
那如何抽象呢?
抽象的关键在于你对背景(:一种相对具体的东西)的理解。不同的理解会产生不同的抽象。一篇红楼梦,各个学家看出来的主旨是不同的。这是由于红楼梦写的太广,“封建社会百科全书”,抽象范围很大。然而在一个非常具体的背景下,你的抽象会被限制在很小的范围内,甚至只存在唯一抽象。艺术家能够根据自己对身边现实的某些事情的个人理解,把心中抽象出来的东西,用载体(音乐,画画等)表达出来,比如抽象派画家常干这事。面向对象里常常将重复的模式提取出来,简化编程,使得人发挥更大的创造性。
再来说老师的例子:老师说的抽象“理解-区分-命名-表达”,是一种在软件设计领域里指导程序员分析问题需求的方法论。这个概念也是老师根据自己的具体经验理解所抽象出来的。也就是说这个行动流程在软件设计内是不变的。“理解-区分-命名-表达”流程概念的提出刚好验证了 {理解-->区分---->命名---->表达} 这几个过程。把变化的东西给剔除了,留下了不变的核心流程,这也是一种区分,最后还把不变的东西表达出来,造福学生。当然这个区分你可以用来强调不同,比如对于用户的需求不能混为一谈,这个时候就要用显微镜去细化需求。
但我更喜欢去用望远镜去抽取相似性,因为这种相似性的东西,可以广泛运用,就如同数学理论一样,可以跨学科运用。下面说一说我如何提取背后的相似性本质。
-
首先你得具有特征识别的能力,你能从一幅图像里面发现哪些重要的信息?小孩子和大人看到的信息肯定不同,专业人士和业余人士看到的也不同。
-
通过大量的观察和思考,你可能会发现这些特征背后有某些相似性主导着,这个相似性是可以根据不同环境背景演化出各种形态,这就是比较本质的东西了。如果你对背景后面的背景还有更深入的提取,那又是更高级的抽象,层次更高了,就像《全球通史》这本书一样,高屋建瓴,可见作者对细节的观察和驾驭能力。
-
那你怎么抽象出事物的本质呢?重点来了,这个就要看问题和事物所在的背景,背景限定了抽象的方向,你得分析哪些东西随环境变化,而哪些东西在变化的环境里面不变。把这些不变的提取出来,你的抽象就完成了!
这里需要有发散思维和驾驭细节能力,因为你的大脑临时工作空间只有7+-2个,过多的细节会把你搞晕。
(在工程领域驾驭细节的常用方法:封装,在学习领域驾驭细节也有类似的降维技巧),
以上完全是个人见解,主要动机是为了练习语言表达,如果有任何批判性观点,可以一起探讨,最好举出例子,因为抽象的东西没有具体化是无法理解的,并且我不能保证我能将你的思想观点具体化理解。