前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >"模型-关系"思考法

"模型-关系"思考法

作者头像
一个会写诗的程序员
发布2022-01-07 17:52:05
发布2022-01-07 17:52:05
5790
举报

万事万物都是相互联系的

  • 万物即“模型”
  • 联系即“关系”

比能力重要一万倍的,是你的底层思维逻辑。

模型是对真实世界的一种主观抽象描写,代表正规化的思考。模型通过严谨的定义和数学逻辑关系,允许我们做精致的推演,从而获得精确交流、解释、判断、设计、预测、探索和采取行动的能力。而选择什么样的模型、选择一个还是几个模型,则是智慧。

模型给我们带来了什么?

  • Models help us to better organize information
  • Models improve our abilities to make accurate forecasts. They help us make better decisions and adopt more effective strategies.
  • 帮助我们理解世界的运作方式
  • 更理性的决定、更清晰的决策、更创新的设计
  • 可以帮助我们更好的收集、理解数据
  • 掌握模型,就可以拥有模型的七大用途(推理、解释、设计、沟通、行动、预测、探索),更好地应对这个世界。

怎样理解一个模型?

五步法

  • 确定模型中的各种元素(element,part,component)
  • 明确这些元素(部分)之间的关系(architecture,structure,flow)
  • 找出输入量、中间变量、输出量(结果)
  • 理解可能出现的结果(平衡态【Equilibrium】、循环态【Cycling】、随机态【Random】、混沌态【Complex】)
  • 了解模型的适用范围以及在其他领域当中的应用(Fertility)

"模型-关系"思考法

开普勒的多面体宇宙模型

概述:唯物主义哲学

万事万物都是相互联系的

  • 万物即”模型“
  • 联系即”关系“

什么是模型(Model)?

In general, a model is an informative representation of an object, person or system in economics, political science, business, and sociology,etc.

我们讨论的模型将来自各种学科,例如数学、物理学、化学、计算机科学、经济学、社会学、生物学、政治学、语言学、法律等等。

模型是对真实世界的一种主观抽象描写,代表正规化的思考。模型通过严谨的定义和数学逻辑关系,允许我们做精致的推演,从而获得精确交流、解释、判断、设计、预测、探索和采取行动的能力。而选择什么样的模型、选择一个还是几个模型,则是智慧。

人类认知中的模型

Physical model
  • Model (art), a person posing for an artist, e.g. a 15th-century criminal representing the biblical Judas in Leonardo da Vinci's painting The Last Supper
  • Model (person), a person who serves as a template for others to copy, often in the context of advertising commercial products
  • Model (product), a particular design of a product offered by its manufacturer
  • Car model, a particular design of vehicle sold by a manufacturer
  • Model organism (often shortened to model), a non-human species that is studied to understand biological phenomena present in other related organisms, e.g. a guinea pig starved of vitamin C to study scurvy, an experiment that would be immoral to conduct on a man
  • Model (mimicry), a species that is mimicked by another species
Conceptual model
Computer science,Von Neumann model
Mathematical model

数学模型可以是一个或一组代数方程、微分方程、差分方程、积分方程或统计学方程,也可以是它们的某种适当的组合,通过这些方程定量地或定性地描述系统各变量之间的相互关系或因果关系。除了用方程描述的数学模型外,还有用其他数学工具,如代数、几何、拓扑、数理逻辑等描述的模型。需要指出的是,数学模型描述的是系统的行为和特征而不是系统的实际结构。

Economic model

A theoretical construct representing economic processes。

Statistical model

A mathematical model that usually specifies the relationship between one or more random variables and other non-random variables

Model (CGI)

A mathematical representation of any surface of an object in three dimensions via specialized software

Model (logic)

A set along with a collection of finitary(有限性的) operations, and relations that are defined on it, satisfying a given collection of axioms(公理)。

Model (MVC)

The central component of the model–view–controller software design pattern

Standard model (disambiguation)
Medical model

