首页 › programming › 编码是翻译,编程才是设计

编码是翻译,编程才是设计

一、为什么这支视频值得你停下来

先说一个很多人没意识到的现象:在中文语境里,“编码”和“编程”几乎是同一个词,我们随手混用,从不觉得有什么问题。但在英语世界,coding 和 programming 这两个词已经悄悄分家很多年了——而且这条缝,恰好划在“打字的人”和“解决问题的人”之间。

Aaron Jack 的这支《Programming vs Coding - What's the difference?》就是冲着这条缝去的。截至2026年10月,它积累了约240万次播放——对一支讨论“两个词有什么区别”的视频来说,这个数字本身就说明:这不是文字游戏,这是无数初学者和从业者心里悬了很久的真问题。

它的价值不在给出什么惊天结论,而在于把一个被日常语言糊住的分层重新掰开:写代码这个动作,和让一个软件从无到有成立的整个过程,到底差在哪。想明白这个区别,你会重新理解三件事——为什么有人语法背得滚瓜烂熟却做不出东西;为什么 AI 代码生成工具越强,有些程序员反而越值钱;以及你的学习路径下一步该往哪走。

先打个招呼:下面我会把这条主线拆开讲,其中标了“延伸”的部分是我自己的补充分析,别都记在视频账上。

二、视频背景卡片

项目 内容
视频标题 Programming vs Coding - What's the difference?
频道 Aaron Jack(开发者职业向频道)
时长 以 YouTube 页面显示为准
播放量 约240万(截至2026年10月)
核心主题 编码(coding)与编程(programming)的区别,以及对学习路径、职业定位的含义

补一句频道背景:Aaron Jack 本人就是职业程序员出身,据公开资料曾在新西兰软件公司及 Uber 做过软件工程师,后来转向全职做开发者职业内容,主题集中在“怎么学编程、怎么进入行业、行业里真实的价值分布”。这个背景很重要——他不是学院派在谈概念,而是从招聘和干活的一线视角,回来解释这两个词为什么会被分开使用。(延伸:这类“一线视角”频道的一个通病是结论偏经验主义,观看时保持自己的判断。)

三、核心内容拆解

1. 一个被翻译吃掉的区别

coding 和 programming 在中文里都被译成“编程”,这个翻译上的合并,让中文学习者天然少了一层感知。英文里这两个词的分量完全不同:coding 指的是“写代码”这个具体动作——把已经想清楚的步骤,用某种语言的语法落成文本;programming 指的则是让一个程序得以成立的全过程:理解问题、设计方案、拆解模块、写代码、调试、测试、上线、维护。

打个比方(延伸):coding 是“把中文合同翻译成英文”,programming 是“谈成这单生意、起草条款、落到合同、再盯着履约”。翻译当然重要,但翻译不产生合同本身。当你对别人说“我在学编程”时,你立志的东西应该是后者。

2. 编码的本质:翻译

为什么说 coding 的本质是翻译?因为写代码的前提是方案已经存在。函数拆成几块、循环边界在哪、异常怎么兜底——这些决定做完之后,剩下的才是把它逐句写成语法正确的文本。这一步当然需要熟练度,但它的创造性上限,取决于前面那一步想得有多清楚。

这也是为什么同一个需求,让十个初学者写出来的代码天差地别:他们的语法水平可能差不多,差别全在“翻译之前的那个蓝图”上。(延伸)语法知识的半衰期其实很短——框架三年一换、语言版本一年一升,真正保值的是蓝图能力。把时间全砸在“背语法、刷语法题”上,相当于把自己的职业押注在贬值最快的资产上。

3. 编程的本质:在脑子里先造一遍

编程最难的部分,发生在任何一行代码写下之前:把一个模糊的现实问题,变成一个可执行的方案。客户说“我想要个预约系统”,这句话到“哪些字段、什么状态机、并发冲突怎么处理”之间,隔着的是纯粹的工程设计。这个阶段没有语法可查,没有 Stack Overflow 可抄,只有你对问题域的理解和对复杂度的取舍。

