编程通识
通用计算机
图灵机
-
冯诺依曼架构
-
图灵完备
- 与图灵机有相同处理问题的能力
-
方便问题拆解
-
函数定义在数据和指令基础概念之上
-
数据+指令使得耦合程度低; 建模容易; 复刻, 不能定义不知道结果的操作; 特殊情况需要考虑, 维护成本高; 解决工程问题; 管理软件, 操作系统; 处理预想到的问题; 映射自由, 破序(破序能力需要受到约束)
-
约束图灵机编程自由
-
语言发展的意义
-
结构化编程
- 训练一种拆解问题解决问题的模式
-
面向过程 --> 面向对象 --> 函数式编程
-
λ演算法
- 函数式编程
- 数据和指令建立在函数概念基础上
- 关系和变化规律使得耦合程度高, 建模复杂; 复刻问题背后的逻辑和规律; 底层涉及到的理论基础门槛高, 修改困难; 解决理论问题; AI开发; 更好体现自然语言逻辑和语法
元胞自动机
-
生命的游戏
-
新范式
- 元胞的初始值
- 网格的结构
- 元胞状态变化的规则
-
群体涌现
-
编程特点
-
输入: 初始状态(二维网格)
-
输出: 终局状态(二维网格)
-
关系: 状态演化
- 不受控制
- 依赖网格结构和元胞之间的规则
- 无法拆分成基础指令
-
-
基本范式
-
基本语法
- 元胞初始值
- 网格结构
- 元胞状态的变化规则
-
操作特点
- 自然演化过程不可控
- 输入输出已经包括数据和指令的信息
- 无法对整体的数据和指令信息进行切分
- 群体特征很难预测
-
-
价值体现
-
遗传算法
-
规则没办法规约 – 没有办法统一描述
- λ演算法(单一规则) 无法描述这个过程
- 图灵机无法简单列举
-
-
软件工程发展方向
领域驱动设计
- 中台
- 微服务
- 最稳定的是业务,而非数据库(技术手段)
敏捷开发
开源
软件工程的复杂性
功能和功能之间耦合
人和人之间耦合
过去和未来的耦合
解耦
-
在不损失功能性的前提下,用性能交换更低的复杂度
-
工具
-
模块化
- 技术驱动;功能与功能之间解耦
-
分层化
- 业务驱动;需求和实现之间解耦
-
模式化
- 历史和未来之间的解耦
-
机器语言
源头
- 图灵机
语言类似的原因
- 编程语言基于图灵机实现
- 图灵机包括数据程序
数据
-
数据本质是对不同的抽象
-
分类
- 代表差异程度能进行数学运算的数字
- 范畴不同的ID,需要人为设定。
参考地址: 非计算机专业学编程难在哪?