社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

发明Linux、Python、Redis、Nginx、SQLite的人,是天才,还是时代宠儿?

DBAplus社群 • 2 周前 • 158 次点击  


一


毫无疑问他们绝对是天才,而且是那种把人类数字文明的地基硬生生挖出来,并浇筑成型的顶级天才。


这几年大家都被大模型搞得有点焦虑,毕竟现在的AI代码助手连完整的微服务后端加上前端React页面都能分分钟给你弄出来,稍微懂点提示词工程的初级程序员一天能干完以前一个礼拜的活。


在这种技术背景下,很多人开始产生一种错觉:写代码变得廉价了,甚至觉得以前那些单枪匹马写出世界级软件的人也就是占了时代的红利,换到现在可能早就被AI淘汰了。


说实话,这种想法非常幼稚。你如果真正在一线摸爬滚打过,真正去阅读过Linux内核源码或者Redis的核心数据结构实现,你就会产生一种深深的敬畏感。


今天我们能坐在这里用各种大模型训练参数,跑各种复杂的联邦学习算法,全都是建立在这些天才设定的计算规则之上的。


天才到底是什么?在软件工程这个领域,天才绝对不是指谁背熟了各种语法,或者谁能一天写一万行不出错的代码。AI现在写代码不仅快而且基本上没有语法错误,但这不叫天才,这叫算力暴力叠加。


真正的天才,是具备极度可怕的抽象能力,和系统级边界掌控力。他们能在极其苛刻的硬件条件下,用最精简的逻辑,解决当时甚至未来几十年最核心的痛点。


二



我们先拿SQLite的作者Richard Hipp来说。


你可能觉得这只是个轻量级的本地数据库,毫无技术门槛。但我给你说个我团队去年年底的真实业务场景。


我们当时在搞端侧小模型的工业部署,要把一个几十亿参数的视觉检测模型塞到流水线边缘设备的智能相机里。设备内存极其紧张,需要在本地高频记录每次推理的状态特征和设备自身的监控日志。


当时几个年轻同事图省事,想引进去一些目前市面上很火的时序数据库,或者一些号称专门给边缘计算设计的云原生存储组件。结果一压测,光是那些数据库后台常驻进程就把本就不多的内存吃掉了三分之一,模型推理直接QOM也就是内存溢出崩溃。


最后没办法,我让他们全部撤掉,老老实实换回SQLite。就那几百KB的体积,无需配置,直接作为一个动态链接库嵌进我们的C++推理服务里,几百万条特征数据高频读写,稳如泰山。


Richard Hipp在二十多年前写这个东西的时候,面临的是美国海军导弹驱逐舰上的控制系统对无服务器数据库的需求。他用极度收敛的C语言代码,实现了完整的SQL解析器和B树存储引擎。


他没有使用任何花哨的架构,就是把文件系统利用到了极致。在极度受限环境中,这种寻求绝对可靠性和极简设计的思维,现阶段的任何大模型都学不会。大模型的本质是概率预测和海量参数拼接,它天生就带有冗余和发散性,而天才的系统设计是收敛和克制的。


三


再来看看Python的作者Guido van Rossum。


现在各种新的编程语言层出不穷,很多语言号称在并发性能和内存安全上秒杀Python。特别是搞底层性能优化的人,经常吐槽Python又慢又有全局解释器锁GIL。


但现实是,整个AI时代依然被Python牢牢统治。哪怕大模型的底层算子,全是C++或者CUDA写的,但上层的生态依然是Python的天下。


这绝对不是偶然。Guido最大的天才之处,在于他极早地看清了系统编程和脚本编程之间的那条分界线。他极其注重C语言扩展的便利性。


早在九十年代,他就把Python设计成了一种可以极其方便地调用C语言动态库的胶水语言。搞AI算法的人多数是数学背景,他们根本不想去管什么指针管理和内存泄漏,他们只需要最简洁直观的数学表达。Python提供了近乎伪代码的阅读体验,同时又能把极其耗时的矩阵运算无缝移交给底层的C语言库去执行。


这种把易用性和扩展性做到极致平衡的设计哲学,直接孕育了后来的NumPy和PyTorch生态。 他懂得做减法,懂得让语言本身退居幕后,去服务于真正的领域计算需求。


关于这种系统设计中的权衡艺术,我非常推荐一本已经被很多人推烂了但确实是神作的书,就是Designing Data-IntensiveApplications数据密集型应用系统设计。这本书里探讨的很多关于数据流转和系统边界划分的思考,跟当年Guido设计Python生态的心法是完全相通的。


