AICon上海|与字节、阿里、腾讯等企业共同探索Agent 时代的落地应用 了解详情
写点什么

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

  • 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:3513813

评论

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

浅析大模型在自然语言处理方面的应用

算AI

人工智能 机器学习 产品 算法 5月月更

Python写实用小工具-实现图片转字符画

okokabcd

Python

Amazon Kinesis Data Streams 实现跨账户应用日志收集

亚马逊云科技 (Amazon Web Services)

日志 Data

云原生平台 Kyma 上创建的 Lambda Function 的技术实现细节介绍

汪子熙

Kubernetes 云原生 SAP Kyma 5月月更

Python爬虫网页元素定位术,就在这篇博客中

梦想橡皮擦

5月月更

【变量规则,HTML 转义,非法导入名称】flask框架总结(三)

恒山其若陋兮

5月月更

抖音日均拦截93%诈骗行为:如何打击互联网诈骗行为

石头IT视角

LabVIEW仪器控制:智能显示屏(数码管显示屏)

不脱发的程序猿

串口通信 工业自动化 LabVIEW仪器控制 数码管显示屏软件 数码管显示屏

Flutter的特别之处

Geek_99967b

SaaS 小程序开发 小程序组件

在黑客马拉松中有什么样的收获?

Geek_99967b

SaaS 黑客松 小程序组件

分布式协议-Paxos

白裤

PAXOS paxos协议 Basic paxos 5月月更

2022 携程提前批大数据一二(oc) 面经

大数据梦想家

大数据 面经分享

过去一年对我帮助最大的三本书

大数据梦想家

个人成长 程序人生 读书总结

LabVIEW仪器控制:智能直流电源(科睿源KA3003)

不脱发的程序猿

串口通信 工业自动化 直流电源控制软件 LabVIEW仪器控制

大厂裁员登上热搜,谈谈我的3点认知

大数据梦想家

大数据 个人成长 程序人生 裁员

Kafka 核心知识点灵魂 16 问

大数据梦想家

大数据 kafka 八股文

我的编程学习经历

留乘船

学习

解放双手!推荐一款 GitHub 星标 8.2k+的命令行软件管理器,非常酷炫!

沉默王二

GitHub

模板化的封装,降低业务代码开发

Java 架构 业务

大厂员工过劳死,打工人该如何自救?

大数据梦想家

大数据 程序员 程序人生

云原生技术新版图——无服务器(Serverless)数据库

亚马逊云科技 (Amazon Web Services)

数据库 Serverless 云原生

MQTT协议连接阿里云物联网服务器​

DS小龙哥

5月月更

OpenHarmony 3.1 Release版本关键特性解析——构建OpenHarmony窗口框架

OpenHarmony开发者

OpenHarmony OpenHarmony 3.1 Release 窗口框架

融云漫话:没有一个人躲得过“视频会议”

融云 RongCloud

下载Spring4.1.x源码并用IntelliJ IDEA打开

程序员欣宸

Java 5月月更

NFT DeFi基础设施AFKDAO 完成300万美元融资 Hoo Labs等参投

区块链前沿News

Hoo AFKDAO

读万卷书为何无用?

大数据梦想家

程序员 个人成长 读书感悟

使用 Amazon SageMaker 为新用户提供实时音乐推荐

亚马逊云科技 (Amazon Web Services)

Amazon 音乐 实时推送

Android 子线程 UI 操作真的不可以?

vivo互联网技术

android 线程 UI

亚马逊AWS特约评委揭秘FinClip黑客松获胜秘诀

Geek_99967b

SaaS 小程序容器 小程序开发 小程序组件

大数据开发面试之26个Spark高频考点

大数据梦想家

大数据 spark 八股文

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