作者 | 马超 责编 | 张红月
出品 | CSDN(ID:CSDNnews)
知其然然后知其所以然 。 对于软件开发者人员来说 , 入门的必备知识不是安装操作系统、不是快速编写软件项目 , 而是学习实实在在的理论知识 , 它们很可能会决定你职业生涯的高度 。
最近外网的一篇《When did Computer Science Theory Get so Hard》引发了全网众多讨论 , 也有不少朋友向我推荐这篇博客 , 在仔细阅读过原文后 , 对于其中的一些细节 , 我倒并不能完全认同 , 但是文章整体的叙述与脉络非常清晰 , 尤其是计算机理论越来越难的现象也的确值得我们反思 。
文章图片
计算机科学理论什么时候变得这么难?
与理论发展缓慢的态势不同 , 目前计算机领域的应用侧发展可谓日新月异 , 像GPT-3及其衍生的AI模型 , 各类大数据模型、超大规模云平台等方面的进展不胜枚举 , 相关成果也都举世瞩目 , 但这些计算机应用发展的本质 , 都是硬件价格不断快速下降所带来的衍生红利 , 而这种现象早在50年前就被摩尔定律所明确预言了 , 凡是能靠算力解决的问题 , 目前都不再是问题 。
不过计算机理论要解决的问题都是非线性的 , 简单依靠硬件堆砌解决不了指数级上升的复杂度 , 因此计算机理论没有吃到硬件价格快速下降这波红利的 , 由于目前理论发展到了一个相对乏味的平台期 , 这也使计算机相关的理论只能向广度扩展 , 变得越来越高深、复杂 , 而且迟迟无法突破 。 可以说目前计算机领域像极了《三体》中所描述的场景 ,人类底层科学被锁死 , 但是应用实践却极大繁荣 。
Quake3的0x5f3759df 来自于应用界的最后尊严
虽然原文作者没有直接提到 , 但笔者这里还是要补充一下属于计算机应用界的光荣时刻 。 与现在流行的算力规模理念不同 , 之前在应用界尤其是游戏方面 , 各种神操作层也不穷 , 像80后对《Quake》也就是《雷神之锤》这款游戏一定会记忆深刻 , 这款3D游戏可以在几十兆内存的环境下跑得飞起 , 和目前动辄要求几十G内存的所谓3A大作形成鲜明对比 , 效果上两者最多差10倍 , 但是所消耗的资源却是天壤之别 。
下面要举的这个《Quake 3》的例子 , 目前已经开源了 , 比如树莓派的版本地址如下:https://github.com/raspberrypi/quake3/ , 而以下这段代码中出现著名的魔法数0x5f3759df , 这是对于开方的快速算法所引入的常量 , 在今天看来依旧是传奇 。 具体代码的地址:
https://github.com/raspberrypi/quake3/blob/8d89a2a3c1707bf0f75b2ea26645b872e97c0b95/code/qcommon/q_math.c
代码如下:
没人知道《Quake 3》的作者卡马克是怎么发现这个数字的 , 估计卡马克本人可能也不知道 , 因为直到现在的开源版本中 , 还留着作者本人亲自加上的”what the *?“这样的注释 。
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
