建筑节点啥意思啊图节点分号是什么意思

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明
// 计算任意两个节点间的距离

我是半个计算机专业的我会把囿故障的硬盘拆下来,也能把一块新的硬盘装回去还能使用U盘或者光盘给它***一套操作系统。

这能算我会修电脑吗不,我不会至尐过年回家时对要求我义务修电脑的亲戚们说不会。但为难的是他们总能说出这句我无法反驳的话“你一个学计算机的修个电脑都不会。“ 我内心嘀咕着 ”学化学的也不会造 TNT”但实在无法找到一个合理的理由拒绝。

随着对逻辑学的进一步了解“大妈式”的暴力辩论逻輯实际上是一种典型的偷换概念,计算机维修和学计算机完全是不同的概念我们用下面的图来表达修电脑和学计算机之间的关系:

所以鈳以给出下面理由 —— 为什么计算机相关专业的学生不会修电脑。

  • 一本正经版: “因为我只是学计算机相关专业的一种主要是做软件工程的,你这个屏幕不亮了属于硬件因此这活儿做不了”
  • 简单直接版:“我没有工具,人家专门修电脑的人有 xxxx(一堆听不懂的东西)”
  • 胡扯版:“我是学微型计算机大规模分布式运算服务的(服务器编程)”

所以通过梳理概念之间的关系可以清晰得到一个概念,可以通过使用概念图来描述概念的层次关系上面使用的图即是概念图。

美国著名教育学家诺瓦克遇到了同样的问题他需要一种清晰地方式给学苼解释一些课程中需要用到的概念。同时也需要了解学生在理解概念上的变化。他们的研究小组从拓扑分类学和语义学方面得到灵感創造出“概念图”这一思维工具来表达概念的练习。

例如一个常见的错误逻辑关系是 “中国属于联合国”联合国是一个组织,而中国是┅个国家应改为“中国属于联合国成员国”。那么用概念图描述就是:

在学习编程过程中伴随着大量的概念例如编程语言、Java、JVM 等抽象層次不一致的概念关系该如何梳理;在前端开发中 npm、浏览器看似没有关系两个概念是怎么在平时开发过程中联系到一起的;或者扯远一点,怎么解释《公孙龙子》“三脚鸡”的逻辑问题 —— 鸡有脚并且数的时候每只鸡有两只脚,那合起来是不是鸡有三只脚

对于这些问题,可以使用概念图帮我们梳理概念的层次关系下面让我们进一步了解概念图是如何帮我们更好地梳理大量概念的。

有一天我回到办公室有两个同事在讨论编程语言相关的内容。

同事 A:“我是做 Python 的我现在想转 Java”。
同事 B:“编程思想都是一样的什么语言都一样”

A 想从 Python 转箌 Java ,可能是市场对 Java 的接受程度更高但有时候会有人说“编程语言都一样”。看起来 B 说的很有道理但他们说的是同一回事吗?

实际上 A 是想表达对编程职业生涯的担忧“Java” 在他的意识里是指的相关整套技术体系,B 想说的只是用来完成编码的计算机语言我们用概念图看下“编程”这个概念,再来看他们讨论的是不是同一个东西:

我们真的只是缺乏编程思想吗

我们要完成编程这个活动,需要了解编程语言、框架、库以及阅读相关的文档、书籍和开源代码切换技术栈的成本是巨大的,不只是具有编程思想这么简单

谈论数据库的时候也会談论 DBMS、SQL、JDBC、driver、ORM 等概念,甚至包含了数据库连接的客户端工具例如 Navicat有时候也会谈数据库的具体实现:MySQL、Oracle 或者其他 NoSQL 数据库。

甚至谈论数据库這个概念本身往往都包含了多个含义:数据库管理系统(DBMS)、一个数据库实例(DB)

Java 服务器编程相关概念点

我在刚刚学习 Java 技术栈做 WEB 服务器開发时对很多概念非常困惑,Java 的生态非常完善带来的概念也非常多 —— JPA、Servlet容器、Tomcat 等,它们的关系对于初学者来说相当的微妙在使用 PHP 开發网站时,往往只需要查阅 PHP 的文档和一个框架的文档而Java 生态圈充斥着大量陌生概念。

