软件技术 基础设施 重建 白皮书
这是一个 游戏 。
我在 《浅谈 计算机软件科学和技术》 https://www.cnblogs.com/KSongKing/p/10326733.html , 里 提到 ,
软件技术 的 4 个 核心技术:
1 图形学
2 编译器
3 操作系统
4 数据库
未来 操作系统 的 地位 和 硬件 差不多, 语言 和 图形学 方兴未艾 。
语言 关系 到 软件界 的 大环境 和 生态, 图形学 是 3D 游戏 虚拟现实 白盒人工智能 的 基础, 是 未来 智能时代 的 基础技术 。
数据库 的 领域范围 和 影响力 有限 。
所以 语言 和 图形学 比较有 搞头 。
ILBC 是 中国 的 mono, 比 mono 还要 厉害 。
D# 是 对 C++ 的 科学发展 。
语言 是 这个 时代 的 Linux 。
见 《ILBC 白皮书》 https://www.cnblogs.com/KSongKing/p/11070978.html 。
别再提 面向对象 设计模式 业务架构 依赖注入 微服务 容器(docker, kubernetes) …… ,这些是 新时代 的 茴香豆,
大家 还像 孔乙己 一样 天天 嗑 的 津津有味 不亦乐乎 。
这些 东西 完全 没有 技术含量 。
唯一 有 技术含量 的 是 底层技术 。
说起 底层技术, 大家可能 会说 容器(docker, kubernetes) 是 底层技术, 容器 是 操作系统 族 的 一员, 是 底层技术,
但是, 使用 容器 的 技术 是 应用层 技术, 学会了 容器 只是 学会了 一堆 笨重繁复 的 规则 而已 。
从 技术 的 角度 来看, 容器 的 方向 是 错误 的, 容器 增加了 系统 的 复杂性 不透明性 不稳定性 。
容器 是 软件界 的 一个 大毒瘤 。
微服务 和 容器 就是 两个 枷锁, 束缚了 程序员 的 创造性 和 特立独行 的 个性 。 让 程序员 尊严 扫地 。
70 年代 的 程序员 是 黑客,
80 年代 的 程序员 是 极客,
90 年代 的 程序员 是 牛人,
2000 年 的 程序员 是 高手,
现在 的 程序员, “谈业务”,
别提 “业务” , 一听到 业务 我就 想吐 。
话说回来, 黑客 和 极客 有什么区别? 我觉得 黑客 偏重于 破解, 极客 偏重于 创造 。
还有, 别提 “架构” , 架构 是 最简单 的 东西, 完全 没有 技术含量 , 重点 是 执行 。
也别 提 “架构师” , 这是一个 尴尬 的 称谓, 如果有人 说 我 是 “架构师” , 我会 起 鸡皮疙瘩 。
什么 阿里云 团队 帮助 某公司 建立了 高并发 分布式 架构 , 使用 MQ 削峰 …… ,
MQ 是 什么? 是 上个 世纪 的 东西 , 就像 工厂 里的 20 年前 的 老旧设备 一样, 早就应该 淘汰 了 。
MQ 又 老, 又 过时, 又 笨重, (MQ 是 RPC, 远程调用 的 性能消耗 是 显著的) , 同时,在 应用程序 外 增加 MQ 等等 的 “设备” , 会 造成 系统 的 异构 和 架构 的 衍生 和 复杂, 增加 运维 成本 。
现在 的 语言 对 高并发 和 异步任务 的 支持 那么好, 比如 Go 语言, C# 的 Task , async await , 以及 其它 语言, 我 听 网友 说 , 现在 的 语言 基本 都 很好 的 支持 高并发, 不然 就 别混了 。
既然 语言 对 高并发 支持这么好, 所谓 的 “削峰” 完全 可以通过 进程 内 的 异步任务 实现, 根本 不需要 跨进程 , 更不用 跨主机,
这样 架构简单, 性能高(不需要 远程调用), 运维成本 低 ,
So ?
这样 的 架构, 在 扩展性 上, 只 需要 简单 的 线性扩展 Web Server 就可以, 没有什么 垂直架构, 也不需要 考虑 垂直扩展, 何乐而不为 ?
像 阿里云 MQ “高并发架构” 这样 的 东西, 网上一边倒的 崇拜 和 追捧, 只能说 , 迷信 的 力量 是 伟大 的 。
类似的, 还有对 Redis 的 迷信 , 对 Vue.js 的 迷信 。
对 Redis 的 迷信 非常可笑 。
还有, 现在 的 硬件技术 突飞猛进, 在 新的 硬件 形势 下, 还去 抱 着 那些 陈旧 的 架构 观念, 无异 自欺欺人 。
举个例子, 阿里云 都 已经 提供 “超级并行计算机” (还是 “超级并行计算 集群” ?) 了 , 在 这种 超级并行计算机 下 , 一切 架构 都是 浮云 , 都是 渣 ,
要 架构师 何用 ? ^^
说白了 , 架构师 就是 古人 说 的 “书生百无一用” 。
实际 需要 的 是 大量的 代码工人 和 测试人员 , 架构师 纯属 浪费 工资 的 兵种 。
好了, 还是 回到 底层 技术 。
咋没人 搞 个 国产 的 Nginx 呢 ? Nginx 是 七层代理 / 四层代理 , 需要 了解 网络协议 的 底层技术 , 尤其 是 四层代理 。
咋没人 搞 个 国产 的 mono 呢 ?
咋没人 搞 个 国产 的 Xamarin 呢 ? 移动设备 的 开发 多么 重要, 这还用说吗 ?
百度上 一搜索 , 牛人 很多 啊 。
为什么 大家 宁愿 去 研究 天书 一样 的 Linux 源代码 也没人 自己 写一个 ?
像 docker 和 Kubernetes 那样 天书 一样 的 代码 你 研究 的 过来 吗 ?
你 如果 去 研究 这些 代码, 你就 上当 了 。
应该 贯穿原理, 但是 具体 的 实现 自己 来 实现 。
原理 其实 都不难 。
我 认为 我们 开展 的 开源项目 应该 是 这样 的 :
1 参照 Unix 的 编程原则 , “编写 一些 简单 的 模块, 把 它们 连接 起来”
2 库 的 理念
3 简单 小巧 的 内核
这样, 别人 把 项目 拿去 可以 容易 的 改写 扩展 和 理解程序意图 , 这样 才 体现出 开源项目 的 价值 。
可以 参考 这些 文章 :
《谈谈 图形学 的 从头建设发展之路》 https://www.cnblogs.com/KSongKing/p/10961057.html
《少搞一点 对象, 多搞一点 文本》 https://www.cnblogs.com/KSongKing/p/10796426.html
《关于 虚拟化 的 我的看法》 https://www.cnblogs.com/KSongKing/p/10770977.html
《.Net 一开始就不应该搞 .Net Core》 https://www.cnblogs.com/KSongKing/p/10768705.html
《C++ 是 编程界 的 背锅侠》 https://www.cnblogs.com/KSongKing/p/10455763.html
《从 面向对象 的 弊端 想到的》 https://www.cnblogs.com/KSongKing/p/10367675.html
《我发起并创立了一个 Javascript 前端库 开源项目 jWebForm》 https://www.cnblogs.com/KSongKing/p/10326119.html
《论 数学 的 工具性》 https://www.cnblogs.com/KSongKing/p/10308498.html
《未来 需要的是 轻量 的 操作系统 而 不是 容器》 https://www.cnblogs.com/KSongKing/p/9259628.html
《我发起了一个 支持 ServerFul 架构 的 .Net 开源项目 ServerFulManager》 https://www.cnblogs.com/KSongKing/p/9899199.html
《关于软件产业的两个契机》 https://www.cnblogs.com/KSongKing/p/9531950.html
《.Net Core 没有 WebForm 是 历史 的 退步, MVC 是一个 糟糕 的 设计》 https://www.cnblogs.com/KSongKing/p/10293643.html
《依赖 容器 的 技术 是 没有 通用性 的》 https://www.cnblogs.com/KSongKing/p/10293169.html