觉学社 21小时前
二十年程序员感悟:技术本质是权衡与妥协
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

在程序员节之际,作者回顾了二十年的编程生涯,分享了技术发展的深刻感悟。他指出,技术并非追求完美,而是在物理定律、经济约束、安全性能、人机交互等各种限制条件下,寻找“足够好”的解决方案。从硬件到操作系统,从编程语言到算法,再到AI Agent,每一次的技术演进和选择,都是妥协的艺术。作者强调,成熟的技术实践者并非永不妥协,而是懂得何时、为何、以及如何进行恰到好处的妥协,并在不完美中创造价值。这篇文章是对技术本质的一次深入解读,鼓励程序员在约束中保持创造力。

💡 **技术的本质是权衡与妥协**:作者认为,技术并非追求绝对的完美或真理,而是在各种约束条件下(如物理定律、经济成本、性能需求、安全考量等)寻找最优的解决方案。每一次技术决策,从硬件设计到软件架构,都是在理想与现实之间进行的权衡,成熟的技术实践者懂得如何进行恰到好处的妥协。

🛠️ **各层级技术均体现妥协艺术**:文章从硬件(CPU、内存层级)、操作系统(宏内核 vs 微内核、调度算法)、编程语言(C++、Java、Rust、Python 的哲学与代价)、算法(启发式、近似算法、数据结构选择)以及密码学(伪随机性)等多个维度,详细阐述了技术发展中普遍存在的妥协现象。这些妥协是为了在速度、容量、成本、安全、易用性等多个目标之间找到平衡点。

🚀 **工程实践与AI Agent中的妥协**:在工程实践层面,作者指出,上线压力、可维护性、技术债等现实因素迫使团队在理想架构与交付之间不断拉扯。对于AI Agent,文章认为其是通用人工智能(AGI)的妥协体现,通过模块化智能替代尚不可达的通用智能,并在认知、创造与控制、语言表达等方面与人类需求进行妥协,以达成可工作的中间态。

✨ **妥协是智慧而非失败**:作者将妥协视为一种智慧,而非技术上的失败。他鼓励程序员认识到,成熟不是找到完美方案,而是懂得何时、为何、如何妥协。在不完美的世界中,能够优雅地妥协,并在约束中创造可能,正是程序员的价值所在,也是技术的本质。

原创 张汉东 2025-10-24 22:51 日本

二十年前的今天,我刚踏上程序员之路,满怀着改变世界的理想。二十年后的今天,我想和你聊聊这些年最深的感悟。

今天是 10月 24,程序员节。

二十年前的今天,我刚踏上程序员之路,满怀着改变世界的理想。二十年后的今天,我想和你聊聊这些年最深的感悟。

    技术不是寻找完美,而是在约束中寻找足够好

    硬件到 AI,每一层的“最佳实践”都是权衡的产物

    妥协 ≠ 退让,而是工程成熟的尺度与边界。

引子:程序员节,谈一件“逆耳”的事

技术圈最显眼的常态,是永不停歇的“宗教之争”: Vim vs EmacsTabs vs SpacesReact vs VueCpp vs RustChatGPT vs Claude 等等。

每隔几年,新的"圣战"就会爆发。有人宣称某技术是未来,有人坚守另一派为正统。这些争论激烈得像宗教战争,仿佛守护的不是技术选择,而是信仰本身。

为什么会这样?因为大多数人没有理解技术的本质

技术的本质是什么?是权衡与妥协。

不是完美的解决方案,不是绝对的真理,而是在约束条件下的最优权衡。每一个技术决策,都是在理想与现实之间画出的那条曲线。

一、硬件:在物理定律与经济约束之间

让我们从最底层说起。

CPU 的演进史,就是一部妥协史。

Intel 的 CISC 追求指令的强大功能,ARM 的 RISC 追求简洁可并行。两大阵营争斗多年,最后呢 ?Intel 在微架构里悄悄用上了 RISC 的思想,ARM 在新架构里也加入了复杂指令。

