< Return to Video

Introduction to Computing Principles (19 mins)

  • 0:00 - 0:06
    大家好,我是 Nick Parlante。这门课讨论的是计算机的基本性质
  • 0:06 - 0:11
    计算机如何运作、可以做什么和不可以做什么
  • 0:11 - 0:17
    你完全不需要有计算机的背景知识。这门课谁都能上
  • 0:17 - 0:22
    开始讲课之前,我想花点时间感谢 Google
  • 0:22 - 0:26
    支持我这个课题的早期研究,使我能够制作这门课
  • 0:26 - 0:31
    简单提一下,这门课不但有视频,每个视频部分
  • 0:31 - 0:36
    还有一份书面文档,就是我正在拖动的这份文档
  • 0:36 - 0:40
    这个文档有解释、图表和代码实例
  • 0:40 - 0:45
    你随时可以交替使用视频和文档
  • 0:45 - 0:50
    假如你想要再次阅读解释、试一下实例或其他内容
  • 0:50 - 0:56
    看我做和你自己尝试有很大区别
  • 0:56 - 1:00
    所以我的建议是,每个部分结束时,我们经常会有练习
  • 1:00 - 1:03
    那时,你做练习之前,可以决定
  • 1:03 - 1:07
    你是否已准备好马上做练习呢
  • 1:07 - 1:10
    还是想再看看文档,做一些试验来巩固知识呢
  • 1:10 - 1:14
    你至少应该知道每个部分我们都有文档提供
  • 1:14 - 1:21
    因此我想说的是计算机的基本等式是
  • 1:21 - 1:27
    计算机 = 强大 + 愚蠢。强大指的是
  • 1:27 - 1:32
    计算机可以进行几十亿次运算。它们的运算速度惊人
  • 1:32 - 1:38
    但这些运算是愚蠢的,因为计算机可以进行的运算
  • 1:38 - 1:43
    非常简单,是完全机械的
  • 1:43 - 1:48
    这些运算没有用人类的思想去思考它们在做什么
  • 1:48 - 1:52
    所以在一定程度上来说,这个奇怪的组合是强大加上机械的愚蠢
  • 1:52 - 1:57
    我们正学习这些短小的代码实例时,就会看到这样的模式
  • 1:57 - 2:02
    计算机世界里也是这种模式
  • 2:02 - 2:07
    好啦,我有点过激,我在调侃计算机。哈,计算机真笨
  • 2:07 - 2:11
    但另一方面,我们看到计算机是非常有用的
  • 2:11 - 2:16
    这就是这门课的内容。一方面来说,
  • 2:16 - 2:21
    翱翔这个有点机械的缤纷计算机世界
  • 2:21 - 2:26
    然后将它和你知道的事情连接在一起,如电子邮件和 MP3 音频
  • 2:26 - 2:31
    这些事物在现实世界中是非常有用的。我尝试将两个世界连接在一起
  • 2:31 - 2:35
    向你展示计算机如何运作、计算机如何融入现实世界
  • 2:35 - 2:40
    我的目标是学完这门课,你理解计算机如何运作、如何融入现实世界
  • 2:40 - 2:44
    你也不会被计算机难倒。你不会认为它是
  • 2:44 - 2:50
    神奇的、不可思议的盒子。我也有一个神秘安排
  • 2:50 - 2:55
    世界上懂计算机科学的人太少了。我们要解决的问题太多
  • 2:55 - 3:00
    但就是没有足够的人通过编程来解决这这些问题
  • 3:00 - 3:05
    我的神秘安排是通过带你进入计算机世界
  • 3:05 - 3:10
    了解计算机如何运作,你可能会发现你将来想从事计算机科学
  • 3:10 - 3:15
    我要讲的第一个近似法是
  • 3:15 - 3:19
    计算机如何运作。计算机内部是由代码驱动的
  • 3:19 - 3:24
    以后会更详细讨论这点。现在只是第一讲。
  • 3:24 - 3:29
    我画了一幅计算机的图。计算机内部的代码是
  • 3:29 - 3:34
    由这些简单指示组成的。 一条指示可能是两个数的相加
  • 3:34 - 3:39
    就是1加1或者检查2是否小于10
  • 3:39 - 3:44
    因此在第一讲里,计算机做的事情就是完成这一系列指示
  • 3:44 - 3:49
    每个指示都很简单,计算机只是
  • 3:49 - 3:54
    逐个完成一系列指示,只不过它的速度飞快
  • 3:54 - 3:59
    但每条指示都有这种非常机械的固定感觉。因此我要说的是
  • 3:59 - 4:04
    人们会问一个很自然的问题,就是
  • 4:04 - 4:09
    既然计算机如此机械地执行指示
  • 4:09 - 4:14
    它如何完成现实世界中这么多有用的功能呢?对于这个情况,我画了一个图表
  • 4:14 - 4:19
    在右边,我要想出一些有用的功能
  • 4:19 - 4:24
    如消除红眼或即时短信。我要讲的是
  • 4:24 - 4:29
    你的电话、数码相机都是计算机
  • 4:29 - 4:33
    那么在右边有一个有用的功能,消除红眼
  • 4:33 - 4:38
    在左边,有一台计算机要执行这些简单的机械指示
  • 4:38 - 4:42
    但什么将两个视图连接起来呢
  • 4:42 - 4:47
    答案就是计算机编程
  • 4:47 - 4:51
    有一个人,就是计算机程序员,首先想到一个主意。噢,我们应该要
  • 4:51 - 4:56
    消除红眼,这会很有用。那他们就用他们的创造力和
  • 4:56 - 5:00
    想象力来思考计算机可以做些什么有用的事情
  • 5:00 - 5:05
    然后计算机程序员做的就是组织和分解这个问题
  • 5:05 - 5:09
    让计算机可以执行
  • 5:09 - 5:14
    程序员组织事物,这样计算机就可以做这件
  • 5:14 - 5:19
    有用的事情。这就是计算机编程
  • 5:19 - 5:24
    其实,你在数码相机、手机或计算机上做的有用的事情
  • 5:24 - 5:30
    都是有人在后端使其发生的
  • 5:30 - 5:35
    我有点喜欢这个组合。程序员以某种方式
  • 5:35 - 5:41
    付出他们对现实世界的创造力、洞察力以及对什么事物可能是有用的想法
  • 5:41 - 5:46
    这是他们要解决的第一半问题
  • 5:46 - 5:50
    计算机付出的是它的特长。我认为计算机的特长是
  • 5:50 - 5:55
    最终会变得很便宜。计算机也可以很快地执行这些指示
  • 5:55 - 5:59
    我们最终也可以得到这个美好的组合
  • 5:59 - 6:03
    因此世界上有这么多计算机在做有用的事情
  • 6:03 - 6:08
    这表明人和计算机之间有良好的伙伴关系
  • 6:10 - 6:12
    这个表是这节课的总结
  • 6:12 - 6:17
    我们会看看左边
  • 6:17 - 6:21
    看计算机世界是怎样的。我们会讨论计算机世界
  • 6:21 - 6:26
    和你使用的实际功能之间的联系,了解计算机
  • 6:26 - 6:33
    如何融入现实世界,完成任务。这节课的第二部分里
  • 6:33 - 6:37
    我会开始做一些代码实例。我应该要提到
  • 6:37 - 6:42
    你要耐心点。我要开始写代码
  • 6:42 - 6:47
    我们的第一批代码实例非常简单,它们不会做很花哨的事情
  • 6:47 - 6:52
    我觉得它们有点像乐高积木。我们学每一点代码
  • 6:52 - 6:56
    就是多一块积木,我们最终要搭起这些积木
  • 6:56 - 7:00
    做一些很棒的事情。但开始这两个部分
  • 7:00 - 7:05
    我们要从某个地方开始,这些实例非常简单
  • 7:05 - 7:09
    所以我让你耐心点,我答应你们,我们会用这个材料做一些很棒的事情
  • 7:09 - 7:13
    实际上,我提前告诉你
  • 7:13 - 7:18
    在下面两个小时的讲课里会做什么。我们会开始讲视觉特殊效果
  • 7:18 - 7:23
    我们会试一下有名的猴子、月亮、香蕉的问题,如这里所示
  • 7:23 - 7:28
    我提前告诉你我们要做的事情。今天我们只是写一些
  • 7:28 - 7:33
    简单的代码。做这些代码练习,我们要用一门称作 JavaScript 的计算机语言
  • 7:33 - 7:37
    JavaScript 是一门很受欢迎的语言
  • 7:37 - 7:41
    它在新的网页浏览器里运行,所以很受欢迎
  • 7:41 - 7:45
    它也很适合这门课,因为我们是用网页浏览器
  • 7:45 - 7:49
    这样就可以很容易运行代码,我们会用 JavaScript
  • 7:49 - 7:53
    和其他我为这门课添加的扩展代码
  • 7:53 - 7:57
    因此跟专业的 JavaScript 不太一样。我们会学习很简短的代码短语
  • 7:57 - 8:02
    足够让我们来了解概况,理解我要讨论的重点
  • 8:02 - 8:06
    以及探索一下计算机。
  • 8:06 - 8:10
    但我们不用学习编写完整、专业的程序所需的大量知识
  • 8:10 - 8:15
    好吧,这个是我的第一个代码实例。
  • 8:15 - 8:19
    我们采用的方式就是这个长方形的小区域。里面的文本
  • 8:19 - 8:23
    就是代码。下面有个运行按钮。
  • 8:23 - 8:28
    我点击运行按钮时,计算机从最顶端开始,运行这几行代码。
  • 8:28 - 8:32
    它会执行每一行代码。它会进行每一行代码的内容
  • 8:32 - 8:37
    在这里我们看到的是 print (打印)功能
  • 8:37 - 8:41
    这只有 print 这个词,还有打印功能的运作方式
  • 8:41 - 8:46
    有 print 这个词,有左括号
  • 8:46 - 8:50
    这里有一些内容。这里只有数字6
  • 8:50 - 8:54
    最后,这行以右括号和分号结束
  • 8:54 - 8:59
    打印功能就是将括号中间的内容打印出来
  • 8:59 - 9:04
    如果你看这里右边,这就是我点运行按钮时的输出
  • 9:04 - 9:10
    假如我要改这里,譬如说打印42,然后运行
  • 9:10 - 9:15
    我们就会看到42,来自第一个打印行
  • 9:15 - 9:21
    要是我打印1,2,就可以看到这里有1和2,就是这样运行
  • 9:21 - 9:26
    我讲过,我们的头两个例子不是很花哨
  • 9:26 - 9:32
    这当然是真的。那么我可以试一下在这里加一点东西
  • 9:32 - 9:37
    我可以说逗号 47。运行时,我们看到
  • 9:37 - 9:43
    有1、2和47。我将高亮的这些行复制
  • 9:43 - 9:49
    然后粘贴几次
  • 9:49 - 9:54
    就有几行代码。如果我运行
  • 9:54 - 10:00
    就有几次重复的输出
  • 10:00 - 10:07
    关于这里要提出一点,就是这个代码的句法不是自由形式
  • 10:07 - 10:11
    相反,是很有结构的。必须是有结构的
  • 10:11 - 10:16
    计算机才会明白。这实际上反映了计算机的内在性质
  • 10:16 - 10:20
    计算机的性质是机械的、固定的
  • 10:20 - 10:25
    它可以理解的语言也必须是机械的、固定的
  • 10:25 - 10:30
    开始的时候会有点奇怪,你不能用自由形式
  • 10:30 - 10:35
    来写英文,让计算机来跟着做
  • 10:35 - 10:39
    这是你的第一课,计算机的性质
  • 10:39 - 10:43
    或者你可以把它看做是入乡随俗的性质
  • 10:43 - 10:46
    看,我让你去参加计算机的世界,我们要用计算机的语言来学习
  • 10:46 - 10:49
    开始的时候是有点奇怪
  • 10:49 - 10:54
    但事实上这并不难。句法是有结构的,但也很简单
  • 10:54 - 11:00
    因此,我要鼓励你,别因为这种语言的有结构的机械性质而拖延学习
  • 11:00 - 11:05
    这种语言会帮我们做很棒的事情
  • 11:05 - 11:10
    好的,那是我的第一个例子,让我们试一下第二个例子
  • 11:10 - 11:16
    在第一个例子里,我只是打印数字。在计算机代码里,
  • 11:16 - 11:22
    有个东西叫字符串。这是字符串的第一个例子,Hi 在引号里
  • 11:22 - 11:27
    字符串只是一串字母,在代码里,它写在双引号之间
  • 11:27 - 11:32
    所以这里写 Hi。print 可以打印数字
  • 11:32 - 11:37
    它也可以打印字符串。它只是将字符串解释成一串字母
  • 11:37 - 11:41
    字符串是什么,就在这里打印什么
  • 11:41 - 11:46
    我可以改这里,这是 Hi,我也可以改成 good day
  • 11:46 - 11:51
    字符串可以有空格
  • 11:51 - 11:58
    那么我运行,这里就有 good day。在计算机程序里,字符串和数字是很常见的
  • 11:58 - 12:02
    计算机程序里的字符串可以装你输入的 URL
  • 12:02 - 12:07
    或者你在文字处理器里写的每一段文字都可以用储存为一个字符串
  • 12:07 - 12:11
    所以,字符串基本上就是一串字母
  • 12:11 - 12:16
    在计算机里,它是很常见的一种数据
  • 12:16 - 12:20
    这个代码实例里展示的另一个内容是这里的第一行
  • 12:20 - 12:25
    称为说明,在 JavaScript 里,说明的开始有两条斜线
  • 12:25 - 12:30
    说明的运作方式是,说明开始有两条斜线,计算机会忽略斜线右边的内容
  • 12:30 - 12:35
    我会用说明来写一些评论
  • 12:35 - 12:40
    如我这里有两个字符串。一些短评论、写给自己看的笔记
  • 12:40 - 12:45
    或关于代码的一些东西。运行代码时,计算机知道要忽略这个部分
  • 12:45 - 12:50
    哦,那只是评论而已。在以后的实例里
  • 12:50 - 12:55
    你会看到有一些说明,有关我评论正在做的事情
  • 12:55 - 13:02
    这里我要做的实例有点巧妙
  • 13:02 - 13:09
    我要把 print 这个词放在这个字符串里,我们来看看会输出什么
  • 13:09 - 13:15
    第二行里,输出了 hello。
  • 13:15 - 13:21
    在这里,字符串里的 print 和外面的 print 不一样,不是代码
  • 13:21 - 13:26
    外面的 print 是打印功能的代码
  • 13:26 - 13:32
    双括号里的是数据,是区分代码里的内容
  • 13:32 - 13:38
    在本部分结束时,我们有一些练习
  • 13:38 - 13:44
    你可以写一些代码,像我做的那样
  • 13:44 - 13:50
    像我刚才提到的那样,代码是在一个有结构的、很有限的句法系统里运作
  • 13:50 - 13:55
    错误是很常见的。一个专业程序员整天在写代码
  • 13:55 - 13:59
    他们输入一些代码时,有可能会有句法错误
  • 13:59 - 14:04
    有可能缺少右括号
  • 14:04 - 14:09
    或单词里面有拼写错误,这些句法错误很容易纠正
  • 14:09 - 14:14
    就是说,你点运行按钮时
  • 14:14 - 14:19
    经常会有一些小的语法错误要纠正
  • 14:19 - 14:23
    我要让你明白,这些小错误并不反映出
  • 14:23 - 14:27
    你理解错误或有缺陷
  • 14:27 - 14:32
    写代码时,这些表面的小错误总会出现。专业程序员总是会犯这些错误
  • 14:32 - 14:37
    纠正这些错误没有什么大不了的
  • 14:39 - 14:41
    我们甚至都不会去理会这些错误。我想,当人们开始接触代码
  • 14:41 - 14:46
    有些东西会使他们偏离方向
  • 14:46 - 14:50
    这些小的句法错误会让他们学不下去
  • 14:50 - 14:55
    而实际上,每个人都犯这样的错误。真的没什么大不了。
  • 14:55 - 14:58
    为了进一步解释这个问题,我要讲一些实例
  • 14:58 - 15:02
    我已经这里举了一些实例,里面有一些典型的小句法错误
  • 15:02 - 15:05
    我要给你们看,点运行按钮时,会出现什么样的错误。好吧?
  • 15:05 - 15:09
    下面会发生的情况是,点运行按钮时,无法运行
  • 15:09 - 15:12
    我有一些小错误。我要给你们看从出现错误到纠正小句法问题的这个过程
  • 15:12 - 15:16
    你就会习惯
  • 15:16 - 15:19
    是的,你点运行按钮时,出错是很常见的
  • 15:19 - 15:23
    我们来看看这些代码。好的,我点运行按钮
  • 15:23 - 15:26
    这里没有运行和产出输出,反而有一些错误
  • 15:26 - 15:30
    有一个小错误的消息。有时错误消息挺不错
  • 15:30 - 15:34
    会描述出现什么情况。我们来看看第一条消息
  • 15:34 - 15:39
    错误, prlnt 未被定义。问题是 print 是功能
  • 15:39 - 15:44
    但第二行这里
  • 15:44 - 15:50
    尽管不总是这样,但很多时候,有问题的那一行会高亮出现
  • 15:50 - 15:56
    问题是有拼写错误。这里写的是 PRLNT
  • 15:56 - 16:01
    我改成 i,然后运行,就可以了。
  • 16:01 - 16:05
    这个小程序输出1和b。2、c和3,这只是我编的一个没什么实际意义的程序。
  • 16:05 - 16:09
    当然,我用L,是因为我要用一个看上去很像I的字母
  • 16:09 - 16:13
    你要仔细看,我是个苛刻的教授
  • 16:13 - 16:17
    好的,我们来试一下另一个实例
  • 16:17 - 16:22
    我点这个实例的运行按钮,说出错,Unterminated string literal (未结束的字符串)
  • 16:22 - 16:26
    第二行高亮。我要从左往右看第二行
  • 16:26 - 16:31
    你看到这里,有 B。这里的问题是这是一个字符串
  • 16:31 - 16:36
    我们要的是字符串 B,但却没有右引号
  • 16:36 - 16:41
    要有两个引号。我试一下第三个实例。
  • 16:41 - 16:45
    错误,missing right parenthesis (缺少右括号)。这行也是高亮的
  • 16:45 - 16:49
    在这个例子里,错误消息很不错
  • 16:49 - 16:54
    错误消息说的是,看,和引号一样
  • 16:54 - 16:58
    左括号和右括号要匹配
  • 16:58 - 17:03
    必须要有右括号,print 功能必须要有右括号。现在可以了
  • 17:03 - 17:12
    好的,到最后一个了。有错误,missing right parenthesis (缺少右括号),但这里有右括号
  • 17:12 - 17:16
    错误消息是不对的。有时候,出现句法错误时
  • 17:16 - 17:21
    计算机就糊涂了,无法在错误消息里给你做出判断
  • 17:21 - 17:25
    它就会说,第二行这里出错
  • 17:25 - 17:30
    我建议要从左到右仔细看
  • 17:30 - 17:34
    在这个例子里,缺少的是逗号
  • 17:34 - 17:39
    我想这个例子说明了计算机和人类之间的区别
  • 17:39 - 17:43
    人类可以看出你的意图
  • 17:43 - 17:47
    看,我想这里是要输出1和b。但计算机有其机械特性
  • 17:47 - 17:52
    事物就必须是怎么样
  • 17:52 - 17:57
    这里不能少了逗号,要是不纠正,就会出错
  • 17:57 - 18:03
    好的,这个可以了。我们的第一个部分
  • 18:03 - 18:09
    只是关于基本的打印、数字和字符串。我这里要试一个问题实例
  • 18:09 - 18:14
    我们的练习大多数都像这样
  • 18:14 - 18:18
    以后的练习会更有趣,我保证。题目是,修改下面的代码
  • 18:18 - 18:23
    使代码运行时产出以下结果,这是来自one, two, buckle my shoe (英文儿歌)
  • 18:23 - 18:26
    这里的代码执行某些任务
  • 18:26 - 18:30
    但不是我们想它要做的任务
  • 18:30 - 18:33
    我们来看看。有1,我加上2
  • 18:33 - 18:37
    我要加上逗号,把这个字符串改成 buckle
  • 18:37 - 18:41
    运行看看有什么结果
  • 18:41 - 18:44
    我建议,如果你有一些写代码的想法,或者只是想试试看
  • 18:44 - 18:48
    在这里输入点东西,点错误的键,也不会有做出什么破坏
  • 18:48 - 18:52
    富有试验精神是好的
  • 18:52 - 18:59
    这是第一行。我检查第二行。3、逗号、4、逗号、knock
  • 18:59 - 19:07
    好的,现在可以了
  • 19:07 - 19:13
    我在文档里做实例时,经常就像这样
  • 19:13 - 19:17
    我会做一些实例,你可能想试试看,你可能会对第二个很好奇
  • 19:17 - 19:21
    你想看看那个实例,做一些改变,点点那个错误的按钮
  • 19:21 - 19:24
    你完全可以自由地这样做
  • 19:24 - 19:27
    在文档里,经常会有一个小小的显示答案按钮
  • 19:27 - 19:31
    就是说,你可以去看看,它是空白的,你可以做自己的试验
  • 19:31 - 19:35
    但假如你想看看我用的是什么代码,你可以在文档里看到
  • 19:35 - 19:38
    这样,你就可以比较我的答案和你的答案
  • 19:38 - 19:42
    如果你要复制里面的内容,没问题
  • 19:42 - 19:45
    我们第一部分就讲这里,我们来看看这些代码练习
Title:
Introduction to Computing Principles (19 mins)
Description:

运算原理介绍

more » « less
Video Language:
English

Chinese, Simplified subtitles

Revisions