程序员隐退,建造者闪耀 (Programmers fade, but builders continue to shine)

程序员隐退,建造者闪耀 (Programmers fade, but builders continue to shine)

1957年,Edsger W. Dijkstra 在阿姆斯特丹结婚时,按照荷兰习俗需要在登记表上填写职业。他写下“programmer”(程序员),却被市政当局无情驳回——理由很简单:法律上“没有这个职业”。最终,为了顺利完婚,他的结婚证书上只能妥协地填上“theoretical physicist”(理论物理学家)。

这个带点荒诞色彩的小插曲,恰恰映照出“程序员”这一职业在诞生之初,是多么边缘、新生且不被主流社会所认可。

然而,正是这位当年连职业身份都不被承认的先驱,在接下来的几十年里,试图将“编程”这门手艺,生生拔高到了如同纯粹数学一般神圣且严谨的地位。他给真正的“程序员”设定了极高的智力期望值,也正因如此,他对后来一切试图“降低编程门槛”的世俗化尝试,都报以怀疑和批评。

1978 年,Dijkstra 专门撰文(EWD 667)痛批了“自然语言编程”的愚蠢。他指出,形式化符号系统是人类历史上最伟大的发明之一,正是因为它能 “排除用母语几乎无法避免的各种胡说八道”。如果让机器听懂自然语言,只会把逻辑严密的负担从人转移到机器,让沟通界面变得更宽、更危险。

十年后的 1988 年,Dijkstra 在得克萨斯大学奥斯汀分校写下了著名的 EWD 1036:《On the cruelty of really teaching computing science》。在这篇被后人反复引用的檄文中,他对当时试图用管理学拯救软件危机的“软件工程”学科,表达了刻薄的批评:

“Software engineering has accepted as its charter ‘How to program if you cannot.’” (软件工程已将“如果你不会编程,该如何编程”作为其宗旨。)

他甚至给这门学科贴上了“注定失败的学科”的标签,认为它的存在前提自相矛盾:试图用流程、文档和管理技巧,去掩盖一个残酷的事实——很多人根本无法驾驭编程的智力挑战。

Dijkstra 批评精准地击中了软件开发的核心痛点:软件内在的复杂度和智力门槛,是无法被绕过的。 这与 Fred Brooks 在《没有银弹》中的断言共鸣。正如 Brooks 所指出的,无论是多么精妙的管理学流程,还是多么先进的开发工具,它们顶多只能消除编写代码时的 “偶然复杂性”(Accidental Complexity)。而软件的“本质复杂性”(Essential Complexity) ——那些盘根错节的业务逻辑、状态空间的约束以及严密的概念结构——永远无法用任何神奇的“银弹”来自动消解,它必须由人类的心智去直面和驾驭。

产业演进的三个公式

然而,产业的发展并不会停留在纯粹的象牙塔里。我在《构建之法》中,曾用三个递进的公式来总结这个行业的演进脉络:

  1. 程序 = 算法 + 数据结构
  2. 软件 = 程序 + 软件工程
  3. 企业 = 软件 + 商业模式

Dijkstra 是第一个公式(程序)的终极守护者。他希望把计算科学永远留在严谨的数学殿堂里。但现实是,当几千个程序模块拼凑在一起,由几十个水平参差不齐的人共同维护,并需要在市场上持续交付价值时,我们就必须踏入第二个和第三个公式的深水区。这正是 “软件工程” 即使被 Dijkstra 怀疑,也依然顽强生长、持续壮大的原因。

两种工程:大厂的障眼法 vs. 对抗熵增的武器

当行业迈入“软件 = 程序 + 软件工程”的阶段时,在实践中我们看到了两条路径:

第一种:组织工程(Organizational Engineering)
这是 Dijkstra 最深恶痛绝的部分。它试图把产品经理、业务方等“不会编程的人”拉进软件开发的参与感中。在今天的互联网大厂,它甚至进化出了一套高度套路化的体系:无休止的 Kick-off(项目启动)、各部门的拉通对齐、行业专家定制的几百页却没人看的大而全的规范,以及纯粹为了在系统崩溃时划清责任边界的 “甩锅文档”(CYA - Cover Your Ass Documents)

它的核心价值,是给管理层提供可见性与控制感,给参与者提供情绪价值与免责声明。Dijkstra 视其为纯粹的“障眼法(eyewash)”,因为它将解决系统复杂度的智力挑战,巧妙地伪装成了一场职场沟通与表演艺术。