(延伸)软件行业有句话流传很广:软件工程最难的部分是对复杂度的管理。你脑子里要先造出一个能跑的模型,代码只是这个模型的投影。投影画歪了,多半不是手的问题,是模型歪了——这也是为什么“改 bug 改到最后发现是需求理解错了”是所有工程师的共同记忆。

4. 历史开的玩笑:第一个程序员没运行过任何代码

这里插一段历史,它把这个区别讲得比任何定义都清楚(延伸部分,视频之外的补充)。1843年,Ada Lovelace 在翻译一篇关于巴贝奇分析机的论文时,在注记里写下了用分析机计算伯努利数的完整算法,被广泛视为历史上第一个计算机程序。问题是:分析机压根没造出来。她没有写过一行“能跑的代码”——因为根本没有机器可以跑。

但这不妨碍“编程”已经发生:问题定义、算法设计、步骤分解,全都在纸上完成了。反过来说,今天的“编码”——把算法翻成机器可执行的指令——在当年是巴贝奇的机械工程师们要操心的事。这个分工在第一代就存在了:编程在人的脑子里,编码只是它落地的形式。上世纪50年代 Grace Hopper 团队做出早期编译器之后,编码那一层还被进一步自动化了——机器自己接管了“翻译成机器码”的工作。

5. 分水岭在调试

怎么判断一个人是在 coding 还是在 programming?看他和 bug 的关系。(延伸)编码思维的人遇到报错,第一反应是“语法哪里错了”“这行该怎么改”;编程思维的人第一反应是“我对这个问题的理解哪里错了”——是边界条件想漏了?状态没考虑全?还是需求本身就是矛盾的?

调试是唯一一个必须同时调动“语法知识”和“问题模型”的活动,所以它成了两个层次的试金石。Dijkstra 有一句流传很广的话,大意是:调试的困难在于,你写的代码不是它实际做的事,而是你希望它做的事。这句话的潜台词是:bug 大多不是手误,是心智模型和现实之间有裂缝。工程师大量的时间其实花在读懂现有代码、复现问题、缩小范围上,而不是写新代码——这在一线开发者里是普遍共识。

6. No-code 的反证:打字被消灭了,编程没有

(延伸)有个现成的社会实验能验证 coding 和 programming 的分家:no-code(无代码)运动。拖拽式建站、可视化流程编排,这些工具把“写代码”这个动作几乎消灭了——按 coding 的定义,它应该让“人人都能做软件”成真。

结果呢?工具确实普及了,但真正用 no-code 做出能用、能维护的产品的人,依然要做需求分析、数据建模、流程设计、异常处理——编码被工具吃掉了,编程一点没少。大量 no-code 项目的烂尾,恰恰烂在“方案”而不是“打字”环节。这个反例雄辩地说明:工具可以替你敲字符,替不了你对问题塑形。

7. AI 时代:翻译越来越便宜,设计越来越贵

把前面几层叠起来,就能看懂当下(延伸)。GitHub Copilot、Cursor 这类 AI 编码工具本质上是把“翻译”这一层自动化推到了新高度:你描述意图,它落成代码。按本文的框架,这意味着 coding 的市场单价正在快速贬值——它正在从一项职业技能,退化成一种“会打字”级别的默认能力。

但 programming 那一层反而被放大了:AI 生成的代码越多,越需要有人判断“该不该生成这段代码”“生成的对不对”“放进系统里会不会炸”。需求定义、架构取舍、验收标准的设定,这些环节的价值权重在上升。行业里关于初级岗位收缩的讨论,用这个框架看会清晰很多:被压缩的是纯翻译型工作,而不是工程能力本身。这也是这支视频的问题意识在今天格外应景的原因——它讨论的词义之别,正好是 AI 冲击下职业价值重分布的那条分界线。

8. 对学习路径的含义:先 coding 没错,别停在 coding

