从零学编程:再复杂的程序,也只是顺序、判断、重复拼出来的

第一次听说编程,很多人脑海里浮起的是一个反问:为什么听起来那么难?全世界有几百种编程语言,新手常听人说语法"一个字都不能错",还要装一堆看着就头大的工具。可如果你愿意顺着往下拆,会发现一个反直觉的事实:电脑其实是一台很笨的机器,它听不懂人话、不会脑补、只会照字面死板地一条条执行。你要做的,不是学会"变魔术",而是学会给这个笨家伙写一份它一字不差照做的说明书。等你把说明书拆开看,里面翻来覆去只有三样零件:按顺序做、看条件选一条路、把一段重复做几遍。就这么简单。

这篇文章就用大白话,把要给这台笨机器写说明书时,最需要补上的四件知识讲透:想让它记住的东西放哪(变量)、怎么让它"变聪明"(控制结构)、为什么平时说错一个字它就罢工(语法)、以及写好之后它怎么真的跑起来、用哪些工具顺手(编译与 IDE)。你不用有半点编程基础,会开电脑、会装软件就够。

1. 编程到底在做什么:为什么不能直接对电脑说人话?

先把最根本的问题说清:编程是什么。

打个比方。你想做一道番茄炒蛋,脑子里立刻浮现出步骤:热锅、倒油、放蛋液、翻炒、调味、出锅装盘。你照着这个顺序做,就能吃上菜。编程就是干这件事,只不过把"做菜的人"换成"电脑",把步骤清单写成它看得懂的形式。所以课件里给的定义很直白:计算机编程(编程也叫 coding),就是"编写指令(也就是代码)来指挥计算机执行一个或多个任务的过程"。你能让它打印几行字、画一幅画、在游戏里扮演一个角色,全看你写的这串指令指挥它干什么。

但这里藏着关键的一步转折,也是很多人对编程的第一大误解。做菜时,菜谱写得含糊一点没关系,因为人会自己脑补:你说"油热了"就下菜,人知道油"差不多热"就行。可电脑不会脑补。它不猜。你漏写一步,它不会自己补上;你让它"如果下雨就带伞",它还会追问:那不下雨呢?你只写了一半,它就只执行那一半。这跟人打交道完全不同。

既然它听不懂人话,你就得用电脑世界里通行的"外语"跟它交流,这就是编程语言。编程语言是一种结构受限的书面语言,用来告诉电脑要做什么;你写下的这一组命令整体,就叫程序。它五花八门,但本质都是"同一件事、不同的语法外套"。

这一点用"打印一句话"就能看清。同样是让机器在屏幕上打出 Hello World,三种语言写法长得完全不一样:

// C++
#include <iostream>
int main() {
    std::cout << "Hello World" << std::endl;
    return 0;
}
// Java
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}
# Python
print("Hello World")

同一个"告诉电脑做什么"的意思,在 C++、Java、Python 里各有各的说法:有的要写一大堆"仪式"(Java 非要套一层类),有的只需一行(Python)。它们干的是同一件事,只是换了一门"方言"。这正是理解编程语言的关键:语言成百上千,可它们描述的逻辑是共通的,你学的不是某个词,而是一种"怎么把想法拆给电脑"的思路。

既说到语言种类多,你可能想问:那我到底该学哪一门?看编程语言的"热度榜"能给你一点直觉。有一家叫 TIOBE 的机构,每个月按各语言在各大搜索引擎上的被搜次数,排出"谁最热"。

2026-09 排名编程语言热度评分(Ratings)
1Python17.76%
2C10.28%
3C++8.67%
4Java7.54%
5C#4.22%

(数据截至 TIOBE 2026 年 9 月期,2026-09-08 访问)TIOBE

先读懂这张表再读它的含义:Python 常年第一。请注意,这张榜量的是"多少人搜这门语言",也就是"学的人多、网上教程多、能搜到答案多",它不是好在哪儿的排行榜,更不等于这门语言性能更好。后面讲到怎么选起点时我们会回到它。顺带一提,正因为语言一大堆、热度随时在变,可它们共享的底层逻辑只有几样,所以学会其中一门,再学别的往往三个月就能上手,不必被"几百种"吓住。

