无限的构建工具包MarvinMinsk

2023/4/20 来源:不详

导读马文·明斯基和终极万能工匠玩具——艾伦·凯(AlanKay)

艾伦·凯在犹他大学读博士时(年),制作了一台由硬纸板做的Dynabook(“适合所有年龄儿童的个人计算机”)原型机。年,他加入了施乐帕洛阿尔托研究中心,在那里推动了图形用户界面和以太网技术的开发,并领导了Smalltalk和Alto计算机的开发。他曾担任雅达利公司首席科学家、苹果公司高级研究员(植物园项目)、华特迪士尼公司研发副总裁和惠普实验室高级研究员。年,他成立了视点研究所(ViewpointsResearchInstitute),开发了Squeak[插图]和eToys。

让我提前坦白:我爱马文!我使用一般现在时说出这句话,是因为马文虽然在肉体上离开了,但他仍然活在所有有幸认识他的人的脑海中,这些人包括认识他本人的人,以及通过他的众多演讲或像本书一样的著作认识他的人。我想,大多数读过本书的人也会感觉认识了马文,因为“思想中的马文”开始鲜活地存在他们的脑海中。正如迈克·特拉弗斯所指出的,马文的一条主要的经验法则是:我们应该努力将伟大的思想家们内化到自己的头脑中,让他们能够不断地思考,从而帮助我们思考。我正要试着如此行事——在这篇导读里开启“马文频道”。

我尤其喜爱马文这篇独具一格的文章。这是他为了支持他所坚信的伟大愿景而写给儿童读者的:如果你们能理解并好好使用新的计算媒介,将对你们成长的过程产生巨大的积极影响,你们会对世界产生更加伟大的看法,并会获得一套处理世事的思维工具。他直接对孩子们发出呼吁。因为他是研究计算机的人,所以比较了解计算机真正能做什么。而大多数成年人(包括许多计算机专业人士)对计算机的认识都还十分肤浅。学习“伟大的思维”的一个主要困难是,我们总是从“我们在哪里”开始,并试图将新的想法和事物融入我们认为自己已经知道的东西中。如果新的想法或事物与我们的非常不同,那么我们常常要么完全忽略它们,要么将它们强行扭曲,使之符合我们当前的“私人世界”(即我们两耳所闻的世界)。马文希望孩子能有这样一种思维方式:“我认为这个想法或事物是这样的,但它也可以有另一种构成方式,它可能是由我完全没有想过的东西构成的。”(马文很擅长这一思维方式!)

马文常常用万能工匠玩具与上述思维方式做类比,因为在玩这种玩具的过程中,你可以通过少数极其简单的零件,做出多到令人惊讶的各种东西,就像一个想法或事物可以有不同的构成方式一样。这些零件非常像砖块和其他简单的基本构件,对计算机来说,就像是计算机材料。马文从小就是个非常了不起的万能工匠建造家,并且就像每个孩子都知道的一样,他知道建造恰如其分的东西会带来巨大的满足感。与此同时,孩子在愉快地专注于做好某些事情的时候,学习行为也自然而然地产生了。正如玛丽亚·蒙台梭利(MariaMontessori)多年前所指出的,玩耍就是孩子的工作。孩子在玩耍中学习,得到成长。

我们通常用万能工匠玩具做的第一件事是,制作超越零件本身的各种结构。从开始动手摆弄零件后,我们总能想出办法完成这件事,就像我最终用零件建成了一座摩天大楼。

通过这“第一件事”,我们立即可以了解到,万能工匠中最重要的不是其部件的细节,别的建造材料也有基本组件及其组装方式,其中的设计方式才是最重要的,因为大多数伟大的思维存在于组合这些部件的设计中。

我们可以以另一种方式看待这种伟大的思维:如果所制造的东西越复杂,那么和材料相比,架构就越占据主导地位!换句话说,在我们所接触和思考的事物背后,往往是一些本质上具有组织性的奇妙的东西。正如马文所说,“这些部分如何相互影响比它们本身是什么更加重要。”

万能工匠的一些部件是可移动的,因此,我们可以制作一辆可以拖着或拉着走的玩具车,或一辆带有驾驶室的拖拉机。

