写点什么

架构漫谈(二):认识概念是理解架构的基础

  • 2016-02-25
  • 本文字数:2766 字

    阅读完需:约 9 分钟

架构漫谈是由资深架构师王概凯 Kevin 执笔的系列专栏,专栏将会以 Kevin 的架构经验为基础,逐步讨论什么是架构、怎样做好架构、软件架构如何落地、如何写好程序等问题。专栏的目的是希望能抛出一些观点,并引发大家思考,如果你有感触或者新的感悟,欢迎联系专栏负责人 Gary(微信 greenguolei)深聊。

本文是漫谈架构专栏的第二篇,作者通过几个例子,讨论了一下认识概念的误区,如何有效的去认识概念,明白概念背后的含义,以及如何利用对概念的理解,快速的进行学习。

前一篇文章中,我们讨论了什么是架构。事实上,这些基础概念对于做架构是非常重要的,大部分人对于每天都习以为常的概念,都自以为明白了,但实际上都是下意识的,并不是主动的认识。比如说“什么是桌子?”,做培训的时候,我经常拿这个例子来问大家,回答千奇百怪。这实际上就导致了做架构的时候,不同角色的沟通会出很多问题,那么结果也就可想而知了。

如前一篇所说,架构实际上解决的是人的问题,而概念是人认识这个世界的基础,自然概念的认识就非常的重要。这篇文章尝试讨论一下,如何去认识概念。当然这篇不是语言学的文章,我这里所讨论的,和语言学可能不太一样,如果大家对语言学感兴趣,也可以去参考一下。

首先我要先声明一下,这一系列的文章,都是以人的认识为主体去讨论的,解决的都是人的问题,任何没有具体申明的部分,都隐含这一背景,以免大家误解。

概念也属于人认识这个世界并用来沟通的手段,包括“概念”这个概念,也是一样的。在古代,不叫“概念”,称之为“名相”。

何为相?

一般我们认为:看到一个东西,比方说杯子,“杯子”就是一个名字,指代的看到的东西就是相,就是事物的相状。我们一听到“杯子”这个词,脑海里就会浮现出一个杯子的形象。而“杯子”这个词,是用来指代的是这个相状的,叫做名。合起来就叫做“名相”。

可是当我们把杯子打碎了的时候,我们还会称这个碎了的东西叫杯子吗? 肯定不会,一般会叫“碎瓦片”,如果我们把碎瓦片磨碎了呢,名字又变了,叫做“沙子”。这就奇怪了,同样一个东西,怎么会变出这么多的名字出来?

那究竟什么才是相?

实际上“相“表达的不是一个具体的东西,如上面所提的一个瓷器杯子,并不是指这个瓷器,而是这个瓷器所起的一个作用:一手可握,敞口(一般不超过底的大小,太大口就叫碗了),并且内部有一个空间可乘东西的这么一个作用。并不是指这个瓷器本身。这也是为什么我们从电视上看到一个人拿杯子的时候,我们知道这个是杯子。但是实际上我们看到的都是光影而已。所以说相实际上代表的是这个作用,并不是具体的某个东西,而名是用来标识这个作用的,用来交流的。

为何需要这个作用?

这个作用其实是为了解决“人需要一个可单手持握,但是希望避免直接接触所盛物体”这个问题。

所以说,每个概念实际上所解决的,还是人遇到的某个特定的问题,我们把解决问题的解决方案,给定了一个名字,这个名字就是对应的某个特定的概念。对于概念这个词本身,为了统一指代这些名字,我们称起这类作用的名字称为“概念”。我们上次讨论的“架构”也是是同样的一个特定概念,这里不再详述。同样,什么是“建筑”? “建筑”实际上解决的就是“人需要独占的空间,并还能够比较流畅的和外部世界沟通”的问题。

再拿前面的“桌子”来举例,什么叫“桌子”? 很多人回答,四条腿,或者说有腿,有一个平面,等等,柜子不也是这样吗?为什么我们看到柜子,不会认为是桌子呢?即使我们放在柜子上吃饭,我们看到仍然会问,为什么在柜子上吃饭? 不会叫桌子。如果明白了上面的道理,就很简单了,桌子实际上是为了解决人坐在椅子上,手还能够支撑在一个平面上继续开展活动的问题,一般会和椅子配对出现。坐在椅子上工作,对着柜子有一个很严重的问题–不知道大家试过没有–就是腿无法展开的问题。当这么坐着超过半小时就知道是什么痛苦了。所以桌子的平面下方一定会有一个足够容纳膝部和小腿的空间,来解决这个问题。解决了这些问题的装置,才能称之为桌子。

类似也可以定义出来椅子,由此可见,桌子和椅子的高度也是有限定的,都是是解决人的问题,要符合人的身高:椅子的高度和深度,必须符合小腿和大腿的长度;椅背的高度要配合脊柱的高度;桌子的高度要配合小腿和脊柱的高度之和;成人和小孩的自然也就有区别了。这又变成生理学了,事实上要做好桌子和椅子,必须要理解人的生理结构,才能正确的理解桌子和椅子的概念。

同理,为何我们可以在不同的语言间进行翻译,是因为虽然语言不同,但是人类所面临的的问题是一样的,所使用的名不同而已。对于不同的动物之间的翻译也是同理。

关于抽象

在讨论桌子这个概念的过程中,很多人会提出抽象这个概念,认为定义桌子实际上就是抽象的一个过程。这里,我觉得有必要要澄清一下抽象这个概念,我认为这个里面有误解。我注意到,在做架构师的群体中,不谈抽象好像就不是一个合格的架构师。