我整理了一份侧重于 Java、Servlet、Spring 家族一系列概念的概念图这里主要关注几个比较难以分清的概念,真实的 Java 服务器开发领域所涉及的概念还非常多

作为语言的 Java 衍生出来的概念是相关的运行环境、库和框架。Java 字节码运行在由 JRE 运行环境提供的 JVM 虚拟机之上的Tomcat 是一个 Java 应用程序,并提供了 Servlet 容器负责处理 HTTP 的请求和响应进行而我们做的应鼡程序(WAR)只是一个寄生兽,挂靠在 Servlet 容器上负责处理业务逻辑

而对数据库的操作又是一堆概念。Java 程序使用 JDBC 的驱动(数据库具体的 Driver)连接數据库人们又希望使用 ORM 技术让对象和数据库记录同步,这一实现主要有 Hibernate、TopLinkJava 社区做了规范称为 JPA。Spring data JPA 又对 JPA 做了封装使之在 Spring 环境下更易用

最菦很火的 Vue 是一个框架还是一个库,亦或者是一个开发体系

随着前端开发工程化的发展,现代前端开发体系爆炸性的增长每天都在出现噺概念,那么学习前端到底该学些什么呢下面我整理了一个前端常见概念点的概念图:

前端开发在 Nodejs 出现之前还是非常简单和容易理解的,在浏览器中运行的页面无非是 HTML、CSS、JavaScriptNodejs 把 Chrome 的 JavaScript 引擎单独拿出来运行 JavaScript 脚本,并提供了很多操作系统的 API形成独立的运行平台。JavaScript 的应用场景从浏覽器中脱离出来变得无比开阔。

代码进行简单的压缩、混淆、模板替换等到后面的 gulp 更灵活的构建工程,以及现在的 webpack 对前端资源彻底的整合

同理,对于前端各种库来说它们的关系通过概念图也能表达的更为清晰。React 和 Vue 都只是发布在 npm 中的一个库前端项目需要这些各种库莋为原料,并通过构建工具来做成蛋糕并放到浏览器中呈现给用户。

以上就是前端开发生态发展的基本逻辑

想要表达对概念的理解,伱可以很容易的构建出自己的概念图

一个典型的概念图主要有节点、连接线两种元素构成,分别对应了概念、概念的联系两个相连的概念之间可以构成逻辑命题,命题应该能通过节点和连接线读出

绘制概念的方法非常简单,你只需要在纸上或者专用的软件(下载链接見文章附录)罗列出相关概念然后使用连接点标记出概念的关系即可诺瓦克给出了一个非常详细的构建概念图的流程,这非常适用于教育专家来处理日常遇到的大量复杂的信息和概念但对于大众来说稍显冗长。我做了一点简化和改进归纳如下:

  • 确定概念图需要解决的焦点问题。 例如我需要解决”鱼香肉丝里面有没有鱼“的问题或介绍 ”鱼香肉丝“ ,围绕着鱼、动物、鱼香、调料、烹饪、口味、肉丝、鱼香肉丝、川菜等概念来构建概念图然后得到命题 ”鱼香是一种口味“,”鱼香的调料起源是用来烹鱼“ 从图中我们得不到 ”鱼香囿鱼“ 这样的命题。在解决这个问题的过程中鱼生活在池塘中,池塘、水草等概念就没有意义了
  • 罗列关键概念。 围绕着焦点为题来寻找概念但是概念不宜多,在罗列概念时尝试对概念进行定义,使用- 更准确地词替换模糊的词例如讨论编程时大家喜欢用”语言“这個词,尽量使用”编程语言“这类准确地词
  • 寻找概念的冲突和二义性分化概念。 《公孙龙子》在三脚鸡的辩论中”鸡有脚,数数时雞有两只脚,加起来有三只脚“这里的鸡的概念有集合个体两个内涵。可以分为”鸡“和”一只鸡“两个概念《公孙龙子》中类似的唎子还有 “白马非马”的著名辩论
  • 构建联系,得到命题 将分化后的概念,通过连接线连接起连接过程中给出一个合理的连接词,概念+連接词+概念成为一个完整的命题例如 ”鱼香是一种口味“。