那么,我们是否可以制造一辆自动行驶汽车呢?万能工匠并没有直接提供制造这种汽车的方法,但我们可以即兴创作。例如,我们可以把我们做的摩天大楼放在玩具车上,用一些重的东西(比如袋子里的硬币)当作砝码,然后用绳子把玩具车的后轴缠绕起来,让它被重物拉着转动。

看看我们制造的这辆自动行驶汽车。它还不够“聪明”,不能防止自己撞到墙上或从桌子上掉下来。我们能让它“聪明”地避免这些情况吗?在这里,我们说的“聪明”又是什么意思呢?

马文与派珀特合作多年,共同探索了优秀的智能工作模型。他们开始超越传统的编程和计算,寻找更好的部件、组织方式和设计方式来制造“思维的材料”。

他们灵感的来源之一是控制论领域,这是马文在大学期间钻研的领域;另一个来源是自主的、略带智能的机器龟,它是格雷·沃尔特(GreyWalter)制造的,不仅能适应任何复杂的环境,还能学习条件反射(就像巴甫洛夫的狗)。马文认识格雷·沃尔特,受其启发,为儿童设计了基于Logo语言的海龟几何图形系统。

马文和派珀特还发现,大多数有趣的系统都不分层,而是以各构成部分相互依赖的方式交叉连接;此外,过程是比“事物”更重要的系统构成部分。

马文在写这篇文章的同时,还在写一本关于大脑运作的书——《心智社会》。该书的开篇写道:“要解释思维,我们必须展示思维是如何由无思维的、远远比我们所认为的聪明的事物更小、更简单的材料构成的……但这些简单的小粒子是什么?它们是构成我们思维的‘智能体’吗?”

我们制作了一些万能工匠玩具,其整体能力远大于其部件能力。我们能不能用万能工匠玩具,制造出比其构成部件更加聪明的智能体呢?

为了让自动行驶车辆更加智能,我们必须让它能足够早地感知将要发生的事情,从而在灾难发生前及时做出动作,好让汽车停下。其中一种实现方法是给车辆安装“传感器探头”。它将与车辆前方的障碍物接触,并与刹车系统连接,当接触障碍物时,就会刹车。假如把传感器探头放到车辆后侧,我们就会得到一个“碰撞传感器”。当车辆后方被撞时,刹车就会松开,并促使车辆启动和躲开。

当孩子们有了一个大创意,并且发现有足够的万能工匠玩具部件来实现这一创意时,他们会非常高兴!然而随着这个创意的实现,新的、更好的创意也会不断出现,因此,部件总是无法满足孩子们的需求。

而计算机有许多美妙之处,其中一个尤其美妙之处便是:无论你要实现任何想法,总能在计算机中得到足够多的部件,并且这些想法必定会带来更多美妙的想法。在计算机的世界中,除了我们的想象力,几乎不会有摩擦,也不会有限制。

孩子们使用像万能工匠这样的玩具进行建造活动,是一个从智力上真实体现成年人所做事情(此处特指工程和艺术活动中的设计与建造之类的事情)的缩影。在孩子使用万能工匠建造的活动中,设计的过程并没有因为他人预先做好特殊部件或预先完成设计(就像现在许多当代“建筑玩具”所做的那样)而消失。大多数预设的目标认为,相对于在学和做的斗争中获得乐趣,成功更加重要,无论这种成功多没意义。然而,对于伟大的思维及其思维能力的学习,正是我们在与难以学习的想法不断斗争、逐渐领会并最终熟练的过程中发生巨大的思想变化的结果。许多“学习上的困难”是至关重要的,西蒙·派珀特将其称为“努力的乐趣”(hardfun)。

受到格雷·沃尔特制造的机器龟的启发,Logo语言世界中诞生了一个绝妙的想法:为孩子制作一个可编程的实体海龟。它的“思维”由孩子编写的程序来提供。这就把格雷·沃尔特巧妙地用一些电线和电子管完成的事情,用一种真实且深刻的方式带入了孩子的世界。

