向非程序员展示什么样的好例子来解释编程“看起来像什么”?

前几天,我的一个朋友问我是否只是在编程的时候查看数字列表,或者它是如何工作的。我试图解释说,它通常更像数学公式,加上一些奇怪的英语单词,而且它通常是可读的。但是,这是一个非常模糊的解释,而且对于非程序员来说,这也解释不了什么。

但这让我开始思考怎样才能树立一个好榜样。不是因为我想教她编程什么的,只是想让她知道程序代码是什么样子的。

这让我想知道什么才是一个好的例子。结果却出乎意料的困难。

我的第一个想法显然是一个简单的“ Hello World”程序。但它真的没有显示任何有用的东西。它并没有真正展示我们如何使用函数,或变量,或者像 ifwhile这样的控制流结构来制作一个实际上是 做点什么的程序。毫无逻辑可言。程序对任何事都没有反应。

所以也许计算素数会是一个更好的例子。但话又说回来,这可能太理论化和不切实际了... ... (这有什么好处呢?)?这和编写“真正的”程序有什么关系?)再说一次,它没有明显的控制流逻辑。这只是一个直接的数学序列。

还有,应该使用哪种语言?

理想情况下,我不认为它必须是一个非常“干净”的语言。相反,它可能应该使结构更加清晰。如果是这样,那么一定数量的噪音和混乱可能是好的。出于这个原因,也许类似 C + + 的东西实际上比 Python 更好。显式的花括号和类型说明符是显而易见的“挂钩”,用来帮助解释程序的结构,或者突出显示几乎可以读作英语的简单语句不是 只是

但是在 C + + 中,我们也会遇到一些彻头彻尾的怪异语法。为什么用 std::cout << x打印 x?为什么不使用“正常”的函数调用语法呢?而且 printf也好不到哪里去,因为它的字符串格式晦涩难懂,而且缺乏可扩展性(我是否希望通过对字符串使用 char*来使程序复杂化?或者我使用 std::string并且满足于调用看似不必要的 s.c_str()来获得一个可以用 printf打印的字符串?

也许更高级的语言会更好,但是哪一种呢? 为什么呢?

我知道这里有很多类似的问题,关于用哪种语言/示例程序来教编程。但我认为这里的要求不同。在教授编程时,我们最想要的是简单性。我们要避免任何没有被教过的东西。我们希望确保学生能够理解屏幕上的 一切

我对简单本身不感兴趣。而是给“局外人”一个“程序是什么样子”的概念。程序并不简单。但他们的 一般表现出一定的结构和方法的疯狂。什么语言/程序最能突出这一点?

剪辑
谢谢到目前为止所有的建议。你们中的一些人对这件事的看法和我的预期有些不同。

也许应该举个例子。我不会开飞机,但是我对驾驶舱的样子和飞行员在飞行时的“行为”有一个基本的了解。

虽然我不是专业的木匠但我一眼就能看出是锯子还是锤子。

但是当你在电影中看到任何与编程有关的东西时,例如,它通常只是充满垃圾的屏幕(就像 Matrix 中的绿色文本)。看起来不像是一个正常人能做到的。里面什么都没有。不是程序员的人会认为这是黑魔法。

我不想教她飞行,也不想教她编程。 但我想给她一个基本的参照系。只是一个想法,“啊,这就是你的工作。因此,屏幕上不仅仅是随机的符号和数字。”。与矩阵风格的随机符号和数字相比,即使只是显示一个简单的 if语句也是一个启示。

你们中的一些人建议解释一个算法,或者使用伪代码,但这正是我想要避免的。我想要一些简单地显示什么 真的代码看起来像,在同样的方式,你不必是一个木匠看看一个锯,并得到它是什么,它是如何工作的基本想法。

当我还是个孩子的时候,我们有一次去意大利度假。在下降的过程中,飞行员让我进入了飞机的驾驶舱。当然,我没学过怎么开飞机。但我确实窥见了飞行员的世界。我知道他们是怎么让飞机起飞的,飞行员到底是做什么的。

这就是我想做的。我的朋友对学习编程没有兴趣,我也不想强迫她去理解源代码。但是她很好奇我使用的是什么样的工具或实体。屏幕上滚动的是黑客帝国式的符号吗?纯数学?散文形式的英语?

我所感兴趣的是传达对“我工作时它看起来像什么”的非常高层次的理解。

18311 次浏览

我说给他看看泡泡排序。

这是一个简单易懂的把戏,转换成了一种正式的语言。

这就是我们的工作。用一种严格的、正式的语言表达我们的想法,这样即使是机器也能理解。有点类似于组织设计的设计过程。

当我5岁的女儿问我这个问题时,我让她“开发”了一个小箭头“机器人”程序,这个程序可以让他进入棋盘的左上角,使用流程图一样的纸片来表示移动、转弯和条件。我认为这也适用于成年人。

不过,我并不认为这个答案是我发明的。

关于你的 编辑: 恐怕,程序员对其他人关于编程的想法知之甚少。人们认为编程是一种矩阵式的绿色视频卡腐败,就像他们认为间谍都配备了詹姆斯 · 邦德的高科技玩具一样。任何领域的专业人士在看到有关他工作的电影时通常都会感到恼火。另一方面,我们知道如何正确地描述编程 在电影里吗?;-)

