[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.00,0:00:05.93,Default,,0000,0000,0000,,大家好,我是 Nick Parlante。这门课讨论的是计算机的基本性质 Dialogue: 0,0:00:05.93,0:00:11.26,Default,,0000,0000,0000,,计算机如何运作、可以做什么和不可以做什么 Dialogue: 0,0:00:11.26,0:00:17.10,Default,,0000,0000,0000,,你完全不需要有计算机的背景知识。这门课谁都能上 Dialogue: 0,0:00:17.10,0:00:21.95,Default,,0000,0000,0000,,开始讲课之前,我想花点时间感谢 Google Dialogue: 0,0:00:21.95,0:00:26.28,Default,,0000,0000,0000,,支持我这个课题的早期研究,使我能够制作这门课 Dialogue: 0,0:00:26.28,0:00:31.02,Default,,0000,0000,0000,,简单提一下,这门课不但有视频,每个视频部分 Dialogue: 0,0:00:31.02,0:00:35.53,Default,,0000,0000,0000,,还有一份书面文档,就是我正在拖动的这份文档 Dialogue: 0,0:00:35.70,0:00:40.04,Default,,0000,0000,0000,,这个文档有解释、图表和代码实例 Dialogue: 0,0:00:40.04,0:00:44.72,Default,,0000,0000,0000,,你随时可以交替使用视频和文档 Dialogue: 0,0:00:44.72,0:00:49.90,Default,,0000,0000,0000,,假如你想要再次阅读解释、试一下实例或其他内容 Dialogue: 0,0:00:49.90,0:00:55.76,Default,,0000,0000,0000,,看我做和你自己尝试有很大区别 Dialogue: 0,0:00:55.76,0:00:59.65,Default,,0000,0000,0000,,所以我的建议是,每个部分结束时,我们经常会有练习 Dialogue: 0,0:00:59.65,0:01:02.95,Default,,0000,0000,0000,,那时,你做练习之前,可以决定 Dialogue: 0,0:01:02.95,0:01:06.56,Default,,0000,0000,0000,,你是否已准备好马上做练习呢 Dialogue: 0,0:01:06.56,0:01:10.08,Default,,0000,0000,0000,,还是想再看看文档,做一些试验来巩固知识呢 Dialogue: 0,0:01:10.08,0:01:13.68,Default,,0000,0000,0000,,你至少应该知道每个部分我们都有文档提供 Dialogue: 0,0:01:13.68,0:01:20.66,Default,,0000,0000,0000,,因此我想说的是计算机的基本等式是 Dialogue: 0,0:01:20.66,0:01:27.16,Default,,0000,0000,0000,,计算机 = 强大 + 愚蠢。强大指的是 Dialogue: 0,0:01:27.16,0:01:32.20,Default,,0000,0000,0000,,计算机可以进行几十亿次运算。它们的运算速度惊人 Dialogue: 0,0:01:32.20,0:01:37.71,Default,,0000,0000,0000,,但这些运算是愚蠢的,因为计算机可以进行的运算 Dialogue: 0,0:01:37.71,0:01:43.10,Default,,0000,0000,0000,,非常简单,是完全机械的 Dialogue: 0,0:01:43.10,0:01:48.44,Default,,0000,0000,0000,,这些运算没有用人类的思想去思考它们在做什么 Dialogue: 0,0:01:48.44,0:01:52.42,Default,,0000,0000,0000,,所以在一定程度上来说,这个奇怪的组合是强大加上机械的愚蠢 Dialogue: 0,0:01:52.42,0:01:57.19,Default,,0000,0000,0000,,我们正学习这些短小的代码实例时,就会看到这样的模式 Dialogue: 0,0:01:57.36,0:02:01.96,Default,,0000,0000,0000,,计算机世界里也是这种模式 Dialogue: 0,0:02:01.96,0:02:06.61,Default,,0000,0000,0000,,好啦,我有点过激,我在调侃计算机。哈,计算机真笨 Dialogue: 0,0:02:06.79,0:02:11.50,Default,,0000,0000,0000,,但另一方面,我们看到计算机是非常有用的 Dialogue: 0,0:02:11.50,0:02:16.21,Default,,0000,0000,0000,,这就是这门课的内容。一方面来说, Dialogue: 0,0:02:16.21,0:02:21.22,Default,,0000,0000,0000,,翱翔这个有点机械的缤纷计算机世界 Dialogue: 0,0:02:21.22,0:02:26.06,Default,,0000,0000,0000,,然后将它和你知道的事情连接在一起,如电子邮件和 MP3 音频 Dialogue: 0,0:02:26.06,0:02:30.72,Default,,0000,0000,0000,,这些事物在现实世界中是非常有用的。我尝试将两个世界连接在一起 Dialogue: 0,0:02:30.72,0:02:35.42,Default,,0000,0000,0000,,向你展示计算机如何运作、计算机如何融入现实世界 Dialogue: 0,0:02:35.42,0:02:39.95,Default,,0000,0000,0000,,我的目标是学完这门课,你理解计算机如何运作、如何融入现实世界 Dialogue: 0,0:02:39.95,0:02:44.37,Default,,0000,0000,0000,,你也不会被计算机难倒。你不会认为它是 Dialogue: 0,0:02:44.37,0:02:49.84,Default,,0000,0000,0000,,神奇的、不可思议的盒子。我也有一个神秘安排 Dialogue: 0,0:02:49.84,0:02:54.90,Default,,0000,0000,0000,,世界上懂计算机科学的人太少了。我们要解决的问题太多 Dialogue: 0,0:02:54.90,0:02:59.89,Default,,0000,0000,0000,,但就是没有足够的人通过编程来解决这这些问题 Dialogue: 0,0:02:59.89,0:03:05.08,Default,,0000,0000,0000,,我的神秘安排是通过带你进入计算机世界 Dialogue: 0,0:03:05.08,0:03:10.13,Default,,0000,0000,0000,,了解计算机如何运作,你可能会发现你将来想从事计算机科学 Dialogue: 0,0:03:10.13,0:03:14.86,Default,,0000,0000,0000,,我要讲的第一个近似法是 Dialogue: 0,0:03:14.86,0:03:19.48,Default,,0000,0000,0000,,计算机如何运作。计算机内部是由代码驱动的 Dialogue: 0,0:03:19.48,0:03:24.00,Default,,0000,0000,0000,,以后会更详细讨论这点。现在只是第一讲。 Dialogue: 0,0:03:24.00,0:03:28.50,Default,,0000,0000,0000,,我画了一幅计算机的图。计算机内部的代码是 Dialogue: 0,0:03:28.50,0:03:33.82,Default,,0000,0000,0000,,由这些简单指示组成的。 一条指示可能是两个数的相加 Dialogue: 0,0:03:33.82,0:03:39.27,Default,,0000,0000,0000,,就是1加1或者检查2是否小于10 Dialogue: 0,0:03:39.27,0:03:44.08,Default,,0000,0000,0000,,因此在第一讲里,计算机做的事情就是完成这一系列指示 Dialogue: 0,0:03:44.08,0:03:49.01,Default,,0000,0000,0000,,每个指示都很简单,计算机只是 Dialogue: 0,0:03:49.01,0:03:53.64,Default,,0000,0000,0000,,逐个完成一系列指示,只不过它的速度飞快 Dialogue: 0,0:03:53.64,0:03:58.98,Default,,0000,0000,0000,,但每条指示都有这种非常机械的固定感觉。因此我要说的是 Dialogue: 0,0:03:58.98,0:04:04.19,Default,,0000,0000,0000,,人们会问一个很自然的问题,就是 Dialogue: 0,0:04:04.19,0:04:09.34,Default,,0000,0000,0000,,既然计算机如此机械地执行指示 Dialogue: 0,0:04:09.34,0:04:14.23,Default,,0000,0000,0000,,它如何完成现实世界中这么多有用的功能呢?对于这个情况,我画了一个图表 Dialogue: 0,0:04:14.23,0:04:18.99,Default,,0000,0000,0000,,在右边,我要想出一些有用的功能 Dialogue: 0,0:04:18.99,0:04:23.95,Default,,0000,0000,0000,,如消除红眼或即时短信。我要讲的是 Dialogue: 0,0:04:23.95,0:04:28.94,Default,,0000,0000,0000,,你的电话、数码相机都是计算机 Dialogue: 0,0:04:28.94,0:04:33.45,Default,,0000,0000,0000,,那么在右边有一个有用的功能,消除红眼 Dialogue: 0,0:04:33.45,0:04:37.84,Default,,0000,0000,0000,,在左边,有一台计算机要执行这些简单的机械指示 Dialogue: 0,0:04:37.84,0:04:42.47,Default,,0000,0000,0000,,但什么将两个视图连接起来呢 Dialogue: 0,0:04:42.47,0:04:46.54,Default,,0000,0000,0000,,答案就是计算机编程 Dialogue: 0,0:04:46.54,0:04:51.01,Default,,0000,0000,0000,,有一个人,就是计算机程序员,首先想到一个主意。噢,我们应该要 Dialogue: 0,0:04:51.01,0:04:55.71,Default,,0000,0000,0000,,消除红眼,这会很有用。那他们就用他们的创造力和 Dialogue: 0,0:04:55.71,0:05:00.12,Default,,0000,0000,0000,,想象力来思考计算机可以做些什么有用的事情 Dialogue: 0,0:05:00.12,0:05:04.59,Default,,0000,0000,0000,,然后计算机程序员做的就是组织和分解这个问题 Dialogue: 0,0:05:04.59,0:05:09.23,Default,,0000,0000,0000,,让计算机可以执行 Dialogue: 0,0:05:09.23,0:05:13.76,Default,,0000,0000,0000,,程序员组织事物,这样计算机就可以做这件 Dialogue: 0,0:05:13.76,0:05:19.29,Default,,0000,0000,0000,,有用的事情。这就是计算机编程 Dialogue: 0,0:05:19.29,0:05:24.26,Default,,0000,0000,0000,,其实,你在数码相机、手机或计算机上做的有用的事情 Dialogue: 0,0:05:24.26,0:05:29.70,Default,,0000,0000,0000,,都是有人在后端使其发生的 Dialogue: 0,0:05:29.70,0:05:34.87,Default,,0000,0000,0000,,我有点喜欢这个组合。程序员以某种方式 Dialogue: 0,0:05:34.87,0:05:40.58,Default,,0000,0000,0000,,付出他们对现实世界的创造力、洞察力以及对什么事物可能是有用的想法 Dialogue: 0,0:05:40.58,0:05:45.57,Default,,0000,0000,0000,,这是他们要解决的第一半问题 Dialogue: 0,0:05:45.57,0:05:50.22,Default,,0000,0000,0000,,计算机付出的是它的特长。我认为计算机的特长是 Dialogue: 0,0:05:50.22,0:05:54.79,Default,,0000,0000,0000,,最终会变得很便宜。计算机也可以很快地执行这些指示 Dialogue: 0,0:05:54.79,0:05:58.73,Default,,0000,0000,0000,,我们最终也可以得到这个美好的组合 Dialogue: 0,0:05:58.73,0:06:03.01,Default,,0000,0000,0000,,因此世界上有这么多计算机在做有用的事情 Dialogue: 0,0:06:03.01,0:06:07.67,Default,,0000,0000,0000,,这表明人和计算机之间有良好的伙伴关系 Dialogue: 0,0:06:10.02,0:06:12.21,Default,,0000,0000,0000,,这个表是这节课的总结 Dialogue: 0,0:06:12.21,0:06:16.76,Default,,0000,0000,0000,,我们会看看左边 Dialogue: 0,0:06:16.76,0:06:21.27,Default,,0000,0000,0000,,看计算机世界是怎样的。我们会讨论计算机世界 Dialogue: 0,0:06:21.27,0:06:25.85,Default,,0000,0000,0000,,和你使用的实际功能之间的联系,了解计算机 Dialogue: 0,0:06:25.85,0:06:32.51,Default,,0000,0000,0000,,如何融入现实世界,完成任务。这节课的第二部分里 Dialogue: 0,0:06:32.51,0:06:37.41,Default,,0000,0000,0000,,我会开始做一些代码实例。我应该要提到 Dialogue: 0,0:06:37.41,0:06:42.45,Default,,0000,0000,0000,,你要耐心点。我要开始写代码 Dialogue: 0,0:06:42.45,0:06:47.48,Default,,0000,0000,0000,,我们的第一批代码实例非常简单,它们不会做很花哨的事情 Dialogue: 0,0:06:47.48,0:06:51.71,Default,,0000,0000,0000,,我觉得它们有点像乐高积木。我们学每一点代码 Dialogue: 0,0:06:51.71,0:06:56.12,Default,,0000,0000,0000,,就是多一块积木,我们最终要搭起这些积木 Dialogue: 0,0:06:56.12,0:07:00.27,Default,,0000,0000,0000,,做一些很棒的事情。但开始这两个部分 Dialogue: 0,0:07:00.43,0:07:04.85,Default,,0000,0000,0000,,我们要从某个地方开始,这些实例非常简单 Dialogue: 0,0:07:04.85,0:07:09.16,Default,,0000,0000,0000,,所以我让你耐心点,我答应你们,我们会用这个材料做一些很棒的事情 Dialogue: 0,0:07:09.16,0:07:13.31,Default,,0000,0000,0000,,实际上,我提前告诉你 Dialogue: 0,0:07:13.31,0:07:18.29,Default,,0000,0000,0000,,在下面两个小时的讲课里会做什么。我们会开始讲视觉特殊效果 Dialogue: 0,0:07:18.29,0:07:23.43,Default,,0000,0000,0000,,我们会试一下有名的猴子、月亮、香蕉的问题,如这里所示 Dialogue: 0,0:07:23.43,0:07:28.44,Default,,0000,0000,0000,,我提前告诉你我们要做的事情。今天我们只是写一些 Dialogue: 0,0:07:28.44,0:07:32.78,Default,,0000,0000,0000,,简单的代码。做这些代码练习,我们要用一门称作 JavaScript 的计算机语言 Dialogue: 0,0:07:32.78,0:07:36.73,Default,,0000,0000,0000,,JavaScript 是一门很受欢迎的语言 Dialogue: 0,0:07:36.73,0:07:40.88,Default,,0000,0000,0000,,它在新的网页浏览器里运行,所以很受欢迎 Dialogue: 0,0:07:40.88,0:07:44.60,Default,,0000,0000,0000,,它也很适合这门课,因为我们是用网页浏览器 Dialogue: 0,0:07:44.60,0:07:48.54,Default,,0000,0000,0000,,这样就可以很容易运行代码,我们会用 JavaScript Dialogue: 0,0:07:48.54,0:07:52.82,Default,,0000,0000,0000,,和其他我为这门课添加的扩展代码 Dialogue: 0,0:07:52.82,0:07:57.23,Default,,0000,0000,0000,,因此跟专业的 JavaScript 不太一样。我们会学习很简短的代码短语 Dialogue: 0,0:07:57.23,0:08:01.64,Default,,0000,0000,0000,,足够让我们来了解概况,理解我要讨论的重点 Dialogue: 0,0:08:01.64,0:08:05.94,Default,,0000,0000,0000,,以及探索一下计算机。 Dialogue: 0,0:08:05.94,0:08:10.15,Default,,0000,0000,0000,,但我们不用学习编写完整、专业的程序所需的大量知识 Dialogue: 0,0:08:10.15,0:08:14.50,Default,,0000,0000,0000,,好吧,这个是我的第一个代码实例。 Dialogue: 0,0:08:14.50,0:08:18.55,Default,,0000,0000,0000,,我们采用的方式就是这个长方形的小区域。里面的文本 Dialogue: 0,0:08:18.55,0:08:22.96,Default,,0000,0000,0000,,就是代码。下面有个运行按钮。 Dialogue: 0,0:08:22.96,0:08:27.60,Default,,0000,0000,0000,,我点击运行按钮时,计算机从最顶端开始,运行这几行代码。 Dialogue: 0,0:08:27.60,0:08:31.83,Default,,0000,0000,0000,,它会执行每一行代码。它会进行每一行代码的内容 Dialogue: 0,0:08:31.83,0:08:36.80,Default,,0000,0000,0000,,在这里我们看到的是 print (打印)功能 Dialogue: 0,0:08:36.80,0:08:41.15,Default,,0000,0000,0000,,这只有 print 这个词,还有打印功能的运作方式 Dialogue: 0,0:08:41.15,0:08:45.57,Default,,0000,0000,0000,,有 print 这个词,有左括号 Dialogue: 0,0:08:45.57,0:08:49.65,Default,,0000,0000,0000,,这里有一些内容。这里只有数字6 Dialogue: 0,0:08:49.65,0:08:53.99,Default,,0000,0000,0000,,最后,这行以右括号和分号结束 Dialogue: 0,0:08:53.99,0:08:58.60,Default,,0000,0000,0000,,打印功能就是将括号中间的内容打印出来 Dialogue: 0,0:08:58.60,0:09:04.13,Default,,0000,0000,0000,,如果你看这里右边,这就是我点运行按钮时的输出 Dialogue: 0,0:09:04.34,0:09:09.86,Default,,0000,0000,0000,,假如我要改这里,譬如说打印42,然后运行 Dialogue: 0,0:09:09.86,0:09:15.34,Default,,0000,0000,0000,,我们就会看到42,来自第一个打印行 Dialogue: 0,0:09:15.34,0:09:21.15,Default,,0000,0000,0000,,要是我打印1,2,就可以看到这里有1和2,就是这样运行 Dialogue: 0,0:09:21.15,0:09:26.43,Default,,0000,0000,0000,,我讲过,我们的头两个例子不是很花哨 Dialogue: 0,0:09:26.43,0:09:32.04,Default,,0000,0000,0000,,这当然是真的。那么我可以试一下在这里加一点东西 Dialogue: 0,0:09:32.04,0:09:37.46,Default,,0000,0000,0000,,我可以说逗号 47。运行时,我们看到 Dialogue: 0,0:09:37.46,0:09:43.27,Default,,0000,0000,0000,,有1、2和47。我将高亮的这些行复制 Dialogue: 0,0:09:43.27,0:09:49.24,Default,,0000,0000,0000,,然后粘贴几次 Dialogue: 0,0:09:49.24,0:09:54.47,Default,,0000,0000,0000,,就有几行代码。如果我运行 Dialogue: 0,0:09:54.47,0:09:59.69,Default,,0000,0000,0000,,就有几次重复的输出 Dialogue: 0,0:09:59.69,0:10:06.59,Default,,0000,0000,0000,,关于这里要提出一点,就是这个代码的句法不是自由形式 Dialogue: 0,0:10:06.59,0:10:11.30,Default,,0000,0000,0000,,相反,是很有结构的。必须是有结构的 Dialogue: 0,0:10:11.30,0:10:16.30,Default,,0000,0000,0000,,计算机才会明白。这实际上反映了计算机的内在性质 Dialogue: 0,0:10:16.30,0:10:20.46,Default,,0000,0000,0000,,计算机的性质是机械的、固定的 Dialogue: 0,0:10:20.46,0:10:25.23,Default,,0000,0000,0000,,它可以理解的语言也必须是机械的、固定的 Dialogue: 0,0:10:25.23,0:10:30.30,Default,,0000,0000,0000,,开始的时候会有点奇怪,你不能用自由形式 Dialogue: 0,0:10:30.30,0:10:35.30,Default,,0000,0000,0000,,来写英文,让计算机来跟着做 Dialogue: 0,0:10:35.30,0:10:39.12,Default,,0000,0000,0000,,这是你的第一课,计算机的性质 Dialogue: 0,0:10:39.12,0:10:42.51,Default,,0000,0000,0000,,或者你可以把它看做是入乡随俗的性质 Dialogue: 0,0:10:42.51,0:10:46.07,Default,,0000,0000,0000,,看,我让你去参加计算机的世界,我们要用计算机的语言来学习 Dialogue: 0,0:10:46.07,0:10:49.41,Default,,0000,0000,0000,,开始的时候是有点奇怪 Dialogue: 0,0:10:49.41,0:10:54.41,Default,,0000,0000,0000,,但事实上这并不难。句法是有结构的,但也很简单 Dialogue: 0,0:10:54.41,0:10:59.60,Default,,0000,0000,0000,,因此,我要鼓励你,别因为这种语言的有结构的机械性质而拖延学习 Dialogue: 0,0:10:59.79,0:11:04.79,Default,,0000,0000,0000,,这种语言会帮我们做很棒的事情 Dialogue: 0,0:11:04.79,0:11:10.19,Default,,0000,0000,0000,,好的,那是我的第一个例子,让我们试一下第二个例子 Dialogue: 0,0:11:10.40,0:11:16.43,Default,,0000,0000,0000,,在第一个例子里,我只是打印数字。在计算机代码里, Dialogue: 0,0:11:16.43,0:11:21.56,Default,,0000,0000,0000,,有个东西叫字符串。这是字符串的第一个例子,Hi 在引号里 Dialogue: 0,0:11:21.56,0:11:26.54,Default,,0000,0000,0000,,字符串只是一串字母,在代码里,它写在双引号之间 Dialogue: 0,0:11:26.54,0:11:31.70,Default,,0000,0000,0000,,所以这里写 Hi。print 可以打印数字 Dialogue: 0,0:11:31.70,0:11:36.54,Default,,0000,0000,0000,,它也可以打印字符串。它只是将字符串解释成一串字母 Dialogue: 0,0:11:36.54,0:11:41.39,Default,,0000,0000,0000,,字符串是什么,就在这里打印什么 Dialogue: 0,0:11:41.39,0:11:46.44,Default,,0000,0000,0000,,我可以改这里,这是 Hi,我也可以改成 good day Dialogue: 0,0:11:46.44,0:11:51.28,Default,,0000,0000,0000,,字符串可以有空格 Dialogue: 0,0:11:51.28,0:11:57.72,Default,,0000,0000,0000,,那么我运行,这里就有 good day。在计算机程序里,字符串和数字是很常见的 Dialogue: 0,0:11:57.72,0:12:02.22,Default,,0000,0000,0000,,计算机程序里的字符串可以装你输入的 URL Dialogue: 0,0:12:02.22,0:12:06.83,Default,,0000,0000,0000,,或者你在文字处理器里写的每一段文字都可以用储存为一个字符串 Dialogue: 0,0:12:06.83,0:12:11.22,Default,,0000,0000,0000,,所以,字符串基本上就是一串字母 Dialogue: 0,0:12:11.22,0:12:15.60,Default,,0000,0000,0000,,在计算机里,它是很常见的一种数据 Dialogue: 0,0:12:15.60,0:12:20.21,Default,,0000,0000,0000,,这个代码实例里展示的另一个内容是这里的第一行 Dialogue: 0,0:12:20.21,0:12:24.94,Default,,0000,0000,0000,,称为说明,在 JavaScript 里,说明的开始有两条斜线 Dialogue: 0,0:12:24.94,0:12:29.63,Default,,0000,0000,0000,,说明的运作方式是,说明开始有两条斜线,计算机会忽略斜线右边的内容 Dialogue: 0,0:12:29.63,0:12:34.88,Default,,0000,0000,0000,,我会用说明来写一些评论 Dialogue: 0,0:12:34.88,0:12:39.75,Default,,0000,0000,0000,,如我这里有两个字符串。一些短评论、写给自己看的笔记 Dialogue: 0,0:12:39.75,0:12:44.81,Default,,0000,0000,0000,,或关于代码的一些东西。运行代码时,计算机知道要忽略这个部分 Dialogue: 0,0:12:44.81,0:12:49.86,Default,,0000,0000,0000,,哦,那只是评论而已。在以后的实例里 Dialogue: 0,0:12:49.86,0:12:55.18,Default,,0000,0000,0000,,你会看到有一些说明,有关我评论正在做的事情 Dialogue: 0,0:12:55.36,0:13:01.74,Default,,0000,0000,0000,,这里我要做的实例有点巧妙 Dialogue: 0,0:13:01.74,0:13:09.41,Default,,0000,0000,0000,,我要把 print 这个词放在这个字符串里,我们来看看会输出什么 Dialogue: 0,0:13:09.41,0:13:14.81,Default,,0000,0000,0000,,第二行里,输出了 hello。 Dialogue: 0,0:13:14.81,0:13:20.62,Default,,0000,0000,0000,,在这里,字符串里的 print 和外面的 print 不一样,不是代码 Dialogue: 0,0:13:20.62,0:13:26.16,Default,,0000,0000,0000,,外面的 print 是打印功能的代码 Dialogue: 0,0:13:26.16,0:13:31.89,Default,,0000,0000,0000,,双括号里的是数据,是区分代码里的内容 Dialogue: 0,0:13:31.89,0:13:37.72,Default,,0000,0000,0000,,在本部分结束时,我们有一些练习 Dialogue: 0,0:13:37.72,0:13:43.91,Default,,0000,0000,0000,,你可以写一些代码,像我做的那样 Dialogue: 0,0:13:43.91,0:13:50.10,Default,,0000,0000,0000,,像我刚才提到的那样,代码是在一个有结构的、很有限的句法系统里运作 Dialogue: 0,0:13:50.10,0:13:54.60,Default,,0000,0000,0000,,错误是很常见的。一个专业程序员整天在写代码 Dialogue: 0,0:13:54.60,0:13:59.46,Default,,0000,0000,0000,,他们输入一些代码时,有可能会有句法错误 Dialogue: 0,0:13:59.46,0:14:04.25,Default,,0000,0000,0000,,有可能缺少右括号 Dialogue: 0,0:14:04.25,0:14:09.22,Default,,0000,0000,0000,,或单词里面有拼写错误,这些句法错误很容易纠正 Dialogue: 0,0:14:09.22,0:14:13.72,Default,,0000,0000,0000,,就是说,你点运行按钮时 Dialogue: 0,0:14:13.72,0:14:18.51,Default,,0000,0000,0000,,经常会有一些小的语法错误要纠正 Dialogue: 0,0:14:18.51,0:14:22.77,Default,,0000,0000,0000,,我要让你明白,这些小错误并不反映出 Dialogue: 0,0:14:22.77,0:14:27.48,Default,,0000,0000,0000,,你理解错误或有缺陷 Dialogue: 0,0:14:27.48,0:14:32.08,Default,,0000,0000,0000,,写代码时,这些表面的小错误总会出现。专业程序员总是会犯这些错误 Dialogue: 0,0:14:32.08,0:14:36.62,Default,,0000,0000,0000,,纠正这些错误没有什么大不了的 Dialogue: 0,0:14:38.89,0:14:41.16,Default,,0000,0000,0000,,我们甚至都不会去理会这些错误。我想,当人们开始接触代码 Dialogue: 0,0:14:41.16,0:14:45.65,Default,,0000,0000,0000,,有些东西会使他们偏离方向 Dialogue: 0,0:14:45.65,0:14:50.13,Default,,0000,0000,0000,,这些小的句法错误会让他们学不下去 Dialogue: 0,0:14:50.13,0:14:54.71,Default,,0000,0000,0000,,而实际上,每个人都犯这样的错误。真的没什么大不了。 Dialogue: 0,0:14:54.71,0:14:58.13,Default,,0000,0000,0000,,为了进一步解释这个问题,我要讲一些实例 Dialogue: 0,0:14:58.13,0:15:01.69,Default,,0000,0000,0000,,我已经这里举了一些实例,里面有一些典型的小句法错误 Dialogue: 0,0:15:01.69,0:15:05.21,Default,,0000,0000,0000,,我要给你们看,点运行按钮时,会出现什么样的错误。好吧? Dialogue: 0,0:15:05.21,0:15:08.95,Default,,0000,0000,0000,,下面会发生的情况是,点运行按钮时,无法运行 Dialogue: 0,0:15:08.95,0:15:12.46,Default,,0000,0000,0000,,我有一些小错误。我要给你们看从出现错误到纠正小句法问题的这个过程 Dialogue: 0,0:15:12.46,0:15:15.80,Default,,0000,0000,0000,,你就会习惯 Dialogue: 0,0:15:15.80,0:15:19.22,Default,,0000,0000,0000,,是的,你点运行按钮时,出错是很常见的 Dialogue: 0,0:15:19.22,0:15:22.55,Default,,0000,0000,0000,,我们来看看这些代码。好的,我点运行按钮 Dialogue: 0,0:15:22.55,0:15:26.38,Default,,0000,0000,0000,,这里没有运行和产出输出,反而有一些错误 Dialogue: 0,0:15:26.38,0:15:30.03,Default,,0000,0000,0000,,有一个小错误的消息。有时错误消息挺不错 Dialogue: 0,0:15:30.03,0:15:33.73,Default,,0000,0000,0000,,会描述出现什么情况。我们来看看第一条消息 Dialogue: 0,0:15:33.73,0:15:38.72,Default,,0000,0000,0000,,错误, prlnt 未被定义。问题是 print 是功能 Dialogue: 0,0:15:38.72,0:15:44.14,Default,,0000,0000,0000,,但第二行这里 Dialogue: 0,0:15:44.14,0:15:49.92,Default,,0000,0000,0000,,尽管不总是这样,但很多时候,有问题的那一行会高亮出现 Dialogue: 0,0:15:49.92,0:15:56.34,Default,,0000,0000,0000,,问题是有拼写错误。这里写的是 PRLNT Dialogue: 0,0:15:56.34,0:16:01.05,Default,,0000,0000,0000,,我改成 i,然后运行,就可以了。 Dialogue: 0,0:16:01.05,0:16:05.10,Default,,0000,0000,0000,,这个小程序输出1和b。2、c和3,这只是我编的一个没什么实际意义的程序。 Dialogue: 0,0:16:05.10,0:16:09.30,Default,,0000,0000,0000,,当然,我用L,是因为我要用一个看上去很像I的字母 Dialogue: 0,0:16:09.30,0:16:13.25,Default,,0000,0000,0000,,你要仔细看,我是个苛刻的教授 Dialogue: 0,0:16:13.25,0:16:17.18,Default,,0000,0000,0000,,好的,我们来试一下另一个实例 Dialogue: 0,0:16:17.18,0:16:21.67,Default,,0000,0000,0000,,我点这个实例的运行按钮,说出错,Unterminated string literal (未结束的字符串) Dialogue: 0,0:16:21.67,0:16:26.32,Default,,0000,0000,0000,,第二行高亮。我要从左往右看第二行 Dialogue: 0,0:16:26.32,0:16:31.08,Default,,0000,0000,0000,,你看到这里,有 B。这里的问题是这是一个字符串 Dialogue: 0,0:16:31.08,0:16:35.62,Default,,0000,0000,0000,,我们要的是字符串 B,但却没有右引号 Dialogue: 0,0:16:35.62,0:16:40.71,Default,,0000,0000,0000,,要有两个引号。我试一下第三个实例。 Dialogue: 0,0:16:40.71,0:16:45.14,Default,,0000,0000,0000,,错误,missing right parenthesis (缺少右括号)。这行也是高亮的 Dialogue: 0,0:16:45.14,0:16:49.45,Default,,0000,0000,0000,,在这个例子里,错误消息很不错 Dialogue: 0,0:16:49.45,0:16:54.28,Default,,0000,0000,0000,,错误消息说的是,看,和引号一样 Dialogue: 0,0:16:54.28,0:16:58.48,Default,,0000,0000,0000,,左括号和右括号要匹配 Dialogue: 0,0:16:58.48,0:17:02.95,Default,,0000,0000,0000,,必须要有右括号,print 功能必须要有右括号。现在可以了 Dialogue: 0,0:17:02.95,0:17:12.22,Default,,0000,0000,0000,,好的,到最后一个了。有错误,missing right parenthesis (缺少右括号),但这里有右括号 Dialogue: 0,0:17:12.22,0:17:16.16,Default,,0000,0000,0000,,错误消息是不对的。有时候,出现句法错误时 Dialogue: 0,0:17:16.16,0:17:20.79,Default,,0000,0000,0000,,计算机就糊涂了,无法在错误消息里给你做出判断 Dialogue: 0,0:17:20.79,0:17:25.24,Default,,0000,0000,0000,,它就会说,第二行这里出错 Dialogue: 0,0:17:25.24,0:17:29.97,Default,,0000,0000,0000,,我建议要从左到右仔细看 Dialogue: 0,0:17:29.97,0:17:34.40,Default,,0000,0000,0000,,在这个例子里,缺少的是逗号 Dialogue: 0,0:17:34.40,0:17:38.62,Default,,0000,0000,0000,,我想这个例子说明了计算机和人类之间的区别 Dialogue: 0,0:17:38.62,0:17:42.80,Default,,0000,0000,0000,,人类可以看出你的意图 Dialogue: 0,0:17:42.80,0:17:46.96,Default,,0000,0000,0000,,看,我想这里是要输出1和b。但计算机有其机械特性 Dialogue: 0,0:17:46.96,0:17:51.77,Default,,0000,0000,0000,,事物就必须是怎么样 Dialogue: 0,0:17:51.77,0:17:57.12,Default,,0000,0000,0000,,这里不能少了逗号,要是不纠正,就会出错 Dialogue: 0,0:17:57.12,0:18:02.100,Default,,0000,0000,0000,,好的,这个可以了。我们的第一个部分 Dialogue: 0,0:18:02.100,0:18:09.12,Default,,0000,0000,0000,,只是关于基本的打印、数字和字符串。我这里要试一个问题实例 Dialogue: 0,0:18:09.12,0:18:13.69,Default,,0000,0000,0000,,我们的练习大多数都像这样 Dialogue: 0,0:18:13.69,0:18:18.04,Default,,0000,0000,0000,,以后的练习会更有趣,我保证。题目是,修改下面的代码 Dialogue: 0,0:18:18.04,0:18:22.55,Default,,0000,0000,0000,,使代码运行时产出以下结果,这是来自one, two, buckle my shoe (英文儿歌) Dialogue: 0,0:18:22.55,0:18:26.44,Default,,0000,0000,0000,,这里的代码执行某些任务 Dialogue: 0,0:18:26.44,0:18:29.91,Default,,0000,0000,0000,,但不是我们想它要做的任务 Dialogue: 0,0:18:29.91,0:18:33.38,Default,,0000,0000,0000,,我们来看看。有1,我加上2 Dialogue: 0,0:18:33.38,0:18:36.99,Default,,0000,0000,0000,,我要加上逗号,把这个字符串改成 buckle Dialogue: 0,0:18:36.99,0:18:40.69,Default,,0000,0000,0000,,运行看看有什么结果 Dialogue: 0,0:18:40.69,0:18:44.35,Default,,0000,0000,0000,,我建议,如果你有一些写代码的想法,或者只是想试试看 Dialogue: 0,0:18:44.35,0:18:48.14,Default,,0000,0000,0000,,在这里输入点东西,点错误的键,也不会有做出什么破坏 Dialogue: 0,0:18:48.14,0:18:51.89,Default,,0000,0000,0000,,富有试验精神是好的 Dialogue: 0,0:18:51.89,0:18:58.72,Default,,0000,0000,0000,,这是第一行。我检查第二行。3、逗号、4、逗号、knock Dialogue: 0,0:18:58.72,0:19:07.46,Default,,0000,0000,0000,,好的,现在可以了 Dialogue: 0,0:19:07.46,0:19:12.95,Default,,0000,0000,0000,,我在文档里做实例时,经常就像这样 Dialogue: 0,0:19:12.95,0:19:16.59,Default,,0000,0000,0000,,我会做一些实例,你可能想试试看,你可能会对第二个很好奇 Dialogue: 0,0:19:16.59,0:19:20.51,Default,,0000,0000,0000,,你想看看那个实例,做一些改变,点点那个错误的按钮 Dialogue: 0,0:19:20.51,0:19:24.15,Default,,0000,0000,0000,,你完全可以自由地这样做 Dialogue: 0,0:19:24.15,0:19:27.47,Default,,0000,0000,0000,,在文档里,经常会有一个小小的显示答案按钮 Dialogue: 0,0:19:27.47,0:19:31.06,Default,,0000,0000,0000,,就是说,你可以去看看,它是空白的,你可以做自己的试验 Dialogue: 0,0:19:31.20,0:19:34.75,Default,,0000,0000,0000,,但假如你想看看我用的是什么代码,你可以在文档里看到 Dialogue: 0,0:19:34.75,0:19:38.20,Default,,0000,0000,0000,,这样,你就可以比较我的答案和你的答案 Dialogue: 0,0:19:38.20,0:19:41.75,Default,,0000,0000,0000,,如果你要复制里面的内容,没问题 Dialogue: 0,0:19:41.75,0:19:44.94,Default,,0000,0000,0000,,我们第一部分就讲这里,我们来看看这些代码练习