实体海龟和儿童编程语言的结合,对现实世界和计算机世界都非常有益。人们由此发明并创作了许多有趣的项目,包括通过编程告诉海龟如何画画和做事,从而赋予海龟更多能力,同时让孩子在讨论中真正学习数学。这些项目通过让孩子给海龟构建大脑,使海龟开始思考和学习。在项目开展的过程中,孩子在生物学、心理学方面获得了重要的认识,同时也对自己及自己的思维有了重要的认知。

一个简单的Logo程序——“条件反射行为的智能体”,它能让海龟执行格雷·沃尔特所实现的“漫步探索”行为。海龟会一次又一次地向前移动“一点点”,然后在向左45°和向右45°之间随机地转一个角度。

接下来将介绍Logo编程语言的一个派生版本——通用GP的块拖放式编程语言。它可以很方便地使用任何网页浏览器进行在线访问。除了Logo语言提供的功能,GP语言还有一些更实用和更现代化的功能。用GP语言完成的程序,它与格雷·沃尔特的“漫步探索”程序相同。

这个程序只能让海龟达到“能动”的水平,远达不到“聪明”的水平,海龟会被墙壁或其他障碍所束缚。让我们给它添加一个并行的“避障”行为程序。为了实现“避障”行为,须使用触碰传感器检查是否撞上了什么东西,如果是,海龟便往回退。

值得注意的是,无论海龟向前还是向后走,总会有一个随机的转弯,这有助于海龟最终摆脱障碍物。海龟的轨迹是否让你想起很久以前的Roomba呢?由此可见,两段简单的控制程序可以引发很多事情。

终极万能工匠

丹尼·希利斯(DannyHillis)和布莱恩·西尔弗曼是马文的两名学生,也是著名的计算机科学家,他们制作的下“井字棋”计算机几乎展示了万能工匠玩具构建能力的极限。这款计算机包含的许多想法,是万能工匠玩具的发明者从未想过的。

万能工匠玩具的局限性并非在逻辑上。从逻辑上讲,我们可以用它们来构建一台完整的计算机。其局限性是在实际使用中体现的。万能工匠玩具会存在各种各样的误差、摩擦和其他一些问题,在这些问题累积一段时间后,计算机将会因部件卡死而无法运行。为了尽可能降低这类问题的影响,第二台更为简单的万能工匠计算机被设计出来。

我们可以看到,在本书收录的第1篇文章中,马文为什么使用万能工匠玩具来类比孩子通过设计和编程以“创造前所未有的东西”的天性和力量。我们创造东西不仅是为了拥有,还是为了学习——首先用我们的手去感觉,用我们的眼睛去看,然后退一步,更加深入地思考,我们的行为从“细微修改”变成了“深思熟虑”(from“tinkering”to“pondering”)。计算机可以让我们把手工制作和仔细思考的东西以动态的行为体现出来,提升我们思考的质量。从这个意义上讲,计算机即“万能工匠”!

在计算机程序设计和编程方面,我们和马文一样延续了一个悠久的传统。这个传统始于几何画板(Sketchpad)的诞生。年,伊万·萨瑟兰(IvanSutherland)发明了几何画板这个现代交互式图形计算程序。萨瑟兰的顾问便是马文和克劳德·香农。

我们可以在几何画板中看到今天的个人计算机雏形!就像55年前,我们能够通过几何画板,轻松地将一座桥的草图转变成可用于计算应力、应变和显示桥梁外观的动态模拟程序;今天,我们可以让孩子画出动物的神经结构图,让它们运作起来,并尝试模拟动物。几何画板是在超级计算机上运行的,这台超级计算机有足球场那么大。今天,孩子们的个人笔记本电脑就有更强的计算机处理能力,而这些笔记本电脑只需要几百美元,并且只有几何画板的显示器那么大。(现在,足球场大小的计算机就在显示器的背面,而且速度更快!)

马文参与了笔记本电脑和儿童计算机发明的工作。年,当我在犹他大学读研究生的时候,在那附近的一个计算机教育会议上,马文做了一场令人兴奋的演讲,演讲的主要内容是派珀特及其帮助孩子学习伟大思维的思想。那一年的下半年,我在波士顿郊外参观了派珀特和辛西娅·所罗门的Logo教室,他们所做的一切令我无比惊讶,至今仍然如此!在返回犹他州的飞机上,我画了这张“适合所有年龄儿童的个人计算机”草图:“创造性思维的动态媒介”。这一灵感来自几何画板、Logo和我们研究团队的想法。这部分工作后来发展成为我们现在使用的个人计算机、笔记本电脑和平板计算机。