现在,你已经有了全篇最重要的一幅图景:编程不是魔法,而是把自己想让电脑做的事,拆成它一字不差照做的步骤清单。那么这清单里的第一步就冒出来了:那些步骤里要用到的数据,比如你的名字、成绩、一个真/假判断,得先有个地方放,电脑才不会失忆。下一章我们就看这个"记忆抽屉"长什么样。

2. 记住的东西放哪:变量为什么必须先起名字再用?

问一个很朴素的问题:菜谱里的"油""蛋"有地方放,程序跑起来的时候,你的名字、分数、判断结果这些数据放哪?答案是一个叫变量的东西。

把变量想成一个贴了标签的储物盒。盒子是电脑内存里的一小块空间,标签就是你给这块空间起的名字。程序说"学生的年龄是 19",干的事其实是:找一个盒子,贴上名字标签 student_age,把数字 19 放进去。以后程序想用这个年龄,不用记住"在第几个格子",只要叫一声"那个装着 age 的盒子"就能取出来。

看下面这张图,把"变量"拆成三个并排的小教室,你就明白了:

图注:把一行 Python 赋值语句 student_age = 19 当作龙骨,下面并排三个面板:左边是"变量名"面板,展示名字标签以及合法与不合法的命名例子;中间是"存储值"面板,画出一个装着数字 19 的格子,并标出 =(把值放进去)与 ==(比较两者是否相等)的区别;右边是"数据类型"面板,把五种类型的写法各配一个例子(整数 19、浮点 3.14、字符 "M"、字符串 "李明"、布尔 True)钉在一起。变量名、存的值、类型,其实是绑在同一次申报上的同一个东西。

图的用意是让你看见"变量"不是一个孤零零的词,而是三个东西绑在一个整体里。第一个是名字(变量名),你叫它什么;第二个是里面存的值,它此刻装着什么;第三个是值属于哪一类(数据类型),决定这个格子按什么形态放东西。三者缺一不可。

理解了结构,再回答标题那个更具体的卡点:为什么要"先起名字再用",而且名字还要守规矩?

核心还是回到第 1 章那句:电脑不猜。如果一个名字压根没登记过,你张口就要用它,电脑不会体贴地替你"猜一个值",它只会当场报错。在 Python 里,引用一个从没赋过值的名字 n,就会弹出一个 NameError,意思是"没找到叫 n 的这个东西"。有些语言(比如 C、Java)写得更超前一步:用一个变量前,得先正式"宣布"它的存在,还要顺带说清它装什么类型,这叫声明(declaration)。声明就像先跟电脑打好招呼:"我要用一个盒子叫 age,里面放整数,你先把地方腾出来、盯住别丢。" 只有等名字登记在案(很多语言里还顺便声明了类型),你才能把值放进去,这一步叫赋值(initialization)。

所以"为什么要声明"的答案很朴素:不先声明,笨机器不知道有这个盒子,会把它当成不存在的名字拒绝你;还得告诉它盒子装哪类值,它才知道该怎么存。

至于命名为什么要讲究,也是为了配合"不猜 + 不歧义"的笨机器,同时让跟你一起干活的人一眼看懂。记住三条约定,是几乎所有语言的通例(下面顺手用 Python 的报错例子说明):

student_age = 19      # 合法但名字含糊:改成 age 更清楚
2ndPlayer = 10        # 报错:名字不能以数字开头
class = 'A'           # 报错:class 是语言留给自己的词,不能当变量名
  • 不能以数字开头:2ndPlayer 一上来就出局,因为机器没法判断"2"是名字还是数值开头。
  • 大小写要分清:大部分语言区分大小写,myage 和 myAge 是两个完全不同的盒子。
  • 避开保留字:class、if、return 这类词是语言留给自己用的(后面第 4 章细讲),你拿来给盒子起名,就成了盖住交通标志,机器会翻脸。

