DAVID MALAN:欢迎回来,大家好。 所以昨天,你会记得, 我们针对这些主题在这里。 因此,我们有四个首要topics-- 隐私,安全和社会; 互联网技术;云计算; 最终,Web开发。 没有人有 带宽或时间 观看小约翰 奥利弗昨晚? 这其实很有趣, 如果不是有点恐怖。 对任何事情有任何疑问 我们昨天做? 任何澄清? 要做出任何疑问 相信我们触及到今天以某种形式? 所以洗涮。 那么什么是上了议事日程今天? 因此,我认为我们今天会开始 一起来看一下什么是一般 被称为在计算thinking-- 简单化的风险,思考 像一台计算机,也许 想着像一个工程师, 并试图开始 组织你的想法 或者给你一个更好的感 涉及什么实际指挥 一台电脑做一些事情 通过编程方式。 我们会保持它在一个相当 高的水平,相当多的英语, 但尝试使用熟悉的 举例正式如何 你会去解决问题。 我们将重温一些CS 主题,像抽象, 里面传来了一对夫妇 次昨日, 算法,然后表示。 而这也正是我们将开始 今天在短短的时刻。 然后我们将看看节目。 我们就来看看一些 基础构造 与您可能熟悉 甚至可能会发现很直观。 我们来看看,其实, 在样品编程 环境是非常便利, 很爱玩,也确实有针对性 对于年龄在12岁以上。 我们将花几分钟时间有 然后拿东西到较低的水平 实际上谈一些 的算法和数据结构, 可以这么说,那 程序员通常使用 解决更为问题 效率可能比你 能够不通通做。 午餐后,我们就一起来看看 在技​​术堆栈,这仅仅是 说的一种假想方式 技术集合 你可能使用 解决一些问题。 我们将谈论字母表 中存在的语言汤today-- Java和Python和C ++ PHP和 Ruby和各种其他的东西。 我们将看一看简要 在设计模式。 程序员,随着时间的推移, 有采用的方法 倾向于帮助他们 解决问题更容易。 当你开始看到自己写的 同样的代码连连, 人的正式重复 而归于名字给他们 然后用它们和 推进当中,最终。 我们将讨论一点点 关于移动战略, 像什么意思实际上 使移动应用或移动网站。 你为Android做呢? 你于iOS呢? 你为那些呢? 什么是取舍? 然后最后,我们将采取 看看网络编程,这 是的总称 真正描述的任何时间 你写软件的 为了在网络上运行, 无论是在手机还是 桌面或笔记本电脑。 下面我们通过一个简单的介绍一下 数据库和设计 其中,如果仅仅是因为几乎所有的 有趣基于网络的应用 这几天有某种数据库。 否则,它会 只是静态内容。 和数据库使您可以 随时间的变化,无论是你自己 或者从用户。 我们会考虑如何 会去设计 该数据库的那种行话 可能出现的以工程师 在白板讨论 当实际执行 首次的应用程式。 我们将讨论简单说一下 API的,有用的服务 您可以使用站上 别人的肩膀上,无论公司 或个人,以及解决您的 自己的问题更迅速。 然后,我们也许会涉足 有点用JavaScript, 该公司使用的编程语言 无论是在浏览器这些天,但也 在服务器上。 也许,我们将 重温,时间允许的话, 一些动手网络的东西,我们的 昨天做和整合两个 我们一起休会之前。 因此,与that--什么ahead--是 有什么遗漏,你 想确保我们插入 并在某些点触摸。 如果是弹簧介意, 要拿出来不久。 但是,我们为什么不开始与 看看计算思维。 让我提议, 计算思维是,同样, 排序的高层描述的 什么是计算机科学家可能会做。 事实上,让我们开始 有三个成分, 可能会进入计算机思维。 这仅仅是一个描述它的方式。 我们当然可以定义 这在任何数量的方式。 但是,让我提议, 今天的缘故, 这世界上的问题, 所有的世界难题, 当由接近 计算机科学家可以 如被看作是我们将 电话输入, 需要得到送入我们就这么叫 算法,则得到的输出。 换言之,整个 解决问题的我主张世界 可以蒸馏成 这三种成分。 所以,我是什么意思的投入? 输入正是你在做什么 递给为了解决。 举例来说,这里的 一个老同学的问题。 如果我这里有电话本和 我想看看东西进去, 这是我的意见。 我有1000个左右 在电话簿页面。 这是输入到我的问题。 我想找到的东西 像迈克·史密斯,这样的朋友 其名称和编号是 希望能在这个地址簿。 这是细胞的天前 手机,所以我不能只是搜索。 所以,我必须这样做旧 学校实际上搜索 这些投入对于一些答案。 这答案是正要 被称为输出。 所以输入是电话簿。 该算法是任何集 步骤我用找到迈克·史密斯。 和输出,希望 迈克·史密斯的电话号码。 而这则是刚 最具代表性的任何问题 与你手输入 并希望产生的输出。 因此,我们认为这个过程之前, 通过它我们可以解决这个问题, 寻找迈克·史密斯和 类似的东西, 让我们考虑的第一和 的last--输入和输出。 物理上,当然,输入在这里 由纸一大堆粘在一起 在电话簿的形式。 但是电脑,笔记本电脑course-- 和台式机甚至是手机 这些days--那些 电子设备。 和在一天结束时,什么 唯一的输入到电脑? 嗯,这是像 在这份电源线。 我将其插入墙上, 我得到的电子流, 这让我运行的机器。 或者,也许这些都是电子 我的电池的方式产生。 但在一天结束时,这是 唯一进入我的笔记本电脑。 和这么多有趣 东西最终是 中走出来,无论是 由打印机的方式 或屏幕或audially或类似物。 所以,如果我们所有的作为我们的 基本输入到计算机 电,所以才 电子进入和或缩小, 所以我们如何使用该输入 实际上代表的信息? 换句话说,我们如何获得 从电力的简单流程 到代表实际 数字或字母实际 在屏幕上或实际图像 或实际的电影或电子邮件 或任何数量的这些 更高层次的概念, 如果你愿意,在 到头来不知何故 已被存储在这 电子机械装置 只使用简单的ingredients-- 电子出入? 因此,它似乎是, 在最简单的形式, 唯一的一种状态 我在我的世界,所以 到speak--条件 在我的天下 - 要么是 我有电子流,电 流动的,或者我不是 - 等等,关闭。 让我们正式开启和关闭, 作为一名计算机科学家可能, 只用1和0。 让我们只介绍一些武断 但一致的编号。 1意味着,0表示关闭。 或者你也可以认为这是 对真正的手段和虚假的手段。 你也可以做黑色 和白色或红色和蓝色。 你只需要两个描述符。 和计算机科学家们 一般只要用0和1。 所以,如果是这样的话,我唯一的字母 是由0和1的,如何 我可不可以去连号 2在一台电脑,更别说3号 或一个字母 或图像或电影? 我们怎么样的引导 从自己这一基本原则 的0和1的和实际 代表更有趣的东西? 好了,让我们把这个问题 搁置一会儿就好了 并考虑什么 希望熟悉, 即使你有没有想过 它在任何细节为10,20,30,40,50 更多年。 这是什么? 你将如何发音呢? 不是一个很难回答的问题。 一个数字,但它是什么? 1,2,3,或123。 我喜欢你是怎么说的1,2,3, 因为这是观看它的一种方式。 1,2,3,它的一个序列 三个符号。 这是图片,我们 现在有话。 如果你之类的阅读全部 同时,在英国一个典型的人类 会说123。 这就是形式的 更高层次的概念, 感觉就像一个相当大的数字。 但是,我们是怎么到达那里? 嗯,这可能是因为一段时间 你想过这个问题是这样, 但早在我的一天,我 那种得知这个 作为1的专栏中,10级的 列和100的列。 从而Lakisa说,这是 1,2,3,但它也是123。 但是,我们如何从中获取 前者向后者? 那么,你通常会做 100的专栏中,我有一个1。 所以,这等于是说100次1。 然后在10的专栏中,我有2个。 所以,这等于是说10次2。 在1的专栏中,我有3个。 所以,这等于是说1次3。 如果我添加这些东西 在一起,这当然 是100加10加3。 呵呵,这就是为什么我得到这个 123更高级别的概念。 这只是基本的数学运算,由此这些 符号具有权重给他们,如果 将占位符或列的值。 有一次我乘的一切 出来,我得到这个号码。 所以,你知道怎么很多怎么说话 binary-- 0和1's--像电脑一样? OK,完美的,没有一个人,或 你们没有觉得你做的。 不过,我会声称你 其实已经知道了。 我们只需要几分调整 我们的心智模式一点点。 但是这个过程是完全相同的。 让我离开这一个那里, 而不是拉下来了一会儿。 在计算机世界, 我们只有0和1的。 这样一来,事情那 要改变的是什么? 那么,在我的人类世界中, 十进位制,DEC意义10, 我已经在我手上了多少位? 10,对不对? 0到9,当然。 这就是为什么我们有 10的地点和100的位置。 那是哪里来的? 那么,这是10到0的力量。 这是10到1的功率,10 到2的幂,等等。 你只是保持你的乘以列 10,出发只需1 在这里最右边的之一。 因此在世界上 电脑,如果你只 有binary--双向含义 2--或0和1的,我们只是 真的需要改变 那数学的基础。 因此,换句话说,现在我们只是 有1的专栏和曲风 这是哪里going-- 2的专栏中, 4个专栏,也许超越。 这是为什么? 那么,这是2 0次方。 这是2 1。 这是2到2,依此类推。 因此而在这里,我们有1,10年代, 100的,1000的,万的,10万级的,1 数以百万计,等等,这里 我们有1个,2个,4个,8个,16个,32,64。 你只要保持乘以2, 而不是继续乘以10。 所以,现在,如果目标在 一方面是代表 仅使用0和1的数字, 让我们考虑我们如何到达那里。 此,当然,是模式0 0 0,但什么号码概念 它代表什么? 那么,4次加0 2次加0 1次0,让我们添加这些在一起。 4次0,当然,0,加2 次0是,当然,0加1次0 是,当然,0。 所以啊,这代表了 一些我们人类所知道的0。 好了,现在,让我们很 迅速快进。 如果我不是没有代表 0 0 0,但让我们做1 0 1, 这可能是如何Lakisa,此前, 只会念它1 0 1。 但是现在,我们怎么把它带到更高 水平,我们人类可能知道多少? 那么,什么是这个数字? 这是5,我们知道5的数量。 那么,这是为什么? 好了,我们才能真正的排序 穿行有条不紊 4次1,2 0次,1次1。 添加这些在一起,所以 这是4加0加1。 而这,的确,5。 所以它现在变得有些乏味 一次又一次地做算术。 但是这个过程是完全相同的。 有唯一 在我们的世界变了 是,我们的列是1,2,4,8,16, 等,代替1,10,100, 1000。 而这仅仅是因为我们的字母表 从0到9减少到只有0到1。 因此,作为一个小测验这里,怎么会 你代表二进制数字7? 0? 好吧,0,你的意思是0 0 0? 再说一遍,卡琳娜。 完善。 这是为什么? 这是有效的4加2加1。 很好。 我们如何代表一点点 another--怎么样2号? 关闭,而是倒退。 所以,这是什么? 为4加1,以便再次是5。 所以what's--对不起,卡琳娜? 0 1 0。 0 1 0将是2,因为再次,甚至 如果是那种不跳出你, 只是做数学题。 4次0,0,2倍 1是2,1次0为0。 因此,这是我们所知道的2的数量。 如何对数8? 嗯? 好。 所以,我们种需要另一个占位符。 我们需要1 0 0 0。 这就是我们的那种真正的 老同学十进制。 你如何代表人数1000? 嗯,你似乎是 那种在一个艰难的位置, 如果问你代表 数字1000, 因为即使你给自己喜欢 这些9,这些9,这些0, 这是最大的数字,你 有,你没有完全得到为1000。 所以,如果你1000,你只需要另 的位置,这样就可以做1 0 0 0, ERGO人数1000人。 所以,现在,让我们来映射这种 概念性的讨论给硬件, 再次在这里,输入只是 这个小电力电缆,电 进来和流出。 所以对于从这里被映射 在那里,那么,我们真的需要? 那么,你能想到的是一个内部 电脑,一大堆的灯泡, 如果你愿意。 他们真的叫晶体管。 和晶体管只是切换 这可以是打开或关闭。 所以,你能想到的 晶体管那是上 是允许电力流动, 晶体管那是冒充停止 电力流入。 而非采取 在这里的灯光, 为什么不让我做这种 新的派风格。 因此,这可能是一个图1中,手电筒 正对,仅勉强虽然。 而这可能是0,现在是关闭。 因此,使用这种物理设备,我 现在可以表示二进制的系统。 我只需要两个状态。 不要紧什么 颜色是或它是什么。 所有重要的是,我有 在一个国家和另一个国家了。 因此,使用我的手机在这里,我该怎么办 代表我们所知道的0的数量? 或者把等价,是什么 数字我现在能代表? 0,因为该设备处于关闭状态。 如果我这样做呢? 而现在,我该怎么办 表示数字2? 我能借你的手机 在这里,正如我们昨天做? 因此,让我们来看看,所以如果我要代表 数字2,这是2号? 没有。 什么号码是我不小心 代表在这里? 这实际上是数字3。 那么,哪一个做我想要关掉? 黑手机or--好,如果they're-- 黑手机或白色手机? 白色手机。 所以,如果我把这个关闭,我们 线它在这里,我们有一个1 在2的地方,并 0在1的位置。 所以我现在 表示数字2。 而这,当然,会是多少 3,因为现在这两个灯 在...上。 我会停在这里, 但按理说 如果我想代表 号4或8或更高, 我将需要更多的手机。 但是,这一切是怎么回事。 所以,如果你曾经听说过 中A--里面感谢你 - 计算机 是数百万个晶体管,这是 只是数百万小小的开关。 他们不是光 灯泡是打开和关闭, 但他们要么允许电 某处流动或停止。 所以,有你的两个 states--开或关,开或关。 所以我们现在似乎 有这种能力 代表这个概念, 我们希望在实际硬件。 但是,所有我们现在拥有的是能力 来表示数字又好像。 那么,我们如何去代表 英文字母,这 感觉像一个排序功能的你 将要添加到现代计算机 一旦你有数字吗? 事实上,如果你仔细想想 它在历史上,计算机 真的被引入到 作为数字计算器。 但当然,这些 天,他们做更多的事情。 即使当他们启动,你 通常会看到一个或多个单词。 那么,你如何表现的话, 如果你已经是再次 在电的结束 天,或等效地0和1的? 是啊。 是的,我的意思是,我们种做 这个昨天以某种形式, 其中,在某些时候, 我想我随意 说,如果我们想要代表 字母A,我们可以只把那个叫1。 它是在加密的情况下, 在这里我们只是需要某种形式的代码, 某种映射。 因此,也许A将被表示为 1,和B将被表示为2, 和Z将被表示 作为26,例如。 然后是唯一需要注意的是,如果我 要在我的电子邮件编码的信 还是在我的短信 数字,大家 必须同意使用 同组约定。 事实上,世界 做了这一点。 有在世界上的系统 所谓的ASCII,美国标准 信息交换码, 这是一个简单的决定,有些年份 以前,人类制造的 决定,是要平等的,不 1,2,和26,以及因此forth--它是一个 小different--但65,66,67。 我拉了 图中只是一瞬间。 但它的随意性。 但没关系 它的随意性。 世界上有只保持一致。 现在,最近, 有一些票友 所谓的Unicode,因为世界上的那种 来实现,发明电脑后, 有比多好 在世界上256个符号 我们可能要代表, 尤其是当你介绍 亚洲语言和其他符号 需要比你更表现 可以容纳的最早版本 这个代码,这被称为ASCII。 所以Unicode的实际上允许 您使用起来更加的0和2。 特别是,你不断听到 字的字节社会中甚至只 昨天。 而一个字节又是什么? 什么是字节? 这只是8位。 那么是什么究竟意味着什么? 嗯,这意味着,更早的时候,我们 谈到二进制和我所用 任意三位当我们 谈到binary-- 1的地方, 2的地方,和4的place--好, 一个字节只是意味着你在说 未在三个单位,但 四,五,六,七八, 这给了我们8的地方, 16年代,32年代,64年代,和128的。 换句话说,比特是不是所有的 该措施的有用单位, 因为它就像一个很小的小 片的信息,开启或关闭。 因此,一些年前, 世界刚刚决定 它稍微更方便地在说话 字节为单位,在时间八件事。 于是从而诞生 一个字节的概念。 所以,我们在这里有八位。 而事实证明,也为类似 原因,世界上决定年 以前,来表示一个ASCII字母, 你要使用8位的单位。 所以,即使你不 需要那么多,你 始终将使用8位 代表一个字母。 这是方便的, 因为那样的话,如果你 收到具有0 0 0 1 1信息 1 1 0后跟另一个1 1 1 0 1 0 0 1,因此,如果您收到16 位,世界正好可以 假定第一8是一个字母 第二是8的另一封信。 不要紧,有多少。 它只是事项 我们都一致 当我们解释这些位。 而这只是随机的。 这意味着什么,但我没有 仔细想想这意味着什么。 所以这是一个白色的小谎言。 原来,ASCII 实际使用的仅7位。 而第八位 所谓扩展ASCII。 但问题是,最终是一样的。 世界一般 标准化的8位。 因此,这似乎是一个小 限制,因为我只能 代表资本A, 通过资本Z.资本2 但是确实不,如果我去中场休息 有一堆资源 线上,例如, asciitable.com,这 将是一个小 压倒在第一。 但我会指出, 这里是什么是非常重要的。 这恰好be--,我会 walk--让我们来看看,如果我去在这里。 这里,在该小数 列,数65。 而在右手列字母 性格,人权委员会,是字母A. 而且你可以忽略,现在, 一切都在中间。 这是十六进制, 八进制,和一个HTML代码。 这个网站只是试图抛出 你有很多一次的信息。 但是,我们关心的是十进制 列和字符列。 因此,通过这样的逻辑,是什么 数,世界 已经决定代表小写? 是啊,97。 而仅仅是用来迷惑 可能略有下降, 什么号码已经是世界决定 将代表数字1? 没错,因为we-- 49,似乎 在这里,在底部向下走了。 现在,我是什么意思呢? 所以,事实证明, 在计算机系统中, 一般是有 根本的区别 之间的数字和字符。 一个数字是我们的事 学会长大的时候 我们在小学的超级年轻。 这事你算。 但一个字符仅仅是一个形状, 字形,可以这么说,在屏幕上。 现在,我们人类那种见 一些看起来是这样的。 而我们说,哦,那是2号。 但是,没有,这只是看起来的象征 就像我们所知道的数字2。 所以有这 根本的区别 实际数字和字符之间。 这是一个数字。 但是总体来说,在 一台电脑的情况下, 如果你不是看到 像这样quoted-- 而你总是不 必须看到它引用, 但对于discussion--的缘故,如果 你看到周围的一些报价, 现在这是一个字符。 因此,这2号下方 一个计算机的内部机罩 将与一个图案来表示 代表的比特数 50,根据图表联机。 然而,如果计算机 刚看到这一点,这 将与表示 位0 0 0 0 0 0 1 0模式。 然而,这种性格会 实际as--现在代表, 我觉得有点harder--所以这 人物将与0来表示 0 1--需要什么吗? 0 0 1 1 0 0 1 0。 我是如何做到这一点? 嗯,这是50号,如果你 使用这些列繁衍出来, 这是2号,等等 这就是为什么有这种二分法。 而这仅仅是一个 现在传情的特点 中存在的编程语言 我们将简要地对今天晚些时候触及。 在编程语言, 你一般有, 但并非总是如此,事 调用不同的数据类型。 换言之,一个programmer-- 当他或她正在写, 程序员获取决定什么 格式存储自己的数据。 您可以将数据存储为 原始数据,如数字2。 或者你可以将它们存储为字符串, 或字符序列 你会通常与表达 报价在您的编程语言。 你可以拥有的东西called-- 我会简单化,并呼吁他们 实numbers--使数字, 就像数字2不是整数, 但喜欢的数字4.56。 所以实数还可以 有小数点, 所以这是一个根本的不同 在计算机中的数据块。 然后,你甚至可以有 其他数据类型仍。 所以这真的只是一个传情 最简单的设计决策 一个程序员可能 使引擎盖下方。 所以,只是还没有什么问题吗? 因此,让我们试着让 这一点更真实。 此硬件不 这么多的使用了。 但大多数人在这个房间可能 从小一起长大的,并仍然使用硬盘驱动器 某种程度上来说。 尽管大多数的 我们的笔记本电脑不再 有一个这样的操作设备, 今天,而不是一般笔记本电脑 有固态硬盘 没有移动部件。 并且更趋于昂贵, 不幸的是,但有点快 和A--很好,经常,速度快了很多, 这是原因之一。 而且它不 产生很多热量。 它可以更小,因此它的 通常一个净正。 但是,这使我们能够映射 多一点具体什么 我们在0的谈论和 现在1的水平提升到一个物理设备。 这是一件事对我说话 大约0和1中术语 我的手机或抽象的术语 的开关被打开和关闭。 但对于硬盘驱动器? 在你的笔记本电脑,如果你有一个旧 之一,或在您的台式电脑, 或肯定服务器 今天,在这里你有 有硬盘驱动器 的空间兆兆位 4 TB的空间, 还有什么意思呢? 一个硬盘驱动器1 空间的手段太字节 有1万亿字节 它以某种方式里面, 或等价内8万亿比特。 1 TB的将是8兆兆位 或1万亿位, 意味着如果你有一个硬 驱动器,你有不知何故 或其他一万亿0 和1的内部的它。 如果我们只是来看看的 硬盘驱动器的任意图像 的代表,这是一个多么难 驱动器可能通常看起来像里面。 它也有点像 一个老唱机 但一般用 多个记录里面,所以 到speak--多 盘片,因为他们是所谓的, 金属圆盘,和 这时,一个小的读头, 很像一个老唱机。 和读头前后移动 提出并以某种方式读取位。 什么是对这些盘片,甚至 虽然我们人类无法看到它们, 无论是在现实还是在这张照片, 有微小的磁性颗粒。 而且,即使你早就 忘了电的使用原理, 磁性粒子 即通常的充电 有北边和南边 end--所以南北。 这样一来,世界刚 决定前一段时间 即,如果基本上是一个磁性协议 在这样的排列,南北, 让我们把那个叫1。 如果它是代替南北, 我们只需要调用一个0。 所以,如果你有 您的处置一万亿 小小的磁 particles--和希望, 硬件中匠心 为了翻转周围的人 当你看到fit--,如果你想 代表一大堆0,你 只需要8磁性颗粒 所有的排列是这样的。 如果你要代表 8个1的,你只要 需要对齐的8磁性颗粒 回背靠背这样。 这是什么意思了 磁性粒子? 坦率地说,这些年过去了, 仍然在我脑海中的东西 就是这个家伙,如果你 从小一起长大的这件事情。 这为little-- 这些unfamiliar--一个 小童年的玩具 这里有这个人无毛 拥有所有这些小小的黑色 磁性粒子随之而来。 而使用红棒, 这仅仅是一个磁铁, 你可以排序的给他胡子或 眉毛或头发他或任何东西。 所以,事实上,如果我们放大 在,例如,这 是一种游戏,你 可以用长毛威利玩。 而这只是说,这些 大得多的磁性粒子 比实际是一个硬盘驱动器上, 和少得多的磁性粒子。 但是让我们真正看到 那么,如果你确实有 微小磁性颗粒在 硬盘驱动器,你怎么能真正 使用这些表示数据。 [视频回放] -The硬盘是你的电脑 大多数商店的永久数据。 要做到这一点,数据 沿RAM旅行 软件的信号,告诉 硬盘如何存储这些数据。 硬盘驱动器电路的转换 信号转换成电压波动。 这些,反过来,控制硬盘的 曲子分为移动一些为数不多的搬家 零件留在现代计算机。 一些信号控制电机, 其中旋转的金属涂层的拼盘。 您的数据实际上是 存储在这些盘片。 其他信号移动读/写磁头 读或写在盘片的数据。 该机械是如此精确 一个人的头发甚至无法 首脑之间传递 和旋转盘片。 然而,这一切工作以惊人的速度。 [结束播放] 你可以在看 视频的尾部, 一般有多个盘片。 因此,阅读头 不只是读顶部。 这有点像三 四个或更多的读出头 这一举动像这样, 同时读取数据。 所以有很多的 复杂性和排序时机 该公司参与了硬盘驱动器。 而事情是真的纺织补 速度快,所以有很多的复杂性。 但是,让我们在一个小更深的放大和 看到这些磁性颗粒 以及如何我们在他们得到。 [视频回放] - 让我们看看我们 只是慢动作看到的。 当电力的短暂脉冲 被发送到读/写头, 它翻转上一个微小的电磁 用于第二的一小部分。 磁铁创建 场,它改变 一个很小,很小的极性 金属颗粒的一部分 其中每个大衣盘片表面。 图案系列这些微小的 磁盘上的充电区域 表示在数据的单个位 由计算机使用的二进制数字系统。 现在,如果当前正在发送的一个 通过读/写头的方法, 该区域在一个方向上偏振。 如果当前在发送 相反的方向, 极化反转。 你如何让数据从硬盘? 刚刚反转的过程。 因此,它是在粒子 磁盘获取当前 在读/写头移动。 放在一起的数百万 这些磁化段, 和你有一个文件。 现在,一个单一的文件的块可以是 散布在驱动器的盘片, 有点像乱 在你的办公桌上的文件。 因此,一个特殊的额外的文件保留 跟踪的东西在哪里。 难道你不希望你有 类似的东西? [结束播放] 所以被提到的有,或许是 在删除昨天的话题。 当你删除一个 文件,昨天我们说 一台电脑实际上做 什么,当你拖动的东西 到回收站或垃圾桶? 它只是忘记它。 但是0和1的, 磁性粒子 看起来像红色和蓝色 这里的东西,或在这里我的手臂, 仍然存在硬盘上。 所以存在软件 - Norton实用程序和昔日 和其他更现代 软件 - 刚 将扫描整个硬盘驱动器寻找 在所有这些0和1的,因为它 事实证明,大多数文件formats-- Word文档,Excel文件,图像, 视频files--都有一定的 图案,其中常见的。 每个视频文件可能 是一个不同的视频, 但前几 位通常是相同​​的。 或最后几个位 通常是相同​​的。 因此具有较高的概率, 你可以看一下这些模式。 而且,即使该文件已被遗忘, 你可以以很高的概率说, 但是这看起来像一个Word文档, 让恢复它和取消算了吧, 如果你愿意。 所以这就是你如何恢复 数据要么被意外 删除或删除或故意 删除的任何目的。 相比之下,安全删除做什么 在这样的图像的上下文中? 没错,让他们全部随机。 所以它像是移动的一些 他们失望,他们中的一些起来, 留下他们中的一些不变, 通常会使随机噪声出来, 或只是也许使所有的 他们0或全部的1的。 而这也可以一般 擦洗你的数据了。 现在让我们回到问题 的计算思维,即 我们有公式输入。 和算法给出 你最终输出。 我们现在专注于投入和 输出,因为现在,我 要求我们有办法 表示输入和输出。 我们只是要使用二进制。 而且不管我们 今天想代表, 不管它是一个数字或字母 或其数千电话簿 或图像或电影,在结束 这一天,它的所有0和1。 而我坚持认为,尽管这 是一个超级简单的世界,只是0 和1,我们可以建立自己的。 而我们看到的一个例子 与字母迄今。 现在让我们专注于此 中间成分的算法。 让我们回到本 例如迈克·史密斯。 所以在这个电话簿,这不可否认, 我们不使用那么多了, 有待解决的问题。 我们希望找到一个像迈克·史密斯。 而且我可以做什么找迈克? 好吧,我可以打开这个 书,开始在第一页, 实现,哦,我在一节。 迈克不在那里。 我需要史密斯在S部分。 所以,只要保持在同一时间开启一页。 让我假装这是所有 白页,而不是黄页, 因为我们不会找到 迈克黄页反正。 但是,我在白页。 而现在,我在B部分。 我还没有找到他。 所以我一直在同一时间开启一页。 这是一种算法。 它是一组指令 为解决一些问题。 换句话说,看 页面上,如果麦克的不就行了, 翻页,并重复 再,再而三, 理想情况下低头,你正在做的。 所以该算法中, 这个过程中,是否正确? 抱歉。 不,我听到一些号。 OK,但它is--是啊, 它肯定乏味。 就像,我们将在这里一整天,如果我 保持在这个速度寻找迈克。 但让我声称它是正确的。 这是愚蠢的,但它是正确的。 在一天结束时,只要它可能 走,我会找到迈克,如果他在那里 而我关注。 我最终到达他的页面。 如果我太远,如果 我得到的T形截面, 然后,我可以稍微优化 而只是说,HM,全部完成。 我甚至都不需要浪费 时间要到Z的。 但是,这是一个非常 线性方法,如果你 将一个很有几分左到右 方法中,一条直线。 而它的正确的,但速度慢。 所以我从小学记得,排序 从小学一年级学生的优化, 在那里我学会了如何不算数 由那些而是由twos--所以2,4,6。 这是一个,要困难得多 这样做,但在理论上,这是 faster-- 8,10,12,14,等等。 怎么样的算法? 是不是更有效? 是不是更快吗? 听众:这是有效的。 DAVID MALAN:是的,所以它的def--它的 从字面上快一倍,假设我 不要让她绊倒了我的手指。 这是快一倍,因为 我转向通过两个 一次,而不是一个网页,但它是 潜在地正确的,因为为什么呢? 听众:你跳过一些。 DAVID MALAN:对,如果迈克会发生什么 被也许sandwiched--当我后来 在电话簿,麦克恰好是 夹在这两个页面之间, 我只是一味地略过。 因此,我们需要一点点修复那里。 有一次,我打了T形截面,我 不能只是自信地说, 我们没有找到迈克·史密斯。 我大概有原路折回。 或事实上,当我到达的人 命名为S-N,而不是S-M代表史密斯, 马上,我可能会增加一倍 回来了,因为也许他 是以前的页面上。 但我没有远加倍奉还。 从理论上讲,如果我这样做,在合适的 那时,我刚回去一页。 因此它仅添加一个额外的步骤。 所以,我已经走了快一倍, 但它花了我一个额外的页面。 但是,这感觉就像一个净赢。 但是,这并不怎么大多数人 这个房间将解决这个问题。 什么将一个典型的人,也许是 几年前做的,找迈克·史密斯? 是啊,没发现迈克。 我该怎么办? 因此,获得更近了一点,但我做的 知道 - 什么是真正的关于电话簿? 听众:这是连续的。 DAVID MALAN:这是连续的。 这是按字母顺序排列。 所以,如果我在M部分, 迈克显然是正确的, 我可以从字面上撕裂 在half--问题 它通常比that--容易撕裂 一半的问题,并把它扔掉, 所以现在,我有一个问题,这就是 不再是1000 pages--这是辛苦, 因为我觉得我居然撕毁 电话簿这个时间 - 不 1000页,而500元。 所以,问题是字面上一半大。 这是相当有吸引力的,因为 与我以前的算法,版本 图1和2,我只是使问题 一个页面较小,两页小 在一个时间。 而现在,我做到了500 页面的小的一次。 好了,现在,卡里姆建议 我去的右半部分。 所以我要去大致 到中间,给予或采取。 如果我这样做数学, 我可以去正确的中间。 而现在,我意识到,哦, 我在T节。 其实我走得太远。 但我可以再次撕裂 一半的问题,把它扔掉。 而我的字节不一样大。 这只是什么的,256页或250 页面,给予或现在服用。 但它仍然方式更 超过一页两页。 所以现在,我去大致中间。 哦,我没去很远够了。 所以我重复,重复,重复, 重复,直到我希望 只剩下一个页面。 这样邀请问题,如果我 开始的约1,000名页面, 做到了多少步带我 我的算法1版本? 好吧,如果迈克是在S 部,在最坏的情况下, 这是相当接近 字母表的末尾。 因此,如果电话本有1000页, 我会在1000页找到迈克, 给予或采取。 也许它就像800左右,但 这是相当接近1000。 然而,在第二 算法,多少 翻页最大可能我 需要找迈克·史密斯? 有1000多页,但我 在时间做他们二。 对,所以最大似500ish,因为 如果我去通过整个电话簿, 在这一点,我可以停止。 但我可以刮掉一小部分被 只是停在T形截面。 但它在最坏的情况下,500页。 所以,我有多少次可以分割 1,00o页电话簿中再次半 并一次again--从 1000至500至250至125? 多久之前,我打一个页面? 是啊,这是10个左右。 根据舍入和这样,它的 约10页共需要开启 或电话簿需要被撕裂。 所以这是非常强大的。 我们开始了1000页的问题 在所有这三个故事。 但是在第一种算法,它 拉着我,最坏的情况下,1000页 周折找到迈克。 第二种算法,500 网页找到迈克。 第三个算法,10页找到迈克。 而且它更 强大的,当你认为 有关排序相反的情景。 假设电话公司下一个 今年也许合并两个乡镇一起, 和电话簿突然 这厚厚的,而不是说这个, 所以2000页,而不是1000。 好吧,我的第一个算法寻找 迈克·史密斯在2000页的电话本, 更糟糕的情况下,要采取 明年有多少页打开? 电话簿为2,000页, so--好,不是一个。 如果电话簿两倍厚 第一算法,第一算法, 2000,对不对? 在最坏的情况下,迈克真的 关闭到书的结尾, 所以它的2000翻页。 第二种算法通过去 三三两两,像1000页。 但是怎么样在我的第三个 和最近算法? 如果电话公司的一倍 从1000至2000的页数, 多少次需要我撕 那本书一半找到迈克? 听众:刚才之一。 DAVID MALAN:只要多一个, 因为一个页面撕裂, 我可以从字面上分 和征服,如果你愿意, 在半则服用了这个问题 一个巨大的咬出来。 所以这是一个例子 效率,可以说是一种算法 与我们所有人都 排序直观地熟悉。 但它只是为正确 我的其他算法 与对TWEAK 第二算法, 但它是如此有效得多。 而事实上,什么是计算机 科学家,或者反过来程序员, 书写时通常会做 代码是揣摩, 没事,我不希望我的 节目刚是正确的, 我也希望它是有效的 问题和解决问题很好。 今天在现实世界中想像, 像谷歌索引,搜索 像数十亿个网页,试想如果他们 使用第一算法来查找的猫 一个十亿pages--看着之中 第一页在他们的数据库, 第二个,第三个,只是寻找 一只猫,寻找一只猫。 这是相当不错的减缓它似乎。 他们可以改用东西 称为二进制搜索,这 没有coincidence--双向含义二,我们 不断分裂东西2,在half-- 他们可以使用二进制搜索 也许找猫甚至更快, 或不管它是你正在寻找。 坦率地说,有 更炫的算法 该做的不仅仅是更多 分东西两半 为了快速查找信息。 我们将讨论一点点 今天的午饭后。 因此,让我只能尽力代表这一点。 我们并不需要进入 任何数学或实际数字。 我们可以抽象地谈论这个。 但让我求婚,如果你 现在是具有讨论 与工程师 提出这种算法 而你试图让 计算的决定, 因为也许 工程师对你说,你 知道吗,我可以实现 像2分钟线性搜索。 就是这么简单。 二进制搜索是不是花哨,但 它会带我像10分钟, 所以5倍长。 有一个行业在这里,即使是在条件 在决定写什么软件。 你写的简单算法, 这将只是把你们俩分钟呢? 或者你花更多的时间,10分钟, 写爱好者算法? 你如何决定样的问题? 或者你可以让它多了几分真实。 我告诉我的老板是要采取 我任何一个星期10周 实施 在这种方式的软件,如何 你决定哪些 算法绿灯? 卡里姆? 听众:观众,我猜。 DAVID MALAN:观众。 你说的观众呢? 听众:如果它是怎么回事 由用户使用 谁[听不清]使用者[听不清]。 但是,如果它的东西你 只是在做自己 便利的问题, [听不清]更快。 DAVID MALAN:是的,它的快速和 脏来形容它的好方法。 事实上,如果你是 描述了很多我的时间 在研究生院,其中很多时候, 我写了糟糕的代码自觉so-- 至少,这就是我如何 合理化它 - 那么自觉, 因为即使我在写代码 这是执行相对缓慢, 我能写代码本身 相当快,支出仅几分钟 或小时而不是几天。 而事实证明,我 偶尔需要睡觉。 所以,即使我的代码需要8 小时运行,很好,很好, 我只是走在它运行时睡觉。 所以在当时,我认为这是 很巧,即使我显然 通过我的博士工作非常慢。 但是,反过来是 即,如果我写的软件 其他人谁 更要紧比我好, 让他们等候8小时 拿回自己的搜索结果 是不是所有的引人注目。 所以,花更多的时间 前面编写软件 即更高效,更 像我们的第三个算法, 可能有利于用户在一段时间。 因此,它实际上取决于在 时间如何将这些费用加起来。 如果你将要写作 软件使用一次, 可能还不如做 快速和肮脏的,因为他们说。 只是把它在一起。 它的代码尴尬 你,这是如此糟糕, 但它得到正确地完成任务, 即使它是没有效率。 相反,你花更多的时间 的东西,得到它恰到好处。 然后摊销随着时间的推移, 时间的前期费用 也许是值得的,如果你继续 优化为常见的情况。 事实上,这是在一个主题 编程,或计算机科学更多 通常,试图优化 不是为罕见的情况下 但共同的case--什么操作 是要一次又一次地发生? 如果你想拥有数十亿美元 用户搜索您的网站上, 你应该花额外的 周前面编写更好的软件, 让所有的用户受益。 现在,让我们尝试捕捉这个 形象地少,但没有这么多 数字。 因此,这里只是一个老同学的图表。 让我说,这就是时间。 并不要紧what-- 其实,不,不是的时间。 让我们把那另一个轴。 让我们说,这是时间, 这就是问题的大小。 和一个计算机科学家 通常可能调用 这仅仅局限于N。 n是像 我们去到变量中,其中 n是一个数,n个,以及它的 你有任何的投入数量。 因此,在这种情况下,n是 的页数。 所以它可能是1000中 的情况下,我们只是告诉。 所以,时间可以是任何计量单位。 也许,这是第二次。 也许,这是天。 也许,这就像翻页。 没关系。 无论你希望计算,即 将时间或等效的成本。 因此,与第一个 算法,如果我,例如, 有一个1000页的电话本, 我要画一个点那里, 因为如果它是1000页,花了 大约1000翻页,给予或采取。 然后,如果我有一个 2000页的电话本, 我要去画第二 在此点,因为2000页, 它就像2000秒 或翻页或什么的。 因此,当我前面说的,这是 样的线性关系, 这是故意的,因为我想 后来on--权now--划清界限。 这是怎样的一个直 行的关系。 斜率是1/1,如果你愿意。 同时,第二算法 说,如果你有1000页 而你使用第二算法, 在那里我数2的,把 同时两页,我要画一个 点低于或者高于我的原始点? 听众:下面。 DAVID MALAN:下面,因为正如我们所看到的, 它需要较少的时间,一半多的时间。 所以点应该是一半 高达另一个。 而同样的协议在这里,此点 也许应该是大致那里。 所以我的第二个算法,同样地, 具有随时间的线性关系。 而且我们可以得出它是这样。 所以,现在,第三个和最后 算法是有点难以得出。 但是直觉,如果我有1000 我的第三个算法的网页, 它应该只把我像10步。 如果我有2000页 我的第三个算法, 应采取我不要10 步骤,但11,只是多一个。 因此,我们只能勉强维持会看到这一点。 而事实证明,如果 我放大此,我 要夸大的效果, 该线的形状,最终 不是直line-- 因为,事实上,如果它是, 它看起来更像 others--它实际上是一个曲线 ,如果我们放大,是怎么回事 看起来更像这一点。 它 - 嗯,好吧,忽略这一部分。 这是我的钢笔一样的角度。 这是一个曲线,就是始终 越来越多,永远,永远,永远 增加,但只是勉强。 所以,随着时间的推移,你有一个 关系,即更喜欢这个。 它看起来几乎笔直。 但它是非常缓慢地上升。 但沿着几乎所有的点 您的x轴,水平轴, 它比其他行低。 所以这可能是一个关系 N,因此,如果您有n页, 你需要n秒。 这可能是有关系的n / 2。 您有n个网页,它需要 你N / 2秒,一半多。 而这是一个对数 关系,这 如果你还记得,日志N捕获基地2 这种增长,可以这么说。 因此,这是何许神圣 在这三个中的圣杯 在这里,因为它只是这么多 高效,但可以说更复杂 实现。 任何问题? 那么,让我做到这一点,让 我打开一个文本窗口 只是让我们可以尝试 在这里正式的东西。 所以,现在让我继续前进, 实现这个算法 在代码中发现迈克·史密斯, 如果你愿意,伪码。 我不打算使用Java或C ++。 我只是要使用排序 英语的语法,这是我们 一般会叫伪代码。 在这里,我有一个空白窗口。 而且我说的很第一步 第一种算法是拿起电话簿。 第二步是开卷第一页。 步骤3将看 麦克·史密斯页面。 如果页面上,叫麦克。 其他依次页,转到第3步。 完成后,让我们说。 所以它不是相当完美, 我们将看到一个时刻。 但是,让我们考虑一下 概念我在这里介绍。 所以步骤1和2和3 有相当多的动词。 他们声明,actions--做到这一点。 因此在编程 语言,我们一般会 叫他们陈述或 函数或过程, 打电话给他们许多东西。 但他们只是actions--做到这一点。 第4步是根本不同的, 因为它是一种问一个问题。 它说我们是一种 的在一个岔路口。 如果麦克在页面上,请致电 他,所以左转,如果你愿意。 如果没有,回去一定 其他page--或者说,对不起, 回去一些其他步骤,其中 导致某种循环结构。 而我们一次又一次地做一遍。 而实际上,你知道吗? 是啊。 否则,如果在书站结束。 因此,我们需要怎样的一个第三 状态,因为你 不能让翻页广告 nauseum,因为最终,我会 撞书的结尾。 并且在一个程序中的错误可能是 没有预见到的情况。 然后我才意识到,哦,等等 一分钟,我需要第三个场景。 如果我出的网页,我 真的应该只停留。 否则,它是不确定的。 这是怎么回事,如果我继续发生 说翻过这一页,回去, 这是当电脑 死机或崩溃,当你打 一些未预料到的情况那样。 现在,迈克 史密斯的第三算法 - 拿起电话本, 翻书序曲一到 不,不是第一页这个时候, 到middle--哦,嗯,那倒是 是第二算法。 让我们只是跳到第三。 听众:哦,对不起。 DAVID MALAN:那很好。 让我们只是跳到third--开放 以中,现在找迈克·史密斯。 如果页面上,叫麦克。 然后,我们究竟要在这里说什么? 还有什么? 我们可以表达这种 在任何数量的方式。 有没有正确的答案。 好吧,如果不再,但我们需要 be-- OK,我们确实需要两分, 但做我们想要去向左或向右走? 我们如何表达这一概念? 那么,在小李的情况下,是的,这是公平的。 但是好了,这实际上是一个很好的点。 没关系。 我们将继续与这个逻辑下去。 所以 - 听众:不到一半。 DAVID MALAN:是的。 所以,如果别的页面,我们会说,少 比·史密斯,史密斯的左侧, then--让我们来看看,是 这要复杂? 否则,如果屏幕出现之前,史密斯, 撕了一半,扔掉哪一半? 听众:我想 这是[听不清]。 DAVID MALAN:我听说两个答案。 听众:左。 DAVID MALAN:OK,扔 远的左半边,如Lakisa 前面说了,左 一半的话,我有种 想只是去中场休息,我去的权利。 或等价的,我做了一个小 一开始的有点乱在这里, 我切实想 再去步骤2, 其中,开到middle--或open-- 是的,我们只能说,页面中间。 而这种修复它。 它不再是一本书。 这只是一本书的一半, 如此开放页面中间。 else--是几乎没有。 第6步,否则,如果屏幕出现后,史密斯, 撕成两半,扔掉右前卫, 然后转到步骤2。 别的不干了,第四个情况下,如果 我们没有离开页面打开。 这样我们就可以打扫一下。 我们应该打扫一下。 这是很伪代码,如果你 会的,非常高的水平的描述。 但它确实一般拍摄的想法。 并再次,在这种情况下,我们 有一个条件的概念, 一个分支,在一个岔路口,使得 一个decision--如果,走这条路, 否则如果走这条路, 否则如果走那条路。 而这是一个非常普遍的 编程技术 决定哪个方向 去,可以这么说。 我们也有一些 的循环结构,其中 我们一次又一次地做一些事情。 现在,事实证明,很多 如在本实施例中, 作为超级精确是非常重要的。 但是,我们也看到了一些 我们保持通话抽象。 这是什么意思拿起电话簿? 我们只是那种服用 理所当然的在这个房间 这是有一定的语义。 我们都只是一种知道,哦, 好了,拿起电话本。 这是什么究竟意味着什么? 嗯,这实际上意味着延长 手,俯身,延长手指, 手指之间捏书, 站起来,用手拉向你。 我们可以真正做到 迂腐这一点, 真的是超级精确 至于我在做什么。 但是,所有这些步骤都统称 这意味着什么,拿起了电话本。 因此更早的时候,我说,每 前两个语句 可以被认为是一个 继续或函数, 实际上它代表了我们 保持通话的抽象。 这就像一个高层次的概念 的问题的说明那 实际上涉及相当多的步骤。 所以这一点,也是一个 在编程中经常性的话题, 因此我可能会写一个程序 使用语法像this-- pick_up_phone_book()。 然后,语法,我 要偷东西 从大多数编程语言。 现在,第1步看起来更加 更像是一个函数, 作为一个程序员调用它。 它看起来像代码有人 给一个名称,并给予 我在其他使用somehow-- 也就是说,什么线我突出 代表的功能,也许 我甚至没有实现自己。 有人年长,比聪明 我已经想通了 如何表达你的观点 的拿起电话簿。 它就像五个步骤我只是 列举了,把我的头顶部。 但他或她已经实现 这一点,给了那些几个步骤 一个名字,pick_up_phone_book。 而括号是 正是大多数程序员 在做这样的语句的结束。 我现在能站在他或她的 肩膀再也没有, 想想这意味着什么 拿起电话簿。 我只能说,拿起电话簿。 而这正是 我们所有的人在这里做。 当我们大概1 岁,2岁时, 有人曾教给我们什么 为了拿起电话簿。 从那之后, 我们已经抽象化了 从这些很无趣 机械步骤。 我们只是有一个 直观的了解 中意味着什么 拿起电话簿。 你现在可以推断 更复杂的things-- 建筑大楼。 像对某些人来说, 实际上具有意义。 承包商,建筑师, 有一定的意义。 他们会知道该怎么做,如果 我说,去构建一个建筑。 但在房间里我们大多数人不能 处理抽象的那个级别。 你需要告诉我们喜欢去拿 铲去得到具体 并钉上木块 一起和其他任何 参与建设的建筑。 那是因为我们还没有 尚未被编程理解 这意味着什么建筑大楼。 我们没有这样的抽象。 我们没有这个功能。 所以你会看到 编程语言,在一般情况下, 尤其是更现代的语言, 像Java,PHP和Ruby和Python, 他们更成熟 比旧的语言, 像C和C ++,但其他人。 因此他们提出更多 功能内置的。 更多的代码已被写入 人们过去 我们现在可以通过电话或 召唤或使用,因为我暗示 在这个位置突出显示的行。 所以,即使我们不说话 大约本身的编程语言, 只是伪代码,所有的 想法仍然在讨论中。 而事实证明精度 超级重要的,是抽象。 让我们试着 传达如下。 我不小心可能会被宠坏 这个在屏幕上闪烁的幻灯片 过早。 但让我问一个勇敢的志愿者, 如果你不介意的话来了。 你会在前面 相机,如果你与确定。 有没有人愿意来,并给 说明在这里你的同事? 只要有到这里来和 站在这里了,说一些话。 维多利亚是微笑最 并避免我的眼睛最。 你愿意来上了? 好。 如果每个人都在你的座位 可以拿出一张废纸, 如果你愿意。 横格纸是罚款。 过来这样。 或某些纸张的那 你昨天给予, 随便一个空白页 纸,如果你能。 如果你没有任何,只 如果你可以问你的邻居。 所以,就目前而言,对于 本例中,维 将要发挥的作用 一个程序员,工程师,谁 需要你的程序是,作为 电脑,做一些事情。 我们会看到什么假设 你决定做。 我们将看到她选择的精确度是。 如果这个演示云 教学上很好,很多错误 将作出,我们会再使用 随着讨论的机会。 但你应该挑战 要避免这些错误, 成为一个优秀的程序员。 因此在手的挑战,如果 你喜欢在这里走了过来, 在屏幕上的维多利亚前 这里 - 并希望,没有你 当我记得这个 闪现在屏幕上。 不要转身可言,因为 还有另外一个屏幕在这个房间 我可以关掉。 所以,不要回头。 在维多利亚面前 是一样的尖叫。 而她现在的工作是告诉你 你一张纸上画什么。 我们将看到,基于 单单口头指示, 计算机代码,如果你愿意, 如何准确的图纸 are--你的实现是。 合理? 听众:是的。 DAVID MALAN:OK,执行。 听众:画一个正方形。 [笑声] DAVID MALAN:而且没有 问题可能会问。 只能做有人告诉你什么。 哦,如果你有今天的幻灯片 在标签页中打开,不看你的标签。 好? 听众:OK,画一个圆。 一个slope--我能说的斜率? DAVID MALAN:给你。 听众:一个斜坡。 和一个三角形。 DAVID MALAN:好的。 而在这里呆一会儿就好了。 而且我要来 在短短的时刻左右。 没必要把你们的名字。 让我来到我身边 收集您的图纸, 如果你不介意撕裂出来。 下面是我们回来。 我会投影在屏幕上。 我看到一个正方形,圆形, 一个斜率和一个三角形。 所以这是一个答案在那里。 和let's--哎呦。 谢谢。 这里的另一个品种, 和一个它的后面。 因此,他们似乎都捕捉到的精神。 谢谢。 还有一个,这里是另外一个。 斜坡的解释是 有点不同,有点弯曲。 与最接近的,或者是因为 与你已经特异性精彩 描述的,或者你有种 看到它之前,这确实是 维多利亚什么实际描述。 但现在,那些你们谁 没有得到它完全正确, 让我们在这里提供了一些异议。 所以维多利亚先说画一个正方形。 而现在,我们可以假设 今天的缘故 大家都知道 如何绘制一个正方形。 但是,这并不完全清楚,对不对? 你怎么还能有 画出的方形,或在 可能是一些模棱两可的 这里的电脑吗? 听众:位置和大小。 DAVID MALAN:位置,对不对? 在座的各位有一些形状的纸, 一般矩形,但稍微 不同的尺寸。 但你肯定会已制定, 如果你想,一个巨大的广场,也许 一个小广场。 也许,有人旋转。 我不认为我们看到了。 但是,它可能是更多的钻石 喜欢但还是尽管如此, 数学上的正方形。 所以这是可以说是模棱两可。 然后她说,画一个圆。 你们有些人根本旁边绘制 它,这是没有道理的, 因为人类倾向于认为或阅读 从右到左的大多数语言,所以不是 一个坏的猜测。 但那个圈子可能 一直在正方形内, 本来是围绕着 广场上,本来是在别处 在纸张上的,所以可以说是模棱两可。 斜率可能已经也许 采取最自由口头 有什么意思。 和你们中的一些解释 它作为一个波浪线 或直线等。 然后三角形,也可以有 被定向在任何数量的方式。 因此,在短期,即使有一些 你一眼,你就像,哇,好 简单,小孩子可以 得出这样的,好了没有 真的,除非你 超级,超级说服力 并告诉计算机 究竟该怎么做。 因此,如果我们可以,如果你有 另一张纸上,让我们 试试这一次。 我想给维多利亚1 这里,屏幕上的其他的例子。 再次,不掉头 不看你的幻灯片。 我给她一点时间 想想如何描述这一点。 不要让他们看到 恐惧在你的眼前。 [笑声] 再次,这一次杠杆 其中一些外卖 并试图让几乎所有人 至少正确的答案。 听众:OK,取 一张纸,看看 在一张纸的中间。 在那片中间 纸,画一个立方体。 [笑声] DAVID MALAN:有我们学到了什么? 我们是如此接近。 OK,重复,如果你能为大家。 听众:在的中间 一张纸,画一个对象, 它看起来像一个立方体。 DAVID MALAN:OK,这是 你所得到的工作。 请允许我以分析 并没有那么多的关键, 但要索赔 维多利亚肯定 似乎非常想在 高层次的抽象,它 不是没有道理的。 因为否则的话,我们都会 是非常不正常的, 如果我们是有史以来如此精确 与我们所做的一切的世界。 但话说到了我middle-- 以为我们是在这样一个良好的跟踪 那里,就像去正中央 页面,然后绘制一个立方体。 于是,她的思维抽象, 因为她还是观看 什么是确实是屏幕上的立方体。 但是,有这么多的机会 口译那里。 而事实上,有这么多 你可以表达其它方式 是,我将在稍后提出。 所以在这里我们有一个化身 在picture-- whoops--之一 图片的化身,所以 小三维它, 这是很好的。 这里是另外一个,在这里你有 同样的,虽然它是一种开放的立方体。 有些人把它一点点 更加扁平化,二维的。 这很好。 所以,确实是在 纸张的中心。 这一次我想你会 喜欢,因为如果我们何去何从, 这就是她被描述的。 所以,现在,让我提出怎么回事 我们可以描述这种情况。 早在一天,一个最 比较常见的方式来学习编程 是写代码,写 指令线, 该控制的小 龟在屏幕上。 标志和本其他的变种 是语言的名称。 而龟生活的世界。 因此,假设该矩形 空间是他的世界。 你会被assuming--我做起 真的不知道怎么画乌龟, 让我们像这样做。 然后,他有一个壳 然后也许有些脚。 所以,你可能有这个小 字符在屏幕上。 并在此对象 程序设计语言 是迫使龟 往上走,下,左,右 并把他下笔 或拿起他的笔了, 因此他居然可以在屏幕上绘制 在这个平面呈长方形的世界。 那么,我想你可能会去, 并且,你应该考虑跳水 到精神上描述时, 说明更一般地, 我会声称,就是把你 笔在middle--下降 我们会摆脱 乌龟,因为我真的不能 不断吸引他很好。 而现在,还能怎样 我说画一个立方体? 好了,我们可以这样说平局 一个对角线东北,例如 或以45度角向上。 而这可能会在这里得到了我。 而我从一个立方体很远。 但现在,我可以说的东西 像旋转90度到左侧 画线的 等长西北部。 而且我可以继续 具有类似的方向。 而且这不是一件容易的事。 坦率地说,我们可能会 在这里已经五分钟。 但也许我们会得到以 东西,在一天结束时, 最终被一个立方体,但我们 跳水是抽象的内 做到这一点在如此低的 级别你不能真正 看到你在做什么,直到整个 事情是居然还有在页面上。 所以这是一个总的原则, 再次,programming--这个想法 抽象。 它是如此奇妙 强大,因为再次, 她只是说,画一个立方体,所有的 我们几乎将神交非常快。 我们只是知道, OK,绘制一个立方体。 我们可能不知道的方向, 所以我们可以是一个小更精确, 但我们可以大致想象 或者知道一个立方体是什么。 这是非常有用的, 因为如果你每次 坐了下来,作为一个程序员在 键盘来写代码, 如果你不得不想在这样 较低的水平,我们谁也没 会永远做成任何事情。 当然,没有人会 享受编写代码的过程。 它会像在0和1的写作, 坦率地说是不是所有的很久以前 人类是在0和1的编写代码。 我们很快就想出了 这些较高级别languages​​-- C ++和Java等。 因此,让我们试试这个一次刚 翻转表,让我们所有的人 不得不思考的机会 在相当的方式相同。 我们可以得到一个更多志愿者这 来时间最长的板和借鉴, 不背诵? 是啊,OK。 本,上来吧。 而且,本,在这种情况下,一旦你 面对董事会,不看左边, 不看的权利。 只能做你的 同事在这里告诉你。 而对于其他人的 房间里,你现在的程序员。 他的计算机。 和画面我在这里选择 提前这是一个在这里。 他们just--他们在想 一个有趣的笑话就是一切。 所以会有人不喜欢 志愿的第一条指令 或声明应 命令Ben的笔吗? 我们会集体这样做,也许 从每人一个指令。 对不起? 听众:画一个圆。 DAVID MALAN:画一个圆 是我听到的第一件事。 听众:向上顶。 DAVID MALAN:往上顶。 OK,我们可以让你删除,撤消。 而现在,别人。 丹,你会舒服 提供的下一个指令? 听众:当然,绘制中心 圆的底部的, 与small--一点 从狭小的空间, 画一条直线下降到三 的方式季度在案板上 一个微小的角度,以你的左边。 DAVID MALAN:好。 听众:很小的角度。 DAVID MALAN:撤销,Ctrl-Z键。好。 安德鲁,你想提供 向上的下一个指令? 听众:当然。 从该行的底部, 进一步轻微angle-- whoops--也许大约三分之一 长度[听不清] 很小的角度向下像 第三[听不清]的长度。 所以是的,从这一点来说, 画一条线第三 先前的长度的 线进一步向左侧。 DAVID MALAN:那行吗? 直线,这是确定? OK,奥利弗,你要 提供了下? 听众:[听不清]从 圆的底部,[听不清]。 借鉴右侧 的[听不清]厘米。 [笑声] DAVID MALAN:我想你会 要转换这里是英寸。 听众:停止。 [笑声] DAVID MALAN:OK。 [? ARA,?]你想 提供了下? 听众:绘制[听不清] 上部[听不清]相同。 [听不清]画圆,画到 [听不清],并绘制[听不清]。 DAVID MALAN:OK,没有更多的撤消。 让我们做一个或两个指令。 克里斯,你想提供一个? 听众:在底部 圆的,[听不清] 绘制平等线喷溅 向下向左[听不清]。 DAVID MALAN:OK。 安德鲁? 我们did--卡里姆? 听众:从右边线开始, 左行的末尾,底部 你要去说得对 的长度相同线 你在,绘图 正确的[听不清]。 [听不清]度,所以[听不清] 度在右侧。 DAVID MALAN:好的。 让我们暂停一下。 不要转身呢。 让我们暂停,让我们 尝试另一个尝试 我们之前透露给本 他一直画。 您可以随机播放奔 在right--或实际, 没有,我们只是给你 另一块板,甚至更好。 所以会有人现在想 采取更多的办法 维多利亚在早期花了,在那里 我们在一个更高层次的抽象说话 在短短一个句子 两个描述奔 没有什么画 渐入杂草, 可以这么说,在这一个较低的水平? 维多利亚。 [笑声] 听众:画一个图 的行走的人。 而他的腿和胳膊 必须是右侧。 DAVID MALAN:OK,这就是你得到的。 好吧。 我们为什么不透露给奔他做了什么。 所以,掌声雷动。 这是最难的也许。 因此,即使我们谈论 在相当愚蠢的条款 关于刚刚绘制 图片,希望你 才能真正体会的程度 表现,可能是必要 为了告诉计算机做什么。 而事实上,这一事实本 之所以能够如此迅速地得出这样的 是有点遗嘱于使用 语言,也许是更高层次 英文版本,允许他 只是使用的话,或者听到的话 从维多利亚,这让他 这些abstractions--只画 一个人影步行到 right--那种有 一些语义它不是 几乎一样明显,当你只是 他说,把你的下笔,画 到右侧,绘制到左边。 所以这也很 常见的编程。 这可以说是像 非常低级语言,编程 在0和1的,如果你愿意。 并且这将是一个更高的水平 编程语言在Java中, 或类似的东西。 的A位 过于简单化,但是这 该有点像情绪 感觉,你觉得当 用一种东西或其他。 无奈有点这里所需要 对于这样的精度,但机会 是有点宽松与 这里的解释。 不过,当然,错误 可以作为结果产生。 如果您想在home--我们 不会做这一块的分类 - 但如果你想 这带来一个归属, 我以为我们会潜入这一点。 所以,如果你想打这个 游戏与其他显著 或孩子或类似物,则 可能会喜欢这一点。 因此,让我们继续前进,并期待在最后 这里计算思维的东西。 这给我们带来了约翰 奥利弗,不为剪辑 你可能已经看到昨晚, 但是有点最近的问题。 几个月前,大众汽车 花了很有点高射炮 是什么原因,如果你知道吗? 他们怎么惹上麻烦呢? 是啊,所以他们emissions-- 试图击败排放 通过实质上有测试他们的 汽车污染环境少 当他们的汽车被正在测试 ,污染环境的更 当汽车没有被测试。 什么是越来越有趣 在世界上,你可能已经推断出 从like--讨论是什么 它 - CarPlay,苹果软件汽车 而事实上,许多 我们越来越多地 有触摸屏在我们的汽车, 有一个可怕的量 在人们的软件 今天的汽车,这 坦率地打开蠕虫的时候一个整体 它涉及到安全和人身风险。 但在今天,让我们 只关注什么 参与编写软件 可能已耍花招系统。 对于的定义 问题,对于那些不熟悉, 让我们来看看约翰·奥利弗。 而对于那些熟悉 这个问题,让我们来看看它 在通过约翰·奥利弗一个有趣的镜头,以及。 因此,让我打这个游戏,我 认为,三分钟的介绍。 该死的。 [视频回放] -汽车 - DAVID MALAN:很明显, 在YouTube上,it's-- - --the最聪明的字符 在速度与激情的电影。 本周,德国汽车制造商 大众发现自己 在丑闻的中间 潜在的犯罪比例。 -Volkswagen是支撑数十亿 罚款,可能的刑事指控 其高管,如 公司道歉 索具1100多万辆汽车,以 帮助其击败的排放测试。 - 某些柴油车型设计 与先进的软件, 使用的信息,包括位置 方向盘和车辆的 速度,以确定汽车是 进行排放检测。 该种情况下,发动机 将减少有毒物质的排放。 但是汽车操纵旁路 当它被驱动。 排放量增加10至40 次超过可接受水平的EPA。 -Wow,10〜40倍 大于EPA允许。 这是最糟糕的事情 大众已经做过, 是你可能会说,如果 你从来没有听说过二战。 但也许是如何最确实的标志 比较麻烦大众是, 是人们在很 上面已经下台。 该公司首席执行官辞职后,周三 争着做损害控制, 说他对不起不休,这 响起了巨大直到它横空出世 他只有10%的遗憾 但操纵了他的嘴 人为夸大他的sorriness。 而与此同时,大众汽车在美国 首席有他自己的道歉。 - 让我们清楚这一点, 我们公司是不诚实的。 而在我的德语单词,我们 已经完全搞砸了。 是啊,但完全拧 最多是不是德国人的作品。 和德语 有许多美丽的短语 来形容,就像这样的情况下, 如[德国],这意味着大致, 自带的悲伤 从业务相关的谎言, 或[德国],换算 作为羞辱那些涉及父亲 汽油云。 这是一个美丽的语言。 它只是帆了舌头。 顺便说一句,而男人的 道歉也许听起来诚恳, 值得注意的是,他在讲话 2016年官方发布派对 大众帕萨特,这意味着短期内 说对不起后,他这样表示。 - 谢谢的光临。 享受夜晚。 旁边是蓝尼·克罗维兹。 [音乐] -OK,OK,你的结局 道歉与旁边 蓝尼·克罗维兹不 尖叫清醒悔悟。 它的尖叫声,我们问苯教 乔维,他说没有。 大众汽车的品牌有 遭到严重破坏。 坦率地说,他们的新广告 运动是不完全帮助。 - [德国],我们在大众汽车希望 为欺骗你道歉 我们的车辆。 [结束播放] DAVID MALAN:所以这是一个 环岛路of-- sorry-- 这是一种迂回的方式 引入一个基本问题 在软件,这是你 需要检测一定的条件。 这样一来,在眼前的问题在这里 是,请问有车有可能, 作为在软件中实现 这些程序员, 检测到它实际上被测试? 所以要超清晰, 他们在做什么 是,在环境中 程序员想通 该车当时正在 经过测试,他们不知何故 汽车排放少排放,少 排放量,所以毒性较低的烟雾 和这样的。 但是,当它通常 驾驶的道路上, 它只是发出尽可能多 污染,因为它想要的。 所以,我们怎么可能写 伪这个算法? 我们怎么能写的伪代码 在汽车运行的软件? 我的意思是,简而言之,沸腾 到这样的事情。 在被测试,减少排放。 其他排放更多。 但是,这是一个小 过高的水平,对不对? 让我们尝试潜水至于这是什么 被测试手段抽象。 换句话说,即使你什么都不知道 问题关于汽车,什么样的 也许你为了确定是否问 你正在测试中,如果你的车? 什么样的特点可能是 目前如果汽车正在测试? 听众:检测设备。 DAVID MALAN:检测设备。 因此,如果检测设备 在附近,然后减少排放。 所以,我可以想像实施 与某种相机 或者检测什么是你的周围。 让我,让我们 只是感觉太复杂 实际上还有其他 硬件只是用于这一目的。 听众:如果你在 公园,如果你的引擎盖打开。 DAVID MALAN:在公园或 引擎盖打开,所以这是很好的。 听众:与汽车的运行。 DAVID MALAN:所以这是一个有点 更concrete--和汽车的运行。 因此,这将是一个会合 几个不同的情况下,如果你愿意。 因此,如果汽车在公园里,甚至 虽然这是一个非常机械的东西 通常情况下,我可以 想象编写软件, 特别是因为有 常光有这些天, 我可以想像那里是 软件可以查询器 或什么不是,你在公园里,有 你的驱动器,你在相反。 我可以回去了 回答是肯定的任 或无来者的题型。 所以,我也大概可以回答 一个问题一样,是引擎盖打开。 也许,有一些类型的传感器 要么给我回1或0, 真的还是假的,发动机罩打开。 然后车跑,我可以检测 通过什么样的机制,不知何故? 一样,汽车运行过程中,我 可以检测到它的上, 我能以某种方式检测 该汽车在行驶? 听众:RPM包。 DAVID MALAN:是啊,所以有 总是那针 告诉你每多少转 分钟的车轮正在经历。 因此,我可以看看那个。 如果它不是0,这可能 是指汽车在行驶。 但是,我们必须是一个 稍微细心那里, 因为 - 让我们简化this-- 如果我们只是说,如果车跑, 我们不希望只是减少排放, 我们想,如果汽车运行 和它的被测试。 所以有一些其他 成分,乡亲 已经假设该软件是干什么的, 由于缺少实际的源代码, 您可以从只有几分推断 汽车的物理效应,以什么 可能是下面怎么回事 罩中的软件。 所以,如果车跑,也许, 比如说,后轮不动, 这可能预示 的一种考验? 我究竟在暗示这里? 是的,也许,这是在一个 这些辊的事情, 其中类似的车轮转向 在前面或在后面, 取决于它是否是前轮或 后轮驱动,所以一半的轮子 是移动的,但该 另外两个都没有,这 是在现实世界中一个奇怪的局面。 如果你开车在 道路,这是不应该的。 但如果你是在一个仓库 对某种辊系统, 确实可能发生。 我认为,人们还提出,也许, 如果汽车是运行和转向 没有秒针轮动,即 太可能是一个信号, 因为这是合理的 就像道路上的通俗易懂。 但即便如此,人类可能是 移动一点点或肯定 超过几秒钟。 或一过程 分钟,赔率是它不 要在对被固定 完全相同的位置。 因此,换句话说,我们 可以采取减法, 你正在测试, 打破这个功能 到这些部件的成分。 这就是真正的大众汽车什么的 工程师在某种程度上做到了。 他们编写软件自觉地 检测汽车是否正在测试中, 因此,减少排放,否则 发射在通常的方式。 这里的问题也是如此, 是,软件不是 是你真的可以看到,除非 有所谓的源代码。 因此,有两种不同类型的 代码 - 至少两种不同类型的 在世界上的代码。 有一种叫做源 码,这是不不像 我们一直在写,源代码。 这是源代码写在 一个叫伪语言, 这只是一些英语等。 还有就是它没有正式的定义。 但是,C,以及Java,C ++,这些 都是正规的语言说, 当你在写他们,你有什么 是包含源代码的文本文件。 但也有一些在 世界称为机器代码。 和机器代码,不幸的是, 仅有0和1的。 所以机代码是什么 机器理解,当然。 源代码是什么人懂。 一般,但不 总是有一个节目 一个程序员使用了采用源 代码并把它变成机器代码。 而这程序 一般被称为编译器。 所以,你的输入源代码, 你的输出是机器代码, 而编译器是一块 软件,做这一进程。 所以实际上很好地映射到 我们的投入,算法的输出。 但是,这是一个非常具体的化身 的这一点,这是说, 即使你拥有大众汽车的一个 汽车就是犯了这一点, 它不喜欢你可以打开 罩或打开的用户手册或者查看 在源代码,因为由时间 到达您的车停在你的车道, 它已经被 转换成0和1的。 而且它是很辛苦的,不是不可能的, 但很难收集很多的事情 从刚刚在看 底层0和1的。 所以,你自己看着办吧,最终,如果 您了解机器operates-- 英特尔inside--如果你了解 英特尔架构, 但它是非常耗时。 而即使在那里,你可能 无法看到的一切 该代码可以做。 这个或任何疑问 样的过程更普遍? 而实际上,我们可以配合这个讨论 苹果昨天的讨论。 这也就是为什么联邦调查局不能只 去看看在犯罪嫌疑人的手机 找到的代码行,为 例如,使密码 或启用,80毫秒的延迟。 因为到那时它的 在老乡的iPhone, 它已经被 转换为0和1的。 好吧,让我们暂停这里为我们 看看计算思维。 我们为什么不采取有15分钟的休息时间。 而当我们回来,我们将 看看编程 本身并开始绘制一些 这些高层次的概念 一个实际的,如果俏皮, 编程语言。