(延伸)最后落到实操。初学阶段从 coding 入手是完全正确的——抄一段代码、改一行参数、看到程序跑起来,这种即时反馈是坚持下去的燃料,学习科学里叫低门槛的成功体验。问题不在起点,在停顿:很多人学了两年还在反复“学语法”,始终没跨到 programming 层。

跨层的标志是三个动作的转变:从“写完就跑”到“故意把代码弄坏再修好”;从“只写自己的代码”到“读懂别人的代码”;从“照教程做项目”到“自己从一个模糊需求里拆出方案”。做完这三个转变,语法量不变,但你已经不是原来那个层次的开发者了。

四、知识结构图

flowchart TD
    A["目标:让机器替人做事"] --> B["编程 Programming"]
    A --> C["编码 Coding"]
    B --> B1["定义问题与需求"]
    B --> B2["设计与拆解"]
    B --> B3["调试与验证"]
    B --> B4["维护与演进"]
    C --> C1["语法与语言特性"]
    C --> C2["把方案翻译成代码"]
    B2 --> C
    B3 --> C
    D["AI 代码生成"] -->|吞掉翻译层| C
    D -->|放大设计层| B
    E["No-code 工具"] -->|同样只消灭打字| C

五、实战启示

如果你是初学者:重新检查一下自己的时间分配。如果你每天的时间都花在“再看一遍语法教程”上,说明你停在翻译层了。给自己换一种练习:拿一个你真实需要的小工具(记账、爬个数据、批量改文件名),先在纸上写清楚输入输出和步骤,再动手。写不下去的地方,才是你真正要学的东西。

如果你已经在写代码:把调试当主动练习,而不是被动救火。遇到 bug 先别急着搜索报错信息,花五分钟用自己的话解释“我认为这段代码在做什么、它实际在做什么”——这个动作练的是问题模型,是 AI 替代不了的那层。

如果你在带团队或做技术管理:招聘和分工时用这把尺子量一量。团队里“翻译型”的工作可以越来越多地交给工具和初级成员,但需求定义、方案评审这些环节的投入不能省——那里才是项目成败的决定处,也是 AI 时代团队里最该保护的精力分配。

如果你在为孩子规划编程教育:不必纠结学哪门语言。语言只是翻译工具,孩子真正该通过编程课练到的是拆解问题的习惯——把一件大事分成几件小事,把含糊的要求说成明确的步骤。这个能力换任何赛道都能用。

六、延伸学习路径

  1. 本支视频:把 coding 与 programming 的区别作为认知起点,然后往下走。
  2. developer-roadmap(GitHub 上的开源路线图项目,数十万星级别):按“后端/前端/DevOps”等角色给出技能地图,它的价值在于让你看到“编程”是一个由几十项能力组成的系统,而不是一门语言。
  3. freeCodeCamp:开源课程体系,适合作为 coding 层的练习场——但记得按本文的框架,用它练手,别在里面定居。
  4. 《代码大全》(Code Complete,Steve McConnell 著):软件构造领域的经典,整本书讲的就是“翻译之前的蓝图该怎么画”。
  5. 《程序员修炼之道》(The Pragmatic Programmer):从工程思维层面回答“职业程序员和写代码的人差在哪”,和这支视频互为注脚。

七、一句话总结

代码是写给机器的,编程是人对问题重新塑形的过程——语法会过时、工具会更替,但把混乱的现实拆成清晰方案的能力,才是这个行当里真正不会贬值的资产。

参考来源

  1. Programming vs Coding - What's the difference? | Aaron Jack — 本文分析的核心视频
  2. developer-roadmap — 开发者技能路线图开源项目
  3. freeCodeCamp — 开源编程课程与练习体系
  4. Ada Lovelace 1843 年分析机注记与 Grace Hopper 编译器史料 — 计算机史公开史料(本文第四节延伸部分)

本文由「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学通信知识星球海报-扫码加入