漫谈架构2

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

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

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

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

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

何为相?

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

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

那究竟什么才是相?

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

为何需要这个作用?

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

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

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

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

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

关于抽象

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

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

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

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

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

时间: 2024-11-12 06:02:51

漫谈架构2的相关文章

漫谈架构读书笔记

漫谈架构阅读笔记 阅读了漫谈架构这本书后,感受颇深.在此书中,文章书写简单易读,并没有过多的专业词汇,其中还不乏举出了许多生动有趣的例子给人以印象深刻,我认为,此书写的确实不错,值得阅读. 首先关于什么是架构?结合文章和最近所学我认为架构就是软件的框架,软件在设计好的框架中生产运行发展与维护,联系文章世间万物皆有框架,从最早的木头到桌子椅子,做成这一事物所依赖的标准原则便是架构.人的出行时做火车还是汽车还是飞机取决于要去的地方与所需的其他要求,每个交通工具有自己的特点,其相互运行却互不打扰,是架

《漫谈架构》读后感——软件架构师如何工作

看了漫谈架构,首先理解了什么是架构和为什么会产生架构.架构实际上就是指人们根据自己对世界的认识,为解决某个问题,主动地.有目的地去识别问题,并进行分解.合并,解决这个问题的实践活动.架构实际上解决的是人的问题. 什么是软件架构?软件因为流量增大而分拆成不同的运行单元,在不同的机器上部署所形成的架构,属于软件架构.每个运行单元为了让不同角色的人,比如前端,业务,数据存储等能够并行工作,所分成的代码架构,也属于软件架构. 软件架构师是如何工作的?首先软件架构师要找到真正的问题,找到真正的问题,那么问

漫谈架构3

按照之前架构的定义,做好架构首先需要做的就是识别出需要解决的问题.一般来说,如果把真正的问题找到,那么问题就已经解决了80%了.这个能力基本上就决定了架构师的水平. 那么面对问题有哪些困难呢? 我们先看一则笑话.女主人公:老公,把袋子里的土豆切一半下锅.结果老公是把袋子里的每个土豆都削了一半,然后下锅. 当然很多人会说,这个是沟通问题,然后一笑了之.其实,出现这个现象是由于我们大部分时候过于关注解决问题,急于完成自己的工作,而不关心“真正的问题是什么”而造成的.当我们去解决一个问题的时候,一定要

漫谈架构师之路的修仙之法

从小有一个武侠梦,长大从事了IT,空闲时间看了很多修仙小说.就萌生了一个想法:把IT之路和修仙之路联系到一起. 于是参照<凡人修仙传>的各个修仙阶段,对比IT之路进行了对照,才有了这篇文章.无图无真相. 大图太大,不易看清楚,下面分阶段展示一下: 1.初入书院 说明: 1.1 入门 人的精力有限,总的选择一门语言入门 1.2 练气 熟悉计算机,网络的流程 1.3 深入学习一门语言 2.开启修仙之旅 2.1 结丹 SSM常用框架要熟练使用 2.2  元婴 spring boot /spring

王概凯-架构漫谈之从架构的角度看如何写好代码

本文是漫谈架构专栏的第八篇,作者 Kevin 举例介绍了如何写好代码.当我们有了好的架构,那就需要考虑如何将架构落地,而这个时候,代码就显得无比重要了!千万不要让代码成为架构扩展的瓶颈.文中作者提到了代码架构,细细品味吧. 在第六章中,我们得出一个结论,软件架构实际上包括了:代码架构,以及承载代码运行的硬件部署架构.实际上,硬件部署架构最终还是由代码的架构来决定.因为代码架构不合理,是无法把一个运行单元分拆出多个来的,那么硬件架构能分拆的就非常的有限,整个系统最终很难长的更大. 所以我们经常会听

王概凯-架构漫谈之你理清技术、业务和架构之间的关系了吗

本文是漫谈架构专栏的第九篇,作者 Kevin 以钻木取火为切入点,深入介绍了技术.业务和架构之间的关系.正如作者所说,技术总是在人类解决对业务的要求不断提高的情况下产生,目的也是为了获取更大更好的利益. 某天和朋友吃饭正好聊到这个话题.作为架构师或者做技术的人,在开发软件时, 我们基本上就是在扮演上帝的角色:我们不但要创建出一个个的程序,还要让这些程序能够脱离我们在硬件上独立运行,以便为这个程序所服务的群体提供服务.当这个程序出现问题甚至 bug 的时候,我们还得扮演牧师的角色去修复这些问题.这

什么是架构?

架构漫谈是由资深架构师王概凯Kevin执笔的系列专栏,专栏将会以Kevin的架构经验为基础,逐步讨论什么是架构.怎样做好架构.软件架构如何落地.如何写好程序等问题.专栏的目的是希望能抛出一些观点,并引发大家思考,如果你有感触或者新的感悟,欢迎联系专栏负责人Gary(微信greenguolei)深聊. 本文是漫谈架构专栏的第一篇,作者将会通过类比的方式来介绍什么是架构以及为什么会产生架构. 缘起 一直以来,在软件行业,对于什么是架构,都有很多的争论,每个人都有自己的理解.甚至于很多架构师一说架构,

linux+jre+apache+mysql+tomcat调优

一.不再为Apache进程淤积.耗尽内存而困扰 0. /etc/my.cnf,在mysqld那一段加上如下一行: log-slow-queries=queries-slow.log 重启MySQL 酌情过上一段时间,执行mysqldumpslow命令,或直接查看datadir/queries-slow.log,从中找出执行超时的SQL语句.其中datadir是MySQL所有数据库的存放路径. 根据上一步找出的SQL语句的内容,找到相应的数据表和脚本文件,查看超时原因所在.可能的原因有:数据量确实

什么是框架

架构漫谈是由资深架构师王概凯Kevin执笔的系列专栏,专栏将会以Kevin的架构经验为基础,逐步讨论什么是架构.怎样做好架构.软件架构如何落地.如何写好程序等问题.专栏的目的是希望能抛出一些观点,并引发大家思考,如果你有感触或者新的感悟,欢迎联系专栏负责人Gary(微信greenguolei)深聊. 本文是漫谈架构专栏的第一篇,作者将会通过类比的方式来介绍什么是架构以及为什么会产生架构. 缘起 一直以来,在软件行业,对于什么是架构,都有很多的争论,每个人都有自己的理解.甚至于很多架构师一说架构,