有讽刺意味的是,AI 的普及正在将这种组织工程推向进一步荒诞。 既然生成文本的边际成本趋近于零,人们开始心安理得地用 AI 快速生成洋洋洒洒、滴水不漏的规划、周报和甩锅长文;而另一端的读者,同样反手用 AI 提取三行摘要,甚至用 AI 自动回复“收到,已对齐”。人类的真实意图彻底淹没在机器对机器的虚假繁荣中。值得指出的是,AI 做出的精美 PPT,巧舌如簧的文稿,并不是银弹,很多是浪费时间的白噪音。

第二种:技术工程(Technical Engineering)
这是 CI/CD、自动化测试、静态代码分析、规范即代码(Policy-as-Code)、混沌工程……这是程序员为了对抗 “下个月自己都看不懂今天写的代码” ,“不知道代码会碰到什么外界情况”, “不知道软件的行为是否可测试” ... 而被迫建立的防御体系。它的核心价值是可维护性与系统韧性。即使是顶尖工程师,面对复杂项目,也必须依赖 V&V(验证与确认),混沌工程,可观测性(Observability)等方法论与工具。

大教堂的倒塌与集市的演化:Linux 的第一记反击

如果说 Dijkstra 坚信构建软件必须像修建“数学大教堂”一样,依靠自顶向下的形式化推导;那么,以 Linux 为代表的开源运动,则给了这种纯粹的理想主义明确的回击。

Linux 的内核不是在纸上证明出来的,而是在残酷的“达尔文演化”中长出来的。开源社区秉持“早发布,常发布”的集市模式,用海量的试错和修补生硬地在混乱中蹚出了一条路。支撑这个庞大集市的,是深厚的默会知识(Tacit Knowledge)。即使没有完美的数学证明,依靠强大的工程脚手架和群体的演化反馈,人类依然构建出了撑起全球互联网底座的可靠现实。

卸载 IDE 与代码的商品化:Scaling Laws 的无情碾压

如果说 Linux 只是在工程方法上绕过了 Dijkstra,那么 2022 到 2026 年的 AI 浪潮,则是直接在物理定律层面将 Dijkstra 的讽刺变成了冰冷的现实。

2026 年,来自大模型最前沿阵地的技术领袖 Boris,向整个行业展示了一个残酷的切片:

“自从 Opus 4.5 发布之后,我的编码工作基本就是 100% 交给 AI。我把 IDE 都卸载了,不再手写任何一行代码,现在每天能合并 20 个 PR。在我们的很多团队里,这个比例也是 100%。”

当大模型沿着无情的指数曲线(Scaling Laws),用暴力的算力和海量的数据生生“拟合”出逻辑解答时,“编程”这项曾经充满智力门槛的技能,正在被彻底解决。

这就引出了一个颠覆性的工程范式转移:在《构建之法》的三个公式中,AI 彻底“击穿”了第一个公式。代码正在沦为“快速消费品”(Disposable Commodity),而契约(Contract)成为了唯一的核心资产。 既然任何模块都可以让 AI 在几秒钟内推翻重写,代码便不再金贵。那些由 TDD(测试驱动开发)和 CI/CD 流水线死死守护的接口契约、输入输出规范和业务逻辑,才是最有价值的。我们要用钢铁般的测试用例打造一个坚不可摧的“模具”,然后放手任由 AI 往里面倾倒任何编程语言实现的逻辑,只要它不溢出契约的边界。

古腾堡的排字工与创造者的解放

面对“编程已被解决”的终局,许多人感到恐慌,但真正的工程师却感到狂喜。因为一个经常被忽略的事实是:许多顶尖的创造者并不真正享受“敲击键盘写符合语法的代码” 的枯燥过程,他们只是为了解决现实问题而不得已为之。

我们可以类比:15 世纪中叶的古腾堡印刷机。在印刷术发明之前,知识被垄断在极少数的“抄写员”手中;而印刷术普及后,又催生了熟练的“排字工人”。排字工每天与沉甸甸的铅字块较劲,将字母一个个、一行行地机械拼接。当全自动排版技术(甚至后来的数字排版)出现时,排字工人这一职业彻底消亡了。

但这摧毁了书籍吗?没有。排字工人的隐退,换来的是出版家、作者和书籍构建者(Builder)的黄金时代。

