首页 › programming › 240万人看过:编程≠敲代码

240万人看过:编程≠敲代码

概述

"Programming"和"coding"这两个词,中文里都翻成“编程”,英文语境里也早已被混用到可以互换。但Aaron Jack——一位前Uber软件工程师、YouTube开发者教育区的头部博主——在这条播放量约239万的视频里,把这两个词重新掰开:coding是“翻译”,programming是“解决问题”,两者的差距,正是“学过编程”的人和“能靠编程吃饭”的人之间的差距。这条视频不是讲语法的教程,而是一堂关于“编程到底是个什么活动”的概念课。在AI写代码已成日常的2026年,这个原本偏哲学的区分,突然变成了每个开发者(以及每个想入行的人)都必须回答的生存问题:当AI能完成"coding",你剩下的价值是什么?这篇解读会拆解视频论点、追溯背后的真实理论与研究、指出它的夸大之处,并给出可操作的启示。

视频基本信息

核心主张拆解

要点一:开场立场——这不是咬文嚼字,而是两个职业

视频的开篇策略很典型:先承认“大多数人确实在混用这两个词”,然后立刻亮出反方立场——混用是有代价的。Aaron的核心区分可以概括为一句话:coding是把“已经想清楚的解决方案”翻译成机器能执行的语言;programming是从一个模糊的现实问题出发,把它一步步变成可执行方案的完整过程。前者是语言问题,后者是问题问题。这个区分之所以是职业级的,是因为工业界付钱买的几乎从来不是前者:公司不存在“需要有人把Java写出来”的需求,公司存在“需要把这个业务痛点变成可靠软件”的需求,写Java只是其中一个环节。

要点二:Coding的画像——一种可以标准化、甚至可以外包的活动

视频沿着“编码是什么”往下走:编码活动的输入是明确的逻辑(先做A,若条件B则做C),输出是语法正确的代码。它高度依赖记忆和熟练度——就像学一门外语的“笔译”环节。正因为它的结构化程度高,它也是整个软件活动中最容易被标准化、被教材化、被拆成练习题的部分,这在解释了一个事实的同时也埋下伏笔:为什么市面上绝大多数“学编程”内容,教的其实只是coding——因为coding好教、好测、好出成果,十二周训练营能让你做出一个能跑的网站,却很难让你具备“接住一个烂摊子需求”的能力。

要点三:Programming的画像——从“需求是模糊的”这个残酷事实开始

视频的另一半重心在描绘programming的全貌:理解需求(而需求往往是含糊甚至自相矛盾的)、拆解问题、设计结构与数据流、选择权衡(性能还是可维护?快上线还是少欠债?)、实现、调试、测试、上线后继续维护。注意这里和coding的根本差异:coding面对的解是给定的,programming面对的问题是开放的。程序员的大量日常工作不是“写”,而是“想”——想清楚该建什么、为什么这么建、哪里会坏。写代码常常是整个过程中最不费脑的收尾动作。

要点四:断层的真相——为什么“上过课”的人接不了活

顺着前两点,视频给出一个解释力很强的推论:新手简历上的“会X语言”和公司要的“能解决问题”之间隔着一条断层,因为学习路径和需求路径是错位的。教程给你的是干净的问题、给定的约束、唯一正确的答案;生产环境给你的是脏数据、历史遗留系统、说不清需求的干系人和永远不够的工期。一个只会coding的人进入这种环境,就像一个只练过翻译题的人去做同声传译——每个词都认识,整件事干不下来。这也顺带解释了行业里那个老现象:为什么有人手速飞快、语法滚瓜烂熟,却在真实项目里寸步难行。

要点五:2026年重看——这条视频突然变成了生存指南

这是原文没有展开、但今天必须补上的一层。视频发布时,“编程vs编码”更像概念辨析;而到了2026年,AI编程助手已经把“把想清楚的方案翻译成代码”这件事自动化了大半。于是视频里的那条分界线,被AI原样继承了下来:AI极擅长coding,而programming——理解模糊需求、做架构权衡、判断AI给出的代码对不对——依然压在人身上。“会写代码”作为技能的市场价格正在快速贬值,“能定义问题并验证答案”的价值则在上升。这条几年前的概念课,因此从“科普”变成了“定位仪”。

知识与理论溯源

Peter Naur《Programming as Theory Building》(1985):这位图灵奖得主在这篇经典论文里提出,编程的本质不是产出文本,而是在开发者头脑中构建一座关于“程序如何工作、为什么这样设计”的理论(theory);代码只是理论的副产品。这直接解释了视频的区分:coding可以只操作文本,programming必须建立理论——也解释了为什么接手别人的代码那么难:理论不在你脑子里。

Jeannette Wing《Computational Thinking》(CACM, 2006):时任CMU教授的周以真把计算思维定义为“运用计算机科学的基本概念来解决问题、设计系统、理解人类行为”,并强调它独立于任何编程语言。这正是“programming”那一半的学术表述——问题的抽象、分解、权衡,而不是语法。

