计算机软件技术 的 核心技术 是 :
操作系统 、 编译器 、 关系数据库 、 图形学 。
操作系统 包括 操作系统 和 虚拟化, 虚拟化 又包括 虚拟机 和 容器 。
在 4 个 核心 技术 中, 图形学 是 最难的 。
如果要 按照 难度 从高到低 排一个 顺序, 那就是 :
图形学 -> 编译器 -> 操作系统 -> 关系数据库
搞一个 图形学 要 50 年,
搞一个 编译器 要 30 年,
搞一个 操作系统 要 20 年,
搞一个 关系数据库 要 10 年 。
图形学 是一个 数学问题 。
图形学 = 60% 的 数学 + 40% 程序设计, 有网友说是 硬件问题, 好吧, 硬件问题 也包括在 程序设计 里 。
跟 图形学 比起来, 操作系统 就像是 增删改查(CURD) 的 业务系统 。
操作系统 的 门槛积累 在于 对 硬件 的 了解 。
编译器 具有 很高 的 逻辑复杂性, 编译器 的 逻辑复杂性 高于 操作系统, 编译器 是 操作系统 之母 。
有一个 好的 语言, 写 操作系统 并不难 。
编译器 的 复杂 来源于 语言语法 的 复杂, 高级语言 复杂的 语法特性 会让 编译器 更加复杂,
编译器 的 复杂 还 来源于 优化 , 即 编译器 对 代码 的 优化 。
优化 的 复杂 在于 需要 编译器 理解 代码 的 意图,
优化 的 门槛积累 在于 对 操作系统 和 硬件平台 的 了解 。
关系数据库 是 4 个 核心技术 中 的 小弟, 关系数据库 的 复杂 在于 数据存储格式 和 检索方式 。
关系数据库 诞生 和 兴起 的 年代 是 以 机械存储器 作为 外部存储器 的 年代 。
所以, 关系数据库 需要 以 顺序存储 为 基础, 但要 兼顾 查询 的 效率, 又要 兼顾 插入 修改 删除 的 效率 。
在 内存 并不大, 也没有 快速的随机存储器 作为 外部存储器 的 情况 下, 要 达到这些 要求, 需要 精巧 的 设计,
这个 精巧 的 设计 是 复杂的, 包括 数据存储格式, 检索(查询)操作, 插入 修改 删除 操作 。
在 海量内存 和 快速的随机访问的外部存储器(如 固态硬盘) 普及 的 时代, 高速 的 离散存储 成为 可能 。
在这样的趋势下, 也许 关系数据库 会 逐渐 淡出 历史舞台, 取而代之 的 是 NewSql 数据库(离散存储 数据库) 。
可以参考我之前写的一篇文章 《我发起了一个 .Net 平台上的 NewSql 数据库 BabanaDB》
https://www.cnblogs.com/KSongKing/p/10255420.html 。
原文地址:https://www.cnblogs.com/KSongKing/p/10326733.html