课件常拿一套小测验来练这个:下面哪个是合法变量名?答案里 my_score、_temp、playerName 都合法,2ndPlayer(数字开头)和 class(保留字)都不合法。这套规则不是某门语言独有,JavaScript 玩的就是同一套:名字不能以数字开头、大小写敏感、避开 var/let/for 这类保留字,而且官方推荐的命名风格是"首单词小写、后面的单词首字母大写"的驼峰式,比如 finalOutputValue。你看,隔了一门语言,规则顺手就送过来了。MDN

最后要认识"值得类型"。值不是独来独往的,它总带着"自己是什么"的身份。五种最基础的类型,配合小例子快速扫一遍:

类型是什么意思例子关键记法
整数(Integer)没有小数点的数19、-3、0不加引号
浮点(Float)带小数点的数3.14、1.6不加引号
字符(Character)单个字符'M'单引号
字符串(String)一串文字"李明"单/双引号包起
布尔(Boolean)只有真或假True / False专门两个词

这五种类型对应着不同的存法。想象学生信息:student_age = 19存整数,gpa = 3.85存带小数的浮点,is_enrolled = True存布尔(他有没有在读学籍?有,就是真)。看下面这张数据类型的内存存放示意,体会一下"每种值占的格子长得不一样":

图注:课件里展示的"各数据类型在内存中的存放方式示意图"。不同类型的数据(整数、带小数的数、一串文字、单个字符、真/假)在电脑内存里各有各的存放方式。这里只需要抓住直觉:类型不同,格子装东西的方式就不同。具体每个格子占多大、怎么排布,属于更底层语言的细节,初学不必管。

新手最容易看漏的一个记号是引号:带引号的 '19' 是"文字 19",不带引号的 19 才是"数字 19"。这一个引号之差,在电脑眼里就是完全不同的两种东西。课件为教学方便,把单个字符 'M' 标成字符型、把字符串 '李明' 分开讲,这是为讲课好懂做的简化。在真正的 Python 规范里,'M' 和 '李明' 其实都属于字符串类型。Python 教程

这一章走完,你手里有了第一件零件:变量,这盒"装着数据、贴了标签、带着类型"的东西。可用处走到头,程序现在只会从上往下一行行走到底,像一条直路。可真实任务哪能没有岔路、没有回头路?下一章就来看它怎么"看情况选路""反复做同一段"。

3. 判断与重复:程序要"变聪明",真只需要三种招式?

上一章末的问题到这里掀开答案:光会存数据没用,程序要能干活,得会"选路"和"绕圈"。好消息是,这两件事加刚才的"一步步走",翻来覆去一共就三种招式。学界把它们叫控制结构(control structures),掌管着程序下一步往哪走(也就是"控制流")。课件把它称作"程序的核心构件"。三种招式,我一个一个讲,每个都对上一个你在生活里再熟悉不过的例子。

招式一:顺序(Sequence)。 照着单子,一条条往下做。做菜就是这个:先热锅、再倒油、再放料,步骤先后错一位,菜可能就糊了。程序也一样:指令的执行顺序本身就是正确性的组成部分,先算平均分还是先接收输入,顺序错了,结果就是错的。这是三种里最简单的,也是另外两种的地基。

招式二:选择(Selection)。 走到岔路口,看一个条件决定往哪走。出门前看窗外:如果下雨就带伞,不下雨就不用。翻译成程序的关键词是 if(如果)。它有两种长相:只说"下雨就带伞"的,是不带否则的单分支 if;把"不下雨怎么做"也安排上的,是带否则的双分支 if-else。程序到这儿就"聪明"了:它能根据运行时的具体情况,挑一条路走,而不是一路撞到底。

招式三:迭代(Iteration)。 把同一段反复执行,也叫循环。这里要分清两种"重复",是最容易混的地方:

  • 有界迭代:事先就知道要重复几次。比如教练要你绕操场跑 5 圈,圈数是定死的。对应代码里的 for("跑 5 圈":从 1 数到 5)。
  • 无界迭代:不知道跑几次,只知道"直到满足某个条件才停"。比如你跑到累了才停,"腿酸了"这个条件说了算,可能第 3 圈累,也可能第 8 圈才累。对应 while("只要条件为真就一直做")。

这种"事先数好次数"与"看条件才停"的两分法,正是英国中学教材里说的 count-controlled 与 condition-controlled 迭代,也是几乎所有编程语言共同的划分。BBC