Fred Brooks《No Silver Bullet》(1986):Brooks把软件工作的困难分为“本质复杂性”(问题本身的复杂)和“偶然复杂性”(工具和表达带来的复杂)。coding消耗的主要是偶然复杂性,programming消耗的才是本质复杂性——而Brooks的核心论断正是:没有银弹能消灭本质复杂性。AI吃掉的是偶然复杂性,这从理论上预言了“AI让coding贬值、让programming升值”的格局。

SICP的告诫:MIT经典教材《计算机程序的构造和解释》开篇即写道“程序是写给人读的,只是顺便能在机器上执行”。这提醒我们别把coding贬得过低:把方案“翻译”得清晰、可维护,本身就是一种专业技艺,并非机械劳动。

AI编码的实证研究:GitHub在2022-2023年发布的对照实验(arXiv:2302.06590)显示,使用Copilot的开发者完成任务的管测速度快了约55%;而METR在2025年发表的一项针对资深开源开发者的随机对照研究则发现,预期AI能提速20%以上的被试,实际耗时反而增加了约19%。两组结果合起来恰好印证本文主题:AI大幅加速了“打字的部分”,而理解、验证、担责这些programming的部分,依然慢且贵。(上述研究细节请以论文原文为准。)

批判性审查

证据充分的部分:coding与programming的功能区分,在Naur、Wing、Brooks三条独立的学术脉络里都有对应物,也和一线工程经验(code review、需求评审、线上排障占比)高度吻合。这一部分不是博主个人的修辞偏好,是有理论传统的。

被简化的部分:视频为了论述干净,把两者呈现成了近乎二元的对立,但现实中它们是一个连续谱——资深工程师写代码时也在做设计(coding里含着programming),而新手做设计时往往只能靠模仿编码套路(programming里掺着coding)。把谱系讲成二元,教学上有效,认知上要打折扣。

有争议的部分:视频语境里隐含的对训练营类“只教coding”课程的轻视,值得商榷。训练营的问题不是教coding,而是只教coding却许诺职业转型;coding能力本身是必要的脚手架,没有人能跳过翻译练习直接学会解决问题。另外,“翻译”这个比喻也有低估之嫌——它暗示原文(方案)先于译文(代码)存在,但实践中大量设计决策是在写代码的过程中才被迫显形并修正的,“写”本身参与“想”。

一个时代性的修正:随着模型能力升级,AI正在侵入传统意义上属于programming的地盘(需求澄清、方案生成、测试设计),所以“AI只会coding”这个隐含前提是一个移动的边界。今天读这条视频,正确的姿势不是记下一条静态分界线,而是学会持续地问:此刻,哪一段活动刚刚被自动化了?我还站在哪一侧?

认知提升与实用启示

1. 用“Naur测试”检验自己是不是真程序员。合上IDE,能不能把手上这个系统“为什么这样设计、改哪里会牵动什么、哪里最容易坏”讲给一个同事听懂?讲不出来,说明你只做了coding、没有建成理论。每周对自己负责的模块做一次这个测试,讲不清的部分就是你下周期学习清单。

2. 把学习顺序倒过来:先写方案,再写代码。拿到任何练习或需求,先用中文把解题步骤、数据结构和边界情况写满半页纸,然后才允许打开编辑器。这个习惯强制把programming(想)和coding(写)拆开训练,而大多数教程把两者搅在一起,导致你以为自己在练编程,其实只在练打字。

3. 在AI协作里主动认领“验证者”角色。让AI写代码没问题,但给自己立三条铁律:先写清楚规格和测试再生成;每一行合入前能解释它在做什么;出问题时先问“我对这个系统的理论错在哪”,而不是只改到能跑为止。AI时代最危险的姿态是退化成“AI输出的人肉回车键”——那等于自愿把自己降级成可被进一步自动化的环节。

知识结构图

flowchart LR
    subgraph Reality["现实世界"]
        P["模糊的真实问题<br/>需求/约束/权衡"]
    end
    subgraph Programming["Programming 编程(人的主场)"]
        A["抽象与建模"]
        B["架构与权衡"]
        C["验证与担责"]
    end
    subgraph Coding["Coding 编码(翻译层)"]
        D["把方案翻译成语法"]
    end
    M["机器执行"]
    P --> A --> B --> D --> M
    M -->|"反馈/缺陷"| C
    C -->|"修正理论"| A
    AI["AI编程助手"] -.->|"大幅加速"| D
    AI -.->|"正在侵入"| B
    H["人的不可替代价值"]:::hl
    C --- H
    classDef hl fill:#f9f,stroke:#333,stroke-width:2px;

延伸阅读

  1. Peter Naur, Programming as Theory Building(1985)——本文溯源部分的核心论文,可经学术检索获取;如果只读一篇理解“编程是什么”,就是它。
  2. Jeannette M. Wing, Computational Thinking, Communications of the ACM(2006)——"编程思维"的原始出处,十页纸讲清问题抽象与分解。

参考来源

本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。

[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。

51学通信知识星球海报-扫码加入