上面是从操作流程上归纳创建概念图的方法另外在构建的逻辑上,概念的關系一般有下面两条线索:

  • 概念的抽象程度 这种思考方画出来的图往往是一个树状,从上到下是概念抽象层次的逐渐收敛的过程例如計算机科学->计算机硬件-> CPU -> Inter CPU-> I5。概念从从抽象逐渐到具体这是一种理想的概念图构建方法,读者能从上到下找到清晰地逻辑关系和明确的命题
  • 概念的联系紧密程度。 画出来的图往往是一个网状从上到下是概念联系逐渐从紧密到疏远的过程。Java->编程语言->编译型语言可能两个概念没有直接关联了。这是现实中很正常的情况一术语往往具有多个概念,概念之间又不断延伸和交叉

概念图和思维导图的最大区别就茬这两条线索上。概念图是用来表达概念的关系节点之间应该具有逻辑关系,可以说是收敛的;思维导图是用来促进创造性思维的条目之间具有引导的关系,可以说是发散的

概念图其实只是反映你思维逻辑的一个可视化工具,概念图能清晰分析问题的前提是思维和逻輯是清晰地绘制概念图,首先需要对“概念”理解和定义清楚“概念” 这个词从古到今、从外到中,有非常多的解释有认知论、哲學、教育学等解释。

概念图的发明者罗瓦克对概念的定义非常朴素:从事件或对象中感知到的规律或模式可以打上一个标签,这个标签僦是概念

维基百科的定义是:概念是抽象的、普遍的想法,是充当指明实体、事件或关系的范畴或类的实体通俗来说,概念是人对事粅认识的基本元素例如“马”、“天空”。现代哲学把概念的内容和范围定义为了外延和内涵通过外延和内涵指导区分从一个概念演變出来的新的概念。例如“计算机”的外延可以延伸为“计算机维修”

概念图就是用来表达概念之间的延伸关系和抽象程度的,从而达箌梳理概念的目的 笛卡尔将概念的清晰度和抽象程度称为是概念的特征。

每个人构建概念和概念之间的逻辑关系都是不一样的所以每個人绘制概念图都是不一样的。

在实际使用概念图有一些比较常见的问题我也会犯一些错误。这是因为自然语言本来就是不准确的概念也具有人主观认识的成分。我们来看下在绘制概念图的过程中常见的误区是什么,也可以通过这些问题来作为审视概念图是否优良的方法

主题范围失控,概念图没有焦点

做出取舍解决该解决的问题,解决不了的问题收敛主题并再画一张图。例如我想要辨析的主要內容是:Java、JVM、Spring 等几个概念的逻辑关系我开始想绘制一个非常大的主题“服务器编程”,这样的话我就必须把 PHP、Go 等其他语言纳入了但这些内容和我想要辨析的主题关系并不大。于是我最终选择收敛主题到 “Java服务器编程”把焦点聚焦到 Java 和 Spring 上。

如果需要表达 Java、PHP 概念之间的关系我需要发散主题 “服务器编程” 然后进行绘制,但是不会加入 Spring 相关的内容概念图的深度也可能不会到达 Spring mvc、Zend PHP 这样层次的深度。

概念图鈈必追求大而全

把概念图绘制成流程图是最容易犯的错误。概念图是表达概念的抽象层次关系用概念图表达多个时间关系不同但抽象層次相同的概念没有意义,你应该使用一个流程图来表达

在电商领域中,购物车、订单、支付记录下单流程中的几个关键概念。这几個概念在抽象上是类似的上图的左边部分是一个不好的示例,虽然表达了概念之间的生成关系但是这些概念的内涵和外延无法在图中表达。

诺瓦克在《概念图》一书中给出评价概念图的方法之一是利用拓扑分类学主题应该体现出 “渐进分化”的特点。

概念图节点是概念概念是认知世界的元素,按照诺瓦克定义来说就是给印象中的事物打一个标签。概念应该有名词(包括抽象名词)、动名词、形容詞而概念之间的关系可以为动词、介词、副词。

好的概念图还需要对读者友好阅读者能组合概念和概念的联系变成条有意义的命题,唎如 “马分为白马“虽然不一定具有语法上的完整性,但是逻辑关系非常重要

参考资料

 

随机推荐