把三种招式和两种"重复"放在一张流程示意图里对照,你会看得更清楚。注意这只是课件里的教学示意,不是标准画法的流程图:

图注:课件里展示的程序控制结构流程示意图。无论是一步步走的顺序、按条件分岔的选择(if 与 if-else),还是一段反复执行的迭代(有界与无界),都收在这张教学示意里,课件把它们统称作"程序的核心构件"。注意这是课件画法,不是标准流程图(标准图用菱形表示判断、矩形表示动作);想学标准符号属于绘制工具的知识,这里点到即可。

讲完三种招式,来到全篇最反直觉的一刻,也是标题里那个论断真正兑现的地方:这些招式不是谁心血来潮规定的。1966 年,两位研究者 Böhm 与 Jacopini 发表了一篇论文,证明了一个在今天看有点吓人的结论:任何能算得出来的程序,不管它多复杂,都只用这三种控制结构(顺序、选择、迭代)就能搭出来。 课件里"三种结构是核心构件"这句话,理论出处就在这儿。它的分量在于:程序之所以能"变聪明",秘密不是它还藏着第四种、第五种神秘招数,而是"很笨的机器,靠着看条件挑路 + 把一段绕圈重复,组合起来就能干大事"。Böhm-Jacopini

不过话说回来,可别把"三种走法就够了"读过头。它管的是程序的走法(控制流):程序怎么一步步走、怎么选路、怎么绕圈。至于要它"记住数据"(那是变量,上一章讲的)、要它跟外部打交道做输入输出,那是另一批零件。所以真正的完整表达是:三种走法 + 数据存储这些零件,合起来拼成程序。

这套"先三种走法、再用真语言实现"的讲法,也不只是这一个课件这么教。全球最热门的大学零基础公开课 CS50,第一周就是把 Scratch 里学到的变量、条件、循环这几件通用概念,原封不动平移进 C 语言,光这一步就给"三个招式是跨语言通识"做了权威背书。CS50

到这里,你已经拿到了第二件核心零件:程序会"选路"(选择)也会"绕圈"(迭代),再配上第一件的"存数据"(变量),一台笨机器基本能干活了。可你可能会奇怪:既然只有三种走法这么简单,为什么我听说新手写代码天天报错、连一个字都不能写错?这股"刁难"从哪来的,就是下一章要解开的结。

4. 语法为什么一个字都不能将就:它到底在替谁把关?

顺着上一章的疑问走。三种招式并不难懂,可新手依然动不动就报错,根子在一个词:语法(syntax)。

先给语法一个大白话定位:它是编程语言里那套"代码该按什么格式写"的规则。说人话,就是这门语言唯一的、不容讨价还价的"拼写与句式规范"。为什么严到一字不差?回到咱们反复嘟囔的那句:接收你对指令的是一个不猜、也不许错的机器。人类语言之所以能"将就",是因为双方都会靠上下文自动纠错,你写"明天下于",人照样会意。可机器不会。语法规则的职责,恰恰是把人类语言里靠脑补才能消除的所有歧义全部掐掉,让每一段代码都只剩下唯一一种读法。规则不是故意刁难你,而是在替那台不猜的机器把关。

三个反面例子一放你就懂了(课件原样,Python 写的):

