浅谈 计算机软件科学和技术
计算机软件技术 的 核心技术 是 :
操作系统 、 编译器 、 关系数据库 、 图形学 。
操作系统 包括 操作系统 和 虚拟化, 虚拟化 又包括 虚拟机 和 容器 。
在 4 个 核心 技术 中, 图形学 是 最难的 。
如果要 按照 难度 从高到低 排一个 顺序, 那就是 :
图形学 -> 编译器 -> 操作系统 -> 关系数据库
搞一个 图形学 要 50 年,
搞一个 编译器 要 30 年,
搞一个 操作系统 要 20 年,
搞一个 关系数据库 要 10 年 。
图形学 是一个 数学问题 。
图形学 = 60% 的 数学 + 40% 程序设计, 有网友说是 硬件问题, 好吧, 硬件问题 也包括在 程序设计 里 。
跟 图形学 比起来, 操作系统 就像是 增删改查(CURD) 的 业务系统 。
操作系统 的 门槛积累 在于 对 硬件 的 了解 。
编译器 具有 很高 的 逻辑复杂性, 编译器 的 逻辑复杂性 高于 操作系统, 编译器 是 操作系统 之母 。
有一个 好的 语言, 写 操作系统 并不难 。
编译器 的 复杂 来源于 语言语法 的 复杂, 高级语言 复杂的 语法特性 会让 编译器 更加复杂,
编译器 的 复杂 还 来源于 优化 , 即 编译器 对 代码 的 优化 。
优化 的 复杂 在于 需要 编译器 理解 代码 的 意图,
优化 的 门槛积累 在于 对 操作系统 和 硬件平台 的 了解 。
关系数据库 是 4 个 核心技术 中 的 小弟, 关系数据库 的 复杂 在于 数据存储格式 和 检索方式 。
关系数据库 诞生 和 兴起 的 年代 是 以 机械存储器 作为 外部存储器 的 年代 。
所以, 关系数据库 需要 以 顺序存储 为 基础, 但要 兼顾 查询 的 效率, 又要 兼顾 插入 修改 删除 的 效率 。
在 内存 并不大, 也没有 快速的随机存储器 作为 外部存储器 的 情况 下, 要 达到这些 要求, 需要 精巧 的 设计,
这个 精巧 的 设计 是 复杂的, 包括 数据存储格式, 检索(查询)操作, 插入 修改 删除 操作 。
在 海量内存 和 快速的随机访问的外部存储器(如 固态硬盘) 普及 的 时代, 高速 的 离散存储 成为 可能 。
在这样的趋势下, 也许 关系数据库 会 逐渐 淡出 历史舞台, 取而代之 的 是 NewSql 数据库(离散存储 数据库) 。
可以参考我之前写的一篇文章 《我发起了一个 .Net 平台上的 NewSql 数据库 BabanaDB》
https://www.cnblogs.com/KSongKing/p/10255420.html 。
4 个 核心 技术 中, 图形学 更像 科学 。
图形学 更像 科学, 也 最难 是有 渊源 的 。
图形学 肩负 着 虚拟现实 的 历史使命, 虚拟现实 就是 将 现实世界 映射到 计算机世界 。 这是 图形学 的 先天属性 。
所以, 图形学 最像 科学, 也是 最难的, 是 自然而然 的 。
未来, 在 白盒人工智能 中, 图形学 是 基础 科学 和 技术, 白盒人工智能 就是 虚拟现实,
就是 对 现实世界 建模, 用 模型 来 描述 现实世界 。
白盒人工智能 是 下一代 计算机科学技术 的 基础技术 和 核心技术, 是 必争 的 高地 。
说到这里, 大家会想起 现在 的 人工智能, 咦 ? 为什么 不把 人工智能 列入到 核心技术 里 ?
现在的 人工智能 是 黑盒人工智能, 跟 游戏 AI 差不多, 只是做的更高级一点, 本质上是一样的 。
打个比方, 就像 游戏 有 假 3D, 真 3D,
机器学习 就像 假 3D + 黑盒,
黑盒 就是 不理解 模型, 而是 提取特征 -> 学习特征 -> 适应特征 。