我会写一些伪代码演示如何使用计算机来解决日常问题。也许是决定从哪家商店购买特定的杂货清单或诸如此类的商品比较便宜。

简单

10 PRINT "Sara is the best"
20 GOTO 10

更新: 当我12岁的时候,我的表弟(他14岁)带来了 涡轮帕斯卡7.0并安装在我的电脑上。
他从零开始编写了一个井字游戏(在 BGI 模式下,为那些知道的人)。
我一步一步地观察一个程序如何演变,直到它成为一个完整的应用程序。
在那之前,我只知道如何用 BASIC:-B 打印字符串

你也可以这么做。结对编程。嗯,实际上你的朋友将是一个观察者,但她会得到一个想法;)

我赞成快速排序,它比气泡排序更优雅,也更容易理解:

qsort [] = []
qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs)

编写一些可以读取股票报价并将其写入 Excel 电子表格的快速代码。只需几分钟就可以轻松完成,而且非技术人员看到它的实用价值后会很快对它产生深刻的印象。

显示 R的基础知识,它比 C 更容易理解,有许多内置函数,如 mean 或 sqrt,并且至少 R 的赋值符号是“ <-”

我会解释说,编程就是给出详细的指令,这样计算机就能完成复杂的任务。

如何煮两杯咖啡?

  1. 倒满水
  2. 烧开水

  3. 杯中咖啡

  4. 倒在水上
  5. 加糖
  6. 加牛奶

  7. 再做一次3到6

我通常的选择是从数据库中检索一组客户记录。在 Visual Studio 中使用 C # 和 LINQ,构建一个网页并将“ Northwind”数据库客户转储到一个网格中可能最多需要10分钟。好的一面是,“顾客名单”是几乎任何人都能理解的东西。

为什么不考虑一种不存在的语言(或者存在的语言,如果你这样认为的话)并使用 伪代码呢?我认为,这取决于你想要实现什么——我会考虑人们所熟悉的任务例子,但是把它分割成一个伪代码例子。

我通常发现,在向非程序员解释事情时,“烹饪”或“食谱”的想法非常适合。

我让这个人想象他们有一个相当复杂的食谱——比如一道咖喱饭菜。然后我建议他们应该试着把它写下来给那些完全不知道自己在做什么的人,这样他们就可以做饭了。

涉及的阶段非常明确:

  • 收集工作所需的材料和工具。
  • 准备材料。这是复杂的。例如。
    • 买三个小红椒。
    • 每个红辣椒切成大约1厘米见方的小块。
    • 把红辣椒块放进碗里以备后用。
  • 除此之外,还可以调用 ready rice 函数,并在继续烹饪时在后台异步运行。

我相信你能看出这是怎么回事... ;)

烹饪和编程有很多相似之处(就像很多事情一样,但是更多的人理解烹饪而不是建造房子)。 这些阶段/相似之处(在我看来)包括:

  • 聚会 : (宣布实现目标所需要的东西,并将它们聚集在一起)。
  • 准备 : 首次使用时切割成分或准备数据连接对象等。
  • 异步 : 一件事情进行而另一件事情进行的能力。
  • 函数 : 米饭制作、鸡肉制作和咖喱制作都需要单独的过程,只有在最后才能有 makCurry (鸡肉、米饭)功能。
  • 测试 : 确保你正在进行的过程中没有遗漏任何细节,并且一切进展顺利——例如,在进入下一步之前确保鸡肉已经煮熟。
  • 垃圾 : 完成之后,必须确保清理干净。 ;)
  • 最佳实践的原则 : 有很多有效的方法可以做一些像烹饪这样的事情,新手程序员必须学习除了代码之外的东西——有时候你很难理解。例如: D.R.Y,如何有效地用刀切菜及不要吃生鸡肉;)