A proposed "set of procedures in which all doctors are trained"

模型给我们带来了什么?

  • Models help us to better organize information
  • Models improve our abilities to make accurate forecasts. They help us make better decisions and adopt more effective strategies.
  • 帮助我们理解世界的运作方式
  • 更理性的决定、更清晰的决策、更创新的设计
  • 可以帮助我们更好的收集、理解数据
  • 掌握模型,就可以拥有模型的七大用途(推理、解释、设计、沟通、行动、预测、探索),更好地应对这个世界。

怎样理解一个模型?

五步法

  • 确定模型中的各种元素(element,part,component)
  • 明确这些元素(部分)之间的关系(architecture,structure,flow)
  • 找出输入量、中间变量、输出量(结果)
  • 理解可能出现的结果(平衡态【Equilibrium】、循环态【Cycling】、随机态【Random】、混沌态【Complex】)
  • 了解模型的适用范围以及在其他领域当中的应用(Fertility)

怎么建立思维模型?

横向宽度

  • 第一类:理解物理世界的基础学科,如物理学、数学、化学等。越是面对过去没有遇到的问题和面向未来的问题,越需要从底层的基础原理中找答案和线索。
  • 第二类:理解群体系统规律的学科,如生物学、经济学、社会学等。它们是解释在物质世界基础上产生的生命群体中出现的规律。
  • 第三类:理解复杂系统规律的学科,如复杂性科学、人工智能、哲学等。
  • 第四类:理解精神世界的人文学科,如心理学、美学、宗教、历史等。

纵向深度

  • 有深度的思想就意味着我们不仅能看到问题的具体现象和解决方案,还能看到解决方案背后的更底层的规律;不仅能够理解问题表面的原因,还能洞察原因背后的原理,甚至能看到在一层次思考时是成功有效策略的方法,在另一层次思考时可能反而是负面、有害的策略。
  • 以问题为出发点,研究解决问题的思考方式,知识不是学习的对象,而是解决问题时自己传告或拿来使用的工具。

四类思维模型

  • 第一类:经验技巧思维模型,往往源自个人有限的经验总结,在我们处理具体问题时可以提供思路启发。
  • 第二类:方法流程型的思维模型,往往来自更大样本的归纳提炼,把很多常见问题的解决方案标准化、流程化了。
  • 第三类:学科原理源于经过科学方法验证的规律,是各门学科中科学家们发现的重要的思考解决问题的思维模型。
  • 第四类:哲学视角是人类理性思辨思考问题的方式,指不同学科思考问题最基本的思想。它是从提问和思维方式的层面上找有效策略,学到的是如何思考的程序性知识

关系(Relationship)是什么?

定义

  • 指事物之间相互作用、相互影响的状态。(状态是指对象涉及的过程)
  • 一切皆是映射。映射即关系,关系即函数,函数即范畴,范畴即运动,运动即变化。群、环、域。集合。

关系论

  • 事物的客观因果联系是是人们主观的产物。
  • 函数关系-因果概念
  • “除了逻辑的必然性,任何其他的必然性。例如物理的必然性,都是不存在的。”
  • “在自然界中,既没有原因,也没有结果。”

OOP

  • 从面向过程到面向对象,再到设计模式,架构设计,面向服务,Sass/Pass/Iass等等的思想,各种软件理论思想五花八门,但万变不离其宗——

你要解决一个怎样的问题? 你的问题领域是怎样的? 你的模型(数据结构)是什么? 你的算法是什么? 你对这个世界的本质认知是怎样的? 你的业务领域的逻辑问题,流程是什么? 等等。 Grady Booch:我对OO编程的目标从来就不是复用。相反,对我来说,对象提供了一种处理复杂性的方式。这个问题可以追溯到亚里士多德:您把这个世界视为过程还是对象?在OO兴起运动之前,编程以过程为中心–例如结构化设计方法。然而,系统已经到达了超越其处理能力的复杂性极点。有了对象,我们能够通过提升抽象级别来构建更大的、更复杂的系统–我认为,这才是面向对象编程运动的真正胜利。

  • 5个特性
    • OOP 具有以下五个基本特性:

