第五十四章 · 技巧篇

非程序员编程

用AI写代码解决实际问题,不需要学编程,只需要清楚地描述需求

01 · 编程和用AI写程序是两件完全不同的事

一个常见的误解是:"我要用AI写代码,所以需要先学编程。"这是错的。学编程和用AI写程序需要的技能完全不同。学编程需要你理解算法、数据结构、系统设计。用AI写程序需要的是:清楚地描述问题、验证代码是否工作、知道什么时候AI给的代码是不安全的。

让我们澄清一下边界。非程序员能做到什么?简单脚本(几十行代码解决一个问题)、数据处理(把数据从一种格式转成另一种、批量操作)、小工具(简单的计算器、文本处理工具)、自动化(定时任务、文件批处理)。这些都不需要你懂编程。

非程序员不能做到什么?复杂系统(比如一个社交网络应用)、长期维护的代码(因为你没法修复bug或适应新需求)、需要深厚的计算机科学知识的任务。如果代码规模超过500行,或者需要长期维护,你就应该找真正的程序员了。

关键区别:用AI写代码是"解决一个具体的问题",不是"学会编程"。目的不同,所以路径完全不同。

02 · 三个递进场景

场景一:数据处理

你有一个Excel文件,有3000行数据。你需要做的是:从每一行提取某个字段,做一个计算,然后保存成新的文件。用Excel公式可能很复杂或根本做不了,但Python两行代码就能搞定。

怎么让AI写这个代码?关键是说清楚:输入是什么、输出是什么、中间要做什么。不要用技术术语。你的输入是"一个有产品名、销售额、日期三列的Excel文件",输出是"一个新文件,包含日期、产品名和日销售额三列"。中间步骤是"把销售额按日期分组求和"。这样说,任何有基础编程知识的AI都能理解。

一个完整的例子:你有一份CSV文件,每一行是一个客户的订单记录(客户名、订单金额、订单日期)。你要做的是统计每个客户的总消费额,并按降序排列,保存成一个新的CSV。你告诉AI:"我有一个CSV文件,每行是一个订单记录。请帮我统计每个客户的总消费,然后按金额从大到小排列,保存成新的CSV文件。"AI会生成一个完整的Python脚本。

场景二:自动化脚本

你有一个重复性的任务,每天或每周做一遍。比如:下载一个网站的数据、检查某个文件夹里是否有新文件、批量重命名文件、把Word文档转成PDF。这些任务很浪费时间,但逻辑很简单。

AI能帮你写一个脚本来自动化这个过程。比如"我有一个文件夹,里面有100个文件,名字是'report_2024_01_01.txt'这样的格式。我想把它们重命名为'2024-01-01_report.txt'这样的格式。"或者"我需要一个脚本,每天早上8点检查一个网站,下载最新的数据,保存成CSV。"

关键同样是清楚地描述逻辑,不用技术术语。AI会根据你的描述生成脚本,可能需要一两轮的调整,然后你就有一个可运行的自动化工具了。

场景三:简单小工具

你想做一个小工具来解决一个特定的问题。比如一个费用计算器(输入工作小时数和时薪,输出总费用和税后金额)、一个文本处理工具(输入一段文本,输出每个单词的出现频率)、一个简单的问卷数据分析工具。

这些工具通常包括用户界面(UI)。你可以让AI生成一个Python脚本带GUI(图形界面),这样你不需要打开命令行就能使用。比如"我想做一个工具,用户输入产品成本和利润率,工具显示建议的零售价。"AI可以生成一个有输入框、计算按钮、显示结果的图形界面。

03 · 如何描述需求让AI写出可用的代码

这是最关键的部分。AI能否写出好的代码,70%取决于你的需求描述有多清楚。一个好的需求描述应该包含四个部分。

第一,明确的输入。"输入是什么?"不要说"数据",要说"一个Excel文件,有三列:产品名(文本)、销售额(数字)、销售日期(日期格式YYYY-MM-DD)"。细节越多越好。

第二,明确的输出。"输出应该是什么样的?"不要说"结果",要说"一个新的Excel文件,包含四列:产品名、日期、当日销售额、累计销售额"。如果有格式要求(比如金额保留两位小数),也要说。

第三,处理步骤。"中间要做什么?"用日常语言描述逻辑。"先读取所有数据,按产品和日期分组,计算每个分组的总额,然后按日期排序,最后保存到文件。"不需要用技术术语。

第四,边界情况。"如果数据有问题怎么办?"比如"某个产品名是空白"、"某个日期格式不对"。告诉AI你期望的处理方式。如果你不确定,可以跳过这个,AI通常会给出合理的默认行为。

一个好的需求描述例子:你有一个CSV文件(文件路径:/data/sales.csv),包含三列:产品名、销售额、销售日期。你需要一个Python脚本,计算每个产品的总销售额,然后按金额从高到低排列,把结果保存成一个新的CSV文件(文件路径:/data/summary.csv)。如果某个销售额是负数(退货),也要包含在计算中。

04 · 如何验证代码是否安全

关键原则:不要直接运行你不理解的代码。这不是因为AI生成的代码不安全(通常是安全的),而是因为你需要知道代码在做什么,这样如果出错了,你才能调试。

验证的三个步骤。首先,让AI解释代码。把代码贴给AI,问"这段代码每一行在做什么?"AI会给你逐行的解释。你的目标不是完全理解编程细节,而是理解高层的逻辑:"这段代码先打开文件,然后读取每一行,然后计算总数,最后保存结果。"

其次,在安全环境中测试。不要用真实的重要数据。先用一个小的测试数据跑一遍,看看输出是否符合预期。比如,用5行测试数据而不是5000行。如果输出正确,说明逻辑是对的,然后可以用真实数据。

最后,检查是否有特别需要关注的地方。比如,代码是否会修改或删除原文件?是否会在你的电脑上创建新文件?是否需要网络连接?对于这些问题,提前问清楚,避免意外。

红旗信号:如果代码包含"删除"、"修改系统设置"、"连接网络"这些操作,而你没有明确要求,就要问AI为什么要这样做。

05 · 非程序员编程的边界和合作模式

什么时候应该找真正的程序员?当代码规模超过500行、需要长期维护、涉及复杂的系统交互时。自己用AI写的代码是"一次性的工具"或"快速的脚本"。如果你需要的是"一个系统",就应该找专业人士。

维护代码的挑战

和程序员合作的最好方式

对于简单的脚本和小工具,非程序员完全可以用AI独立完成。对于复杂的项目,AI是加速工具,但程序员的人工审查是必需的。

实战练习:用AI写一个实际的脚本

  1. 选择一个你经常重复的任务(数据处理、文件操作、计算或信息提取)
  2. 清楚地写下:输入是什么、输出应该是什么、中间要做什么。尽量用日常语言,不用技术术语
  3. 把这个描述发给AI(比如Claude),要求它写一个Python脚本
  4. 让AI解释这段代码每一行在做什么。确保你理解了高层逻辑
  5. 用一个小的测试数据跑一遍脚本。看输出是否符合预期
  6. 如果有问题,描述问题给AI,让它修改代码。可能需要1-2轮的调整
  7. 测试通过后,用真实的数据跑脚本。记录整个过程花了多少时间
  8. 反思:这个脚本是一次性的还是需要定期使用?如果需要定期使用,这时间节省值得吗?