基本上,我认为教授编程是一个普遍的话题——我不一定要用 除非你有令人信服的理由语言教授。相反,最初从抽象的角度进行教学,直到他们至少理解事物如何组合在一起的基本原理。然后,他们可能会发现坐在显示器和键盘前更容易。

我认为这个问题可能没有一个“正确的答案”。但我觉得也许有些好主意你可以从中学到一些。

为了直接回答你的问题—— 编程“看起来像什么”,我会给他们看一个大型应用程序的打印件。玩具应用程序或可爱的东西,如 qsort 在 haskell 真的给出了错误的想法。

无论是图形,还是窗口,在更高层次的语言。

为什么?一个非程序员通常也是一个非数学家,这就是为什么他不会得到排序的美丽。然而,在屏幕上显示的东西(“看,一个窗口!”“看,这么少的打字,我们有一个旋转的3D 盒子!”)可以创造奇迹;)。

仅仅从一个源代码示例就很难理解编程是什么样的,因为它太抽象了。

从 hello world 开始并没有什么错,只要你能展示计算机实际上用它做什么。然后您可以一次引入一个构造。编程就是这样的——做出渐进式的改变,然后看到结果。

你有一个 hello world 程序,现在把它改成

string Name = getLine();
printf("Hello, %s", name);

然后是 if 构造

printf("Do you like cake?");
string answer = getLine();
if(answer == "yes") {
printf("Yeay! I like cake too!");
} else if(answer == "no") {
printf("Filthy cake hating pig!");
}

然后演示最后一个程序在收到不是“是”或“否”的答案时失败,以及您将如何着手修复它... ..。

我不认为你需要深入研究递归,甚至函数这样的概念。

你用什么编程并不重要,只要你能够在计算机上显示,这些不同程序的结果。(尽管这些 psuedocode 示例可能非常接近于有效的 python)

完全取决于她的兴趣水平(或者你对 的兴趣水平)。大多数人问这个问题只是闲聊,并不是真的想知道。

编程不仅仅是算法(比如“如何煮一杯咖啡”) ,它还根植于数学之中。大多数人很快就会被数学术语的巧妙运用(什么是“函数”?)绊倒.

为了真正地教授编程,回想一下你自己的第一次编程经历,你的第一位编程老师,你的第一种编程语言可能会有所帮助。你怎么学会的?当你学习的时候,你脑海中已经有了什么新鲜的技能(例如,微积分) ?是什么促使你去理解什么是变量或者为什么有三种不同的循环?

语言方面: 使用类似 python 的东西。级别很高,不带花括号的可能更好。

也许每个人都太专注于代码而不是工具。也许最好是在 IDE 中向她展示一个项目,以及它是如何包含各种源文件的,也许还有一些图形化的东西,比如数据库模式或者可视化用户界面设计器。Visual Studio、 Eclipse 或 Xcode 与大多数人脑海中那种在黑色背景上快速滚动发光的绿色符号的印象相去甚远。

编写对非程序员有任何可理解价值的代码。如果我向我母亲演示 Quicksort,它就没有任何用处了。

询问这个人的兴趣爱好。例如,如果他/她进入股票交易所,编写一个脚本,从适当的网页上读取一些股票统计数据,并将它们编译成 Excel 表格(使用 csv,以避免严重的脑损伤 ^ ^) ,或者可能形成一个漂亮的图表。

如果这个人使用 Twitter,编写一些代码来计算他的追随者的追随者数量或者类似的东西。

这些任务非常简单,可以在很短的时间内完成,而且它们已经利用了很多我们程序员使用的基本工具,比如循环、库(针对所有涉及 http 的内容) ,也许还有递归。

在您完成或者正在编写代码时(甚至更好) ,您可以解释您的程序是如何发挥它的魔力的。

保持简单,用人类语言交谈。如果你给他们看兆字节的代码,谈论类似原型继承的事情,你只是吓唬他们,他们会立刻失去兴趣。