年,一些孩子通过编写工作模型程序让他们的草图活动起来,并学习条件反射是如何工作的。他们使用的理念和技术直接来自伊万·萨瑟兰、马文、派珀特、辛西娅和当时的其他先驱。本导读中的示例阐释了(尤其是对孩子来说)什么是计算机真正重要的东西,那就是如何超越对传统媒体的模仿,产生新的动态方式来表达想法、理解和学习复杂系统、建立科学理论模型,并创造只有他们才能创造的新的艺术和产品。

您认为孩子应该用计算机做什么呢?

无限的构建工具包——马文·明斯基(MarvinMinsky)

现在的成年人总是太焦虑,尤其焦虑如何才能更多地了解计算机。他们想让所有人都“精通计算机”。“精通”意味着能读会写,然而,大多数计算机书籍和课程只是教你如何编写程序。更糟糕的是,这些书籍或课程只介绍命令、指令、编程语言和编程语法规则,几乎从不举例子。但真正的语言不仅包括单词和语法规则,还包括文学——人们使用语言要表达的东西。没有人能只通过学习语法规则就学会一门语言,我们也往往是从感兴趣的故事开始学习语言的。本书将讲述一些关于Logo编程语言的好故事。

人们总是试图以解释普通事物的方式来解释计算机,就像通过学习加法表和乘法表来教授算术一样。因此,他们也从教授如何用计算机进行两个数字的相加开始来解释计算机,接下来再教授如何让计算机把很多数字相加起来。这十分枯燥:一是大多数人已经厌倦了加法,二是这个故事确实很无趣。

我们不能因为老师想让数字变得有趣而指责他们。让我们面对现实吧,数字本身并没有太多特性,这正是数学家如此喜欢它们的原因!数学家发现,没有任何有趣特质的东西具有神奇的魔力。这听起来自相矛盾,然而你仔细想想,这正是我们能够以各种不同的方法使用数字的原因!无论计数对象是花、树、汽车还是恐龙,为什么我们对这些不同种类的东西进行计数会得到同一类结果?为什么我们总是以相同的结果(即一个数字)告终?这就是算术的魔力。它抹去了所有的细节,使你所计数的东西的特质消失得无影无踪。

计算机程序正好相反。计算机程序创造了前所未有的事物。一些人从中找到了一种全新的体验:一种自由的感觉,一种可以做任何自己想做的事情的力量。这里的“事情”不是指“很多事情”,而是“任何事情”。我说的并不是通过像许愿那样的方式来获得自己想要的,也不是拥有一艘比光速还快的宇宙飞船,或是一台时光机器。我的意思是,这种体验就像给一个孩子足够的积木,让他建造一个原尺寸的城市模型一样。孩子仍然需要决定怎么运用这些积木,但是没有任何外部的限制,唯一的限制是他们的内心。

我第一次有这样的经历是在上学之前。那时还没有出现任何计算机程序,但已经出现了玩具构建工具包,其中有一种名为“万能工匠”的玩具。使用万能工匠玩具做建造只会用到两种零件——木棍和线轴。线轴就是小木轮,每个木轮的中间有1个孔,边缘有8个孔。木棍是一些圆形的小棍子,它们长短不一,可以塞进线轴孔里。这些木棍的末端有小裂缝,所以有弹性,当它们被插进孔里时,就能被紧紧地卡住。

神奇的是,用线轴和木棍足以做出任何东西。有些线轴的孔被钻得较大,使穿过线轴的木棍可以转动。使用线轴和木棍,我们可以制造塔、桥、汽车、推土机、风车和巨大的动物等。我们可以为汽车装上轮子,为滑轮和齿轮制造轴承,让它们做更有趣的事情。我们需要自己制作齿轮:只需把8根棍子插进1个线轴即可。尽管这样做出来的齿轮不完美,转弯的时候总是咔嗒、咔嗒响,但它们确实能有效运转。