四


Redis的作者Salvatore Sanfilippo,也就是大家熟知的antirez。以前很多前端转后端的工程师觉得,Redis不就是一个大点的键值对内存字典嘛。那是因为他们根本不懂,在单线程模型下处理每秒几十万次并发请求有多难。


在Redis出现之前,大家做缓存基本都在用Memcached,仅仅支持简单的字符串。antirez的天才在于他不仅把缓存做到了极致的快,还硬生生地在内存里实现了极其丰富且高效的数据结构。比如处理排行榜用的跳表,处理大规模基数统计用的HyperLogLog。而且他极其偏执地坚持单线程事件循环机制,用操作系统的多路复用技术,完全避开了多线程上下文切换带来的开销和复杂的锁竞争问题。


在当今这个动不动就堆机器、堆容器的时代,去读一读Redis早期的源码简直就是在洗涤灵魂。每一个C语言的结构体定义,都为了节省几个字节的内存而精打细算。他手写的事件驱动库仅仅几百行代码,却能极其稳定地支撑起全世界互联网大厂的流量洪峰。


这就引出了Nginx的作者IgorSysoev。


当年大家都还在用Apache那种每个连接分配一个进程,或者线程的笨重模式处理网络请求的时候,Igor Sysoev搞出了Nginx。他同样是用极其干净利落的C语言、事件驱动和非阻塞多路复用模型,彻底解决了当时臭名昭著的C10K,也就是单机一万个并发连接的问题。


现在我们搞各种微服务网关,搞AI推理集群的前置负载均衡,底层其实全都在沿用这套网络I0多路复用的理论。


五


从这些真实存在的例子你就能看出来,这几个人不仅是天才,而且是属于极其罕见的开拓型天才。


普通程序员或者现在的AI代码工具解决的,是如何在一个已经搭好的框架里写出业务逻辑,而这些天才是在没有路的地方直接定义了计算、网络、存储的物理法则。


现在这几年大模型极其火爆,很多新人一毕业进公司就习惯了用Copilot或者Cursor这类工具辅助编程。我并不反对使用AI工具,我自己每天也在用,确实能极大提升编写样板代码的效率。但是我在面试很多年轻候选人的时候,发现一个非常致命的问题:很多人已经丧失了对计算机底层运行机制的感知力。


你让他手搓一个分布式的业务系统,他能用各种开源组件拼凑得看起来高大上,代码也是AI帮你补全得漂漂亮亮。但是一旦在线上遇到由于网络抖动引发的连接池耗尽,或者遇到极端流量下内存碎片化导致的延迟突刺,他们就完全束手无策了。因为AI工具没法帮你排查这种需要极深底层系统功底的疑难杂症。


这也是为什么我依然极度推崇大家去回归本质,去研究这些天才创造的底层软件的原因。当工具越强大,门槛越低的时候,业务层面的CRUD代码编排就不再具备任何核心竞争力。你能让AI帮你写一万行业务代码,别人也能。


未来的核心竞争力绝对在于系统级架构的洞察力和对底层运行机制的深刻理解。你需要知道数据在内存里到底是怎样分布的,网络数据包到达网卡后是如何一步步触发中断,并被用户态程序接管的。只有当你站在了跟当年Linus写Linux内核,或者antirez写Redis同样的问题视角上,你才能在这个AI满地跑的时代保住自己的饭碗。


这五个人毫无疑问是深刻改变了人类数字文明进程的天才。他们留给我们的不仅仅是几款好用的流行软件,更是一整套关于如何在复杂的现实世界中寻找最优解的工程哲学。


在当下这个大家都觉得技术更新太快,随时会被AI取代的焦虑时代,去读懂这些天才的底层逻辑,其实是最好的一剂镇静剂。因为无论AI模型怎么迭代,上层的框架怎么变幻,只要我们的硬件还是基于冯诺依曼架构,只要数据还需要在内存、磁盘和网络之间流转,这些底层软件所确立的第一性原理+就不会变。


去弄懂那些不变的东西,才是技术人员真正安身立命的根本。


作者丨momo
来源丨网址:https://www.zhihu.com/question/2027342725343721332/answer/2029566401950523532?share_code=1bKjtJQO964GG&utm_psn=2060690971478832059
dbaplus社群欢迎广大技术人员投稿,投稿邮箱:editor@dbaplus.cn


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/201557