有一个叫做 标志的 CLI 图形包,以 海龟图形而闻名,用于在屏幕上使用像 LT 90, RT 105这样的命令绘制图形。看看你能不能找到,这将是一个不错的经验,尝试和画一些中等复杂度的东西。

面向逻辑的图形编程语言。

REPEAT 360 [FD 1 RT 1] -- draws a circle, etc.

更多信息请参见 标志物维基百科,它们也有现代标志解释器的链接。

我觉得你应该下载一些大的 win32应用程序,用 AT & T 汇编语言写的,用记事本给她看,然后告诉她,“正如你所看到的,它需要一个像我这样的超人来编程。”

我发现“不教别人编程就教别人编程是什么”的最佳方法实际上是放弃任何与特定编程语言相关的东西。

相反(假设他们真的感兴趣) ,我会通过在程序中实现一个函数来说服他们,比如一个简单的银行贷款申请(如果他们超过了一定的年龄,大多数人都不得不在某个阶段处理贷款) ,然后在所有的假设中找出漏洞。

比如,如果用户输入负的贷款金额会发生什么?如果用户负担不起贷款怎么办?贷款申请人怎么会知道?贷款申请如何知道要检查哪个银行账户和哪个付款记录(即。到底谁是用户) ?如果用户试图在贷款金额字段中键入他的名字,该怎么办?如果用户尝试在75年内获得贷款该怎么办?我们是否应该将选择限制在一个可用长度的列表中?

最后: 编程就是把所有这些规则,用计算机能理解的语言写出来,这样它就能完全遵循这些规则。此时,如果觉得有必要,我会拿出一些简单的代码,这样就可以查看整个语言,然后可能会写出该语言中的一条规则。

如果你能让你的朋友做出反应,那么加分就是: 但是如果我们忘记了什么东西呢?好吧,那么我们有 bug,现在你知道为什么没有软件程序是没有 bug 的了:)

  1. 程序员写程序。
  2. 虽然不是编程,但这种程序员在他的工作场所会惹恼有吸引力的女性。

然后:

(资料来源: Markharrison.net)

现在:

为什么不直接播放延时视频 Scrum 团队生命中的一天呢?

在伪代码中:

function dealWithPerson(person){
if(ILike(person)){
getCookie().giveTo(person);
}
else{
person.tell("You shall receive no cookies!");
}
}


dealWithPerson(Person.fromName("Nick"));
dealWithPerson(Person.fromName("John"));

这展示了函数、面向对象和字符串的概念,使用类 C 语法(当我说类 C 语法时,我指的是奇怪的字符)。
它还展示了如何重用代码。 请注意,虽然它是伪代码,但如果有一些语言接受这种语法,我不会感到惊讶(也许 JavaScript 允许这样做?).

您还可以对这个示例进行修改,使其具有循环。 希望这有助于向用户展示程序的外观(因为它是一种实际的语法,而且相对容易理解)。

我已经教了很多年的程序设计,发现你需要解释的方法的数量等于你有的学生的数量。但有一种方法在大多数情况下是有效的:

  1. 给出一个流程图,显示一个简单应用程序的逻辑流程
  2. 用完整的人类语言(例如英语)写指示
  3. 将每条指令缩写为编程语言中使用的简写
  4. 出于教学目的,选择一种不那么神秘的语言,如 Basic 或 Pascal

所有的代码都是自然语言的简写,大多数程序都是用完整的英语写的,看起来很琐碎。

至于一个好的算法,那就是另一回事了。看到许多计算机科学课程不再教授算法或者忽略它,这是令人悲哀的。

我会考虑 格林福特。虽然它是为儿童学习编程,图形可能有助于读者联系代码的“行动”。这是一篇关于格林福特的文章是我的一个同事写的。

程序员为计算机编写执行指令。
运行程序导致计算机实际上遵循这些指令。

一个例子是一个厨师会按照一个食谱来烤一条面包。(即使是在他们的头脑中) ... 这就是编程。与我妻子不同,电脑每次都严格按照食谱操作。我的妻子,在她的脑海里这样做,结果是不同的,但美味的每一次; -)

如果您想继续深入了解这一点,那么伪代码很容易理解。

例如:。

IF today's date is the 1st of may then
print to screen "Happy Birthday"
ELSE
print to screen "It's not your birthday yet"

假代码的美妙之处在于几乎任何人都能理解它,这就是它的意义所在。