这些木棍被切成两种长度:一组长度按照1、2、4和8的比例;另一组则按照长度正好是第一组木棍所组成正方形的对角线长度来进行切割。因此,所有木棍的长度都是2的平方根(√2)的幂。这意味着,你也可以用第一组的木棍作为第二组木棍组成的正方形的对角线。它们可以用来建造坚固的交叉支撑结构。

万能工匠玩具的秘诀在于,探寻用最少的几种部件类型构造尽可能多的不同结构。我小时候曾因此出了名。那时,我们全家正在某处游览,我在酒店大堂里用万能工匠玩具搭建了一座塔。我已经想不起它有多高了,但它一定非常高。这对我来说不过就是拼搭三角形和立方体,然后把它们安放在一起而已。但是,大人们对这么小的孩子可以建造如此大型的东西感到无比惊讶。我也从中领悟了一些事情:有些成年人就是想不明白,怎么能做到只要有用不完的木棍和线轴,就能搭建任意的东西呢?就在我写下本段文字的这一刻,我认识到其中的原因:那些成年人只是不懂得“线轴-木棍”的秘诀而已!

在西蒙·派珀特(SeymourPapert)初创Logo编程语言的时候,我也有过相同的体验。Logo语言中,有一些和万能工匠玩具中的木棍类似的东西,不同之处在于,它们是计算机中的指令:一根个单位长度的小棍叫作“FORWARD”。Logo中也有类似线轴的指令,例如“RIGHT:90”,就好像在画完一根小棍后,紧接着在它的右侧与之成直角画第二根。在Logo语言中,我立刻认出了我的“老朋友”构建玩具的影子。

编写Logo程序很像用构建工具包搭建房屋,但更加精彩。通过Logo编程,我们可以画出各种东西和结构,还能显示画出它们的过程。我们使用文字就能完成这些。我们可以让做出的东西变形,也可以让它们相互作用:只需让程序中一些对象的属性依赖于其他对象的一些特征即可。Logo程序也有缺点:我们不能把使用Logo程序制作的汽车带到户外,然后让汽车从一座小山上滚下去。但Logo程序的优点在于:这些通过Logo程序做的汽车,部件永远不会松动、脱落和丢失。Logo程序和构建玩具在最基本的体验上完全一致:我们都可以通过它们领会如何通过简单事物的相互作用,创造更加美妙的事物。

Logo编程语言在多年以前就已经出现。本书的几位作者在孩童时期就用它发现新的事物。我现在非常高兴能写这篇文章,回想这是一次多么伟大的冒险,而现在旅程才刚刚开始。

另外,还有一些不错的构建玩具,比如装配模型(Erector)和麦卡诺。装配模型的套装非常棒。它有很多种部件,最基本的部件是多孔金属片和不同类型的角度支架。套装中有许多小螺丝钉和螺母可以把它们连接在一起;还有长长的钢轴,其大小与金属片上的孔刚好匹配,可以穿过小孔自由转动。金属轴上可以安装齿轮和滑轮,便于制作复杂的、实用的东西。

英国制造的麦卡诺模型(MeccanoModel)更好。它的黄铜齿轮啮合得更加平滑。在我年纪大一点的时候,我使用麦卡诺的10号套装,按照麻省理工学院第一个计算机研究实验室在20世纪40年代提出的思路,构建了一个早期的现代遥控机器人。说到制造计算机,丹尼·希利斯(DannyHillis)和布莱恩·西尔弗曼曾经用万能工匠玩具的部件制造了一台真正的计算机。这台计算机可以计算“井字棋”游戏的走法。它是用线轴、木棍及绳子建造而成的,还用了一些小铜钉将木棍钉上,以防止木棍脱落。它确实可以工作,目前被收藏在某个博物馆里。这台计算机使用了大约套万能工匠玩具,体积非常大,比一间大房间还要大。