为什么主频停在了 5GHz 左右?不是工程师不够努力,而是功耗墙就在那里。每提高 1GHz,功耗可能翻倍,散热成了不可能完成的任务。于是我们转向多核,转向多核、超标量、向量化与异构(CPU+GPU+NPU)。我们用并发的复杂性来换单核无法再给的速度

存储的层级结构更是妥协的艺术:

    L1 缓存:极快但极小

    L2/L3 缓存:稍慢但稍大

    内存:更慢但更大

    SSD/HDD:最慢但最大

L1/L2/L3 Cache → DRAM → SSD → HDD,层层下沉、层层变慢也变便宜。整个 memory hierarchy 就是速度/容量/成本的结构化妥协。再加上写回、预取、NUMA 拓扑与一致性协议(如 MESI),我们用复杂性换来“看起来像一体”的性能。

这不是设计缺陷,而是在速度、容量、成本三者间寻找平衡点

二、操作系统:自由、性能与安全的永恒博弈

操作系统是抽象的大师,但每一层抽象都有代价

Linux 选择了宏内核,牺牲模块化换取性能;微内核追求优雅的隔离,却在现实中因性能问题(有消息传递开销)边缘化。虚拟内存让每个进程以为自己独占整个地址空间,代价是页表、TLB、缺页中断的复杂机制。于是我们再引入 eBPF、io_uring、用户态网络栈等把热路径前移的方法,在安全与性能之间重新画线。

调度算法永远在做不可能的权衡

    追求公平?牺牲吞吐量

    追求响应?牺牲公平性

    追求实时?牺牲灵活性

吞吐、延迟、公平、实时性,任何调度器都只能在其中择其二三。所谓“完全公平(CFS,完全公平调度器)”,其实是足够公平,它只是"完全公平"的近似。。这不是退步,而是承认多目标优化的现实边界。

三、编程语言:人机对话的翻译难题

每种语言都代表一种哲学立场,一种特定的妥协方式。

C 语言的哲学是"信任程序员",给你全部的自由和责任,代价是内存安全与并发安全几乎全靠纪律与经验。

Java 说 "Write once, run anywhere",JIT/GC 减轻了很多痛苦,但启动时延、内存开销与运行时复杂性是默认账单。

Rust 选择了"零成本抽象"和所有权系统,把痛苦提前到编译期。所有权、借用检查、零成本抽象,让运行时更安全高效;代价是学习曲线、编译时长与语法复杂度。这是“编译期多吃苦,运行时少流血”的妥协。

Python 牺牲速度换来极致表达与生态;Go 牺牲一些范式与特性换来工程简单、部署轻;C++ 用复杂度去追求性能与泛型威力。没有完美语言,只有适配问题域的妥协点

语言之争的本质,是不同问题域下的妥协哲学之争。

四、算法:在理想与现实间寻找出路

理论计算机科学告诉我们很多问题是 NP 完全的,现实告诉我们客户等不了那么久。

于是我们发明了:

    启发式 / 贪心:不保证全局最优,但够快、够好

    近似算法:用误差界换时间界。

    随机化算法:用概率保证换确定性开销。

    数据结构的选择:Bloom Filter 以假阳性换内存省;LRU/LFU 以命中率近似换实现简洁。

快速排序的平均复杂度 O(nlogn)很美好,最坏情况O(n²)很糟糕,但我们还是用它。因为最坏情况很少发生。

算法之美,常常是,知道何时停止追求完美。不追求数学的完美,追求统计上的可用。

五、密码学:用确定性伪造随机性

密码学可能是最诗意的妥协

真随机来自物理世界(量子/热噪声等),工程上难以稳定获取,于是我们用伪随机数生成器(PRNG)从种子出发,产出对攻击者“计算上不可区分”的序列。现代密码构件(流/分组密码、KDF、MAC)大多建立在这种“足够像随机”的假设上。

我们知道 PRNG(伪随机数生成器)产生的不是真随机,但只要在多项式时间内无法区分,我们就认为它"够随机"。整个现代密码学体系,都建立在这个"计算上安全"的妥协之上

密码学,就是伪随机向真随机的妥协。数学上它并不“真”,工程上它足够“安全”。

