[译] "to program is to understand" -- 记录一段发生在 MicroBlocks 社区中围绕 AI 与编程的讨论
文章目录
前言
Raketenmann 在 MicroBlocks 社区中抛出了关于 “今天我们应该如何教授软件工程?” 的疑问, 引起了 Bernat Romagosa, John Maloney 和 klmi 的讨论.
本文记录了这段精彩的讨论, 包含讨论的英文原文和对应的中文翻译.
讨论
Raketenmann 的疑问
Raketenmann 在 2026.03.20 在 MicroBlocks 社区抛出他的疑惑(讨论出处):
Since a few weeks, I’ve started using AI agents. I had to do some major refactoring in our company’s codebase, and with the help of an AI agent I managed to finish it in 2 days instead of 1 week.
Of course, I checked the code very thoroughly. I also had to correct several conceptual problems because the AI was going in the wrong direction. But in the end, I realized something shocking: for those 2 days, I hadn’t written a single line of code. That really surprised me. Now I’m starting to rethink how I teach kids, and I feel a bit confused.
One year ago, I was confident that AI helpers would just predict what I write, and that would be the peak. Or maybe generate some code for JSON parsing, regex, or similar tasks. But with AI agents and their rapid improvement, it seems our job as software engineers is transforming. I have 25 years of coding experience, so I can guide the AI, correct it, and spot errors.
But what about the new generation of coders?
If they start using AI agents, they might not learn deeply. If they don’t use them, they won’t be able to keep up.
So how should we teach software engineering today?
Six years ago, when I started teaching coding in schools, I was strongly against block programming. I started with C — it was very hard for the kids. Then I moved to Python — still many problems with syntax. Eventually, I landed on Microblocks. But now I’m questioning again if this is the right approach. I’m also a bit afraid to teach with AI.
Somewhere I saw a person (an ex-Derek Muller Veritasium producer) who used an AI agent in a way that, instead of giving answers, it acts like a tutor — asking questions and guiding the student to figure things out.
I’m thinking that maybe building such an AI agent could be one way forward. This way, kids learn how to use AI agents, but still have to think and figure things out themselves.
Here are some educators what is your take on it?
译文
几周前,我开始使用人工智能代理。我不得不对我们公司代码库进行一次重大重构,在一个人工智能代理的帮助下,我在 2 天内完成了本来需要 1 周的工作。
当然,我对代码进行了非常彻底的检查。我也不得不纠正几个概念性的问题,因为人工智能走错了方向。但最后,我意识到一件令人震惊的事:在那两天里,我一行代码都没有写。这真的让我很惊讶。现在我开始重新思考我教孩子们的方法,并且感到有些迷茫。
一年前,我确信人工智能助手只会预测我将要写的内容,并且那就是巅峰。或者最多生成一些用于 JSON 解析、正则表达式或类似任务的代码。但随着人工智能代理及其快速进步,似乎我们作为软件工程师的工作正在发生变化。我有 25 年的编码经验,所以我可以指导人工智能、纠正它并发现错误。
但新一代的程序员怎么办?
如果他们开始使用 AI 代理,可能就学不深入。如果不使用,他们又跟不上。
那么今天我们应该如何教授软件工程?
六年前,当我开始在学校教编程时,我强烈反对模块化编程。我从 C 开始教——对孩子们来说非常难。然后我转到 Python——语法问题仍然很多。最终,我选择了 Microblocks。但现在我又在怀疑这是否是正确的方法。我也有点害怕用 AI 来教学。
我在某处看到一个人(前 Derek Muller Veritasium 的制片人)以一种方式使用 AI 代理:它不是直接给出答案,而是像导师一样——提出问题并引导学生自己去解决。
我在想,也许构建这样一个人工智能代理可能是一条前进的道路。通过这种方式,孩子们学会如何使用人工智能代理,但仍然需要自己思考和解决问题。
各位教育工作者,你们怎么看?
Bernat Romagosa 的回复
My take is I don’t use them at all. Aside from all the environmental, social and political issues associated with GenAI -which are in themselves more than enough to make everybody consider whether it’s ethical to use these things-, I do enjoy programming, which is why I want to do it myself. I enjoy the intellectual challenge, even if it takes me longer than asking a bot to churn it out. I enjoy knowing exactly what my code does and where it can fail. I don’t want to forget how to program and debug. I want to get better at the craft with every project I take, not the opposite.
When the radio was invented, some musicians thought that was the end. Why would anyone want to learn how to play music anymore? Why would anyone go through the pain of practicing 8 hours a day if they could just turn on the radio and listen? I still love playing my guitar. Hell, chess is essentially solved and people still play chess, both for fun and professionally. It was thought impossible to write a Go bot that could beat even a strong amateur player, yet here we are, AlphaGo can beat the best professional Go players without a problem, and Go is more alive than ever!
If anything, I think programming literacy is way more important than before the GenAI bubble started. People need to know how these models work so they stop asking them for psychological and medical advice. If they’re going to use them to write code, at least they should know enough programming that they can detect when the machine is actually doing the work they’ve asked it to do, or just printfing its way through -which is more common than people think-. And most importantly, we should all be aware of the huge human and environmental costs these next-token predictors have on all of us.
译文
我的看法是我根本不用它们。除了与生成式人工智能相关的所有环境、社会和政治问题——这些问题本身就足以让每个人考虑使用这些东西是否合乎伦理——我还喜欢编程,这也是我想亲自去做的原因。我享受智力上的挑战,即便这比起让一个机器人吐出答案会花更长时间。我喜欢确切地知道我的代码在做什么以及它可能在哪儿出错。我不想忘记如何编程和调试。我希望每做一个项目我的技艺都能提升,而不是相反。
当收音机被发明时,有些音乐家认为那就是终结。谁还会想学弹奏音乐呢?如果能打开收音机听,谁还愿意忍受每天练习八小时的痛苦?我仍然喜欢弹我的吉他。见鬼,国际象棋本质上已经被解决了,但人们仍然下棋,无论是为了乐趣还是职业。曾有人认为写出能击败强业余选手的围棋程序是不可能的,可事实是,AlphaGo 毫无问题地能击败最优秀的职业围棋选手,而围棋比以往任何时候都更为活跃!
如果有的话,我认为在生成式人工智能热潮之前,编程素养就已经非常重要,现在则更甚。人们需要了解这些模型的工作原理,这样他们才不会向模型寻求心理或医疗建议。如果要用它们来写代码,至少应该具备足够的编程知识,以便能辨别机器是在真正完成他们要求的工作,还是仅仅在靠 printf 混过——这种情况比人们想象的更常见。最重要的是,我们都应意识到这些下一个词预测器对人类和环境造成的巨大代价。
John Maloney 的回复
I had a very similar experience several weeks ago. Working with a friend who has more experience using AI coding agents (Claud Code, in particular), we specified a website data scraping task. The goal was to analyze about 3000 MIDI music files and create a table with data about each piece of music. In less than an hour of iteration, we had a working Python program for that task and had tested it on a handful of files. While that program was cranking over the entire music database, we asked the AI agent to create a UI for exploring the data set. That task took more iteration, but after a few more hours we had a usable version and had added several additional features and refinements.
I was stunned. If I were familiar with all of the packages used – the website scraper, the MIDI analyzer, and the Python UI framework – I think it would have taken me at least a week to do what we did in one morning. If I had to learn all those tools (which I would have), it would have take at least two weeks and probably longer, Either way, I would have considered it quick work.
As you say, this does raise questions about the future of programming as a profession. While I think there will be a role for skilled programmers to guide and check the AI agent, it seems likely that they will do less coding themselves and more supervising, goal setting, and checking of the resulting code. People with those skills will be highly valued but the software industry will only need a fraction of the programmers that it currently employs.
几周前我有过非常相似的经历。和一位在使用 AI 编码代理(尤其是 Claude Code)方面更有经验的朋友一起,我们指定了一个网站数据抓取任务。目标是分析大约 3000 个 MIDI 音乐文件,并为每首音乐创建一张包含相关数据的表格。在不到一小时的迭代后,我们就得到了一个可用于该任务的 Python 程序,并在少量文件上进行了测试。当程序在整个音乐数据库上运行时,我们让 AI 代理创建一个用于探索数据集的用户界面。这个任务需要更多的迭代,但再过几个小时我们就有了一个可用的版本,并添加了若干额外的功能和改进。
我震惊了。如果我熟悉所有使用的包——网站抓取器、MIDI 分析器和 Python UI 框架——我估计至少也要一周时间才能完成我们在一个上午做完的工作。如果我还得学习所有那些工具(我很可能得学),那至少要两周,可能更久。不管怎样,我都会认为这算是快速完成的工作。
正如你所说,这确实对编程作为一种职业的未来提出了疑问。虽然我认为熟练的程序员在引导和检查人工智能代理方面仍会有角色,但他们自己实际编写代码的工作似乎会减少,更多的是进行监督、设定目标以及检查产生的代码。具备这些技能的人将备受重视,但软件行业对程序员的需求只会是当前规模的一小部分。
totally agree that programming literacy is still important. The current AI agents are effective because they are leveraging the work of human programmers over the past 50 years. They have been trained on all the human-written code on the internet and in code repositories like Github, and they leverage human written libraries and frameworks. I think we are going to need human innovation and ingenuity to continue to move forward.
But the bigger point is that learning to code is actually learning how to think systematically. Coding involves imagining something that doesn’t exist, figuring out how to implement it, debugging, testing the result, and then being inspired to make further improvements. Coding also requires hard work and persistence in the face of obstacles. Everything about that process applies equally to science, engineering, medicine, architecture, and art.
We can’t know exactly what the future holds, but I think activities you do with electronics, rocketry, and hands-on science, as well as coding, are giving your students the best possible preparation for whatever comes next. And I hope that working with MicroBlocks is also preparing the next generation for their future.
译文
我完全同意编程素养仍然很重要。当前的 AI 代理之所以有效,是因为它们利用了过去 50 年来人类程序员的成果。它们在互联网上以及像 Github 这样的代码仓库中对所有人类撰写的代码进行了训练,并且利用了人类编写的库和框架。我认为我们将需要人类的创新和独创性来继续前进。
但更重要的是,学习编码其实就是学习如何系统性地思考。编码涉及想象不存在的事物、找出实现方法、调试、测试结果,然后受到启发去做进一步改进。编码还要求在面对障碍时保持刻苦和坚持。这个过程的方方面面同样适用于科学、工程、医学、建筑和艺术。
我们无法确切知道未来会怎样,但我认为你们让学生参与电子学、火箭学和动手科学以及编程等活动,正是在为他们未来面对的一切提供最好的准备。我也希望使用 MicroBlocks 的工作能同样为下一代的未来做好准备。
klmi 的回复
Programming in school means to learn to split a large problem into small problems and solv them. That can be done by colaborating with other students. Then put everything together und the big problem is solved. That´s called Problemlösenlernen in german. The other reason in my opinion is that using AI is believing, self programming is knowing.
译文
在学校学习编程意味着学习将一个大问题拆分成小问题并解决它们。这可以通过与其他学生合作来完成。然后把所有东西放在一起,大问题就解决了。这在德语中叫做“Problemlösenlernen”。我认为另一个原因是,使用人工智能是信任,而自我编程是理解。
John Maloney 的回复
self programming is knowing
Nice phrase! Kristen Nygaard, one of the inventors of the Simula language, used to tell his students “to program is to understand”. I heard that phrase from one of Nygaard’s students and it has stuck with me.
译文
自我编程就是自我认知
说得好!Simula 语言的发明者之一 Kristen Nygaard 曾对他的学生说过“编程就是理解”。我从 Nygaard 的一位学生那里听过这句话,一直铭记于心。
文章作者 种瓜
上次更新 2026-03-21