20世纪60年代,构建工具型玩具的黄金时代结束。大多数新玩具都改为使用粗糙、劣质的塑料部件,它们十分笨重,无法用来搭建精细的机械。麦卡诺破产了,这让我十分难过。我们现在还可以买到装配模型玩具,但购买时需要向卖家说明购买的是金属材料的版本。如今最受欢迎的拼搭构建玩具似乎是乐高积木,这是一种可以拼插在一起的塑料小砖块。乐高积木其实和Logo程序很相似,只不过在乐高积木中,只能使用“RIGHT:90”(右转90°)这样的指令。一开始,这对孩子来说可能更容易上手,但它只能构建一个不够有趣的世界,不能给人一种能够建造“任何东西”的感觉。另一种新兴的构建工具型玩具是“慧鱼”(Fischertechnik),慧鱼模型有很好的、坚固的部件和紧固件。它制作精良,工程师也会使用它。但是,因为它有很多种不同类型的部件,所以并不能像Logo语言那样给人以“我能构建出自己的想象王国”那样的感觉。

随着构建工具型玩具渐渐过时,给聪明孩子们玩耍的许多事物也逐渐过时了。玩具汽车变得难以拆解,收音机更是如此。除了把无用的塑料玩具拼装在一起,孩子们再也学不会构造什么东西了。然而,似乎并没有人注意到这一点,因为在美国社会,许多孩子开始沉迷于体育运动、毒品和电视节目。或许计算机能提供帮助我们回归正途的方法。

孩子们在使用实物型构建工具包建造了一个东西之后,还得把它重新拆开,否则,剩下的部件就不够用来完成下一个项目了。但是在用程序进行构造时,构造者可以把构造好的程序保存在自己的磁盘上,以后再把它们取出来,用它们继续构建更大的程序。现在你可能会担心计算机的存储不够用,但这对未来将不再是问题,因为存储的成本将快速降低。更重要的是,孩子可以和朋友彼此分享程序,在分享之后,自己的程序仍然属于自己。即便是古代的帝王,也难以想象能拥有如此巨大的财富。不过至今,大部分的成年人还没有合适的词汇来阐述这样的事情,或者说,他们没有合适的概念能帮助自己思考这样的事情。当孩子谈论“表示”“模拟”和“递归过程”时,许多成年人完全不知所云。对此,让我们宽容以待吧。成年人自己的问题已经够多了。

你如果想要了解计算机是什么、可以做什么,那么不必去学习别人说的那些“位”“字节”“二进制决策”等内容。我并不是说这些内容不对。计算机确实大部分是由小型的双向开关构成的。但是,如果谁说知道了这些就能懂得计算机能做什么,那就大错特错了。没错,就像房子是用木棍和石头建成的,但这并没有告知你建筑结构的知识;动物主要由氢、碳、氧和氮这些化学元素组成,这同样不能说清楚其中的生物学知识。

曾有一个火星生物与我“思维连线”,它想知道文学是什么。我告诉它我们怎样把单词组合成句子,而单词通过字母组合而成,以及我们在单词和单词之间留出稍大的空格以表示单词的开始和结束。“啊哈,”它说,“那字母呢?”我解释说:“所需要的一切都是小点,只要拥有足够多的小点,你就能制造任何东西。”之后,它又询问我老虎是什么。我解释说,老虎主要由氢和氧组成。“啊哈,”它说,“我想知道它们为什么燃烧得如此明亮。”最近一次连线,它说它一定要了解计算机。我给它讲了所有关于比特和二进制决策的内容。“啊哈,”它说,“我懂了。”

计算机程序即社会

要理解计算的作用,你需要了解另外两个事实。第一,编写大型计算机程序就是用较小的过程构建更大的过程。你也许会深信不疑地说,就像雕刻家用粘在一起的黏土颗粒做出大型的雕塑一样。这种说法和用“位”与“字节”的方法解释计算机一样,犯了相同的错误。从来没有哪一位雕刻家像这样思考,科学家、程序员也不会。同理,建筑师首先考虑的是形状和形式,然后是墙壁和地板,最后才是如何制作。

第二,在构建活动中,从什么类型的部件开始并不重要!除了使用Logo编程语言的人,大多数人都没有真正理解这一点。哪怕我们从不同类型的计算机开始,它们内部有不同类型的部件,在绝大多数情况下,它们仍可以在顶层层面完成相同的事情。这就像我们可以使用木棒或金属梁,采用同样的方法来建造一座大风车一样。当从近处仔细观察风车时,你会觉得每个部件都十分不同。但从顶层层面看,这两个风车都有一个底座、一座塔身和一套桨叶。计算机也同样如此!