抽象这个词代表的含义,实际上是把不同的概念的相似的部分合并在一起,形成一个新的概念。这个里面问题很多:首先“相似的部分”在不同的人看来,并不一定那么相似;其次,抽象之后形成的是一个新的概念,和原来那个概念并不一样,所解决的问题也不一样。所以我们不能用抽象来定义一个事物,抽象实际上是一个分类的过程,完全是另一码事。再举一个例子,杯子和容器,很多人认为容器是杯子的抽象,但是实际上杯子是杯子,容器是容器,它们所解决的问题是不一样的。当我们需要解决装东西的问题的时候,会说容器;当我们需要解决单手持握要装东西的时候,会说要一个杯子。

回过头来,根据架构的定义,要做好架构所首先必须具备的能力,就是能够正确的认识概念,能够发现概念背后所代表的问题,进而才能够认识目标领域所需要解决的问题,这样才能够为做好架构打好基础。事实上,这一能力,在任何一个领域都是适用的,比如我们如果想要学习一项新的技术,如Hibernate、Spring、PhotoShop、WWW、Internet 等等,如果知道这些概念所要解决的问题,学习这些新的技术或者概念就会如虎添翼,快速的入手;学习一个新的领域,也会非常的快速有效;使用这些概念来解释问题,甚至发明新的概念都是很容易的事。为什么强调这个呢,因为做架构的时候,很多时候都是在一个新的领域解决问题,必须要快速进入并掌握这个领域,然后才能够正确的解决问题。

以上通过几个例子,讨论了一下认识概念的误区,如何有效的去认识概念,明白概念背后的含义,以及如何利用对概念的理解,快速的进行学习。掌握了这些原则,会有利于帮助我们在架构阶段,快速的识别和定位问题。

下一篇我们会来讨论一下,如何快速的定位和识别问题,这是架构的起始。


感谢郭蕾对本文的策划和审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-02-25 16:3513570

评论

发布
暂无评论
发现更多内容

快速认识什么是:Docker

不在线第一只蜗牛

Docker 运维 容器化

软件测试/测试开发/人工智能丨ChatGPT为软件测试带来的变化

测试人

人工智能 软件测试

PPT下载 | DataOps +大模型促进数据工程创新

数造万象

从0到1,手把手带你开发截图工具ScreenCap------001实现基本的截图功能

快乐非自愿限量之名

c++ 项目 qt 截图

燃!中国电信天翼云黑科技为智慧海关建设插上云翅膀!

天翼云开发者社区

人工智能 云计算 海关科技装备博览会

巧用静默,原来真的可以告警零误报!

观测云

监控告警 静默规则

世界第一!

天翼云开发者社区

云计算 性能测试

WorkPlus企业数字化转型的超级APP,All in one完美解决方案

WorkPlus

这款 IDEA 插件太好用了,堪称日志管理神器!

是月月啊2023

ieda

Rusty Tuesday :Rust 基金会一行来访 Databend Labs,共话技术创新!

Databend

亚信安慧AntDB数据库中级培训ACP上线,中国移动总部首批客户认证通过

亚信AntDB数据库

数据库 AntDB AntDB数据库

IT外包驻场加速企业IT创新

Ogcloud

外包 IT 外包公司 外包项目 IT 运维

用html+css+js做canvas烟花模拟网页动画代码

小齐写代码

软件测试/测试开发/人工智能丨利用ChatGPT编写测试用例

测试人

类似MS Project的开源项目工具有哪些?15款开源项目管理工具对比

爱吃小舅的鱼

开源 项目管理 项目管理系统

开发体育直播系统如何通过结合赛事数据提升平台价值

软件开发-梦幻运营部

搭乘“低代码”快车,引领食品行业数字化转型全新升级

优秀

低代码 数字化转型

奇点云2023数智科技大会来了,“双12”直播见!

奇点云

操作系统 发布会 奇点云

喜讯!云起无垠上榜《成长型初创企业推荐10强》

云起无垠

软件测试/测试开发丨软件测试中的人工智能

测试人

人工智能 软件测试

手把手系列!用 Milvus 和 Python 搭建电影推荐系统

Zilliz

Python 推荐系统 Milvus 电影推荐系统

HashiCorp白皮书:平台团队最佳实践

杨振涛

DevOps 平台 平台工程 内部开发者平台 PECommunity

平台工程动态 Monthly News 2023-11

杨振涛

平台 平台工程 平台工程社区 PECommunity 内部开发者社区

CAS原理,看这一篇就够了!

是月月啊2023

CAS Java 面试题

SwitchResX for Mac(屏幕分辨率修改工具) v4.13.2完美激活版

mac

苹果mac Windows软件 switchresx

特权账号管理的误区

尚思卓越

运维 数据安全 网安

跨境代买淘宝系统,跨境代采系统,淘宝代购系统,淘宝代购集运系统

tbapi

淘宝代购系统 淘宝代购 淘宝代购集运系统 淘宝代采系统

.NET中有多少种定时器

快乐非自愿限量之名

.net 开发者 定时器

麒麟云K8s调度优化之错误重调度

麒麟云

Kubernetes 云原生 容器云 银河麒麟 银河麒麟云原生操作系统

搜狐智能媒体基于腾讯云大数据 EMR 的降本增效之路

腾讯云大数据

EMR

不同类型的IT外包服务分别适合什么企业?

Ogcloud

外包 IT 外包公司 外包项目 IT 运维

架构漫谈(二):认识概念是理解架构的基础_架构_王概凯_InfoQ精选文章