我喜欢用“更衣室问题”(比如说,100个最初关闭的更衣室)来激发简介编程。2号进入并打开所有偶数号码的柜子,3号进入并将所有数字可以被3整除的柜子的状态从打开改为关闭,反之亦然,4号进入并将数字是4的倍数的柜子的状态改为打开,等等,直到100号进入)。问题是,哪些柜子还关着?当然,有一个小学数学解决方案(只有完美的方块仍然打开) ,但它是一个很好的入门编程练习,我认为。

我会用少于10行代码带领人们完成一个相对简单的函数。不要过多地关注语法; 关注它应该做什么,以及它所采取的步骤。还要稍微涉及一些权衡(速度与空间,检查错误或不检查,等等)。

然后解释你展示的是整个程序的0.01% 。解释说你90% 的时间不是用来写东西的,而是用来读这些东西并找出它们不起作用的原因。

A junior coder at work

看起来有点像这个,有时候。

我妻子对编程和电脑一窍不通。但是当我解释电脑完全没有大脑,只遵循 指示时,她明白了。您可以使用编程语言定义和控制这些指令。基本上,你是在告诉计算机使用编程语言做什么; 它是计算机直接理解的语言。

这可能是一个很长的故事,但是一个很好的演示示例是一个计算器,如 calc.exe(或任何计算器程序,您的操作系统正在使用)。每个程序员都应该能够用易于理解的语言解释它在“引擎盖下”做什么(告诉计算机它应该听并记住按下了什么按钮以及如何处理这些值)。您也可以考虑尝试用您自己的语言来演示这一点,最终也应该相当容易理解。至少,它帮助了我的妻子(我想是的;)。

杰夫,

通常最有效的方法是展示一些人们已经熟悉的东西。

选择一个文件并打印是大多数人非常熟悉的事情。

因此,您可以显示一小段请求文件的代码 然后做点什么。 它可以非常短,但仍然显示程序是如何构建的。

这样一段代码将演示: 整体结构 流动 变量和语句的使用 原料药的使用

alt text
(来源: 维基百科)

{
wait for 6/8;
play F (5), sustain it for 1/4 and a half;
play E flat (5), sustain it for 1/8;
play D flat (5), sustain it for 1/8 and a half;
play F (4), sustain it for 1/16;
// ...
}

也许可以用作曲家写乐谱来比喻。作曲家的工作是创作音乐的智力活动。配乐时,作曲家告诉钢琴家演奏什么,他通过精确的指令(音符,停顿等等)来做到这一点。如果“指令”不够精确,钢琴家就会弹奏不同的曲子。

软件开发人员的工作是解决问题(与数据自动处理有关的问题)的智力活动。对于 源代码,开发人员告诉 电脑要做什么,他通过精确的指令来完成。如果指令不够精确,计算机就会做一些不同的事情,不能正确地解决问题。

让我的妻子知道我是怎么赚钱的(这是真正的工作!)!我保证!我们不会整天浏览网页!)一天晚上,我和她一起学习 Python,向她展示了一些基本概念: 调用函数(print)、分配和读取变量以及 if 语句的工作原理。由于她是一名教师,我把条件句的概念比作与学龄前儿童一起工作:)

IF you hit Jonny THEN you're in time out OTHERWISE you can have a snack.

在回顾了几个非常高级的概念之后,我向她展示了一个简单的数字猜谜游戏的代码,并让她在查看代码时玩这个游戏。

# Guessing Game
import random


print("Guess a number between 1 and 100: ")


target = random.randint(1, 100)
guess = 0
guess_count = 1


while guess != target:
guess_count += 1
guess = int(input())


if guess == target:
print("Correct!")
if guess < target:
print("Higher...")
if guess > target:
print("Lower...")


print("Congratulations! You guessed the number in " + str(guess_count) + " guesses!")

除了有点抽象的“导入”概念之外,这是一个非常简单的例子,很容易理解并“连接”屏幕上正在发生的事情,更不用说它实际上做了一些有趣的和交互式的事情。我认为我的妻子离开了这段经历,对于整个概念没有那么困惑,她并不真正需要了解很多代码方面的知识。

我认为关键是能够让别人看到代码和它的最终结果并排。

你工作的时候看起来像什么?

看起来像在打字。

说真的,编程就像是把乐高当成文本,要建一个大的乐高房子,你必须输入大量的文本,只要正确,用正确的孔把正确的钉子连接起来。这就是我通常的描述。