这是一种优雅的哲学:承认我们无法触及真正的混沌,但可以用秩序模仿混沌,用数学守护这个美丽的假象

六、工程实践:理想架构与交付压力

每个程序员都有过这样的经历:

设计时画出优雅的架构图,上线后发现到处是权宜之计。我们在完美设计与交付压力间反复拉扯:

    CAP/一致性等级:强一致牺牲可用与延迟,最终一致换来扩展与韧性。

    可维护性 vs 性能:“能跑得更快”和“能长期维护”常常不可兼得。

    技术债与遗留系统:向后兼容、灰度发布、A/B 与降级策略,是对业务连续性的现实让步。

    流程文化:敏捷 vs 规范、文档 vs 交付、自治 vs 合规……组织同样在妥协。

能上线、能迭代、能稳定演进,往往比一次性“完美架构”更有价值。这是工程的常态。

支撑整个软件世界运转的,不是教科书上的完美设计,而是可持续的妥协艺术

七、AI  Agent:在通用智能之前

人工智能的历史,就是不断降低预期的历史。

我们梦想 AGI(通用人工智能),现实给了我们狭义 AI。我们期待机器理解世界,它们只是在拟合数据分布。我们想要真正的智能,得到的是"看起来像智能"的模型。

深度学习牺牲可解释性换来泛化能力;大模型牺牲效率换来通用性;对齐(Alignment)让输出更“人类可接受”,但限制了原始能力。

这是一连串确定性与不确定性的妥协

Agent,就是 AGI 的妥协:用可控的模块化智能替代尚不可达的通用智能 。

而 AI 编程呢?是在人类认知与系统复杂度之间的妥协。

    _认知的妥协_:让模型分担样板与搜索空间,人专注问题定义与评审。

    _创造与控制的妥协_:用约束、RAG、Guardrail 把生成式的不确定“框”在产品可接受范围。

    _语言的妥协_:用自然语言表达意图,再由模型映射到严格的代码与接口世界。

AI 不是“完美的程序员”,但它让人类与复杂系统达成了可工作的中间态

八、妥协的哲学:不是失败,是智慧

年轻时,我总想找到完美的解决方案。写代码追求零 bug,做架构追求永不过时,选技术追求一步到位。

二十年后我才明白:成熟不是找到完美方案,而是知道何时、为何、如何妥协。

妥协不是放弃理想,而是在约束条件下寻找最优解。就像凸优化问题,全局最优可能不可达,但我们可以找到足够好的局部最优。

真正的高手,不是那些永不妥协的人,而是那些妥协得恰到好处的人。他们知道:

    在哪里可以让步,在哪里必须坚守

    什么是核心需求,什么是锦上添花

    如何在理想和现实间搭建可行的桥梁

结语:1024的意义

1024,2 的 10 次方,计算机世界的基础单位。

但它也提醒我们:即便在这个建立在 0 和 1 之上的二进制世界里,现实依然充满灰度。每一个系统、每一行代码、每一个架构决策,都是在完美与可行之间的精心权衡。

技术的进步,不是消除妥协,而是找到更优雅的妥协方式。从汇编到高级语言,从单机到分布式,从瀑布到敏捷,我们一直在学习如何更好地妥协。

所以,当你下次遇到技术选型的争论,不妨想想:他们争的不是对错,而是不同的妥协策略。

当你为代码不够完美而苦恼,记住:能上线的系统,胜过完美的设计。

当你面对架构的 trade-off,要知道:妥协不是技术债,而是工程智慧。


写在最后

1024快乐,致所有在约束中创造可能的程序员们。

我们不是代码机器,而是在物理定律、商业需求、人性弱点的夹缝中,用智慧和妥协构建数字文明的建筑师。

正因为世界不完美,我们的工作才有意义。正因为需要妥协,技术才成为艺术。

愿你在下一个二十年里,继续优雅地妥协,继续在不完美中创造美好。

因为这,就是技术的本质

阅读原文

跳转微信打开

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

程序员 技术本质 权衡 妥协 编程 AI 工程实践 Programmer Essence of Technology Trade-offs Compromise Programming AI Engineering Practices
相关文章