硬核观察 #1201 美国实现芯片独立还需十到二十年
1 美国实现芯片独立还需十到二十年英伟达公司的黄仁勋在《纽约时报》DealBook 会议上表示，“我们距离供应链独立还有十年到二十年的时间。”他解释了他的公司的产品是如何依赖于来自世界各地的无数元件的，而不仅仅是台湾。许多大公司正计划扩大在美国的业务。其中包括台积电。消息来源：彭博社老王点评：前两天的消息，龙芯发布了 3A6000 芯片。我们也终究会有自己需要的一切的，但是……2 全球科学研究正一分为二《自然》杂志的编辑委员会指出，中国和美国以及其他西方国家之间的科研合作正在走下坡路。日本文部科学省八月发布的一份报告称，2021 年两国科学家共同撰写的研究文章数量有所下降，这是自 1993 年以来的首次年度下降。与此同时，《自然》指数的数据显示，从该指数自然科学期刊论文的作者情况来看，中国科学家的国际合作倾向正在减弱。《自然》杂志上个月报道称，中国加强了与中低收入国家的科学联系，这也在创造平行的科学体系：一个以北美和欧洲为中心，另一个以中国为中心。消息来源：《自然》老王点评：新两极世界，但是我还是喜欢那个开放的全球村。3 BBC BASIC 回来了之前，我们 专文介绍 过，英国广播公司（BBC）为了帮助英国人战胜他们对计算机的反感，在上世纪七十年代发起了 “计算机认知计划”，该计划包括多个教育方向的努力：几部电视连续剧、一些相关书籍、一个支持团队网络以及一款名为 BBC Micro 的特别定制的微型计算机。最终，他们售出了 150 万台 BBC Micro 微型计算机。（顺便说一句，ARM 这个单词的 “A” 最初就代表生产 BBC Micro 的 Acorn 公司。）BBC Basic 是专门为该计算机开发的编程语言。现在，BBC Basic 又回来了，而且可以在各种现代平台上运行。BBC Basic for SDL 2.0 可在 Windows、MacOS、x86 Linux，甚至树莓派操作系统、安卓和 iOS 上运行。消息来源：Hack a Day老王点评：哦，古老的 BASIC 又回来了，不过，还有会 BASIC 的年轻人吗？
如果你和我一样，在 20 世纪七八十年代使用计算机长大，你可能学过一种常见的个人计算机编程语言，名为 BASIC（全称是 “ 初学者的通用符号指令代码 Beginner's All-purpose Symbolic Instruction Code ”）。那个时期，包括 TRS-80、Apple II 和 IBM PC 在内的每台个人计算机都可以找到 BASIC 实现。当时，我是一个自学的 BASIC 程序员，在尝试了 Apple II 上的 AppleSoft BASIC 后，转向 IBM PC 上的 GW-BASIC，后来在 DOS 上学习了 QuickBASIC。我通过编写一个示例程序来探索 BASIC 和 FORTRAN 77 中的 FOR 循环，以将数字列表从 1 加到 10。但是曾经，一种在科学编程领域受欢迎的语言是 FORTRAN（即 “ 公式翻译 FORmula TRANslation ”）。尽管在 1990 年对该语言进行的规范以后，该名称更常见的风格是 “Fortran”。当我在 1990 年代初作为大学本科物理学生学习物理学时，我利用自己在 BASIC 上的经验学习了 FORTRAN 77。那时我意识到 BASIC 许多概念都来源于 FORTRAN。当然，FORTRAN 和 BASIC 在很多其他方面也存在差异，但我发现了解一点 BASIC 可以帮助我快速学习 FORTRAN 编程。我想通过使用两种语言编写相同的程序，展示它们之间的一些相似之处。通过编写一个示例程序来探索 BASIC 和 FORTRAN 77 中的 FOR 循环，这个程序将把 1 到 10 之间的数字相加。Bywater BASICBASIC 存在许多种不同的版本，这取决于你的计算机，但该语言总体保持不变。我喜欢的一种 BASIC 版本是 Bywater BASIC，这是一种开源的 BASIC 实现，适用于包括 Linux 和 DOS 在内的不同平台。要在 FreeDOS 上使用 Bywater BASIC，你必须首先从 FreeDOS 1.3 Bonus CD 中 安装该软件包。然后进入 C: 目录并输入 bwbasic 命令，这将启动 BASIC 解释器。你可以在这个提示符下输入程序：bwBASIC: Bywater BASIC 使用较早的 BASIC 编程标准，需要你在每个程序指令上编写一个行号。将行号视为索引。你可以使用行号轻松地引用程序中的任何指令。当你将程序键入 Bywater BASIC 解释器时，请在每个指令前添加行号：bwBASIC: 10 print "Add the numbers from 1 to 10 ..." bwBASIC: 20 sum = 0 bwBASIC: 30 for i = 1 to 10 bwBASIC: 40 sum = sum + i bwBASIC: 50 next i bwBASIC: 60 print sum bwBASIC: 70 end 可以使用 list 命令查看你已经输入到解释器中的程序：bwBASIC: list 10 print "Add the numbers from 1 to 10 ..." 20 sum = 0 30 for i = 1 to 10 40 sum = sum + i 50 next i 60 print sum 70 end 这个简短的程序演示了 BASIC 中的 FOR 循环。 FOR 是任何编程语言中最基本的循环构造，允许你迭代一组值。在 Bywater BASIC 中，FOR 循环的一般语法看起来像这样：FOR 变量 = 起始值 TO 终止值 在这个示例程序中，指令 for i = 1 to 10 开始一个循环，迭代值为 1 到 10。在每个循环中，变量 i 被设置为新值。在 BASIC 中，所有到 next 指令前的指令都将作为 FOR 循环的一部分执行。因为你可以将一个 FOR 循环放入另一个 FOR 循环中，Bywater BASIC 使用语法 NEXT 变量 来指定要迭代的循环变量。在提示符下键入 run 来执行程序：bwBASIC: run Add the numbers from 1 to 10 ... 55 Bywater BASIC 被称为 BASIC 解释器，因为只能从 Bywater BASIC 环境中运行程序。这意味着解释器会处理与操作系统的交互的所有繁重工作，因此你的程序不需要自己完成这个工作。 这样做的代价是，程序在解释环境中运行会比它作为编译程序运行慢一些。FreeBASIC另一个流行的 BASIC 实现是 FreeBASIC，这是一个开源的 BASIC 编译器，适用于多个平台，包括 Linux 和 DOS。要使用 FreeBASIC，你需要从 FreeDOS 1.3 Bonus CD 安装 FreeBASIC 包，然后进入 C: 目录，你会在这里找到 FreeBASIC 程序。FreeBASIC 是一个编译器，因此你首先需要创建一个包含程序指令的源文件，然后使用源代码运行编译器以创建一个可运行的程序。我编写了一个类似于“将 1 到 10 的数字相加”的程序版本，将其保存为 BASIC 文件，并命名为 sum.bas：dim sum as integer dim i as integer print "Add the numbers from 1 to 10 ..." sum = 0 for i = 1 to 10 sum = sum + i next print sum end 如果你将这段代码与 Bywater BASIC 版本的程序进行比较，你可能会注意到 FreeBASIC 不需要行号。FreeBASIC 实现了一种更现代的 BASIC 版本，使得编写程序时不需要跟踪行号更容易。另一个主要的区别是你必须在源代码中定义或声明变量。使用 DIM 指令在 FreeBASIC 中声明变量，例如 dim sum as integer，以定义一个名为 sum 的整数变量。现在可以在命令行上使用 fbc 编译 BASIC 程序：C:\DEVEL\FBC> fbc sum.bas 如果你的代码没有任何错误，编译器将生成一个可以运行的程序。例如，我的程序现在称为 sum。运行我的程序将从 1 加到 10：C:\DEVEL\FBC> sum Add the numbers from 1 to 10 ... 55 FORTRAN 77FORTRAN 编程语言类似于旧式和现代 BASIC 之间的混合体。FORTRAN 比 BASIC 更早出现，而 BASIC 显然从 FORTRAN 中汲取灵感，就像后来的 FORTRAN 版本从 BASIC 中获得启示一样。你可以将 FORTRAN 程序以源代码的形式写成文件，但并不需要在每个地方使用行号。但是，FORTRAN 77 在某些指令中使用行号（称为标签），包括 FOR 循环。在 FORTRAN 77 中，FOR 实际上被称为 DO 循环，它执行相同的功能并具有几乎相同的用法。在 FORTRAN 77 中，DO 循环的语法如下：DO 行号 变量 = 起始值, 终止值 这种情况是需要行号来指示 DO 循环结束位置的一种情况。你在 BASIC 中使用了 NEXT 指令，但 FORTRAN 需要一个行标签。通常，该行是一个 CONTINUE 指令。查看这个示例 FORTRAN 程序，了解如何使用 DO 循环来循环一组数字。我将此源文件保存为 sum.f：PROGRAM MAIN INTEGER SUM,I PRINT *, 'ADD THE NUMBERS FROM 1 TO 10 ...' SUM = 0 DO 10 I = 1, 10 SUM = SUM + I 10 CONTINUE PRINT *, SUM END 在 FORTRAN 中，每个程序都需要以 PROGRAM 指令开始，并指定程序名称。你可能会将此程序命名为 SUM，但随后在程序中不能使用变量 SUM。当我学习 FORTRAN 时，我从 C 编程中借鉴了一些东西，并以 PROGRAM MAIN 开始了我的所有 FORTRAN 程序，做法类似于 C 程序中的 main() 函数，因为我不太可能使用名为 MAIN 的变量。FORTRAN 中的 DO 循环类似于 BASIC 中的 FOR 循环。它迭代从 1 到 10 的值。变量 I 在每次循环中获取新值。这样可以将 1 到 10 的每个数字相加，并在完成时打印总和。你可以在每个平台上找到适合的 FORTRAN 编译器，包括 Linux 和 DOS。FreeDOS 1.3 的 Bonus CD 中包括 OpenWatcom FORTRAN 编译器。在 Linux 上，你可能需要安装一个包来安装 GNU Fortran 支持（在 GNU 编译器集合（GCC）中）。在 Fedora Linux 上，你可以使用以下命令添加 GNU Fortran 支持：$ sudo dnf install gcc-gfortran 然后你可以使用以下命令编译 sum.f 并运行程序：$ gfortran -o sum sum.f $ ./sum ADD THE NUMBERS FROM 1 TO 10 ... 55 一点不同之处我发现 FORTRAN 和 BASIC 非常相似，但也存在一些不同之处。这些语言的核心是不同的，但如果你了解一些 BASIC，你可以学习 FORTRAN，同样，如果你了解一些 FORTRAN，你也可以学习 BASIC。如果你想探索这两种语言，有几点需要注意：FORTRAN 77 使用全大写，但后来的 FORTRAN 版本允许大小写混用，只要对变量、函数和子程序使用相同的大小写。大多数 BASIC 实现都不区分大小写，这意味着你可以自由地混合大小写字母。有许多不同版本的 BASIC，但它们通常做同样的事情。如果你学会了一种 BASIC 实现方式，很容易学会另一种。注意 BASIC 解释器或编译器的警告或错误信息，查阅手册了解差异。某些 BASIC 实现需要使用行号，例如 Bywater BASIC 和 GW-BASIC。更现代的 BASIC 版本允许你编写不使用行号的程序。FreeBASIC 需要使用 -lang 废弃选项编译带有行号的程序。（题图：MJ/dba28597-dd62-4ffe-bb4a-e38874a65239）via: https://opensource.com/article/23/4/basic-vs-fortran-77作者：Jim Hall 选题：lkxed 译者：ChatGPT 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
本教程让你通过编写一个 “猜数字” 游戏来探索 Basic。用多种语言编写同一个应用是学习新的编程语言的好方法。大多数编程语言都有某些共同点，如：变量表达式语句这些概念是大多数编程语言的基础。当你理解了它们，你就可以开始研究其他的东西了。编程语言通常有一些相似之处。当你了解了一种编程语言，你就可以通过认识其差异来学习另一种语言的基础知识。用标准程序进行练习是学习新语言的一个好方法。它使你能够专注于语言，而不是程序的逻辑。在这个系列文章中，我使用了一个“猜数字”的程序，在这个程序中，计算机在 1 到 100 之间挑选一个数字，并要求你猜出来。程序循环进行，直到你猜对数字为止。这个程序锻炼了编程语言中的几个概念：变量输入输出条件判断循环这是学习一种新的编程语言的很好的实践。本文主要介绍 Basic。在（Bywater）Basic 中猜数字对于 Basic 编程语言，没有真正的标准。维基百科说：“BASIC（ 初学者通用符号指令代码 Beginners' All-purpose Symbolic Instruction Code ）是一个通用的高级编程语言系列，旨在方便使用”。BWBasic 的实现是在 GPL 下提供的。你可以通过编写一个“猜数字”游戏来探索 Basic。在 Linux 上安装 Basic在 Debian 或 Ubuntu 中，你可以用以下方法安装 Basic：$ apt install -y bwbasic 下载 Fedora、CentOS、Mageia 和其他任何 Linux 发行版的最新版本 tarball。解压并设置可执行，然后从终端运行它：$ tar --extract --file bwbasic*z $ chmod +x bywater $ ./bywater 在 Windows 上，下载 .exe 版本。Basic 代码下面是我的实现：10 value$ = cint(rnd * 100) + 1 20 input "enter guess"; guess$ 30 guess$ = val(guess$) 40 if guess$ < value$ then print "Too low" 50 if guess$ > value$ then print "Too high" 60 if guess$ = value$ then 80 70 goto 20 80 print "That's right" Basic 程序可以是编号的，也可以是不编号的。通常情况下，写程序时最好不编号，但用编号的行来写，可以更容易地引用各个行。按照惯例，编码者将行写成 10 的倍数。这种方法允许在现有的行之间插入新的行，以便进行调试。下面是我对上述方法的解释：10 行：使用内置的 rnd 函数计算一个 1 到 100 之间的随机值，该函数生成一个 0 到 1 之间的数字，不包括 1。20 行：询问一个猜测，并将该值放入 guess$ 标量变量。30 行将该值转换为一个数字。40 行和 50 行：根据比较结果，给猜测者以反馈。70 行：回到循环的起点。60 行：通过将控制权转移到 80 行来打破循环。80 行是最后一行，所以程序在这之后退出。输出示例下面是将该程序放入 program.bas 后的一个例子：$ bwbasic program.bas Bywater BASIC Interpreter/Shell, version 2.20 patch level 2 Copyright (c) 1993, Ted A. Campbell Copyright (c) 1995-1997, Jon B. Volkoff enter guess? 50 Too low enter guess? 75 Too low enter guess? 88 Too high enter guess? 80 Too low enter guess? 84 Too low enter guess? 86 Too high enter guess? 85 That's right 开始学习这个“猜数字”游戏是学习新的编程语言的一个很好的入门程序，因为它以一种相当直接的方式锻炼了几个常见的编程概念。通过在不同的编程语言中实现这个简单的游戏，你可以展示这些语言的一些核心概念，并比较它们的细节。你有喜欢的编程语言吗？你会如何用它来写“猜数字”的游戏？请关注本系列文章，看看你可能感兴趣的其他编程语言的例子吧！via: https://opensource.com/article/23/2/learn-basic-coding-game作者：Moshe Zadka 选题：lkxed 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
《代码英雄》第四季（3）：个人计算机 —— Altair 8800 和革命的曙光
代码英雄讲述了开发人员、程序员、黑客、极客和开源反叛者如何彻底改变技术前景的真实史诗。什么是《代码英雄》 代码英雄 Command Line Heroes 是世界领先的企业开源软件解决方案供应商红帽（Red Hat）精心制作的原创音频播客，讲述开发人员、程序员、黑客、极客和开源反叛者如何彻底改变技术前景的真实史诗。该音频博客邀请到了谷歌、NASA 等重量级企业的众多技术大牛共同讲述开源、操作系统、容器、DevOps、混合云等发展过程中的动人故事。本文是《代码英雄》系列播客《代码英雄》第四季（3）：个人计算机 —— Altair 8800 和革命的曙光的音频脚本。导语：因为 Altair 8800，我们今天才能在大多数家庭中拥有计算机。它最初是为业余爱好者设计的，但是一些有远见的人看到了这个奇怪的小机器的巨大潜力，并努力使其他人也看到。他们创造的东西所带来的影响远远超出了任何人的想象。Forrest Mims 告诉了我们他的联合创始人 Ed Roberts 是如何计划拯救他们陷入困境的电子公司的。他的想法是什么？一台为业余爱好者制造的微型计算机。那台计算机让 比尔•盖茨 Bill Gates 和 保罗•艾伦 Paul Allen 打了一个决定性的电话。Dan Sokol 和 Lee Felsenstein 回顾了 Altair 8800 在自制计算机俱乐部的揭幕，以及它如何激发了 史蒂夫•沃兹尼亚克 Steve Wozniak 的 Apple I 的灵感。然后，我们在 John Markoff 那里听到了一个臭名昭著的软件抢劫案，该案为代码是否应该是专有的辩论创造了条件。最后，Limor Fried 回顾了这个故事如何继续影响今天的开源硬件运动。00:00:04 - Saron Yitbarek：1974 年 12 月一个严寒结霜的下午，两个年轻人走在哈佛广场上，他们可能正在谈论着他们最感兴趣的计算机话题。00:00:19：当他们经过报摊，看到了《 大众电子 Popular Electronics 》杂志从其他杂志中露出的蓝色字体，他们停下来看了一下，杂志封面上是一个金属盒的照片，在它的正面有十几个开关和指示灯。标题上写着：“世界上第一台小型计算机套件，Altair 8800。” 这个盒子看上去不太像样，裸露着金属，就像是给业余爱好者和修理工们准备的。但对这两个人来说却不是这样，更像是他们一直在等待的机器，因为他们正好有适合这种新硬件的完美软件。同时，他们也有一些忐忑，如果别人也有这种想法并已经开始实施的话，那该怎么办呢？必须尽快行动起来了。这两位代码英雄是谁呢？ 比尔•盖茨 Bill Gates 和 保罗•艾伦 Paul Allen 。此时他们并不知道，Altair 8800 将会是打开个人计算机革命大门的机器，它将永远的改变我们的生活。这台设备还做到了另一件事，在一个神秘小偷的帮助下，它将引发自由软件和专有软件之间的争论，我们稍后会讲到。00:01:50：在硬件这一季的第一集，我们了解了 Eagle 这样的分时小型机。在第二集，我们了解了 GE-225 大型机。但它们仍然受制于自身的尺寸、价格以及处理能力。而这一集讲的是，缩小到 微型计算机 micro computer 的所有东西。这一切，都始于邮寄给业余爱好者的 DIY 套件，就像是《大众电子》的那张划时代的封面里面的一样。00:02:23：这些简单的套件，激发出了一种革命性的想法：计算机可以放在你的家里。这台计算机是属于你的，你可以用来做实验。一个全新的、面向大众的硬件产品 —— 个人计算机 personal computer （PC） —— 诞生了。我是 Saron Yitbarek，这里是《代码英雄》，一款红帽公司的原创播客。00:02:51：让我们回到上世纪 60 年代末，在新墨西哥州的沙漠里，Altair 8800 诞生了。一个名叫 Ed Roberts 的人与人合伙创立了一家小型电子零件公司 MITS（意即“ 微型仪器和遥测系统 Micro Instrumentation and Telemetry Systems ”）。通过爱好者杂志，他们可以将这些小玩意卖给痴迷于无线电遥控飞机和火箭模型的新市场。00:03:21：到 1971 年，Ed 独立经营着公司。他决定将重心转向电子计算器，这在当时是一个全新的市场。MITS 准备提供第一台爱好者计算器，但是 Ed 失算了。这位是他最初的联合创始人，Forrest Mims。00:03:42 - Forrest Mims：像索尼、夏普和德州仪器这样的公司，他们正在制造专业的袖珍计算器，并以低于 Ed 的价格出售。这是一场灾难，Ed 濒临破产，并且不知道该怎么办。00:03:57：有一天，他了解到英特尔公司开发了一种新型的微处理器，并在《 电子杂志 Electronics Magazine 》上刊登了广告。我仍然记得那则广告，那款微处理器叫做 Intel 8080。00:04:09 - Saron Yitbarek：Ed 大量购买了英特尔微处理器，因为当时没有人购买它。他围绕这个微处理器设计了一台完整的计算机。00:04:23 - Forrest Mims：有一天晚上，他给我打电话说：“我有一个新玩意儿想让你看看。”于是我骑自行车去了 MITS。桌上有一个蓝色的盒子。他说，“看这个。”我说，“这是什么？”他说，“这是一台微型计算机。”我说，“你在开玩笑吧。”他说，“不，这是一台微型计算机，《大众电子》杂志已经认可了，并且想要刊登一篇关于它的文章。”00:04:43 - Saron Yitbarek：Ed 的目标是创造一个非常基本的计算机套件，同样提供给那些模型飞机和火箭的爱好者市场。他通过《大众电子》杂志来邮购销售这个套件。当你收到这个套件时，会获得一个装满金属零件的袋子，里面有一个装有最重要的 Intel 8080 微处理器芯片的特殊管子。Ed 把整个套件的价格定在 400 美元左右。00:05:14 - Forrest Mims：他在考虑一个问题，“你觉得能卖出多少台？”他问道。基于之前我们通过《大众电子》杂志销售东西的经验，我说，“好吧，Ed，顶天了也就几百台吧。”我这么说的时候，他看起来好难过。直到今天我都为此感到内疚。在《大众电子》杂志刊登了这个套件之后，他的小楼前的停车场里挤满了汽车。最后竟然卖了 5000 台这样的计算机。它被命名为 Altair 8800。当时 Ed 不知道该怎么称呼它，这个名字还是《大众电子》杂志的工作人员想出来的。00:05:50 - Saron Yitbarek：Altair 8800 是 Ed Roberts 为了拯救他的公司而做的拼死一搏，这是他做过的最好的决定。他做了一件真正有意义的事情，但他当时并没有意识到。通过将 Altair 以一个合适的价格投放到市场，他让自己的机器展现给了比铁杆电子爱好者更大的受众群体面前。他的 Altair 开拓了一个全新的市场 —— 那些从未想过能拥有自己计算机的消费者群体。00:06:28：更重要的是，他们可以修理自己的计算机。这是一个大时代的开端，但它还缺少一个部分，软件。这个硬件需要正确的软件才能活起来。00:06:51：回到 马萨诸塞州 Massachusetts 的剑桥，比尔•盖茨和保罗•艾伦刚刚在最新一期《大众电子》杂志的封面上看到了 Altair 8800。在他们走过哈佛广场的那段决定性路程之前，保罗一直在向比尔抱怨那些 Intel 8080 的新芯片，他在寻找使用这些芯片创建软件的方法。00:07:16：比尔和保罗使用 BASIC 编程。正如我们在上一集中知道的，如果没有 GE-225 主机，BASIC 永远不会诞生并流行起来。对于比尔和保罗来说，BASIC 的易用性使得它成为了理想的语言，可以提供给那些受限于内存和处理能力的硬件，比如 8080。00:07:38：当他们看到杂志封面上封装着 8080 芯片的 Altair 时，他们意识到可以用 BASIC 编写软件来支撑这个机器。他们很快联系了 MITS 的 Ed Roberts。Forrest Mims 还记得那个电话。00:07:56 - Forrest Mims：保罗说，“我们得给这个公司打个电话，告诉他们我们已经有 BASIC 了。”盖茨同意了，但他不想亲自打这个电话，因为他的声音实在太年轻了，而且他看起来也像个青少年。所以保罗•艾伦打电话给 Ed：“我们已经为你的 Altair 准备好了 BASIC。”Ed 说，“每个人都告诉我他们已经搞好了 BASIC。如果你弄好了它，就把它送过来，合适的话，我会考虑的。”00:08:17：他们并没有 BASIC。他们花了一个月的时间在麻省理工学院或哈佛大学都不知情的情况下借用了计算机时间，为从没有见过的 Altair 开发了 BASIC 软件。00:08:27 - Saron Yitbarek：比尔和保罗知道他们有能力为 Altair 编写代码。但实际上，他们还没有开始编写。所以他们日以继夜地为这个机器改写 BASIC。使用公布的规范，他们在 DEC PDP-10 主机上创建了一个仿真器，以此来仿真 Altair，然后开发了一个 BASIC 解释器。00:08:53：没有 BASIC 解释器的 Altair 8800 本质上就是一个带有开关和指示灯的金属盒子，并没有什么用。然而随着 BASIC 解释器的加入，这台机器突然有了全新的未来。00:09:10：仅仅几个星期后，也就是 1975 年 3 月，代码就准备好了。保罗飞往 阿尔伯克基 Albuquerque ，准备亲手将演示程序交给 Ed Roberts。前一天晚上比尔一夜没睡，以确保代码没有任何的错误。他把最终的代码打在纸带上，并在航班起飞前交给保罗。在三万英尺的高空，保罗突然意识到，他们忘了一件事。00:09:39 - Forrest Mims：他意识到，他们没有开发出 编码器 Coder ，或者说 引导记录器 bootstrap logger ，来帮助计算机读取程序。他在飞机上写了那个代码。保罗•艾伦就是这么才华横溢。00:09:53 - Saron Yitbarek：现在他已经准备好了。在第二天进行演示的时候，保罗将首次在一台真正的 Altair 上测试他们的代码。1994 年比尔•盖茨在一段旧影片中，谈到保罗•艾伦在 MITS 装上纸带时所发生的事。00:10:13 - 比尔•盖茨：第一次，由于某些原因，代码并没有工作。当第二次加载它时，它就顺利的工作了。然而这只是仿真器，速度非常的慢，需要大量的指令才能完成一条指令。因此，实际上，即使是一个非常小的微处理器，真实的机器也比我们的 PDP-10 仿真器要快，大约快五倍。00:10:32：所以，对保罗来说，当它最终出现并显示出 “READY” 提示符时，保罗输入了一个程序，“打印二加二”，它成功了。然后他让它打印出类似于平方和求和之类的结果。他和这家公司的负责人 Ed Roberts 一起坐在那里都惊呆了。我的意思是，保罗惊讶于我们的那部分能够工作，而 Ed 则惊讶于他的硬件能够工作。00:10:55 - Saron Yitbarek：保罗•艾伦和比尔•盖茨的 BASIC 解释器在 Altair 上工作得非常棒，这是一个惊人的成就。00:11:02：Ed Roberts 对此印象非常的深刻，以至于……00:11:08 - Forrest Mims：他当场聘请了保罗•艾伦担任他的软件开发副总裁。00:11:13 - Saron Yitbarek：保罗•艾伦在那之后很快就搬到了新墨西哥州，开始了他的新工作。至于比尔，他回到了哈佛，毕竟他还是个学生。00:11:23 - Forrest Mims：但是保罗•艾伦说服了盖茨在 1975 年的夏天回来，并开始用 BASIC 工作。他们一起开了一家公司，叫做 Micro-soft，带一个连字符。后来他们去掉了连字符。00:11:36 - Saron Yitbarek：MITS 成为了比尔和保罗的第一个客户，他们授权了他们的 BASIC 解释器给 MITS，并同意随机器分发他们的代码。他们称这套软件为 Altair BASIC，它成为了与个人计算机捆绑的第一款软件。现在他们只需要卖掉它就好了。00:11:57 - Forrest Mims：Ed 做了什么呢？嗯，他们买了一辆大型房车，把它做成一个移动销售设备，一个销售计算机的移动办公室。他们把它开到全国各地，在不同的城市停下来，举行演示，这吸引了大量的人。00:12:12 - Saron Yitbarek：它被称为“移动 MITS”，把巡回路演带到了西部。在加利福尼亚海岸沿岸，会议室里挤满了好奇的工程师和修理工。MITS 团队展示了 Altair 和 Altair BASIC。然而，在 Palo Alto 一个特别拥挤的酒店会议室里，发生了一件意想不到的事情。这件事改变了整个软件历史的进程。00:12:46：让我们先等一下。在开始说这件意想不到的事情之前，我们先来了解一下 湾区 Bay area 的电子爱好者和业余爱好者的情况。他们自称为 自制计算机俱乐部 Homebrew Computer Club 。他们互相交换零件、电路和想法，并在探索个人计算机的新世界里相互扶持。00:13:11 - Dan Sokol：这些人都对此感到好奇。他们中大多数都是某个领域的工程师。其中只有两三个人对计算机编程完全没有了解。当时做了一项调查，在座多少人拥有一台计算机，而又有多少人计划购买一台。这个调查十分有趣，所有人都想拥有一台计算机，但是实际上只有一两个人拥有它们，他们会把计算机带到俱乐部聚会上展示它们。我记得那时最令人尴尬的问题是，“你打算用它做什么？”而没有人知道。00:13:46 - Saron Yitbarek：这位是 Dan Sokol，自制计算机俱乐部最初的成员之一。因为每个人都想看一看 Altair 8800，在 门罗公园 Menlo Park 的一个车库里他们举行了第一次集会。00:14:08 - Lee Felsenstein：在 1975 年 3 月 5 日的一个雨夜，有 30 个人来到了这个车库。这里有一台为他们展示的 Altair。它是启动着的，但没有连接任何东西，也没有做任何事情。00:14:22 - Saron Yitbarek：这位是 Lee Felsenstein，俱乐部的另一个初始成员。00:14:27 - Lee Felsenstein：我们在房间里走来走去，尝试学到一些什么。我们从 Steve Dompier 听到了更多的报告，他订购了一台 Altair 计算机，它是在一月份的《大众电子》杂志上发布的。他实际上开车去了 Albuquerque 核实了他的订单，然后向我们报告了他的发现。00:14:48 - Dan Sokol：Dompier 带来了一台 Altair，他坐在那儿，通过前面板的开关进行编程，使它播放音乐。在大约尝试了一个小时后，有人不小心把电源线踢掉了，这使得他不得不重新开始。但在当时看来，这是“看一台计算机，而且是你能买得起的那种。”00:15:08 - Saron Yitbarek：在举行的聚会上还有一个人。当他看到 Altair 的时候，让他大吃一惊，但不是因为他不相信有这样一台机器存在。恰恰相反，因为有类似功能并比它好的多的机器已经存在了，他已经制造了它。那个人就是年轻的 史蒂夫•沃兹尼亚克 Steve Wozniak 。他的一个朋友劝说他去参加那个聚会，以便让史蒂夫展示他制造的视频终端。但是每个人都被 Altair 所吸引。在此之前，史蒂夫从未听说过 Altair，也没听说过使它工作起来的英特尔 8080 微处理器。他带了一份数据表回家，这件事带来了一个不可思议的惊喜。00:16:01：这是史蒂夫•沃兹尼亚克（“沃兹”）早在 2013 年自制计算机俱乐部聚会上的发言。00:16:10 - 史蒂夫•沃兹尼亚克：我把它带回家研究了一下，然后发现，“天哪，这些微处理器是一个芯片。”竟然能卖到 400 美元，这太疯狂了。这就是在我高中时在纸上设计的计算机。实际上，五年前我自己也制造了一个，当时我必须自己制造一个处理器。因为那时还没有微处理器。00:16:31 - Saron Yitbarek：在上一集中，我们了解了沃兹高中时是如何在 GE-225 计算机上开始用 BASIC 编写他自己的软件的。嗯，从高中开始，沃兹就想拥有一台属于自己的计算机。但要做到这一点，他必须包括一种编程语言，这意味着至少需要 4K 内存以及用于人工输入输出的功能来输入程序。他的机器有 256 字节的固态 RAM，而此类芯片非常的昂贵，所以他设计了一个处理器，还在高中的时候就不断地改进它。就像 Altair 一样，它有输入 1 和 0 的开关。但现在他意识到 Altair 的微处理器是他梦寐以求的。00:17:24 - 史蒂夫•沃兹尼亚克：你按下按钮 1、0、1、0、1、0，然后按下一个按钮，它就进入一个地址寄存器，在按下几个 1 和 0，然后写入内存。你写满了内存，在俱乐部听到了 Altair 播放音乐，是如此的兴奋。但对我来说，这都不算什么，我想要的是一台可以使用的机器，现在我要做的是输入数据直接写入内存。这太容易了，我说，“我的梦想就是拥有一台自己的计算机。”那天晚上，我看到了这种方法。00:17:56 - Saron Yitbarek：那天晚上，Apple I 的形象突然出现在了史蒂夫•沃兹尼亚克的脑海中。他可以通过在终端机上添加一个微处理器，几乎不用做什么就可以得到一台适合使用的计算机。他的想法是：当计算机启动时，会运行一个程序去接收输入的数据，就像打字机一样。而不再需要拨弄 1 和 0 了。再加上他制造的视频终端机，让程序员可以看到自己输入的内容，一台感觉更人性化的计算机就诞生了，这是一台对普通人有用的个人电脑。下面是 Lee Felsenstein 的发言。00:18:42 - Lee Felsenstein：他已经开发出一种小型的视频终端适配器，通用术语是 电视打字机 TV typewriter 。可以把它连接在电视上。他当时接触了一种只需要 25 美元的处理器芯片，并意识到，“如果我把它放在带有内存的主板上，我也能在主板上放上电视终端，这样我就会拥有一台具有视频显示的计算机。”他就这样做了，在聚会时就在为此做准备，当我们搬到 斯坦福直线加速器礼堂 Stanford Linear Accelerator Auditorium 时，他占住了唯一有电源插座的座位。他总是比别人先到那儿，他正在为 Apple I 编写 BASIC 程序。在那里他开创了苹果计算机系列。00:19:34 - Saron Yitbarek：每次沃兹完成了他的计算机制作，他就会很兴奋地向俱乐部的每个人展示。他解释了如何使用几块芯片制造出一台价格低廉的个人计算机。沃兹是信息自由、分享知识以帮助建立更好的系统和社会的理念的主要倡导者。这与当时俱乐部的开放价值观和社会解放运动相呼应。00:19:59：因此，在会议结束的时候，他拿出了他的设计、硬件和软件的蓝图，免费传给大家。他认为他们每个人都可以利用他的方案来制造自己的 300 美元的计算机。但沃兹的朋友兼商业伙伴，一个名叫 史蒂夫•乔布斯 Steve Jobs 的人，很快就终止了他的这个想法。乔布斯一直在外奔波，并没有意识到沃兹会把 Apple I 的设计送给别人。乔布斯并不认同沃兹的黑客思维方式，他更注重专利。很快，乔布斯说服了沃兹，他们决定改为出售计算机。00:20:42：这种自由和专有技术之间的道德斗争，曾经不止一次发生在自制计算机俱乐部。事实上，在那次让大家对 Altair 瞠目结舌的首届俱乐部大会之后的几个月，还有一次聚会点燃了这场辩论的导火索。它发生在斯坦福直线加速器中心礼堂里。聚会结束时，数十名与会者冲上台去想要获取一份纸带程序，这是微软公司的 Altair Basic 的最新副本，是一款让所有人都很感兴趣的软件。00:21:21：为什么会有这些副本呢？这个软件还没有正式发布，那么它是如何在那个自制俱乐部聚会上出现的呢？原来，原始的纸带已经被偷了。这是那个时代最大的软件抢劫案。00:21:44：好吧，让我们具体了解一下这一切是如何发生的。还记得前面提起过关于移动 MITS 到西部去展示 Altair 和 Altair BASIC 的事吗？00:21:54 - John Markoff：1975 年 6 月 10 日，该公司在 Palo Alto 演示他们计算机和搭载的软件。00:22:03 - Saron Yitbarek：这位是 John Markoff，纽约时报的记者。00:22:06 - John Markoff：这家旅馆叫 Rickeys。请记住，在当时个人计算机行业实际上并不存在，对个人计算机感兴趣的大多数人也并不是真正的商人，因为那时并没有商业软件，所以他们向一个广泛的团体展示计算机。当时在新硅谷，有很多人是电气工程师，他们都是程序员。有各种各样的人对技术、对计算机感兴趣。00:22:39 - Saron Yitbarek：在那次演示过程中，MITS 的工作人员在将软件加载到机器上时遇到了一些麻烦。在当时，软件是打孔在纸带上的，纸带必须通过一个机械阅读器才能安装程序。当那名员工因此而慌乱时，房间里所有的目光都盯在闪闪发亮的新 Altair 上，然而人群中的某个人发现了一些别的东西，在旁边的一个纸板箱，在那个箱子里是一卷卷 Altair 的纸带，这是一个千载难逢的机会。他把手伸进箱子里并用手指缠住了一卷长长的纸带。把它装进口袋带走了。没人看见这些。00:23:36 - John Markoff：不知怎么回事，那卷纸带最终被一位半导体工程师得到了，他在一家名为 Signetics 的公司工作，他的名字叫 Dan Sokol，他的技术能力很强，也是参加过最初的自制计算机俱乐部聚会的人。所以 Dan 有机会接触到一台相对高速的纸带复印机，他用它做了一堆副本。直到今天 Dan 仍然坚称，他不是拿走原始纸带的人，他只是拿到了一份原纸带的副本，然后把它带到自制计算机俱乐部的下一次聚会上，并与那里的会员们分享。00:24:17 - Dan Sokol：由于我不道德的行为，我被称为世界上第一位软件盗版者，这是有其道理的。我是那个复制了 MITS BASIC（即微软 BASIC）纸带的人。当时有人在自制计算机俱乐部里站出来说，“谁有能力复制纸带吗？”我说我可以，就这样，我最终得到了那盘纸带并复制了它。00:24:45 - Saron Yitbarek：当 Dan 分发他的盗版副本时，Lee 也正在那个自制计算机俱乐部会议上。00:24:51 - Lee Felsenstein：所以发生的事情就是 Dan Sokol 做了 10 份副本，在那次会议上，我们拿到了副本并对他说，“这是 Altair BASIC 的副本。现在带回来的拷贝会比你拿过来的多。”00:25:02 - John Markoff：当时的约定是，如果你得到一个副本，你必须自己做一个副本，并与朋友分享。这是一个未知的领域。当时还没有个人计算机软件公司，所以这真的是一种狂野的西部，当时人们只是卖计算机，而共享软件。00:25:19 - Saron Yitbarek：在 1975 年，软件只是你用来让计算机工作的东西。个人计算机是一个全新的概念。当时的黑客们并没有与这个词联系在一起的所有的想法。他们只是想分享他们的工作，通过思想和软件的自由交流来建立一个开放的社区。这次抢劫和赠品事件为一场至今仍能引起反响的争论创造了条件。软件应该自由共享还是应该被买卖？对此，比尔•盖茨一定有自己的看法，当他发现自己的软件发生了什么时，他非常愤怒。00:26:03 - John Markoff：当他意识到他的 BASIC 编程语言正被业余爱好者们广泛分享时，他给他们写了一封愤怒的信，指责他们窃取了他的软件，削弱了他的谋生能力。00:26:18 - Lee Felsenstein：我们收到了那封信。在聚会上阅读了这封信，里面有一句话：“我们花费了大量的金钱去开发它。我们用了近 4 万美元的计算机时间。”房间里的每个人都知道，那样的计算机美元是假的，这只是一个会计把戏。你没有为它们支付真正的钱，而我们也知道这一点，所以我们想，“继续抱怨吧。我们会继续做我们正在做的事情。”00:26:45 - Dan Sokol：他叫我们海盗和小偷。我们试图理智和理性地向他解释，你不能以 400 美元的价格出售一台价格为 400 美元的电脑的软件。在今天这个时代，很难回过头并试图解释他们当时的心态，那就是小型计算机的思想，小型计算机被用于工业，而我们只是一群用套件来制造自己计算机的爱好者。唯一的功能性软件就是这个 BASIC 解释器，它几乎充当了一个操作系统。早在 1974 年，个人计算机里还没有操作系统，我们无法与他沟通，也无法向他解释，“把手册以 100 美元卖给我们，让我们随便用软件。”他没有听这些，多年来微软的软件价格过高，被盗版，而且盗版严重。00:27:51 - Saron Yitbarek：俱乐部成员选择无视这封信。因为早在 1975 年，当时的版权法并没有涵盖软件。将软件从一个纸带复制到另一个纸带上不会有任何的惩罚。这种情况在 1977 年会发生变化，但在那几年里，这种做法并没有违反法律。00:28:12 - John Markoff：具有讽刺意味的是，比尔•盖茨并没有创造 BASIC 语言。他只是简单地创建了它的副本，是从原始设计者 达特茅斯大学 Dartmouth University 的一位教授那得到的，他基本上是做了一个副本，然后把它卖掉，所以这一切的根源在于分享。00:28:31 - Saron Yitbarek：抢劫、纸带、分享、愤怒的信件。所有这些都导致了新兴的软件业和那些被他们视为盗版者的人们之间长达数十年的战争，但在这场战争中，开源软件运动也随之兴起。它的核心价值观与那些点燃个人计算机革命的早期爱好者是一脉相承的，因为这些业余爱好者意识到，个人计算机未来的关键点在于释放软件的潜能。00:29:07 - Lee Felsenstein：传递纸带、互相鼓励和互相借鉴彼此成果的过程确实是使个人计算机行业成功的原因。00:29:17 - Saron Yitbarek：现在，我们再也没有说过最初的小偷是谁。谁偷了那条珍贵的纸带，至今仍是个谜。那些知道答案的人们也更愿意保留这个谜。00:29:32 - Dan Sokol：至于它是如何被“解放”的，如果你想用这个词的话，我知道是谁干的，但是我不会说，因为那个人很久以前就要求保持匿名，因为这样更安全，我尊重这种选择，并且我也会继续尊重下去。所以，我当时不在 Rickey 旅馆，但纸带却找到了传递给我的方法。00:30:01 - Saron Yitbarek：随着时间的推移，个人计算机革命让位于硅谷和众多风投支持的科技创业公司，但那些修理工、那些电子爱好者和业余爱好者们却从未消失。事实上，他们比以往任何时候都更强大。00:30:20 - Limor Fried：嗨，我叫 Limor Fried，是 Adafruit 工业公司的首席工程师兼创始人。00:30:26 - Saron Yitbarek：Adafruit 是一家开源硬件公司，是过去几年开始的那场新革命的一部分，即 开源硬件运动 open source hardware movement ，这场运动与那些早期的爱好者有着同样的价值观。但它变的更好一些。00:30:43 - Limor Fried：自制计算机俱乐部，我认为，人们带着他们的计算机加入进来是有这样一种信念的，这就像，“来看看我做的这个很酷的 魔改 hack 吧”，然后每个人都会说，“天哪，这太酷了。好吧，下个月我会带来一个更棒的。”这是一个积极的反馈循环，带来了真正好的技术创新。我认为黑客哲学仍然存在，人们只是有了更多的背景知识，所以他们认为作为一个很酷的黑客，我想说的确有所进步，但它实际上已经泛化了，我认为这很好。我认为分享的价值仍然存在，相互帮助，共同努力工作与合作。这个理念贯穿始终。它存在于整个开源社区。00:31:32 - Saron Yitbarek：我们将用一整集来讲述开源硬件运动的兴起，这样就可以看到我们是如何进步的，并为 Limor Fried 这样的现代制造商创造空间。请继续关注几周后的第六集。下一集，是改变了世界的磁碟 —— 软盘。00:31:56 - Saron Yitbarek：代码英雄是红帽的原创播客。请到 redhat.com/commandlineheroes 了解一些关于个人计算机革命的伟大研究。这里有一个美丽的轶事，你可以读到关于比尔•盖茨在 Ed Roberts 临终前拜访他的故事，如果你想知道在那次 PC 革命期间发生了什么，请查看我们最初的几期命令行英雄节目，操作系统战争。我是 Saron Yitbarek，下期之前，编码不止。附加剧集Forrest Mims 对 Ed Roberts 有很多话要说。听听有关 Ed 与保罗•艾伦和比尔•盖茨会面，以及他们开始合作的故事。音频什么是 LCTT SIG 和 LCTT LCRH SIGLCTT SIG 是 LCTT 特别兴趣小组 Special Interest Group ，LCTT SIG 是针对特定领域、特定内容的翻译小组，翻译组成员将遵循 LCTT 流程和规范，参与翻译，并获得相应的奖励。LCRH SIG 是 LCTT 联合红帽（Red Hat）发起的 SIG，当前专注任务是《代码英雄》系列播客的脚本汉化，已有数十位贡献者加入。敬请每周三、周五期待经过我们精心翻译、校对和发布的译文。欢迎加入 LCRH SIG 一同参与贡献，并领取红帽（Red Hat）和我们联合颁发的专属贡献者证书。via: https://www.redhat.com/en/command-line-heroes/season-4/personal-computers作者：Red Hat 选题：bestony 译者：linitok 校对：Northurland, wxy本文由 LCRH 原创编译，Linux中国 荣誉推出
代码英雄讲述了开发人员、程序员、黑客、极客和开源反叛者如何彻底改变技术前景的真实史诗。什么是《代码英雄》 代码英雄 Command Line Heroes 是世界领先的企业开源软件解决方案供应商红帽（Red Hat）精心制作的原创音频播客，讲述开发人员、程序员、黑客、极客和开源反叛者如何彻底改变技术前景的真实史诗。该音频博客邀请到了谷歌、NASA 等重量级企业的众多技术大牛共同讲述开源、操作系统、容器、DevOps、混合云等发展过程中的动人故事。本文是《代码英雄》系列播客第三季（2）：学习 BASIC的音频脚本。导语：以前，成为程序员需要博士学位，还要能够接触到像服务器之类有着举足轻重地位的硬件。直到 1965 年，一群工程师有了个激进的想法：让编程变得更易学、亲民。像 BASIC 这样专为初学者设计的语言为许多人打开了编程世界的大门。Tom Cormen 和 Denise Dumas 回忆了 BASIC 是如何改变一切的。Avi Flombaum 和 Saron 则会向这个软件开发新时代的编程新手们提供关于挑选第一门语言的建议。最后，Femi Owolade-Coombes 和 Robyn Bergeron 会向我们讲述，新一代的程序员们，是如何通过游戏来接触编程的。这些初学者语言的诞生，让每个人都有机会踏入编程的大门。同时，这也让整个产业欣欣向荣。00:00:02 - Saron Yitbarek：1965 年是美国历史上发生重大变化的一年。《民权法案》就是在那年签署的。00:00:09 - 新闻档案：国会通过了史上影响最为广泛的《民权法案》，并将它写进了法律里。00:00:12 - Saron Yitbarek：作战部队被第一次被派往越南，男人们烧掉了他们的征兵证。00:00:19 - 新闻档案：征兵名单被放在波士顿法院的台阶上，一群高中男生挥拳抗议。00:00:25 - Saron Yitbarek：在纽约，披头士乐队举行了世界上第一场体育馆内的音乐会。但在距离这些大新闻很远的地方，一场与众不同的革命正在酝酿。00:00:39：5 月 1 号，凌晨 4 点。 约翰·凯梅尼 John Kemeny 教授和一名本科生正在 达特茅斯 Dartmouth 的 GE 225 型电脑上忙碌着。他们运行了一个方才写好的程序。电传打字机的三行输出，永远地改变了计算机编程领域。00:01:04：欢迎来到红帽原创播客《代码英雄》的第三季第 2 集。我是主持人，Saron Yitbarek。在这一集，我们将继续“编程语言的过去与未来”的旅程。在第 1 集中，我们深入研究了 Python，并了解了开源社区如何在其领导阶层的大动荡中生存下来。比起上一期节目，本次节目则会更注重于个人。我会先聊聊我邂逅入门语言时的体验，这种体验我们应该都有。我将带领你们领略我学习的第一门语言 Ruby，以及某些新手语言是如何用游戏的形式，来到我们身边的。00:01:50：不过，我得先举个例子，好让大家都能明白“新手语言”到底是什么意思。这个例子就是 BASIC，它诞生于之前提到的 达特茅斯 Dartmouth 实验室的三行输出。在 1965 年的那个黎明， 约翰·凯梅尼 John Kemeny 作为创造者之一，见证了 BASIC 的诞生。00:02:14：BASIC 的意思是“ 初学者的泛用符号指令代码 Beginner's All Purpose Symbolic Instruction Code ”。这里面的第一个词 “初学者” 正是其不凡之处所在。在那时候，即使是少量的编程工作，也需要一名博士来完成。这是一种极高的要求，需要有人接受专业教育，更不用说那些高级的硬件了。但是 凯梅尼 Kemeny 教授和他的团队希望改变现状。他们想知道：如果要编写一种所有人都可以使用的编程语言，那会是什么样的？当美国各地的青年们剧烈地抗议，要求变革时， 达特茅斯 Dartmouth 团队提出了一种另类的革命。00:02:57：他们的秘密武器是一个房间那么大的大型电脑 —— GE 225。它重达 2000 磅，和这份不得了的重量相匹配的是，它具备某些全新的功能。那就是分时功能（LCTT 译注：也就是时间片，实现了多用户多进程快速切换的技术）。突然间，编程不再需要复杂的打孔卡系统或庞大的开关墙了。分时意味着程序们都可以同时执行，因为系统会根据不同用户的需要来回切换其处理内容。00:03:31：分时意味着使用者可以用惊人的新方式来访问计算机。这是来自 达特茅斯 Dartmouth 的些许录音，记录了 BASIC 刚诞生的时候，65 班的一位本科生 John McGeachie 学习的实况。00:03:47 - John McGeachie：我们把这台相当贵的、原本只能一次让一个人用的计算机变成了可以……让超过 30 人使用的东西。30 名本科生可以同时在这上面编程，还能快速得到输出。它是史无前例的简洁直接。00:04:15 - Saron Yitbarek： 约翰·凯梅尼 John Kemeny 联合另一位计算机文化的布道师 托马斯·卡茨 Thomas Kurtz 共同开发了 BASIC 语言。他们发现，分时让计算机使用变得更亲民，因此准入门槛降低了许多。而剩下的工作则是编写一门简单直白的编程语言。 一门像 BASIC 那样的语言。00:04:39：他们开发了像 HELLO 和 GOODBYE 这样的指令，来代替 LOG ON 和 LOG OFF 命令。事实上，初版 BASIC 只有 14 个简单的指令，比如条件判断 IF，和 GOTO 之类的简单选项。00:04:54 - Tom Cormen：我是 Tom Cormen。我是 达特茅斯 Dartmouth 大学的一名计算机科学教授。 00:04:59 - Saron Yitbarek：Cormen 教授将与我们谈论所谓“初学者的革命”，以及 BASIC 的出现如何成为时代精神的一部分。它带来了一个新世界，在其中，计算机技术对更多人来说不仅不再遥不可及，甚至还是激动人心的——编程甚至变得有点时髦了。00:05:14 - Tom Cormen：据说在 1960 年时，男学生会在这里（计算机中心）约会，我真是不能想象如果发生在现在会是什么样子。但在那个时候，计算机中心一度是约会的最佳场所。00:05:24 - Saron Yitbarek：这种在校园兴起的编程热潮，是“初学者语言”诞生所带来的直接结果。00:05:31 - Tom Cormen：就如同我们过去说的那样，BASIC 为那些计算机爱好者降低了准入门槛。不想学习 FORTRAN 这类编程语言的社会科学家可以使用 BASIC。从事人文艺术的人们可以用它做文本处理，甚至用来创作艺术作品，这些完全可以用 BASIC 来完成。00:05:55：没过几年，人们就开始写电脑游戏，也时常在编程中实现 GUI。00:06:03 - Saron Yitbarek：对于所有那些认为自己不太可能成为程序员的孩子们，编程领域的大门，突然间以一种近乎直观的方式打开了。它使得我想起来 葛丽丝·哈伯 Grace Hopper （LCTT 译注：参见上一季。元祖级程序员，美国海军准将，COBOL 的重要编写者。她也是世界上第一个在计算机领域使用 “bug” 这个词的人。）所追求的那种世界。当我们上一季谈到 哈伯 Hopper 时，我们谈到了她的语言创新如何将编程带到更多人眼前。BASIC 的此时此刻就像是 哈伯 Hopper 梦想的延续。00:06:29 - Tom Cormen：我非常确信，如果 葛丽丝·哈伯 Grace Hopper 能看到更多人开始写代码，她会非常高兴。她可能会喜欢 BASIC 和 COBOL 的不同之处，因为这种不同为人们提供了更多的选择。他们可以写 COBOL，可以写 FORTRAN，可以写 BASIC，可以写 ALGOL，可以选择当时任何流行的语言。00:06:54 - Saron Yitbarek：Tom Cormen 是 达特茅斯 Dartmouth 计算机科学系的一名教授。当初，计算机技术中的几大变化催生了新一代的程序员。分时功能使并发工作成为可能，而 BASIC 使入门编程变得简单了。这两个因素结合在一起，创造出了改变游戏规则的星星之火。很快，编程就不仅是大型机构的专利。这一代程序员中有像 比尔·盖茨 Bill Gates 和 史蒂夫·沃兹尼亚克 Steve Wozniak 这样的特立独行者，也有在个人电脑上每天默默耕耘的开发者。00:07:32 - Denise Dumas：BASIC 能够在程序出错时立即给使用者以反馈。这让它的使用体验变得不同，它将你吸在一起，使你继续前进；这种交互是有意义的，就因为它是一种交互。00:07:50 - Saron Yitbarek：这位是 Denise Dumas，她带领“ 红帽企业版操作系统 Red Hat® Enterprise Linux® ”工程师团队。00:07:55 - Denise Dumas：我认为 BASIC 使编程变得民主了许多，因为 BASIC 把它自身交予学生、大众，当时的其他语言——像是 COBOL、FORTRAN 之类——根本做不到这一点。当 CRT（阴极射线管）流行的时候，BASIC 更为火爆，因为在你输入了信息之后，输出不再是被打印在一张纸上，而是显示在你面前的屏幕上。00:08:26 - Denise Dumas：我们现在有时候会嘲笑命令行，对吧？一切都图形化了，命令行还是一如往常，但它比命令行之前的时代有了很大的改进。这一重大改进就是，你输入指令能够立即得到回应了。我认为 BASIC 降低了准入门槛，虽然我是那种控制狂，我喜欢汇编，但我还是会这么说的。BASIC 使编程变得更加平易近人。00:08:59 - Saron Yitbarek：BASIC 在 1980 年代带来的这份激情一直延续到了今日。现在，有许多语言能被初学者用作进入编程世界的光明大道。但如今发生了另一些重要的改变：编程入门不再只有进入大学学习一途。如果将入门的方式比作道路，那么，今日，条条大路通罗马。00:09:29：尽管 BASIC 很神奇，但 葛丽丝·哈伯 Grace Hopper 的梦想不会止步于此。如今，初学者有上百种方法可以开始编程。就我而言，我是在纽约市一家名为 Flatiron 的编程学校学习的第一门语言。我为那个项目准备了几个月，我阅读了所有可能的编程资源和教程，以确保它们也许能让我在训练营中获得最大收益。我想了解当今人们是如何接触自己的入门语言的。所以，今天我采访了自己当初的那位老师。00:10:03 - Avi Flombaum：我是 Avi Flombaum。00:10:04 - Saron Yitbarek：Avi 是 Flatiron 学校的创始人之一。对我来说，探究所有有关入门语言的思想，以及我们对入门语言的方法与 BASIC 的旧时代相比有什么变化，是一种享受。00:10:26：当你教别人该如何编程时，先从哪里下手呢？我记得当我学习第一门编程语言时，我觉得这一切可真是太奇怪了。我在大学读的是英语专业，在学校里我很喜欢数学，也喜欢有机化学。我喜欢很多不同类型的科目，各种各样的东西，但是没有什么是和编程有关的。因此，我也没办法将编程比作什么。它自成一套，就像一个自己的小世界。所以，作为老师，你会从哪里开始呢？00:10:49 - Avi Flombaum：我认为生活中你所熟悉的任何事物，曾经都是陌生的。只有经历过，真正花时间去做，才会让你对它感到习惯。这是不断重复练习的问题，只关乎你投入的时间的多少。我认为编程之所以困难，之所以让人感觉如此陌生，是因为它用极其特殊的语法来表达一些东西。没有任何歧义，没有错误的余地。要么成功，要么失败。当我们互相交流的时候，我们一般没有那种要求。一切都必须完全正确。一个逗号丢了，一个括号缺了，就全坏了。00:11:32：我总是说，计算机是愚蠢的，为了使计算机理解我们的意思，我们必须做到完美。00:11:37 - Saron Yitbarek：你说的这一点我喜欢。我同意，这很棒。00:11:43 - Avi Flombaum：是啊。00:11:44 - Saron Yitbarek：对我来说，我喜欢的入门语言是 Ruby。根据经验，我可以告诉你，这是一种非常可爱的入门语言。当你阅读代码时，感觉就像你在阅读英语。它有很多不错的库；这里插播一则知识补充。Ruby 的创造者 松本行弘 Yukihiro Matsumoto 是通过学习 BASIC 进入编程领域的。00:12:06：如今，许多新手可能会改用 Python 或 JavaScript，而我想知道，Avi 你是否认为有最理想的入门语言。00:12:18：我想知道，是否有首选的入门语言？如果某人没有技术背景，没有编程经验，也没有计算机科学学历而进入这个领域，那么他们就是从一开始，甚至说从零开始……随着时间的推移，有没有更好的初始语言冒出来呢？00:12:39 - Avi Flombaum：好吧，首先，我要说的是每个人都没有背景。没有谁是天生的程序员，因此，无论你是有计算机科学学历，还是在社区中心里学习，抑或读书自学，每个人都是从初学者开始的。然后，就初学者的首选语言而言，我认为你最先看到的语言就是最好的。我对初学者的建议始终是，选择一种语言并学习它，不要改变。我认为，初学者最容易犯错的是，我先学习 Python，然后对它感到沮丧，说 Python 很烂，现在我要去用 JavaScript 了。他们学习 JavaScript，然后对 JavaScript 感到沮丧，然后又换了起来。00:13:22：如你所知，我个人认为 Ruby 是一种很棒的初学者语言。我认为它的语法真的很漂亮。它的价值，明确地就是要使你（程序员）感到高兴。我不知道是否有其他任何使程序员开心的语言。我知道人们发明了许多语言来使机器开心，但我认为 Ruby 确实很自然。00:13:44 - Saron Yitbarek：这一点我们可以达成共识。但是同样，这里没有错误的答案。毕竟，入门语言就是这样。它只是开始。我们所有人都有一生的时间用来学习，而且，选择一种语言而不是另一种语言，并不会阻止你成为出色的程序员。00:14:05：我喜欢画画，但我不会为了一支笔而死去活来。我不会因为我使用的笔而大动干戈，我为我所创造的东西而激动。那么从你的经验来看，为什么会这样呢？在大家面前辩护，让大家相信你对一种编程语言的看法是正确的，这样的一种思潮是从何而来的呢？00:14:23 - Avi Flombaum：我也不知道。因为我很喜欢你关于笔与作品的比喻，我首先想到的是……在我的设想中，人们死死地抓住工具，恐怕是因为作品并不吸引人。00:14:41 - Saron Yitbarek：哈哈，那真好笑。00:14:42 - Avi Flombaum：如果你做的东西就是不厉害，不伟大，对这个世界也没有太大的价值，你还想捍卫你的手艺，你唯一能指出的就是，是啊，看我把那把锤子挥得多好。当然，房子虽然倒了，但那把锤子，那把锤子真的很棒，我知道怎么用。作为一个人……我也觉得建造出的东西比你建造它的方式更重要。00:15:09 - Saron Yitbarek：说得好。现在，初学者不止可以选择 BASIC 或者 FORTRAN，我们已经拥有一整套的入门语言清单，但总有一种危险，那就是你忘记了这些语言仍然是达到目的的一种手段。语言是工具，不是你要制作的东西。00:15:27 - Avi Flombaum：我认为技术的价值在于，为人们创造有意义的事物。说到底，如果你确实是一名非常非常好的程序员，但是你做的东西没有人需要，没有人喜欢……它没有为世界增加价值，但是你真的真的非常擅长这门手艺，只是找不到能产生影响的方法，我想你可能会深入研究并讨论所使用的工具。00:15:56 - Saron Yitbarek：好吧，非常感谢 Avi，感谢你分享你的所有经验以及对编程语言的想法。那我们就谈到这里？00:16:01 - Avi Flombaum：是的，这非常好玩，很高兴再次跟你交流，我希望大家都找到自己喜欢的语言，每天都能用它来工作。00:16:10 - Saron Yitbarek：听起来不错。00:16:13：Avi Flombaum 是 Flatiron 学校的联合创始人之一。00:16:20 - Saron Yitbarek：编程学校可以将教育和知识获取的精神提升到一个全新的高度。这是我们在 达特茅斯 Dartmouth 看到的一切的延续；但如今，在一个多样化的开发生态系统中，新的、更加自然的入门方式将会不断涌现，初学者们已经有了更理想的手段来开始他们的编程“游戏”；有时，他们甚至会以玩游戏的方式入门。00:16:45 - CO.LAB 参与者：你试过其他键吗？试试 G 键。00:16:52 - Saron Yitbarek：现在，在这暂停。这不是一群年轻的程序员在默默地背诵 O'Reilly 的课本，也不是在 Flatiron 学校的讲座。这其实是红帽在伦敦 泰特现代美术馆 Tate Modern 里运行的一个小实验室。那些孩子呢？他们在学习写代码。对于新一代来说，编程的乐趣就是他们首先体会到的。00:17:13 - Femi Owolade-Coombes：好的。嗨，我叫 Femi，也叫 Hackerfemo。00:17:17 - Saron Yitbarek：Femi Owolade-Coombes 只有 13 岁，但他已经是新一代程序员中的一名领袖。00:17:26 - Femi Owolade-Coombes：我八岁的时候第一次接触到编程，那时我去 约克 York 参加一项活动。活动本身其实是数学主题的，不过我在那里看到了个很酷的东西——合法地黑入 Minecraft。作为八岁的孩子，那时候的我认为那真的很酷。所以我就这样喜欢上了编程。00:17:47 - Saron Yitbarek：他并不孤单。Minecraft 已经将一代人引入了编程领域，而且它做到了没有过去几代人所经历的痛苦和枯燥的学习。游戏的魔力正在消除障碍。 Minecraft 是基于 Java™ 的，它也为该语言注入了新的活力，催生了一大群新的 Java 粉丝。00:18:11：但不一定是 Java。对于 Femi来 说，Python 是他在 Minecraft 中发现的语言。00:18:16 - Femi Owolade-Coombes：当你使用 树莓派 Raspberry Pi 版的 Minecraft 时，你可以用 Python，因为树莓派上的 Minecraft 是特殊编写的版本。它很酷，只要导入这个库，你就可以黑进去，到处放置爆炸性的 TNT；你可以在自己身后创建方块，也可以创造建筑物。你可以拿它做各种各样的事。00:18:42：当我第一次玩它时，我发现可以添加很多类似 mod 的东西（LCTT 译注：一类加载于电子游戏上的插件，玩家可以通过 mod 改变游戏的行为方式），这很酷。mod 这东西本身就有点像黑进游戏一样，但 mod 的存在让我意识到，我们也可以用正规的方法改变游戏，让它以你希望的方式行事。我认为这真的很酷。00:18:57 - Saron Yitbarek：Femi 打开了一个编程世界，而通往世界的大门是他最喜欢的游戏。然后，他做了一件了不起的事情。他开始向其他孩子分享那扇门。00:19:10 - Femi Owolade-Coombes：嗯，我想与同伴分享我的知识。因为我觉得，你知道吗？他们会非常喜欢的，我也会因此度过愉快的时光。我想与其他所有人共享这些，这样他们就能了解它，甚至可以参与编程。00:19:30 - Saron Yitbarek：Femi 将此事贯彻到底，创办了 南伦敦树莓酱 South London Raspberry Jam （LCTT 译注：这个名称典出“树莓派”；jam 也有即兴演奏的意思，常用于一些赛事。），在那里，他已经看到了全新一代的编程者，他们正挑战人们以往对编程初体验的预判。除了那些 Minecraft 黑客，像 Scratch 或 Fruit 这样的可视化语言也让越来越年轻的用户拥有基础知识可以实现编程。00:19:54 - Femi Owolade-Coombes：我确实喜欢玩游戏这个点子，比起在课堂上学习代码，我最喜欢的是能够控制游戏中发生的事情，而代码是背后的魔法，代码给了你那种非常酷的能力，让游戏做你想要的事情。00:20:15 - Saron Yitbarek：Femi 的妈妈告诉我们，当她发现玩游戏并非一种弊大于利的追求时，她有多么高兴。我喜欢他的故事，因为这故事是从游戏开始的，却没有结束于游戏。他建立了一个属于年轻程序员的、了不起的社区；Femi 自己的代码生涯也在起飞，不再是围绕着 Minecraft 了。他在 HTML、JavaScript 和 CSS 领域工作，建立网站，做网页设计。他甚至在用 Unity 打造自己的游戏。00:20:44 - Femi Owolade-Coombes：每个人都应该有权利学习编程，因为这是未来。00:20:53 - Saron Yitbarek：Minecraft 真的是一所巨型编程大学吗？明日的程序员，是否会通过游戏和玩耍来吸收新的语言呢？只通过环境渗透能否真正地学习语言？00:21:06 - Robyn Bergeron：嗨，我叫 Robyn Bergeron。00:21:08 - Saron Yitbarek：Robyn 是 Red Hat 的 Ansible® 社区架构师 community architect ，她有几个孩子，这些孩子们偶然间接触到了编程。00:21:18 - Robyn Bergeron：那是晚饭时刻。我在做饭，每个人对这件事情都印象深刻。我的女儿来到厨房，她说:“妈妈，我在 Minecraft 中提交了一个错误！”我从事软件工作，我看到过很多很多错误报告，而且我真的很好奇，在那个宇宙中，这意味着什么。是说我在 Twitter 上和别人聊了聊，说它坏了，还是什么？我让她给我看看，于是她打开了电脑，她已经在 Mojang 的系统中创建了一个 JIRA 帐户。00:21:53 - Saron Yitbarek：我们应该注意到，罗宾的女儿在当时只有 11 岁。00:21:57 - Robyn Bergeron：她把表格填得像模像样。我见过很多内容不完整的错误报告，也见过很多口吻过于尖锐的错误报告。但这是一个完美的报告……这份报告里有说“发生了什么事”，“我预期会发生什么事”，以及“如何重现错误”。对于很多人来说，这是他们与项目的第一次互动，无论是商业的、专有的软件项目，比如一个电子游戏，还是一个开源软件项目。我很自豪，我告诉她，之后我们完全可以去参加 Minecraft 大会，因为他们一直很想去。00:22:33 - Saron Yitbarek：Robyn 意识到，当我们其他人从事日常工作时，孩子们却开始了一场革命。以下是在那场 Minecraft 大会上发生的事情。00:22:43 - Robyn Bergeron：我们去参加主题演讲，我说，就算我们在最后一刻去也会没事的，会在第二排找到位置。但我的设想完全错了，我们坐得就跟房间后面那 10 个大屏幕一样靠后。不过这并没有减少孩子们的热情。大会的其中一天，全体开发人员也在会议上出场了。当工程师们出来的时候，所有在场的孩子都站起来尖叫。如果你看过披头士乐队表演的视频，那这时候就像披头士乐队来美国时一样。我不能相信他们就在我们眼前，这是难以置信的一幕！在会议期间，人们都在试图得到他们的签名，这是……我和我的孩子坐在那里，我在想，我开发操作系统，连接互联网，这样你们才能在一起玩游戏吧？我们做错了什么，才会如此默默无闻呢？00:23:36 - Robyn Bergeron：但是孩子们就像，我长大后要成为使用 JavaScript 的人！是的，那个活动带来的热烈氛围令人着迷，但……这是一个电子游戏。00:23:51 - Saron Yitbarek：在 70 年代的某一段时间，每个人的入门语言都是 BASIC；然后可能是 C。近来，人们开始使用 Java 或 Python，但是可视化语言编程和游戏正在催生我们鲜有设想的编程未来。00:24:10 - Robyn Bergeron：尽管对于已经从事多年编程工作的人来说，这似乎微不足道，但我开始游玩的那一刻，我甚至没有意识到，我其实是在学习一种可以让我受益终生的东西。00:24:23 - Saron Yitbarek：Robyn Bergeron 是红帽的 Ansible 社区架构师 community architect 。00:24:32：BASIC 邀请大学生进入编程世界，而 Minecraft 等游戏则邀请小学生进入当今编程世界。但是从某种意义上说，创造的动力并没有改变。那些大学生在学习 BASIC？是的，他们经常用它来编写游戏。最常见的似乎是足球题材。00:24:54：创新精神是驱使我们学习编程语言的第一推动力。这种驱动力让我们使世界变得更好，或变得更加有趣。00:25:08：下次，在第 3 集中，我们会讲述，全新的编程语言究竟从何而来？我们会了解到，巨大挑战是如何推动着开发人员从过去的语言中走出来，并在今天创造出新事物的。00:25:26：《代码英雄》是 Red Hat 的原创播客。如果你想更深入地了解 BASIC 的起源或在本集中听到的其他内容，请转至 redhat.com/commandlineheroes 。00:25:37：我是 Saron Yitbarek。在下期节目到来之前，也请继续编程。什么是 LCTT SIG 和 LCTT LCRH SIGLCTT SIG 是 LCTT 特别兴趣小组 Special Interest Group ，LCTT SIG 是针对特定领域、特定内容的翻译小组，翻译组成员将遵循 LCTT 流程和规范，参与翻译，并获得相应的奖励。LCRH SIG 是 LCTT 联合红帽（Red Hat）发起的 SIG，当前专注任务是《代码英雄》系列播客的脚本汉化，已有数十位贡献者加入。敬请每周三、周五期待经过我们精心翻译、校对和发布的译文。欢迎加入 LCRH SIG 一同参与贡献，并领取红帽（Red Hat）和我们联合颁发的专属贡献者证书。via: https://www.redhat.com/en/command-line-heroes/season-3/learning-the-basics作者:Red Hat 选题:bestony 译者:erlinux 校对:acyanbird, Northurland, wxy本文由 LCRH 原创编译，Linux中国 荣誉推出
为什么 BASIC 是一种备受喜爱的入门语言？下一代该如何学习编程？《Command Line Heroes》 第三季的第二集今天抵达了，它对我的入门编程的怀旧让我回到了过去。（LCTT 译注：《Command Line Heroes》 是红帽公司制作的播客，讲述了开发人员、程序员、黑客、极客和开源反叛者如何彻底改变技术前景的真实史诗。其第一季制作于 2017 年，邀请到了谷歌、NASA 等重量级企业的技术专家担当嘉宾，讲述操作系统战争风云、美国航天局如何开源等等，涉及开源、操作系统、容器、DevOps、云计算等话题。）语言会影响可访问性这一集告诉我，BASIC 是计算机的理解力民主化的一次巨大飞跃。我很难想象，在一个不太遥远的、计算机尚且是稀罕之物的时代，是 BASIC 改变了世界。正如 Saron Yitbarek 提到的那样，“在早些年编程，你几乎得有个博士学位才行。”BASIC 是一个巨大的飞跃，它专注于可用性（适合初学者的命令）和资源共享（单个计算机的分时操作）。它使得编程不在局限于当时的“计算机玩家”（我喜欢这集中的这句话），并帮助了新一代人参与了进来。进入编程领域的壁垒得以下降。入门编程语言这一集的核心话题是围绕学习入门语言展开的。关于学习什么编程语言以及如何学习，有很多建议。关于这个问题在这里已经写了很多。我喜欢听到 Saron 以 Ruby 作为她的介绍的故事，以及它以一种几乎意想不到的方式变得有趣。我有一些类似的经历，因为我在一些项目中用到了 Ruby。它的灵活性让我感到开心。当我（对编程）感到紧张时，正是这种快乐让我重新回到它的身边，并且它有一些能够使语言如此充满情感的强大功能。我第一次体验编程是用 HTML 和 CSS，但我第一个重型编程语言是 Java。我永远不会忘记在课堂的第一天被告知要记住 public static void main，但没有告知我关于它意味着什么的任何信息。我们花了很多时间在面向对象编程的上下文环境中探讨它是什么，但它从未像我在 Ruby 中使用 .each 迭代列表，或者像在 Python 中用 import numpy 做一些数学魔术那样感到兴奋。然后我听说孩子们正在学习如何使用 Python 编写 Minecraft 或使用像 Scratch 这样的可视化编程语言，我因此而悟，BASIC 的遗产正在以新的方式存在。我从这一集中获取到的内容：请记住，没有人出生就是程序员。每个人都没有这样的背景。你并不孤单。学习一门语言。任何一种都行。如果你有选择的可能，那么请选择能带给你最大乐趣的那个。不要忘记所有语言都可以构建一些东西。请为人类创造有意义的事物。《Command Line Heroes》整个第三季将涉及编程语言。请在此处订阅来学习你想要了解的有关编程语言的起源，我很乐意在下面的评论中听到你的想法。via: https://opensource.com/19/7/command-line-heroes-ruby-basic作者：Matthew Broberg 选题：lujun9972 译者：wxy 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
1983 年时我还没出生，这让我略有一些遗憾。但我特别遗憾的是，是我没有经历过 8 位计算机时代的到来，因为我认为那些初次接触到还相对简单和受限的计算机的人们，拥有超过如今的我们的巨大优势。今天，（几乎）每个人知道如何使用计算机，但是即使是在计算机行业当中，也很少有人能明白任何一台计算机内部的所有内容。现在软件分为如此多的层次，做的是如此不同的事情，没有哪个人能知道哪些是必不可少的。而在 1983 年，家用电脑足够傻大粗，努力一些的人就能了解到一台特定的计算机是如何工作的。那样的一个人可能不会像今天的我觉得操作系统那么神秘，因为如今的操作系统已经在硬件上叠加了太多的抽象层。我希望这些抽象层逐一引入以易于理解；而今天，新的程序员们不得不自上而下、按时间回溯地尝试理解它们。很多著名的程序员，尤其在计算机游戏行业，孩童时期就在苹果 II 和 Commodore 64 这样的 8 位计算机上开始编写游戏，John Romero、Richard Garriott 和 Chris Roberts 都是这样的例子。这好理解。在 8 位计算机时代，很多游戏只能在计算机杂志和书籍中以印刷的 BASIC 程序清单方式得到。如果你想玩其中一款游戏，就必须手工键入整个程序。不可避免的，你可能遇到一些问题，所以你就得调试你的程序。等到你让它可以工作起来了，你就已经对程序是如何运行的有了足够的了解，你就可以开始自己修改它了。如果你是一个狂热的游戏玩家，你几乎必然会成为一名优秀的程序员。在我的童年时期我也玩电脑游戏。但是我玩的游戏是在 CD-ROM 上的。我有时发现我自己必须得搜索一下如何修复崩溃的安装程序，这可能涉及编辑 Windows 注册表之类的东西。可能是这种小故障的排除让我感觉很棒，所以我才考虑在大学里学习计算机科学。但是在大学中从不教我一些计算机如何工作的或如何控制它们的关键性的东西。当然，现在我可以告诉计算机去干什么。尽管如此，我还是不禁感到，我缺少一些根本的见解 —— 只有那些伴随着更简单的计算机编程而成长的人才有的深刻见解。我不禁在想，如果在上世纪 80 年代初就接触到计算机会是什么样子？它们与今天使用计算机的体验相比有何不同？这篇文章将与通常的 Two-Bit History 的文章有一点不同，因为我将为这些问题尝试设想一个答案。1983就在上周，你在电视上看到了 Commodore 64 的广告 ，现在 M*A*S*H 播完了（LCTT 译注： 这是一部上世纪 70 年代初的电视剧），星期一晚上你可以找点新的事情做了。这个 Commodore 64 甚至看起来比鲁迪（LCTT 译注：应该是下文中拥有 Apple II 的人）的家人放在他们家地下室的 Apple II 更好。而且，广告中吹嘘说新的计算机会让你的朋友们“挤破”你家的大门。你知道学校里的几个家伙宁愿在你家闲逛，也不愿去鲁迪家里，只要他们能玩 Zork 就行。所以，你得说服你的父母去买一台。你的母亲说，这事可以考虑，只要你不去游戏厅玩街机就给你买一台家庭电脑。虽然不太情愿，但是你还是同意了。而你的父亲则想，他可以用 MultiPlan （LCTT 译注：电子表格程序）跟踪家庭的资金状况，MultiPlan 是他曾听说过的一个电子表格程序，这就是为什么这台计算机被放在客厅的原因。然而，一年后，你仍然是唯一使用它的人。最终，他们同意你把它搬到了你的卧室的桌子上，正好位于你的警察海报下方。（你的姐姐对这个决定表示抗议，但是，在 1983 年电脑这种东西并不适合女孩。）你的父亲在下班路上从 ComputerLand 那里把它捎了回来。你俩把盒子放置在电视机的旁边，并打开了它。外包装上说“欢迎来到友好的计算机世界”。而二十分钟以后你就不再信这句话了 —— 你俩仍然在尝试把 Commodore 连接到电视机上，并在想电视机的天线电缆到底是 75 欧姆还是 300 欧姆的同轴电缆。但是，最终你把电视机调到了频道 3，看到了一个颗粒状的、紫色的图像。计算机显示了一个 READY。你的爸爸把计算机推向了你，这意思是你是第一个尝试它的人。你小心翼翼地敲击每个字母，键入了 HELLO。然而计算机的回应是令人困惑的。你尝试输入了一些稍有不同的单词，然而回应总是一样的。你父亲说，你最好仔细读一下手册的其它部分。这绝非易事，随 Commodore 64 一起提供的手册 是一本小一些的书。但是这不会困住你，因为手册的介绍预示着奇迹。它声称，Commodore 64 有“微型计算机行业中最先进的图画制作器”，能允许“你设计拥有四种不同颜色的图画，就像你在街机视频游戏里看到的一样”。Commodore 64 也有“内置的音乐和声音效果，可以与很多著名的音乐合成器相媲美”。所有的这些工具都置身于你的手边，手册会引导你完成所有这些：与所有提供的硬件一样重要的是，这本用户指南将提高你对计算机的理解。它无法在这里告诉你有关计算机的所有信息，但是它会向你推荐各种出版物，以获取有关所提出主题的更多详细信息。Commodore 希望你真正喜欢你的新 COMMODORE 64。要想真正得到乐趣，请记住：编程不是一种一天就能学会的东西。通读这个用户指南你要有耐心。那一夜，你在床上通读了整整前三个章节：“安装”、“入门”和“BASIC 编程入门”，在你最终睡着时，手册还打开着放在了胸前。Commodore BASIC现在是星期六早上，你渴望尝试你所学到的新东西。手册里教给你的第一件事是如何更改在显示器上的颜色。你按照操作说明，按下 CTRL-9 来进入反色输入模式，然后按住空格键来创建了一个长长的空行。你可以使用 CTRL-1 到 CTRL-8 在不同的颜色之间交换，这让你的电视机屏幕焕发出了新的力量。尽管这很酷，但你觉得这不能算是编程。要对计算机编程，你昨晚已经学会了如何做，你必须以一种称为 BASIC 的语言与计算机交谈。对你来说，BASIC 看起来就像星球大战中的东西一样科幻，但是，到 1983 年时，其实 BASIC 已经快有二十岁了。它是由两位达特茅斯教授 John Kemeny 和 Tom Kurtz 发明的，他们想让社会科学和人文科学中的本科生也可以使用计算机。它被广泛使用在微型计算机上，在大学的数学课上很受欢迎。在比尔盖茨和保罗艾伦为 Altair 编写了微软 BASIC 解释器后，它就成为了微型计算机上的标准。但是这本手册对此没有任何解释，那么多年你都没学过它。手册中建议你尝试的第一个 BASIC 命令是 PRINT 命令。你输入了 PRINT "COMMODORE 64"，很慢，因为你需要花费一点时间才能在按键 2 上面找到引号符号。你单击 RETURN，这一次，计算机没有抱怨，完全是按照你告诉它做的，在下一行中显示了 “COMMODORE 64” 。现在你尝试对各种不同的东西使用 PRINT 命令：两个数字加在一起，两个数字乘在一起，甚至几个十进制数字。你不再输入 PRINT ，而是使用 ? 代替，因为手册中告诉你 ? 是 PRINT 的一个缩写，通常专业程序员都这么使用。你感觉自己已经像是一个专家了，不过你想起你还没有进行到第三章“BASIC 编程入门”。你很快就开始了。该章节提示你编写你的第一个真正的 BASIC 程序。你输入 NEW 并单击 RETURN，它给了你一个干净的 黑板 slate 。然后你在其中输入你的程序：10 ?"COMMODORE 64" 20 GOTO 10手册里解释说 10 和 20 是行号。它们为计算机排序了语句。它们也允许程序员在某些命令中引用程序的其它行，正像你在这里使用的 GOTO 命令一样，它将程序指回到行 10。“这是一个很好的编程习惯”，手册认为，“以 10 的增量来编号行，可以防止你以后需要插入一些语句”。你输入 RUN，并凝视充满了 “COMMODORE 64” 的屏幕，它一遍又一遍的重复。你不确定这不会引爆你的计算机，过了一秒钟你才想起来应该单击 RUN/STOP 按键来打断循环。手册接下来的一些部分向你介绍了变量，它告诉你变量像“在计算机中许多的盒子，它们每个可以容纳一个数字或一个文本字符串”。以一个 % 符号结尾的变量是一个整数，与此同时，以一个 $ 符号结尾的变量是一个字符串。其余的所有变量是一些称为“浮点”变量的东西。手册警告你要小心变量名称，因为计算机仅会识别变量名称的前两个字母，尽管它不限制你想创建的名称有多长。（这并没有特别让你困扰，但是要是在 30 年后来看，这可能会让人们感到太疯狂了）你接着学习 IF... THEN... 和 FOR... NEXT... 结构体。有了这些新的工具，你感觉有能力来解决接下来手册丢给你的重大挑战。“如果你是个有野心的人”，没错，“输入下面的程序，并查看会发生什么。”该程序比你目前为止看到的程序更长、更复杂，但是，你很想知道它做了什么：10 REM BOUNCING BALL 20 PRINT "{CLR/HOME}" 25 FOR X = 1 TO 10 : PRINT "{CRSR/DOWN}" : NEXT 30 FOR BL = 1 TO 40 40 PRINT " ●{CRSR LEFT}";:REM (● is a Shift-Q) 50 FOR TM = 1 TO 5 60 NEXT TM 70 NEXT BL 75 REM MOVE BALL RIGHT TO LEFT 80 FOR BL = 40 TO 1 STEP -1 90 PRINT " {CRSR LEFT}{CRSR LEFT}●{CRSR LEFT}"; 100 FOR TM = 1 TO 5 110 NEXT TM 120 NEXT BL 130 GOTO 20上面的程序充分利用了 Commodore 64 最酷的功能之一。当把不可打印的命令字符作为字符串的一部分传递到 PRINT 命令时，它们会执行其操作，而不是被打印到屏幕上。这允许你重新摆放你程序中打印的字符串。（LCTT 译注：上述程序中如 {CRSR LEFT} 之类的控制字符执行类似 “在行中向左移动一个位置” 的操作，因此上述程序中利用这些字符操作了一个圆点字符四处移动，如下图。）输入上面的程序你花费了很长时间。你犯一些错误，并不得不重新输入一些行。但是，你最终能够按下 RUN，并看到了一幅杰作：你觉得这恐怕是你见过的最酷的事了。不过你几乎转头就忘记了它，因为马上你就学到了 BASIC 的内置函数，像 RND（它返回一个随机数字）和 CHR$（它返回与一个给定数字代码匹配的字符），这个手册向你展示一个程序，这个程序有名到什么程度呢？直到许多年后，它仍然被当成了一个短文选集的标题：10 PRINT "{CLR/HOME}" 20 PRINT CHR$(205.5 + RND(1)); 40 GOTO 20当运行时，上面的程序会生成一个随机的迷宫：这绝对是你曾经见过最酷的事。PEEK 和 POKE现在你已经看过了 Commodore 64 手册的前四章节，包含那篇 “高级的 BASIC” 的章节，所以你感到十分自豪。在这个星期六早上，你学习到了很多东西。但是这个下午（在赶快吃了点午饭后），你将继续学习一些使这个放在你的客厅中的奇妙机器变得不再神秘的东西。手册中的下一个章节标题是“高级颜色和图像命令”。它从回顾你今天早上首先键入的彩色条开始，并向你展示了如何在一个程序中做同样的事。然后它教给了你如何更改屏幕的背景颜色。为此，你需要使用 BASIC 的 PEEK 和 POKE 命令。这些命令分别允许你检查和写入一个存储器地址。Commodore 64 有一个主背景颜色和一个边框背景颜色。每个都通过一个特定的内存地址控制。你可以把你喜欢的任何颜色值写入到这些地址，以使用这些背景颜色和边框颜色。手册中解释：正像变量可以被认为机器中你放置信息的“盒子”一样，你也可以认为在计算机中代表特定内存位置的是一些特殊定义的“盒子”。Commodore 64 会查看这些内存位置来了解屏幕的背景和边框应该是什么样的颜色，什么样的字符应该被显示在屏幕上，以及显示在哪里，等等其它任务。你编写了一个程序来遍历所有可用的背景和边界的颜色的组合：10 FOR BA = 0 TO 15 20 FOR BO = 0 TO 15 30 POKE 53280, BA 40 POKE 53281, BO 50 FOR X = 1 TO 500 : NEXT X 60 NEXT BO : NEXT BA虽然 POKE 命令以及它的大操作数一开始时看起来很吓人，现在你看到那个数字的实际值其实不是很要紧。显然，你必须得到正确的数字，但是所有的数字代表的是一个“盒子”，Commodore 只是正好存储在地址 53280 处而已。这个盒子有一个特殊的用途：Commodore 使用它来确定屏幕背景应该是什么颜色。你认为这简直棒极了。只需要写入到内存中一个专用的盒子，你可以控制一台计算机的基础属性。你不确定 Commodore 64 的电路系统如何读取你写入在内存中的值并更改屏幕的颜色的，但是，你不知道这些也没事。至少你知道结果是怎么样的。特殊容器在那个周六，你没有读完整本手册，因为你现在有点精疲力尽了。但是你最终会全部读完它。在这个过程中，你学到更多的 Commodore 64 专用的盒子。有一些盒子你可以写入来控制在屏幕上显示什么——这也是一个盒子，事实上，是控制每一个位置出现的字符。在第六章节 “精灵图形” 中，你学到可以让你定义可以移动和甚至缩放图像的特殊盒子。在第七章节 “创造声音” 中，你学到能写入以便使你的 Commodore 64 歌唱 “Michael Row the Boat Ashore” 的盒子。Commodore 64，事实证明，它和你可能以后学习到的一个称为 API 的关系甚少。控制 Commodore 64 大多涉及写入到电路系统赋予特殊意义的内存地址。多年来，你花费在这些特殊盒子的时光一直伴随着你。甚至几十年后，当你在一个拥有大量的图形或声音 API 的机器上编程时，你知道，隐藏于其背后的，这些 API 最终是写入到这些盒子之类的东西里面的。你有时会好奇那些只使用过 API 的年轻程序员，他们肯定是觉得 API 为他们做到的这一切。可能他们认为这些 API 调用了一些其它隐藏的 API。但是，那些隐藏的 API 调用了什么？你不由得同情这些年轻的程序员们，因为他们一定会非常迷惑。如果你喜欢这篇文章，也喜欢它每两周发布的一篇新文章的话，那么请在 Twitter 上关注 @TwoBitHistory 或订阅 RSS 源来确保你知道新的文章发布出来。via：https://twobithistory.org/2018/09/02/learning-basic.html作者：Two-Bit History 选题：lujun9972 译者：robsean 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出