1.万物皆对象,每一个对象都会存储数据,并且可以对自身执行操作。因此,每一个对象包含两部分:成员变量和成员方法。在成员方法中可以改变成员变量的值。

2.程序是对象的集合,他们通过发送消息来告知彼此所要做的事情,也就是调用相应的成员函数。

3.每一个对象都有自己的由其他对象所构成的存储,也就是说在创建新对象的时候可以在成员变量中使用已存在的对象。

4.每个对象都拥有其类型,每个对象都是某个类的一个实例,每一个类区别于其它类的特性就是可以向它发送什么类型的消息,也就是它定义了哪些成员函数。

5.某一个特定类型的所有对象都可以接受同样的消息。另一种对对象的描述为:对象具有状态(数据,成员变量)、行为(操作,成员方法)和标识(成员名,内存地址)。

面向对象语言其实是对现实生活中的实物的抽象。

每个对象能够接受的请求(消息)由对象的接口所定义,而在程序中必须由满足这些请求的代码,这段代码称之为这个接口的实现。当向某个对象发送消息(请求)时,这个对象便知道该消息的目的(该方法的实现已定义),然后执行相应的代码。

我们经常说一些代码片段是优雅的或美观的,实际上意味着它们更容易被人类有限的思维所处理。

对于程序的复合而言,好的代码是它的表面积要比体积增长的慢。

代码块的“表面积”是是我们复合代码块时所需要的信息(接口API协议定义)。代码块的“体积”就是接口内部的实现逻辑(API背后的实现代码)。

在面向对象编程中,一个理想的对象应该是只暴露它的抽象接口(纯表面, 无体积),其方法则扮演箭头的角色。如果为了理解一个对象如何与其他对象进行复合,当你发现不得不深入挖掘对象的实现之时,此时你所用的编程范式的原本优势就荡然无存了。

FP

  • 在FP中,一切皆是函数,编程的世界是由函数交合创造的世界。
    • 函数式编程语言实现重用的思路很不一样。函数式语言提倡在有限的几种关键数据结构(如list、set、map)上 , 运用函数的组合 ( 高阶函数) 操作,自底向上地来构建世界。
    • OOP喜欢自顶向下架构层层分解(解构),FP喜欢自底向上层层组合(复合)。 而实际上,编程的本质就是次化分解与复合的过程。通过这样的过程,创造一个美妙的逻辑之塔世界。

我们经常说一些代码片段是优雅的或美观的,实际上意味着它们更容易被人类有限的思维所处理。

对于程序的复合而言,好的代码是它的表面积要比体积增长的慢。 代码块的“表面积”是是我们复合代码块时所需要的信息(接口API协议定义)。代码块的“体积”就是接口内部的实现逻辑(API内部的实现代码)。

在OOP中,一个理想的对象应该是只暴露它的抽象接口(纯表面, 无体积),其方法则扮演箭头的角色。如果为了理解一个对象如何与其他对象进行复合,当你发现不得不深入挖掘对象的实现之时,此时你所用的编程范式的原本优势就荡然无存了。

FP通过函数组合来构造其逻辑系统。FP倾向于把软件分解为其需要执行的行为或操作,而且通常采用自底向上的方法。函数式编程也提供了非常强大的对事物进行抽象和组合的能力。

在FP里面,函数是“一类公民”(first-class)。它们可以像1, 2, “hello”,true,对象…… 之类的“值”一样,在任意位置诞生,通过变量,参数和数据结构传递到其它地方,可以在任何位置被调用。

而在OOP中,很多所谓面向对象设计模式(design pattern),都是因为面向对象语言没有first-class function(对应的是多态性),所以导致了每个函数必须被包在一个对象里面(受约束的函数指针)才能传递到其它地方。

  • 编程的世界论
    • 函数式编程的本质是函数的组合,组合的本质是范畴(Category)。