我认为,机器人学对于解释编程非常有用,因为即使是简单的、人为的例子也很实用。相当于 Hello World 或打印数字列表的机器人技术可能会让机器人沿着一条直线移动或者绕着一个圆旋转。非程序员很容易理解,对于一个机器人来说,要做任何有用的事情,它必须首先移动和定位自己。这使您能够解释简单的程序结构和流控制。

你希望机器人向前移动,但是前提是没有任何东西阻挡它的路径。然后你想让它再次转动。这是一个使用基本流控制的简单例程,并且您正在调用的函数非常容易理解(如果您的平台具有良好的抽象的话)。

图形可能也有用。任何有 马上结果的东西。甚至 jQuery,因为每个人都熟悉旋转图片和网页动画。即使是人为的例子,比如在 DOM 中推送元素,也很容易看到效果,而且大多数人都会理解程序中的语句做了什么以及为什么要这样做。

像 Robocode 和 LOGO 这样的东西可能真的很适合这个。

引用他的伟大著作 代码完成中的 史蒂文 · C · 麦康奈尔,在第二章中他谈到了软件隐喻

围绕软件开发出现了大量令人困惑的隐喻。

  • 弗雷德 · 布鲁克斯(Fred Brooks)说,编写软件就像耕种、猎杀狼人,或者和恐龙一起淹死在沥青坑里(1995)。
  • 大卫 · 格里斯说这是一门科学(1981)。
  • Donald Knuth 说这是一门艺术(1998)。
  • Watts Humphrey 说这是一个过程(1989)。
  • PJ 普劳格和肯特贝克说,这就像开车(普劳格1993年,贝克2000年)。
  • Alistair Cockburn 说这是一个游戏(2001)。
  • 埃里克 · 雷蒙德说它就像一个集市(2000年)。
  • 保罗 · 赫克尔说这就像是在拍摄白雪公主和七个小矮人(1994)。

想让她看看什么是编程吗? 只要打开一个终端,然后

find /

我会说要么用 psuedocode 做一些标准算法(几乎任何 n ^ 2排序算法都可以。我喜欢选择排序。)或者指向 http://99-bottles-of-beer.net/

不过话说回来,我只是喜欢给人们指出99-bottles-of-beer.net b -)

令人惊讶的是,这个网站仍然开放,而且令人惊讶的是,迄今为止还没有人给出这个答案。(我认为。我可能不小心跳过了40个问题中的一个,反正也没人会去读。)

你的答案就在你的问题里

我小时候,有一次我们去意大利度假, 飞行员让我进入了飞机的驾驶舱。当然,我没有 学习如何驾驶飞机。但是我看了一眼飞行员的 我知道他们是怎么让飞机飞起来的,飞行员是怎么做的 确实如此。

这就是我想做的。

这就是你要做的。从 教程中选择一个简短的练习。一个适度长的图形用户界面也可能是有益的,由于添加的视觉效果。(游戏可能会稍微增加一点长度。)还有 让她看着你编程。就是这样。这和你的飞行员例子是一样的。

还有 一些在线 REPL,这将使观看你的代码更加直接。

这个任务我已经做过无数次了。答案很简单,就是你怎么对待孩子

你可以玩很多游戏,但我遇到的最好的是 “猜数字”。你玩这个游戏,他们会理解的。然后你告诉他们他们刚刚做了一个叫 二进制搜索的东西,它解决了很多问题。然后 给他们看看一些 C 或 BASIC 代码为该函数。其结构足够简单,使得 因为他们从根本上理解算法几乎可以读取它们的代码。< sub > (如果是100% 希腊语,那么 有编码风格问题。)

C 语言可能更适合于整体结构。如果你能把一些 Gotos 挤进 BASIC 里,那就太完美了。跳转是编程的核心,能够在代码中实际看到它们对于理解来说是令人惊异的。对于外行人来说,汇编中的晦涩语法过于杂乱。而且 C 和更高级的语言通常会在不同类型的构造中隐藏跳转。

更好的办法可能是同时打印出 BASIC、 C 和 Lisp,告诉他们这些是 不同的语言,它们试图说出 同样的事情以不同的方式,而真正的程序员用许多不同的方式思考许多不同的事情。如果跑步打印输出是一个简单的解释太令人畏缩,那么只是 制作一张名片的打印输出,并保持它在你的钱包。他们应该很容易适合在一张卡片上,如果你删除任何意见。