在过去几十年里,哪怕是最具天赋的架构师,也不得不把大量的时间耗费在处理 API 调用、纠结语法错误、修复低级 Bug 这些相当于 “手工排字” 的枯燥劳动上。而现在,AI 终于让写程序变成了一件用 AI token 就可以解决的小事。

它释放了什么?它将创造者从底层的泥沼中彻底解放出来,去完成《构建之法》中第二个和第三个公式里那些真正属于人类智慧的事业:想清楚系统到底要做什么,构筑坚固的软件工程底座,以及去寻找真正能跑通的商业模式。

结语:存在主义的转移,缔造者接管世界
正如前沿开发者所断言的,“程序员/Programmer”这个头衔将会逐渐消失,或者仅仅沦为一个遗留符号。传统意义上的 Programmer——那个将思想逐行翻译为特定语法、死磕底层逻辑的代码排字工——正在隐退。

但这绝不意味着软件工程的消亡。在这场技术范式的巨变中,我们可以清晰地看到一场存在主义的转移:

程序员:我编程,故我在。 当“敲击语法”变成了编译器的活儿,如果你的价值仅仅是做一个人肉翻译机,那么当超级编译器(AI)到来时,你的“存在”就会被抹除。

编译器(AI): 我编译,故我在。 AI 接管了所有确定性的逻辑转换。它极度重要,但它只是基础设施,正如我们现代生活中的水和电。

建造者(Builder): 我构思蓝图,建立工程体系,故我在。 这就是为什么只有 Builder 能跨越周期。因为“构思蓝图”定义了系统要解决什么真实的现实问题,“建立工程体系”划定了系统的边界和契约。这两件事永远无法被概率引擎自动推导。

未来的 Builder 不再沉溺于手工排布代码或者 debug,他们的日常将发生质的跃迁:定义真理与契约守护: 用极致严密的逻辑和 TDD 测试用例,给 AI 生成的混沌代码套上形式化的枷锁,这是他们对内容的终极审校。

连接真实世界: 花更多的时间与用户沟通,挖掘业务的本质诉求(那才是机器无法凭空推导的默会知识)。

构筑工程底座: 搭建无坚不摧的 CI/CD、监控和容灾体系,用坚固的工程脚手架抵御系统熵增的洪流。

半个多世纪前,当 Dijkstra 在结婚登记表上写下 "programmer" 时,那个不被认可的职业,最终用它的严谨和伟大塑造了人类的数字文明。

今天,Dijkstra 的讽刺并未失效,它只是被大模型的指数曲线放大了十倍。Linus 的集市并未终结,它只是迎来了名为 AI 的超级代码生成引擎。在这个波澜壮阔的大航海时代,不懂计算科学、缺乏工程敬畏的人,依然造不出伟大的软件;而只会低头写代码、抱残守缺于 IDE 的“排字工”,也注定被时代淘汰。

只有那些既保留了 Dijkstra 般的逻辑严密性,懂得 Linus 工程+社区的演化规律,用 TDD 构筑契约边界,又能以出版家/架构师姿态跨越从程序到商业闭环的建造者(Builder),才会在技术发展的曲线上继续闪耀。