和搞编程的一样,数学家喜欢将问题不断加以抽象从而将本质问题抽取出来加以论证解决,范畴论就是这样一门以抽象的方法来处理数学概念的学科,主要用于研究一些数学结构之间的映射关系(函数)。

在范畴论里,一个范畴(category)由三部分组成:

对象(object). 态射(morphism). 组合(composition)操作符, 范畴的对象 这里的对象可以看成是一类东西,例如数学上的群,环,以及有理数,无理数等都可以归为一个对象。对应到编程语言里,可以理解为一个类型,比如说整型,布尔型等。

态射 态射指的是一种映射关系,简单理解,态射的作用就是把一个对象 A 里的值 a 映射为 另一个对象 B 里的值 b = f(a),这就是映射的概念。

态射的存在反映了对象内部的结构,这是范畴论用来研究对象的主要手法:对象内部的结构特性是通过与别的对象的映射关系反映出来的,动静是相对的,范畴论通过研究映射关系来达到探知对象的内部结构的目的。

组合操作符 组合操作符,用点(.)表示,用于将态射进行组合。组合操作符的作用是将两个态射进行组合,例如,假设存在态射 f: A -> B, g: B -> C, 则 g.f : A -> C.

一个结构要想成为一个范畴, 除了必须包含上述三样东西,它还要满足以下三个限制:

结合律: f.(g.h) = (f.g).h 。

封闭律:如果存在态射 f, g,则必然存在 h = f.g 。

同一律:对结构中的每一个对象 A, 必须存在一个单位态射 Ia: A -> A, 对于单位态射,显然,对任意其它态射 f, 有 f.I = f。

在范畴论里另外研究的重点是范畴与范畴之间的关系,就正如对象与对象之间有态射一样,范畴与范畴之间也存在映射关系,从而可以将一个范畴映射为另一个范畴,这种映射在范畴论中叫作函子(functor),具体来说,对于给定的两个范畴 A 和 B, 函子的作用有两个:

将范畴 A 中的对象映射到范畴 B 中的对象。 将范畴 A 中的态射映射到范畴 B 中的态射。 显然,函子反映了不同的范畴之间的内在联系。跟函数和泛函数的思想是相同的。

而我们的函数式编程探究的问题与思想理念可以说是跟范畴论完全吻合。如果把函数式编程的整个的世界看做一个对象,那么FP真正搞的事情就是建立通过函数之间的映射关系,来构建这样一个美丽的编程世界。

很多问题的解决(证明)其实都不涉及具体的(数据)结构,而完全可以只依赖映射之间的组合运算(composition)来搞定。这就是函数式编程的核心思想。

如果我们把程序看做图论里面的一张图G,数据结构当作是图G的节点Node(数据结构,存储状态), 而算法逻辑就是这些节点Node之间的Edge (数据映射,Mapping), 那么这整幅图 G(N,E) 就是一幅美妙的抽象逻辑之塔的 映射图 , 也就是我们编程创造的世界

参考资料

https://en.wikipedia.org/wiki/Model https://baike.baidu.com/item/%E5%85%B3%E7%B3%BB/4546

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020.11.06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 模型给我们带来了什么?
  • 怎样理解一个模型?
    • 五步法
  • "模型-关系"思考法
    • 概述:唯物主义哲学
      • 万事万物都是相互联系的
    • 什么是模型(Model)?
      • In general, a model is an informative representation of an object, person or system in economics, political science, business, and sociology,etc.
      • 人类认知中的模型
    • 模型给我们带来了什么?
    • 怎样理解一个模型?
      • 五步法
    • 怎么建立思维模型?
      • 横向宽度
      • 纵向深度
      • 四类思维模型
    • 关系(Relationship)是什么?
      • 定义
      • 关系论
      • OOP
      • FP
    • 参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档