print('Hello World')      # 正确,正常运行
print('Hello World'       # 语法错误!少了右括号,这句话没结尾
Print('Hello World')      # 运行时错误!P 大写写错,Python 找不到叫 Print 的名字

第一种缺了右括号,好比一句话说到一半没标点就断了,机器不知道这行说完没有,整句作废——这是真正的语法错误(脚本还没跑就被拦下)。第二种把首字母 P 写成了大写:在 Python 里 Print 和 print 是两个完全不同的名字(还记得吗,Python 区分大小写),而 Print 从没被定义过,所以这行其实语法上是通的,等真正执行到它时才报 NameError——因为机器找不到叫 Print 的名字。换句话说,这次的毛病不是"格式写错",而是"用错了一个名字",属于运行时错误,要等程序跑起来才会暴露。别看这两种错的时机不同,它们都验证了同一句话:写给那台不猜的机器看,真是一个字、一个拼写都不能将就。Python 教程

既然语法是一套规则,它到底管哪些"零件"?一个方便的说法是,代码不是一坨杂乱的文字,而是由几类零件按规则拼起来的。把一门编程语言的语法拆开,常见的有五种零件。记住它们,你就有了"读代码的眼睛":

语法成分是什么比喻例子
关键字 / 保留字语言留给自己的固定词交通标志,不能挪作他用if、class、for
运算符对数据做运算的动作符加减乘除、比较+、-、=、==
标点与分隔符分隔、组织代码的字符句号逗号把句子分块逗号 ,、分号 ;、括号 ()
标识符你给变量等起的名字储物盒的标签my_score、age
注释写给后来人看、代码直接跳过的说明写在旁边的便签# 这是注释

逐个说清这五种,顺便把最伤新手的两个点拆掉。

关键字(保留字) 是语言留给自己的词,有预定义含义,不能拿来当变量名。课件有个贴切的类比:关键字像交通标志,"停"牌永远表示停,你不能把它改成"加速";同理 if 永远表示"检查一个条件",你不能拿它当盒子名。这就是上一章 class = 'A' 报错的原因:class 是 Python 留给语言自己用的词。Python 教程

运算符 是对数据做运算的符号:+、-、* 做算术,>、< 做比较。但这里藏着一个几乎所有新手第一次必踩的坑:= 和 == 差一个等号,是两回事。看课件这个对照:

score = 90    # 赋值:把 90 放进名为 score 的盒子。(没有返回值)
score == 90   # 比较:问一句"score 现在是不是等于 90?"(回答 True 或 False)

差一个 =:一个是"放进去",一个是"问一问"。这个区别后面学选择结构时是命门,因为 if 的括号里要判断的全是 ==、> 这类"问句"。Python 教程

标点与分隔符 负责给代码"分句分段":Python 用括号把参数包起来,不同语言对"一行结束"的记号也不同(C/C++ 用分号 ; 表示一行结束,Python 靠换行和缩进)。标识符就是你起的名字(变量名、函数名都算),规则第 2 章已经讲过:不能数字开头、避开保留字。注释是写给"人"看的引言:以 #(Python)开头的行,机器执行时直接跳过,专门留给读代码的你或别人解释"这段在干嘛"。所以注释写错了不会报错,它不进代码运行。

现在"为什么严"这一题有了答案:语法在替不猜、不许错的机器把关。认得出这五种零件、又能把 = 和 == 分开,你就从"看代码像看天书"跨进了"能拆开看零件"的门槛。

可是到这里还有一个悬而未决的尾音:就算我语法每个字都对、每个 == 都用对了,这一堆文字代码,到底是怎么变成电脑真正执行的动作的?写完的"说明书写对了"和"电脑真按照跑出来了"之间,还隔着一道工序。这正是下一章要补的那一环。

5. 写好的代码怎么跑起来:中间要过几道手?

顺着上面的疑问展开。你写的代码是人能读懂的文字。可电脑只认 0 和 1,它看不懂你敲下的 print("Hello"),就像只懂摩斯码的人收到一封中文信。中间必须有"翻译",把人类代码翻成机器指令。干这活的有两大翻译官。

编译器(Compiler) 走的是"一次翻译一整份"的路:它把你写好的整份代码一次性翻译成机器码,翻译完你拿到一个能直接运行的文件。C 语言就是这条路。解释器(Interpreter) 走的是"边翻译边执行"的路:一句翻一句、翻完就执行这一句,Python 是典型代表。你可以把编译器想成"先把整本菜谱翻成阿拉伯文再开火",解释器是"看一句灶台做一句"。哈佛公开课 CS50 把"C 变成可运行程序"拆得更细(预处理→编译→汇编→链接四步),但对我们新手,记住"比'翻译'再细一层"就够了。核心是:从文字到运行不是自动发生的,中间必须经过翻译这一道手。CS50

既然程序可能出错,翻译也好、运行也好,总会出岔子。按课件和 CS50 的分类,错误大致有三类,各配一句白话你能秒懂:

错误类型是因为大白话例子什么时候被发现
语法错误写错了规则少写一个右括号程序还没跑,翻译时就被拦下
逻辑错误规则全写对了、思路错了本想说"小于",写成"小于等于"程序能跑完,但结果不对
运行时错误跑到一半出了意外一个数除以了 0程序跑到那一步当场崩掉

你会发现:报错是编程正常的一部分,不是你没用功的标志。而"把错找出来、修好"这件事有个专门的名字,叫调试(debugging)。学了这三类,你就知道报错来了先别慌,看它是哪一类,就能缩小排查范围:还没跑就报错,多半语法;跑得出但结果不对,多半是思路;跑一半崩了,多半是运行时的意外。

可一个人对着命令行手动调来调去太费劲了,于是就有个"一站式工作台"把所有杂活收进一个窗口,它就是 IDE(Integrated Development Environment,集成开发环境),可以想成给程序员用的"带灶台、菜刀、计时器的整体厨房"。IDE 把编辑器、翻译、找错、终端全收在一起。它最常用的四件事,我逐条点一下它"香"在哪,并对着微软免费的 VSCode 说怎么做:

  • 语法高亮(Syntax highlighting):不同零件自动染成不同颜色,关键字是一种色、字符串是另一种色,出没出毛病一眼可见。
  • 代码补全(Code completion):你打一半,它把词尾巴给你接上(VSCode 管这叫 IntelliSense),用方向键选、回车插入,省一半打字。这正是新手偷学内置"词汇表"的法子。
  • 调试(Debugging):在行号旁边点一下,会出现一个红点(这叫断点),程序跑到这里会暂停下来,让你当场查看每个变量此刻的值。就像在行程里埋了个"停车检查点",想在哪停就在哪停。
  • AI 辅助(可选):VSCode 内置 Copilot 之类,能用一个自然语言提示直接生成代码、甚至帮你改错。它不是必须的,但如今是很多人的陪练。初学不建议一上来依赖它,先自己动手,卡住了再问。

VSCode

VSCode 的上手主线很短:装好 VSCode,在 File 里打开一个文件夹(相当于给代码一个"家"),然后写你的第一行代码,看补全怎么帮你;想查错就在行号左边点一下设个断点,跑一次看变量变化。除了 VSCode,还有 PyCharm(常用于 Python)、NetBeans、Eclipse(Java 系)、Xcode(苹果系)等,名字多,但概念全是一回事:都是把上面四件事收进一个窗口的工作台,只是"厨房牌子"不同而已。工具只改变你练手的姿势,不增加你要学的概念负担。

到这里,从"变量存数据"到"三种结构定走法"到"语法保证机器读懂"到"编译器/IDE 让它跑起来",一条完整的概念链已经闭环了。概念你全见过一遍了。那问题就变成:我到底该不该现在打开编辑器?从哪一行开始练最不摔跤?这就是压轴的一章。

6. 现在,你能读懂一段代码了吗:下一步从哪开始?

先做个能自己动手验证的小检验,不需要任何人打分:读下面这段小小的 Python 代码,用前面几章会的"眼睛"逐行指认。

tickets = 0            # 变量:把整数 0 放进名为 tickets 的盒子
while tickets < 3:     # 无界迭代:只要 tickets 还小于 3,就一直做下面缩进的两行
    print("出票成功", tickets)
    tickets = tickets + 1   # 每轮把盒子里的数加 1,好让它有朝一日停

你能指认出:第 1 行 tickets = 0 是给变量赋值,存的类型是整数;第 2 行 while tickets < 3: 是"看条件选路"和"绕圈"的结合,这里要判断 tickets < 3 是否为真,为真就反复执行缩进里的两行,这正对应第 3 章讲的无界迭代(while);tickets = tickets + 1 里的 + 是运算符、= 是赋值;print(...) 里括号是标点、字符串带引号;而那些写着中文解释、以 # 开头的行,是人读机器跳过的注释。如果这些零件你都能一个个指认出来,说明全篇的概念已经不是你"听过",而是你"会拆"了。

对比一下有界迭代:如果改成"发 3 张票,事先就知道几次",Python 更常写 for i in range(3):。你再回头看第 3 章那张三种招式的图,这里 while 和 for 不过是同一招"迭代"在代码里的两种手型。

好,概念齐了,现在回答最实际的问题:下一步从哪学?给你两条路线,按你能投入的时间挑,而不是硬给"唯一最佳答案"。

A 线:成人直进路线(想尽快接触真实代码) 把下面三样拼起来用:

  1. Python 官方教程当课本。它是权威且免费的第一手教材,你最需要的基础(变量、类型、控制流)它都讲得极稳,而且白纸黑字是语言的"官方说法"。
  2. VSCode 当工具。上一章的 VSCode 上手三步直接开工。
  3. CS50 当系统课。当你想要一门从头到尾带你走的完整大学课,CS50 是公认的零基础选择。这条线的意思就是:官方课本 + 顺手工具 + 一门系统课。

B 线:先热身再投入(想先'看见'概念、不急着碰语法) 可以用 Code.org(现名 CodeAI)的无屏活动 + 图形化课程,先把顺序、循环、条件判断、变量这四样的"直觉"用拖方块的方式建立起来,再并进 A 线。不过要点破它的定位:它主要面向小学低年级(K-5),变量要到很靠后的阶段才出现、也不教真实语法,对成年零基础读者只是可选的、一两小时的热身第一步,决不是终点。你热身完,务必回到 A 线的 Python 官方教程 + VSCode。CodeAI

哪来这么多"Python 资料最好找"的底气?还记得第 1 章那张 TIOBE 热度榜吗:Python 常年第一,意味着网上针对它的教程和现成答案量也常年排第一。对新手来说,这就是最务实的选起点理由,不是这语言最"高级",而是你卡住时最容易搜到答案、问得到人。还是那句老话:热度 = 谁被搜得多,不是谁最好。TIOBE

走到了这一步,我想请你回头看一眼标题那句话:"再复杂的程序,也只是顺序、判断、重复拼出来的。" 现在你可以不只信它,而是真的能自己验证它了。整篇学下来,你手里捏着的全部零件就这几个:变量把数据记住,三种控制结构(顺序、判断、重复)决定程序怎么"走",语法保证那台不猜的机器能读懂,编译器/解释器与 IDE 让文字真正跑起来。这里没有智商门槛,分水岭在"手熟"二字,而手熟只有一个入口:今天现在就打开编辑器,从一行你说得津津有味的 print("Hello World") 开始。给很笨的机器写说明书的乐趣恰恰在于:它笨得只认这几样零件,而你,已经把这几样全认识了。

参考文献

本专题引用的核心资料如下,建议深入学习时阅读原文:

  1. UFUG1601 Intro. CS Programming Concepts — 第 3 章课件(PDF,30 页) — 香港科技大学(广州)课程本地教学课件,Fall 2026(本地 PDF,无在线链接)
  2. Python 官方教程《An Informal Introduction to Python》 — https://docs.python.org/3/tutorial/introduction.html
  3. MDN Web Docs《Storing the information you need: Variables》 — https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/Variables
  4. BBC Bitesize — The three basic programming constructs & Flowcharts — https://www.bbc.co.uk/bitesize/guides/z433rwx/revision/1
  5. Visual Studio Code 官方文档(Getting Started & Debugging) — https://code.visualstudio.com/docs/editing/getting-started
  6. TIOBE Programming Community Index(编程语言热度榜,2026-09 期) — https://www.tiobe.com/tiobe-index/
  7. Code.org / CodeAI — Computer Science Fundamentals(初学者分阶段课程) — https://code.org/en-US/curriculum/computer-science-fundamentals
  8. Böhm & Jacopini (1966), Flow Diagrams, Turing Machines and Languages with Only Two Formation Rules, Communications of the ACM 9(5) — https://cs.unibo.it/~martini/PP/bohm-jac.pdf
  9. Harvard CS50x — Week 1 (C) & Week 2:变量/数据类型、条件与循环、编译与调试 — https://cs50.harvard.edu/x/2024/weeks/1/
从零学编程:再复杂的程序,也只是顺序、判断、重复拼出来的