代码转载自:https://pan.quark.cn/s/8ce4326d996e 对于在 CentOS 7 系统中修改网卡配置文件后无法使设置生效的情况,经过实践验证,可以通过使用 nmcli 命令来进行调整。完成修改之后,需要重新启动虚拟机以使更改生效,这样操作流程即告完成。如果设置仍然无法生效,则表明虚拟机在启动过程中所获取的 IP 地址配置并非针对 eth0,此时可以对其它网卡的配置文件进行修改或将其移除。在 CentOS 7 系统中,网络配置的管理机制与早期版本存在差异,主要体现为采用了 Network Manager 服务来负责网络接口的管理。在某些情形下,尽管修改了 `/etc/sysconfig/network-scripts` 目录下的 `ifcfg-eth0` 文件,但网络配置却未能即时生效。此类问题的发生通常源于 CentOS 7 采用了不同于以往的配置读取方法。接下来将具体阐述如何借助 nmcli 命令来处理这一挑战。 以 root 用户身份登录系统并打开终端界面。nmcli 是 Network Manager 提供的命令行界面工具,它支持在命令行环境下执行网络连接的建立、编辑、查询及管理任务。针对修改 eth0 网卡配置的需求,可以遵循以下步骤进行操作: 1. 导航至 `/etc/sysconfig/network-scripts` 目录: ``` cd /etc/sysconfig/network-scripts ``` 2. 检查该目录内是否存在 `ifcfg-eth0.bak` 文件,该备份文件可能是先前调整配置时遗留下来的,若存在可能造成冲突。若发现该文件,可以选择将其删除: ``` [root@localhost netw...
代码转载自:https://pan.quark.cn/s/46fd08fb879c 网管教程 从入门到精通软件篇 ★一。★详尽的xp修复控制台指令及其应用!!! 放入xp(2000)的光盘,安装时选择R,执行修复! Windows XP(涵盖 Windows 2000)的控制台指令是在系统遭遇某些意外状况时的一种极具效用的诊断、检测以及恢复系统功能的工具。笔者确实一直期望能够将这方面的指令进行归纳,此次由老范辛苦整理了这份极具价值的秘籍。 Bootcfg bootcfg 命令用于启动配置与故障恢复(对大多数计算机而言,即 boot.ini 文件)。 带有特定参数的 bootcfg 命令仅在运用故障恢复控制台时方可使用。能够在命令行界面下运用带有不同参数的 bootcfg 命令。 用法: bootcfg /default 设定默认引导选项。 bootcfg /add 向引导清单中增添 Windows 安装。 bootcfg /rebuild 重复整个 Windows 安装流程并让用户选择需添加的项目。 注意:运用 bootcfg /rebuild 之前,应先借助 bootcfg /copy 命令备份 boot.ini 文件。 bootcfg /scan 探查用于 Windows 安装的全部磁盘并展示结果。 注意:这些结果被静态存储,并用于当前会话。若在当前会话期间磁盘配置发生变动,为获取更新的探查结果,必须先重启计算机,然后再次探查磁盘。 bootcfg /list 列示引导清单中已有的项目。 bootcfg /disableredirect 在启动引导程序中禁用重定向。 bootcfg /redirect [ PortBaudRrate] |[ useBio...
代码下载链接: https://pan.quark.cn/s/fc524f791b68 AA制程,即Active Alignment,被理解为主动对准,是一种用于确定零部件装配中相对位置的方法。在摄像头封装阶段,涉及图像传感器、镜座、马达、镜头、线路板等多个部件的重复组装,而传统的封装设备如CSP及COB等,均是依据设备设定的参数进行零部件的移动装配,因而零部件的叠加误差会逐渐增大,最终在摄像头上表现为拍照最清晰的位置可能偏离画面中心、四边清晰度不均等现象。伴随智能手机和其他高端电子产品的普及,摄像头模组的性能正日益受到重视。高分辨率、卓越的低光表现以及稳定视频输出是现代用户所期望的。在摄像头模组的制造环节,各部件的精准定位对成像质量具有决定性作用。因此,一种名为“AA制程”(Active Alignment)的前沿技术被开发出来,成为摄像头精密对准的核心技术。 AA制程,即Active Alignment,是一种在摄像头封装过程中应用的主动对准方法。该方法在多个组件装配阶段发挥作用,涵盖图像传感器、镜座、马达、镜头和线路板等部件。传统的封装方式,例如CSP(Chip Scale Package)和COB(Chip On Board),依赖于设备预设的参数进行组装,但随着组件数量的增加,误差也会累积,最终影响摄像头的表现。例如在成像质量上可能出现中心位置偏移、四角清晰度不一致等问题。 AA制程技术的核心在于实时监测与主动调整。在组装过程中,它借助先进的检测设备持续监控半成品的状态,并根据实时信息对组装部件进行精确修正,从而显著降低装配误差。通过这种技术,能够确保摄像头模组中各组件的相对位置准确无误,从而使得最终的成像效果更加稳定,特别是在中心区域和四角的清晰度上...
内容概要:本文介绍了一套基于Matlab实现的光子晶体90度弯曲波导的二维时域有限差分法(2D FDTD)仿真代码,旨在通过数值模拟手段深入研究光子晶体波导中的光传播特性。该资源聚焦于电磁场与光子学领域的仿真技术应用,系统实现了FDTD算法在复杂介质结构中的建模过程,涵盖空间网格剖分、时间步进迭代、完美匹配层(UPML)边界条件处理、总场散射场(TFSF)激励源设置、介电常数分布定义及电磁场演化可视化等核心模块,能够有效分析光在90度弯曲波导中的传输效率、模式分布与反射损耗等关键性能指标。; 适合人群:具备电磁场理论基础和Matlab编程能力的研究生、科研人员以及从事光子晶体器件设计与仿真的工程技术人员。; 使用场景及目标:①用于教学演示FDTD方法的基本原理与算法流程,帮助理解麦克斯韦方程的离散化求解过程;②支撑科研工作中对光子晶体弯曲波导结构的传输特性进行仿真分析与性能优化;③作为开发更复杂光子集成器件(如分束器、滤波器)数值仿真工具的基础框架; 阅读建议:建议使用者结合经典FDTD教材(如Taflove著作)深入理解算法理论,并在Matlab环境中逐模块调试代码,重点关注电场与磁场的交替更新过程、UPML吸收边界的设计实现以及TFSF源的引入方式,从而全面提升对时域电磁仿真机制的掌握与应用能力。
内容概要:本文围绕直驱式永磁同步电机(PMSM)的矢量控制仿真模型展开研究,基于Simulink平台构建了完整的电机控制系统仿真模型,涵盖电机本体建模、坐标变换(如Clark变换与Park变换)、磁场定向控制(FOC)、电流环与速度环的PI调节、空间矢量脉宽调制(SVPWM)等核心技术环节,旨在实现对电机转矩与转速的高精度、动态响应良好的控制。通过系统化仿真验证控制策略的有效性与鲁棒性,深入分析各模块间的信号流向与控制逻辑,为电机驱动系统的设计与优化提供理论依据和技术支撑,是理论联系工程实践的重要桥梁。; 适合人群:具备电机学、电力电子与自动控制基础知识,熟悉Simulink/MATLAB仿真环境,从事电气工程、自动化、新能源车辆、智能制造等方向的研究生、科研人员及工程技术人员。; 使用场景及目标:①深入理解永磁同步电机矢量控制的核心原理与系统架构;②掌握在Simulink中从零开始搭建复杂电机控制系统的方法与技巧;③应用于课程设计、毕业论文、科研项目中的控制算法验证、参数整定与性能优化;④为后续的硬件在环(HIL)测试或实物系统开发奠定仿真基础。; 阅读建议:建议结合经典电机控制理论教材同步学习,注重理论推导与仿真实现的对应关系,动手实践模型搭建、参数调试与波形分析,特别关注PI控制器参数整定对系统稳定性、动态响应速度和抗干扰能力的影响,通过反复仿真迭代加深对控制机理的理解。
代码下载地址: https://pan.quark.cn/s/a4b39357ea24 Subversion,即 SVN,是一种在软件开发行业中普遍应用的版本管理工具。它支持团队成员之间的协作,用于管理和监控项目文件的历史版本,并保证多人同时编辑时的数据一致性。本指南将深入讲解 SVN 的核心概念、主要目录的权限设置、用户身份验证方式以及基础操作步骤,是初学者入门的理想学习资料。 一、SVN概述 SVN的中心是版本库,它负责存储所有文件和目录,并构建成文件树的结构。版本库能够允许多个客户端进行连接,执行数据的读取或写入。用户可以通过写操作将自己的修改同步至版本库,而其他用户则可以通过读操作来查看这些变更。这种集中式的版本管理机制使团队协作更加高效和有序。 二、SVN的访问权限配置 在 SVN 系统中,不同的用户或用户团队会被分配不同的访问权限。以质量管理部门的 SVN 实例为例: - 主管朱猛、张凯峰、吕鑫、张颂、马凌具备读写权限。 - 员工陈玲及其他成员仅拥有读权限。 - 项毓毅享有读写权限,主管团队则只有读权限。 - 张凯峰同样拥有读写权限,而其他同事仅能进行读取操作。 三、登录凭证 用户在访问 SVN 时,需要使用基于姓名拼音的用户名和符合特定规则的密码。例如,用户张三的登录名设定为"zhangs",密码为"zhangs#123",这样的设置旨在简化记忆和管理工作。 四、基础操作指南 1. 安装 SVN 客户端:本教程推荐采用 TortoiseSVN 进行安装,可以从指定的 FTP 地址获取安装包。 2. 读取操作: - 项毓毅和管理团队可以直接检出到"质量管理部"目录。 - 其他员工需要分别检出到"部门财富库"和"产品线管理"子目录,因为他们无法访问"部...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值