【程序员与哲学】一些有意思的思考

版权声明:欢迎转载 https://blog.csdn.net/antony1776/article/details/83143672

时间的本质

物质/能量/信息是宇宙的基本元素,时间不是,时间是在度量物质/能量/信息状态的变化时,提出的衍生概念。如果万物静止,没有声音,没有光,就没有时间。

秒在物理学中用铯元素的衰变周期来定义。

时间是线性的,不可逆的,是有热力学第二定律所决定的。时间感是相对的,光速飞船,冬眠的动物,在不同参考系中的客体对时间的经验没有可比性。时而度日如年,时而光阴似箭。

时间是线性的,并不意味着信息是线性的。声音作为信息的载体时,信息是面相流的,是线性的,但是书,乐谱,是以块的形式来存储信息的。

系统性思考世界的复杂性,人,社会,关系,时间,空间,物质,信息。。。。

语言的本质

语言就是特定文化/特定族群对其物质世界和精神世界所建立的全部模型。语言影响人的思维,行为,语言很重要。

日常语言,学术语言,符号语言,行业语言,家庭语言,。。。。

所以,思考语言就是思考世界。

思考的对象分为两类,世界观和方法论。世界观就是如何看待/理解世界,方法论是如何处理与世界的关系。婚姻观就是对婚姻的看法,是平等互爱,还是三天不打上房揭瓦。如何处理自己婚姻关系。

名/概念/模式/抽象与归纳:本质上是一种信息编码与压缩的技术。

学习与思考,就是大脑获取,转换,和存储信息的过程。

汉语是一种编码能力极强的语言,每个成语都是一个特殊情景的代码。

一些概念

  1. 本体论: Ontology 就是 Being,与存在,存在者,相关!
  2. 超验:气,经脉,天,心,道
  3. 本质与现象,共相与殊相,一般与个别,
  4. 形而上者谓之道,形而下者谓之器
  5. 概念:是人脑对客观事物本质的反映,是本体的语言模型!概念是思维的基本单位。内涵就是模型,外延就是实例。
  6. 本体论是哲学概念,它是研究存在的本质的哲学问题,这个词被应用到计算机界,并在人工智能、计算机语言以及数据库理论中起到越来越重要的作用。
  7. 计算机领域:本体论就是对概念化的精确描述,用于描述事物的本质。

概念的内涵与外延

  1. 狗,是一个概念,其内涵就是“狗是什么”,外延就是有哪些狗。狗是会汪汪叫的动物。而狗的外延就是所有会汪汪叫的动物。
  2. 内涵,就是本体的模型;外延就是该模型的所有实例。
  3. 初级概念:是浅层次的,反映对象的非本质的特有属性。

构建本体的简单步骤:

  1. 列出研究课题所涉及到的词条:
  2. 按照词条的固有属性和专有属性进行归纳和修改(内涵),对词条建立类以及层次化的分类模型
  3. 加入关系联系词条和模型
  4. 按照需要,添加实例作为概念的具象(外延)

存在论的问题

  1. 什么是存在
  2. 什么是物质物体
  3. 什么是物体的基本属性
  4. 用什么区别确定一个物体
  5. 物质物体存在的基本定义是什么
  6. 物体的特性是什么
  7. 存在的特性是什么
  8. 什么时候物体不在存在, 并不仅仅是变化
  9. 为什么物体可以相对于虚无存在

属性

  1. 一个具体事物,有许多的性质与关系,称为事物的属性。
  2. 事物与属性密不可分,事物都是有属性的事物,属性也都是事物的属性

思考

既然宇宙的三要素是:物质,能量,信息。那么人类所有的概念都应该是由这三者衍生而来:物质模型,能量模型,信息模型。


现实 vs 编程

客观世界,或者说现实世界,是人类的世界观,是人类对世界的理解,大千世界、万事万物在前,观念在后,名或者元在后。而在编程世界,是先有的概念,先有的元,先有的类,然后有的对象。

设计

设计,就是在特定约束条件下,为解决特定问题,而对资源(人/知识/工具)进行创造性的配置/选择/使用

思考: 经验驱动,知识驱动,理论驱动

数据

数据是信息的载体,是客观事物的抽象描述。
软件的本质是信息处理。
数据的基本特征: 类型,大小,位置,名称,状态,生命周期。。。
数据结构: 类型,内容,性质,关系
元数据
关系本质上也是数据
数据模型: 树形数据,关系型数据,网状数据
元数据模型:
json,xml,soap,buffer protocol,序列化

数据建模框架: e-r,json,xml,

现实世界的数据模型是最复杂,最合理的模板,公司,学校,家庭,国家,对人这个对象,有不同的抽象,关注的特征不一样,模型也不一样。
人,即是一个对象,也是一个系统,接口很清晰,关系的管理模型也很有意思。

父子,夫妻,这些都是强关系,前者为immutable,后者为mutable,关系变更需要遵循法律。朋友关系,则是弱关系,更可以细分,也不一定是双向的,比如微博的关注,我可以不知道谁关注了我,什么时候开始,什么时候结束。

数据也应该如此,java中引用也有weak referrance。本质上涉及到关系数据的生命周期。

编程语言中的数据模型多种多样,各自都有其考量。c语言中的数据结构,更偏向于纯数据,更容易理解和设计,data flow很清晰。面相对象语言中的对象,更应该看作一个子系统。以对“人”来建模为例,java试图去扮演人,而c则是试图去描述人。学校在管理学生时不需要去扮演人,只需要管理学生信息就行了。

uml: 真的更有效吗,如何辩证的去思考建模问题?面相对象的思想,让开发者能用现实世界的对象视角去思考软件开发,但是将数据和行为整合到对象里,某种程度上,增加了软件设计的复杂度。

猜你喜欢

转载自blog.csdn.net/antony1776/article/details/83143672