任何计算机都可以通过编程实现其他计算机可以完成的事情,或者完成其他类型的“社会过程”(SocietyofProcesses)所完成的事情。

大多数人觉得这难以置信。为什么计算机能做什么并不依赖于它的构成呢?这是大约在50年前,英国科学家艾伦·图灵(AlanTuring)所揭示的规律。他指出,就像雕刻家不必关心黏土颗粒的形状一样,程序员也不必关心计算机内部的各个微小部件是如何工作的。举个例子,Logo程序从简单的“对-错”选择开始,每次只判断一件事务。但接下来,我们可以编写另一个Logo程序,让它从一系列事务列表中选择一件事务来判断,并且这个列表可以包含成千上万的事务!

艾伦·图灵的理论附有长篇的解释,我们在任何一本不错的计算机理论书中都可以找到其详细论述。这个理论的总体思路如上文所述。图灵在年轻时便认识到,计算机不仅依赖于构成部分的状态,还依赖于改变状态所遵循的规律。此外,各部件是如何制造的并不重要。图灵提出“程序是什么”这个问题,并意识到程序可以被看作状态的集合,或者更确切地说,程序可以被看作计算机如何改变其状态的预设途径。

接下来,图灵思考,假设你有计算机X,同时又希望拥有一台与之不同的计算机Y。那么为什么不为X编写一个程序,来重新排列它的状态,让X和Y在行为与状态上相似呢?如果这样做了,那么从外部看,X的行为就与Y的行为一模一样。对此,程序员会说,这是X在“模拟”Y。当然,这种模拟需要一定的条件。X必须有足够的存储能力来保存Y的描述,这种“模拟”才能正常工作。如果X和Y非常不同,那么模拟程序可能运行得非常缓慢。此外,图灵还指出,各种计算机都可以通过编程来模拟任何其他类型的计算机。这就是为什么我们可以编写一类特殊的程序,使得相同的Logo程序能够在全世界各种类型的计算机上运行。

实际上,每个雅达利Logo系统都包含这样一套程序。这套程序是布莱恩·西尔弗曼与他的朋友编写的。很抱歉,你看不懂这套程序。因为它不是用Logo语言写的,而是用一种深藏于机器内部的机器语言写的。但它确实存在,只是隐藏在看不见的地方,它可以让普通计算机模拟Logo计算机。令人惊讶的是,早在50年前,也就是年,艾伦·图灵就指出了其实现机制,而那时计算机还远未发明呢!他是怎样做到的?我想,他一定在自己的脑海里进行了模拟。

我的神奇经历(首先是使用构建工具包,之后使用类似Logo这样的程序语言)中有一种“普遍存在”的规律:大事物往往并不完全依赖于其内部的微小部件。

构成大事物的这些部分之间如何相互影响,远比它们自身是什么更加重要。这也是为什么无论钱是纸做的,还是金子做的,或者无论房子是木板做的,还是砖砌的,都没有太大关系。

类似地,假如外星人具有金色的骨头,而不是像人类一样具有钙质骨头,那也没什么大不了的。许多人错过了一些重要的东西,不能领会简单的事物可以发展并构成整个世界。他们因为看不到各种不同事物是如何由少数几种原子构建而成的,所以很难理解科学。他们因为看不到(如鸟类、蜜蜂和熊等)不同的生物如何从简单、无生命的化学物质,通过数万亿个过程进化而来,所以也很难理解进化。当然,其中的窍门在于,将事物发展并构成世界的过程分为许多个步骤来实现,每一个步骤又采用同样的方法,使用调试过的、规模更小的过程来实现。

为什么老师不告诉我们计算机有这么强大的能力呢?因为大多数成年人依然相信,计算机只能做大规模、快速、机械化但实用的算术计算。于是,那些数十亿美元市值的企业,用枯燥的实际应用,挤走了我们构建巨型思维机器的梦想。

本文节选自:《创造性思维》一书

转载请注明:
http://www.3g-city.net/gjyzz/3671.html
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 网站首页 版权信息 发布优势 合作伙伴 隐私保护 服务条款 网站地图 网站简介

    温馨提示:本站信息不能作为诊断和医疗依据
    版权所有2014-2024 冀ICP备19027023号-6
    今天是: