<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>科学松鼠会 &#187; 苏椰</title>
	<atom:link href="http://songshuhui.net/archives/author/schuyler/feed" rel="self" type="application/rss+xml" />
	<link>http://songshuhui.net</link>
	<description>让我们来剥开科学的坚果</description>
	<lastBuildDate>Fri, 10 Feb 2012 06:28:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>波兰总统坠机非官方分析报告</title>
		<link>http://songshuhui.net/archives/36324</link>
		<comments>http://songshuhui.net/archives/36324#comments</comments>
		<pubDate>Sun, 11 Apr 2010 09:55:37 +0000</pubDate>
		<dc:creator>苏椰</dc:creator>
				<category><![CDATA[八卦]]></category>
		<category><![CDATA[物理]]></category>
		<category><![CDATA[原创]]></category>
		<category><![CDATA[坠机]]></category>
		<category><![CDATA[波兰总统]]></category>

		<guid isPermaLink="false">http://songshuhui.net/?p=36324</guid>
		<description><![CDATA[机长却没有采纳备降去强行实施手动本场降，我认为有以下几种可能：
1、政治形象问题。我是总统的专机，只是一点雾，你说不让降就不降，岂不是很没面子？
2、一般来讲，飞机只要在天上，管制员就无权强制，只能建议。一切以机长意见为准，管制要无条件帮助引导；
3、这位机长太过于自信了。
]]></description>
			<content:encoded><![CDATA[<p>本文作者：苏椰</p>
<p><a href="http://songshuhui.net/wp-content/uploads/2010/04/aircrash.jpg"><img class="alignleft size-full wp-image-36337" src="http://songshuhui.net/wp-content/uploads/2010/04/aircrash.jpg" alt="" width="600" height="299" /></a>4月10日，一架TU-154飞机在俄罗斯斯摩棱斯克州北部一军用机场进场过程中坠毁，机上97人全部遇难，其中包括波兰总统卡钦斯基、总统夫人及多名波兰高官。</p>
<p>根据目前公布的资料来看，主要有几下几个信息：<br />
1、TU-154原装机型没有ILS设备（但不排除总统专机是特制的）；<br />
2、飞机在坠毁前，没有宣布紧急情况；<br />
3、飞机是因为撞到树梢，遂坠地起火；<br />
4、坠毁点距跑道1.5km；<br />
5、该机场是一个单跑道的小型军用机场；<br />
6、当时该机场是大雾天气；</p>
<p>根据这些情况，我觉得这并不是一起突发意外，而是机长盲目蛮干，导致的一起人为事故。</p>
<p>首先，这架飞机在没有预警的情况下突然撞到树梢，从空难类型上说，属于可控飞行撞地。虽然还不能排除一种可能，也就是飞机突然失速，却没有来得及报告，但这种可能性我觉得并不大。<br />
根据这一点，基本可以排除蓄意破坏的可能了。如果有人蓄意要搞掉这架飞机，却故意制造了可控飞行撞地，这是难度极高、效果极差的一种破坏手段。可以理解为，有人通过某种方法，使机长在降落时故意把飞机撞到了树上，这几乎不可能，历史上也没有发生过类似情况。</p>
<p>既然是可控飞行撞地，我们接下来要判断，当时是自动驾驶还是手动驾驶。</p>
<p>原装的TU-154没有ILS设备（Instrument landing system，仪表降落系统），即使为总统专机专门加装，在坠机发生时，应该也没有使用。我判断他没开ILS，主要基于以下三点原因：<br />
1、这架TU-154没有机载ILS；<br />
2、这个机场是小型机场，也许没有安装ILS导航设备；<br />
3、最重要的一点是，如果开启ILS，那么飞机会沿着一条精密设计出来的下滑道进近。这条下滑道是不会变的，之前会有无数飞机走过，在这样一条路上，怎么会有树梢？<br />
因为，我们由此推断，这架飞机当时没有使用ILS自动进场，而是采取了手动进场的方式。</p>
<p>手动进场，就涉及到三个问题，一是机长是否熟悉目标机场的周边地形，二是当时的能见度，三是地形的复杂性。从我们上面列出来的信息来看，非常遗憾，这三个问题都不容乐观。<br />
首先，这是波兰总统的专机，驾驶员对于俄罗斯的一个小型机场，很可能并不熟悉；<br />
其次，当时机场有大雾，能见度情况也不好。对我们地面上的人来说，有雾可能还不算什么，哪怕能看到前方50米，也不至于撞到什么。但对于飞机来说，由于速度太快，即使能看到500米远的东西，可能还来不及反应就已经飞过了。所以，雾对飞行能见度的影响是非常严重的。<br />
第三，我们从Google Earth上面，来看一下这个机场的地形。</p>
<div id="attachment_36325" class="wp-caption aligncenter" style="width: 490px"><img class="size-full wp-image-36325" src="http://songshuhui.net/wp-content/uploads/2010/04/Screen-shot-2010-04-11-at-下午03.56.15.png" alt="" width="480" height="331" /><p class="wp-caption-text">   </p></div>
<p>可以看到，跑道附近并非一马平川，而是有一些小山包。坠毁点距跑道1.5km，我们按5度进近角计算，飞机当时的飞行高度，应该在80m至100m之间。从Google Earth的等高线来看，机场周围这些小山与机场这间的落差，有超过这个高度的。也就是说，如果机长不熟悉地形，而且又看不见，只是对准跑道沿下滑道进场的话，非常有可能撞山。<br />
我认为这很可能就是当时的情况。这架飞机在进场时，由于看不见周围的小山，于是撞了上去。</p>
<p>那么问题就是，在这种恶劣的情况下，他为什么还要坚持进场？</p>
<p>一般情况下，我们平时乘坐的民航客机，是不必担心雾的，因为有ILS。ILS是通过跑道上发射的一组无线电信号来定位下滑道，非常稳定而准确，与雾没有任何关系。但是，如果没有ILS，一般来讲，在大雾天气是不允许目视进场的。我相信塔台一定提醒了机长面临的情况，并且建议备降，但机长却没有采纳，我认为有以下几种可能：<br />
1、政治形象问题。我是总统的专机，只是一点雾，你说不让降就不降，岂不是很没面子？<br />
2、一般来讲，飞机只要在天上，管制员就无权强制，只能建议。一切以机长意见为准，管制要无条件帮助引导；<br />
3、这位机长太过于自信了。<br />
我想，可能就是在这三个因素的作用下，机长决定不备降，强行实施手动本场降。</p>
<p>概括起来，我认为就是手动进场、飞行高度低、地面有山、不熟悉地形、能见度差、拒绝备降，这六个因素同时发生，导致了这场事故。哪怕有一个因素不发生，就能避免悲剧。</p>
<p>说到这里，我突然想起97年南方航空深圳空难，那次事故也是由于天气恶劣，机长却执意不备降，最后因为下降率无法控制，不幸坠机。这次波兰总统专机，很可能又是重演了历史的悲剧，过于自信，盲目蛮干，酿成大祸。</p>
<p>谨此劝告所有的飞行员们，珍惜自己的生命，也珍惜几百位乘客的生命。蛮干，是早晚要出问题的。祝愿大家飞行愉快，永远平安地翱翔于我们深爱的蓝天。</p>
]]></content:encoded>
			<wfw:commentRss>http://songshuhui.net/archives/36324/feed</wfw:commentRss>
		<slash:comments>82</slash:comments>
		</item>
		<item>
		<title>&quot;飞行模式&quot;到底管用吗？</title>
		<link>http://songshuhui.net/archives/35010</link>
		<comments>http://songshuhui.net/archives/35010#comments</comments>
		<pubDate>Sun, 14 Mar 2010 11:59:51 +0000</pubDate>
		<dc:creator>苏椰</dc:creator>
				<category><![CDATA[物理]]></category>
		<category><![CDATA[原创]]></category>
		<category><![CDATA[飞行模式]]></category>

		<guid isPermaLink="false">http://songshuhui.net/?p=35010</guid>
		<description><![CDATA[最近有新闻报道，在大连到浦东的一架飞机上，某男不顾劝阻，偏要把手机开至“飞行模式”，而不关闭电源。结局是悲剧的：他被罚款2000元。看到这个新闻，我想到了三点。第一，大连是出过空难的地方，难免让人有点阴影；第二，与不关手机相比，“不听劝”是个更加严重的行为，要知道，对于飞行中被告知的飞安规则，如果强行不服从，是有可能被视为劫机的，那就不是2000元的问题了；第三，“飞行模式”是手机厂商的一厢情愿，其效果并不稳定，没有得到航空部门的认可，这是一个事实。所以，我们不妨假设，如果手机就是正常开机的，那么它对飞行安全能有多大影响？这一点，就是我们这篇文章的主题。 飞机上禁止使用手机，是FCC（美国联邦通讯委员会）在1991年实施的一项规定，理由是手机发射的无线电波，可能会干扰地空通讯。这个规定被公众广泛接受，一直执行得很好，但在民航业内，对此却存在大量的争议。﻿美国波音公司，以及探索频道等多方部门，通过各种手段，做了大量实验。但是，直到现在，他们也没有找到证据，证明手机能够对地空通讯产生任何值得一提的影响。 当然，他们也不能证明没有影响，因此，尽管FCC屡次摇摆不定（最近的一次是2007年），还是维持了原议。 既然手机能发射无线电波，为什么不能证明它影响地空通信？这是因为，航空信号用的是118MHz频段，而国内GSM手机用的是900MHz左右频段，WIFI信号频率更高，它们相差这么大，理论上是不能干扰到一起的。然而实际上，因为手机采用的是跳频脉冲的方式发射信号，所以会产生许多不同频率的次生电波。这些次生电波尽管很微弱，但面对机载通讯设备的超高灵敏性，就显得不太让人放心了。在不能确定是否有明显危害的情况下，本着安全第一的原则，手机就成了飞机的敌人，因为民航是经不起“临床检验”的。手机们对此纷纷表示，自己感到很委屈。 那么，历史上有没有因手机未关而引发的飞行事故呢？您别说，还真有一起。2009年，美国一架在起飞滑跑时，副机长的手机突然来电话了。驾驶舱里铃声大作，机长觉得十分恼人，而这位可敬的副机长，自然也愣了神，耽误了应答地面呼叫。尽管没造成什么后果，但这仍被视为一起安全事故，手机就是通过这样的方式，成功地干扰了一次“地空通讯”，也算是报了个仇。除此之外，有些空难也被怀疑是手机引起的，比如有人一直怀疑奥地利5·26空难的原因是，手机干扰造成发动机在空中打开了反推，但是，这都没有可靠的证据。 FCC规定不能使用，但实际中却没有明显的例子，这令我们糊涂了，到底能不能用？为此，我特意利用“职务之便”，问了几位机长。然而，得到的答案同样令人糊涂。 机长甲：完全不影响的，只是大家还是比较害怕，怕万一。美国一个小组做过实验，用比手机强很多的信号源，一点干扰没有。 机长乙：一个两个，或者十个，都没影响。但是你想想，要是一飞机200多个手机一起开机搜信号，会怎么样? 机长丙：频率是不同，但不见得没影响。就好比你竖着耳朵在听小提琴，旁边却有人敲锣打鼓。 这三种说法是如此的不同，可见机长们对此也是各有各的看法（开头说的那个哥们也许遇到了机长丙）。手机究竟是否有影响，还是没法定论。 有的读者要问了，你写了这么多，却没有定论，那我们能不能开手机？其实，这个问题对于乘客来说，并不是一个问题：坐飞机就要遵守飞机的规则，我们讨论这些科学道理，并不等于可以破坏规则，它也许无益，但一定无害。您想想，飞机上面又没有移动电话基站，打开也没有信号，反而费电，你开着干嘛呢？另外，飞机上面关手机，已经成为了现代文化的一部分，它体现的是一种文明和对他人的关怀。从这个角度上讲，把手机掏出来，关了它吧，跟旁边的人搭个讪，聊聊天，比听音乐更解闷。]]></description>
			<content:encoded><![CDATA[<p>本文作者：苏椰</p>
<p><a href="http://songshuhui.net/wp-content/uploads/2010/03/cellphoneplane.jpg"><img class="alignleft size-full wp-image-35025" title="cellphoneplane" src="http://songshuhui.net/wp-content/uploads/2010/03/cellphoneplane.jpg" alt="" width="260" height="195" /></a>最近有新闻报道，在大连到浦东的一架飞机上，某男不顾劝阻，偏要把手机开至“飞行模式”，而不关闭电源。结局是悲剧的：他被罚款2000元。看到这个新闻，我想到了三点。第一，大连是出过空难的地方，难免让人有点阴影；第二，与不关手机相比，“不听劝”是个更加严重的行为，要知道，对于飞行中被告知的飞安规则，如果强行不服从，是有可能被视为劫机的，那就不是2000元的问题了；第三，“飞行模式”是手机厂商的一厢情愿，其效果并不稳定，没有得到航空部门的认可，这是一个事实。所以，我们不妨假设，如果手机就是正常开机的，那么它对飞行安全能有多大影响？这一点，就是我们这篇文章的主题。</p>
<p>飞机上禁止使用手机，是FCC（美国联邦通讯委员会）在1991年实施的一项规定，理由是手机发射的无线电波，可能会干扰地空通讯。这个规定被公众广泛接受，一直执行得很好，但在民航业内，对此却存在大量的争议。﻿美国波音公司，以及探索频道等多方部门，通过各种手段，做了大量实验。但是，直到现在，他们也没有找到证据，证明手机能够对地空通讯产生任何值得一提的影响。 当然，他们也不能证明没有影响，因此，尽管FCC屡次摇摆不定（最近的一次是2007年），还是维持了原议。</p>
<p>既然手机能发射无线电波，为什么不能证明它影响地空通信？这是因为，航空信号用的是118MHz频段，而国内GSM手机用的是900MHz左右频段，WIFI信号频率更高，它们相差这么大，理论上是不能干扰到一起的。然而实际上，因为手机采用的是跳频脉冲的方式发射信号，所以会产生许多不同频率的次生电波。这些次生电波尽管很微弱，但面对机载通讯设备的超高灵敏性，就显得不太让人放心了。在不能确定是否有明显危害的情况下，本着安全第一的原则，手机就成了飞机的敌人，因为民航是经不起“临床检验”的。手机们对此纷纷表示，自己感到很委屈。</p>
<p>那么，历史上有没有因手机未关而引发的飞行事故呢？您别说，还真有一起。2009年，美国一架在起飞滑跑时，副机长的手机突然来电话了。驾驶舱里铃声大作，机长觉得十分恼人，而这位可敬的副机长，自然也愣了神，耽误了应答地面呼叫。尽管没造成什么后果，但这仍被视为一起安全事故，手机就是通过这样的方式，成功地干扰了一次“地空通讯”，也算是报了个仇。除此之外，有些空难也被怀疑是手机引起的，比如有人一直怀疑奥地利5·26空难的原因是，手机干扰造成发动机在空中打开了反推，但是，这都没有可靠的证据。</p>
<p>FCC规定不能使用，但实际中却没有明显的例子，这令我们糊涂了，到底能不能用？为此，我特意利用“职务之便”，问了几位机长。然而，得到的答案同样令人糊涂。</p>
<p>机长甲：完全不影响的，只是大家还是比较害怕，怕万一。美国一个小组做过实验，用比手机强很多的信号源，一点干扰没有。</p>
<p>机长乙：一个两个，或者十个，都没影响。但是你想想，要是一飞机200多个手机一起开机搜信号，会怎么样?</p>
<p>机长丙：频率是不同，但不见得没影响。就好比你竖着耳朵在听小提琴，旁边却有人敲锣打鼓。</p>
<p>这三种说法是如此的不同，可见机长们对此也是各有各的看法（开头说的那个哥们也许遇到了机长丙）。手机究竟是否有影响，还是没法定论。</p>
<p>有的读者要问了，你写了这么多，却没有定论，那我们能不能开手机？其实，这个问题对于乘客来说，并不是一个问题：坐飞机就要遵守飞机的规则，我们讨论这些科学道理，并不等于可以破坏规则，它也许无益，但一定无害。您想想，飞机上面又没有移动电话基站，打开也没有信号，反而费电，你开着干嘛呢？另外，飞机上面关手机，已经成为了现代文化的一部分，它体现的是一种文明和对他人的关怀。从这个角度上讲，把手机掏出来，关了它吧，跟旁边的人搭个讪，聊聊天，比听音乐更解闷。</p>
]]></content:encoded>
			<wfw:commentRss>http://songshuhui.net/archives/35010/feed</wfw:commentRss>
		<slash:comments>147</slash:comments>
		</item>
		<item>
		<title>近看图灵碗 (8. 我就是上帝) (下)</title>
		<link>http://songshuhui.net/archives/34291</link>
		<comments>http://songshuhui.net/archives/34291#comments</comments>
		<pubDate>Thu, 04 Mar 2010 04:09:44 +0000</pubDate>
		<dc:creator>苏椰</dc:creator>
				<category><![CDATA[计算机科学]]></category>
		<category><![CDATA[原创]]></category>
		<category><![CDATA[近看图灵碗]]></category>
		<category><![CDATA[高德纳]]></category>

		<guid isPermaLink="false">http://songshuhui.net/?p=34291</guid>
		<description><![CDATA[上一篇我们讲到，高德纳计划要写一套七卷本的《计算机程序设计艺术》，没想到刚刚写完第三卷，就被ACM授予了图灵奖。这在图灵奖历史上是从没有过的事。我们还记得巴黎会议上的诺尔吧，他的图灵碗比他的获奖成果迟来了整整45年，他等这个碗时间，比高德纳获奖时的岁数还要长。]]></description>
			<content:encoded><![CDATA[<p>本文作者：苏椰</p>
<div id="attachment_34356" class="wp-caption alignleft" style="width: 237px"><a href="http://songshuhui.net/wp-content/uploads/2010/03/DEK.jpg"><img class="size-full wp-image-34356" title="DEK" src="http://songshuhui.net/wp-content/uploads/2010/03/DEK.jpg" alt="" width="227" height="320" /></a><p class="wp-caption-text">高德纳近照</p></div>
<p><a href="http://songshuhui.net/wp-content/uploads/2010/03/01300000187059122507184121086_s.gif"></a>上一篇我们讲到，高德纳计划要写一套七卷本的《计算机程序设计艺术》，没想到刚刚写完第三卷，就被ACM授予了图灵奖。这在图灵奖历史上是从没有过的事。我们还记得巴黎会议上的诺尔吧，他的图灵碗比他的获奖成果迟来了整整45年，他等这个碗时间，比高德纳获奖时的岁数还要长。但是，高德纳在获此殊荣之后，再一次令世界大跌眼镜：他宣布从此歇笔了，因为排版工具太差，破坏了这套书的美。</p>
<p>高德纳的这一动作让外界十分震惊，可以想见，他遭到了排山倒海的怀疑。有人说，高德纳肯定是江郎才尽，拿了图灵碗，见好就收；有人说，图灵奖对前三卷的评价过高了，高德纳无力面对这么大的压力，只好找个理由撤退；还有人说，获奖之后停止写作，充分体现了他写书的目的就是为了功利。他们纷纷质疑，这个图灵碗是彻底发错了人。</p>
<p>然而，如果我们真正翻开TAOCP读一读，就不难理解这是为什么。我觉得，对于算法的研究，可以分成三层境界。第一层是分析算法的复杂度，这是计算机专业的大学生普遍掌握的技能，达到这个境界，可以说是入了算法的门；第二层境界是改进算法的复杂度，在分析之后继续思考，想办法去降低它，这就可以算是懂算法了；第三层境界，就是寻找算法的最优复杂度，不但要改进它，而且要改到什么程度呢？就是要证明出来，我改完的算法就是最优的，你无论如何都不可能再改进了，再改进就违反宇宙规律。</p>
<p>高德纳，就是典型的第三种人。诸位不妨看看，TAOCP里面给出了多少最优算法，高德纳是铁了心，要当算法世界中的上帝。高德纳就是这么一个极致地追求极致的人，他强迫自己把每件事都做得不可逾越。那么他怎么能够容忍，这套被他视为毕生事业的书，被糟糕的排版技术束缚？于是，无论别人怎样质疑，他最终还是把写作晾到了一边，开始全力以赴地研究字体和排版。高德纳让我们领略了什么才是真正的个性，个性绝不是打18个耳洞，或在牛仔裤上抠36个窟窿。个性，就是在所有岔路口都追随自己的心，让所有影响你追求梦想的障碍统统跪倒。</p>
<p>高德纳这一歇笔，就是十年。在这不务正业的十年当中，对极致的追求像只看不见的手，推动他创造了三个响亮的成果，其中影响最大的，就是排版系统TEX。如果大家用MS Office Word写过论文，就会体会到那份求死不得的心：不断地调整字号、行距、缩进、分栏，如果这还不算什么，你再写几个数学式子看看？但是在TEX中，这些麻烦几乎完全不存在，你唯一需要做的，就是把你想写的内容告诉它。如果说时间就是生命，那就可以认为，TEX每天都在拯求科学家们的生命，说它推动了科学的发展也不为过。TEX是一场出版界的革命，直到现在仍是全球学术排版的不二规范，它所排出的文字之美，特别是数学式子的美，让人们由衷感叹：啊，一毫米都不能再挪动了。</p>
<p>除了功能上的美之外，TEX作为一个软件产品，也令人叹为观止。它的版本号不是自然数列，也不是年份，而是从3开始，不断地逼近圆周率（3.14，3.141…目前最新版本是3.1415926）。高德纳再一次用行动宣告，我这个东西，不可能再有什么大的改进了，最多只能小修小补，使其趋近完美。他还专门设立了奖金：谁发现TEX的一个错误，就付他2.56美元，第二个错误5.12美元，第三个10.24美元…以此类推。我们都知道，传说某个国王就因为这种指数游戏失去了江山，高德纳作为算法大师，更清楚指数增长的可怕性。然而他却敢立此重赏，结果直到今天，他也没有为此付出多少钱，可见TEX经过了怎样的千锤百炼。这个耗费十年打造的玩具，让当初质疑图灵奖发错了的人们全部闭嘴了，他们甚至改口说：哦，为了这个TEX，不妨再给高德纳一个图灵碗吧。</p>
<p><a href="http://songshuhui.net/wp-content/uploads/2010/03/800px-Knuth-check2-300x136.png"><img class="aligncenter size-full wp-image-34341" title="800px-Knuth-check2-300x136" src="http://songshuhui.net/wp-content/uploads/2010/03/800px-Knuth-check2-300x136.png" alt="" width="300" height="136" /></a></p>
<p>第二个成果，就是METAFONT，这是一套用来设计字体的系统。对于它的价值，一句话就能概括：计算机界最懂字体的两个人，一个是苹果的乔布斯，另一个就是高德纳。</p>
<p>第三个成果，就是文学化编程（Literate Programming），它把程序设计的艺术性展示得淋漓尽致。高德纳说，一段好的程序，不仅仅是要清晰易读，而且要能够读出美感，读出意境。天呐，意境，一排一排的计算机代码，要像诗歌一样充满意境。高教授，你疯了？</p>
<p>高德纳说，你才疯了呢，看我给你们露一手。于是，他在C语言的基础上，开发了一套CWEB系统，除了用它写出了TEX程序之外，竟然还用它写了一本叫作《Stanford Graphbase》的书。高德纳微微一笑，我都能用编程语言写书，何况有意境的程序了，我的口号是：程序员也能得普利策奖（这是全球新闻写作领域的最高奖项）。</p>
<p>文学化编程还为高德纳报了一个小仇。我们第6章中讲过的迪科斯彻，当年提出了一个“结构化编程”，提倡不要在编程时使用“goto”语句，高德纳偏要唱反调，结果被迪科斯彻称为“没结构”。这下可好，高德纳狡黠一笑，嘿嘿，如果你不跟我混，你就是“没文化”咯（literate也有“文化”之意）。</p>
<p>歇笔十年的高德纳，手捧这三项成果重出江湖，打消了一切质疑。这时他才对十年前的歇笔事件做了一个轻描淡写的解释：一个人要想把事情做得漂亮，就必须要跟上帝保持和谐，现在，上帝终于让我去写四卷了。</p>
<p>他的笔，又拿了起来。在写作第四卷的过程中，为了帮助读者打好数学基础，以便面对TAOCP中的数学高峰，他又专门撰写了一本《Concrete Mathematics》。这本书有中文版 ，翻译为《具体数学》，我一直觉得稍有不妥。Concrete到底是什么意思呢，高德纳说，意思就是我不教那些软绵绵的数学，我要教的是扔到地上能砸个响儿的数学。据说，他在课堂上说完这番话，有好几个同学扭头走出了教室──他们是土木工程系的学生，还以为高德纳是讲混凝土的呢（Concrete在土木领域意为“混凝土”）。说到高德纳的教学，还有个趣闻，他批改作业的时候只抽查第314页，就能判断出这份作业的质量。为此，我们这本书的第314页用来向高德纳致敬。</p>
<p>1992年，高德纳为了专心写作，宣布提前退休，并停用电子邮箱。高德纳一共带了28位博士生，他觉得28这个数字很好，于是便宣布不再收学生了。尽管如此，他仍然为想要师从于他的人们留下了一个盼头：他开了一门叫做Computer Musing的公开课，每次会提出一个问题，如果谁能快速解出来，高德纳就会为他的博士论文签名。不知道哪位后起之秀能够获得如此殊荣呢，我们拭目以待吧。</p>
<p>2008年，在TAOCP的前三卷面市30年之后，第四卷终于千呼万唤始出来，而高德纳，却已是白发苍苍的古稀老人了。一句话，一辈子，一生情，一杯酒，他对计算机科学的热爱，使他为这套丛书耗费了一生的心血。在这一章的最后，我想用一个词，来形容这位天才的计算机科学大师，但是思前想后，我只能想到唯一的一个词：God。</p>
<p>我想，尽管高德纳是一位虔诚的基督徒（他还专门写过关于圣经研究的书），但他一定会欣然接受这样的形容。正如当年Linux的作者Linus说：上帝在梦中告诉我，我做出了最优秀的操作系统。</p>
<p>高德纳回答说：我可没这么说过。</p>
<p>（\end{第八章}）<div class="editornote"><p></p>
<p><strong>过年期间插入了第八部分，后续文章顺序将恢复正常。</strong></p>
<p><a rel="bookmark" href="http://songshuhui.net/archives/32599.html"><span style="color: #000000;"><strong>近看图灵碗 (0. 引言)</strong></span></a></p>
<p><a rel="bookmark" href="http://songshuhui.net/archives/31343.html"><span style="color: #000000;"><strong>近看图灵碗 (一. 从苏黎世到巴黎) (上)</strong></span></a></p>
<p><a rel="bookmark" href="http://songshuhui.net/archives/31345.html"><span style="color: #000000;"><strong>近看图灵碗 (一. 从苏黎世到巴黎) (下)</strong></span></a></p>
<p><span style="color: #000000;"><strong><a rel="bookmark" href="http://songshuhui.net/archives/33469.html">近看图灵碗 (8. 我就是上帝) (上)</a></p></div></strong></span></p>
]]></content:encoded>
			<wfw:commentRss>http://songshuhui.net/archives/34291/feed</wfw:commentRss>
		<slash:comments>81</slash:comments>
		</item>
		<item>
		<title>近看图灵碗 (8. 我就是上帝) (上)</title>
		<link>http://songshuhui.net/archives/33469</link>
		<comments>http://songshuhui.net/archives/33469#comments</comments>
		<pubDate>Wed, 10 Feb 2010 16:56:03 +0000</pubDate>
		<dc:creator>苏椰</dc:creator>
				<category><![CDATA[计算机科学]]></category>
		<category><![CDATA[原创]]></category>
		<category><![CDATA[图灵奖]]></category>
		<category><![CDATA[高德纳]]></category>

		<guid isPermaLink="false">http://songshuhui.net/?p=33469</guid>
		<description><![CDATA[1968年，《计算机程序设计艺术》（The Art Of Computer Programming，江湖人称TAOCP）的第一卷正式出版了。这一卷的标题叫《基本算法》，但难度却并不低。比尔盖茨曾经花了几个月的时间读完这一卷，并且做了大量的练习，然后他说，如果你想成为一个优秀的程序员，那就去读这个《基本算法》吧，确保自己能够解决里面的每一个问题。]]></description>
			<content:encoded><![CDATA[<p>本文作者：苏椰</p>
<p>过年了，苏椰特意叮嘱编辑们先把这个系列的第八章发出来，理由之一是大过年呢，8是个喜庆的数字。真没想到最年轻的松鼠还会从这个角度为读者细心考虑，那就成全他8，让我们在这部专辑里暂时做一次穿越，先看看第九只图灵碗背后有怎样的故事。</p>
<p>密尔沃基市，是美国威斯康辛州最大的城市。1938年1月10日，圣诞刚过不久，密尔沃基市民像往常一样平静地生活着。咖啡店里，有人在议论着罗斯 福总统的救市新政策，有人在议论着到底该不该限制公民持枪。而更多的人呢，则一边品尝着密尔沃基闻名全国的啤酒，一边听着广播里面的实时战况：侵华日军登 陆青岛了。谁也没有想到，这个平静的日子将载入这座城市的史册。这天，密尔沃基路德教会高中的一名印刷管理员，高兴地迎来了一个健康的儿子。他为儿子取了 一个响亮的名字，这个名字在不久的将来，成为了计算机编程艺术的旗帜：Donald Ervin Knuth。</p>
<p>为了方便讲述，请各位读者允许我先剧透一件39年后的事儿。在1977年Knuth造访中国前夕，姚期智的夫人为他取了一个中文名字：高德纳。在下面的故事里，我们就使用这个名字来称呼他。</p>
<p><a href="http://songshuhui.net/wp-content/uploads/2010/02/KnuthAtOpenContentAlliance-253x300.jpg"><img class="alignleft size-full wp-image-33468" src="http://songshuhui.net/wp-content/uploads/2010/02/KnuthAtOpenContentAlliance-253x300.jpg" alt="" width="253" height="300" /></a></p>
<p>高德纳天资聪颖，他的超凡智力在8岁时就显示出来了。当时，一家糖果商在孩子们当中举办了一项有趣的比赛，要求用“Ziegler’s Giant Bar”里面的字母，写出尽可能多的单词。裁判事先准备了一份2500个单词的列表，可他却远远低估了小选手的能力，高德纳令人惊讶写出了4500多个单 词，毫无疑问地获得了冠军。他为学校赢得了一台电视机，还为每个同学赢得了一只棒棒糖，他的赛后感言是，我还能写出更多。</p>
<p>高德纳的高中就读于他父亲所在的路德教会高中，在这期间，他发表了此生第一篇学术文章。尽管如此，但这个充满了才华和个性的年轻小伙，并没有把心思 放在科学上，他的主业是音乐和作曲。他的老师，甚至包括他自己，十分怀疑他将来进入大学后，是否能够顺利学习数学。这种想法给高德纳造成了不小的自卑，尽 管他的平均分是学校历史上最高的。不过有句话说，真正的天才是1%的灵感加上99%的汗水，这话用在高德纳身上毫不夸张，18岁的他，在进入大学之后，丝 毫没有向数学屈服，而是花费无数的课余时间，大量练习数学难题，这种努力的劲头再加上他的天份，使他很快就在数学方面超过了其他同学。其实我们与其关注一 些科学家们不可模仿的机会和天赋，莫不如更关注他们如何面对困难和挫折。高德纳告诉我们，没有什么过不去的坎儿，方法就是抓紧时间干活。</p>
<p>高德纳就读的大学是凯斯理工学院，在这里他接触了IBM650计算机，这导致高德纳的音乐家梦想一去不复返，科学天赋终于重新占领了他的心扉。 1956年，在他第一次使用IBM650之后，他就躇踌满志地相信，说明书上介绍的程序，一定比不上他自己编写的。于是高德纳开始学习编程，他的第一个程 序是因数分解，不久之后，高德纳就对编程有了许多体会。当时高德纳还兼职管理学校的篮球队，于是他编写了一个程序，能够自动评估每名球员的价值，令球队的 教练非常欣赏。这件事还吸引了CBS电视台的报道，后来高德纳、球队教练和IBM650的一张合影，还被印到了IBM650的宣传册上。1960年，高德 纳以公认出色的成就，打破了学校的惯例，同时获得了学士和硕士两个学位，大家来做个减法吧，算算高德纳此时年岁几何。</p>
<p>随后，高德纳从五大湖区，来到了美国西南岸，进入伯克利攻读数学博士学位。在此期间，他的编程生涯也正式开始了，他对外提供软件服务，为各种不同机 器设计各种稀奇古怪的编译器，曾经一个程序卖到5000美元。最值得一提的，就是他对ALGOL60编译器提出的测试方法。不知道大家是否还记得 ALGOL，这盏批量生产图灵奖的阿拉丁神灯。当时我们介绍过，ALGOL60的设计目标要求支持递归，而在设计编译器时，对递归的处理是很复杂的，所以 经常会因为编译器不成熟而出故障。高德纳编写了一段非常简单的测试程序，江湖人称“Man or boy test”，俗名“是男人就得-67”。高德纳说，只要用ALGOL60编译器来编译我的这段程序，如果运行结果等于-67，就说明这个编译器是纯爷们 儿，否则就只能算小男孩。</p>
<p>1963年，25岁的高德纳顺利拿到了博士学位，并留在伯克利任教。在毕业前一年，虽然还是研究生，但高德纳已经因为设计编译器而响誉计算机行业。 于是著名的Addison-Wesley出版社与他约稿，请他写一本关于编译器和程序设计方面的书。这本来是很平常的一件事，但您看看高德纳是何许人也， 不久之后，他简直把这件事做成了一件计算机科学史上的奇观。1962年约的稿，高德纳一直写到1966年还没交，在此期间他又是毕业，又是教书，终于人家 出版社急了。编辑找到高德纳，说这都四年了你写了多少啊，高德纳说，才写3000页手稿。编辑大囧，忙问都3000页了你怎么还不交，高德纳答曰，急啥， 我还没写到正题呢。编辑彻底雷住了，说那你出个多卷本吧……</p>
<p>《计算机程序设计艺术》，就这么诞生了。</p>
<p>把一件平常的事做到人间极致，这就是高德纳。他不是故弄玄虚，他的心里攒着一股劲儿，要写出一部与牛顿的《自然哲学的数学原理》相媲美的传世巨著。 他一开始计划了六卷，后来觉得这个数字不怎么好，又改成了七卷。1968年，《计算机程序设计艺术》（The Art Of Computer Programming，江湖人称TAOCP）的第一卷正式出版了。这一卷的标题叫《基本算法》，但难度却并不低。比尔盖茨曾经花了几个月的时间读完这一 卷，并且做了大量的练习，然后他说，如果你想成为一个优秀的程序员，那就去读这个《基本算法》吧，确保自己能够解决里面的每一个问题。然而，高德纳本人的 说法却比盖茨犀利多了：要是看不懂，就别当程序员。</p>
<p>就在这同一年，高德纳跳槽到斯坦福大学，并当上了教授，一边带博士，一边继续写书。一年后，TAOCP第二卷《半数值算法》正式出版，又过了三年， 也就是1973年，第三卷《排序与查找》也相继付梓。这三卷书立即被计算机界惊为神作，在那几年之内就卖出去了100多万套，至今仍然是编程书籍中的最高 经典。有一些对我们来说巧妙得不能再巧妙的算法，在这三卷书中顺手掂来，比比皆是，这个我们等会再说，现在有件要紧的事儿。按照高德纳的计划，这套书一共 是七卷，但是现在刚刚写完三卷，就已是震古烁今。震到什么程度呢，连图灵奖颁奖委员都坐不住了，他们做了一件前所未有的事。按照惯例，图灵奖的获奖者都是 成就等身，要经过时代的检验，然而高德纳却是例外，在他的七卷本刚刚写完三卷时，ACM便决定立即为其颁发图灵奖：</p>
<blockquote>
<p style="text-align: center"><strong>授予高德纳图灵奖，以表彰其在算法分析、程序设计语言的设计和程序设计领域的杰出贡献，特别是其著名的《The Art of Computer Programming》系列丛书。</strong></p>
</blockquote>
<p>这是1974年的ACM图灵奖颁奖词，高德纳捧走了历史上第9个图灵碗。这对高德纳来说，无疑是个殊荣，因为这一年他只有36岁，直到现在，他仍然保持着获奖年龄最小的纪录。</p>
<p>我们故事才讲到一半，可天才的高德纳却已经得到了图灵奖。各位读者可能要问，那下面还讲啥，他无非就是接着写书，接着带博士，就别废话啦。您要是这 么想，那就大错特错了，他要是那么做，他就不是高德纳。提前剧透一下，这个看上去顺理成章的计划，很快就被打破了，计划中的七卷本，直到今天都没有完成。 欲知发生了什么，且听下回分解。</p>
]]></content:encoded>
			<wfw:commentRss>http://songshuhui.net/archives/33469/feed</wfw:commentRss>
		<slash:comments>45</slash:comments>
		</item>
		<item>
		<title>近看图灵碗 (一. 从苏黎世到巴黎) (下)</title>
		<link>http://songshuhui.net/archives/31345</link>
		<comments>http://songshuhui.net/archives/31345#comments</comments>
		<pubDate>Sat, 30 Jan 2010 23:30:36 +0000</pubDate>
		<dc:creator>苏椰</dc:creator>
				<category><![CDATA[计算机科学]]></category>
		<category><![CDATA[原创]]></category>
		<category><![CDATA[图灵奖]]></category>

		<guid isPermaLink="false">http://songshuhui.net/?p=31345</guid>
		<description><![CDATA[1960年新年刚过，浪漫之都巴黎正是白雪皑皑的冬天。游客们缓缓登上埃菲尔铁塔，鸟瞰美丽的花都，弥满着四处纷飞的雪花，陷于一片朦胧。

这时候，ALGOL58已经诞生一年多了（58年末至60年初），佩利、巴科斯等主要参与者们，都在实践当中对新语言有了新的体会。革命的脚步不会停下，很快，他们集合了紧密团结在ALGOL58周围的13名计算机科学家，来到巴黎，再次对语言设计进行讨论。]]></description>
			<content:encoded><![CDATA[<p>本文作者：苏椰</p>
<p>1960年新年刚过，浪漫之都巴黎正是白雪皑皑的冬天。游客们缓缓登上埃菲尔铁塔，鸟瞰美丽的花都，弥满着四处纷飞的雪花，陷于一片朦胧。</p>
<p>这时候，ALGOL58已经诞生一年多了（58年末至60年初），佩利、巴科斯等主要参与者们，都在实践当中对新语言有了新的体会。革命的脚步不会停下，很快，他们集合了紧密团结在ALGOL58周围的13名计算机科学家，来到巴黎，再次对语言设计进行讨论。尽管苏黎世会议的大部分老朋友都又来到了巴黎，然而这次研究会的主角儿，对我们而言却是一个新面孔，他是丹麦计算机科学家诺尔（Peter Naur）。</p>
<p>诺尔1928年出生在丹麦，29岁获得了天文学博士学位，后来在哥本哈根天文台工作时，为了计算天文数字，他设计了丹麦第一台电子计算机DASK。诺尔是一位兼具才华与情趣的科学家，读者不妨检索一下他发表的学术论文，涵盖了天文学，计算机科学，古典音乐，心理学等诸多领域，是学术界当之无愧的一名男子全能选手。就在巴黎会议召开不久前，诺尔进入了丹麦计算研究院工作，并为玻尔研究所授课，同时还被选为了欧洲语言设计小组成员。尽管如此，这时诺尔的主要兴趣仍是天文学，计算机对它来说，不过是研究天文的工具。</p>
<p><img class="aligncenter size-medium wp-image-276" src="http://skylersun.info/wp-content/uploads/2009/12/450px-Peternaur-225x300.jpg" alt="" width="225" height="300" /></p>
<p>主角儿到了，那就让会议开始吧。还记得苏黎世会议上提出的巴科斯范式吧，巴黎会议的首要任务，就是继续完善这个范式，诺尔在第一局就立了大功。为了更清晰地描述下一代ALGOL语言，诺尔对巴科斯范式进行了大幅度的简化，缩减了它的符号集，如今使用的巴科斯范式，均是经过诺尔改进后的。后来高德纳（Donald Knuth）指出，应该将巴科斯范式改称为巴科斯-诺尔范式，以肯定诺尔为其做出的贡献，然而谦虚的诺尔却并不乐意这样。在《人类行为——计算》一书中（这本书记载了诺尔为计算机科学所做的大量贡献），诺尔曾说，我没有打算要把我的名字加进去，其实我觉得，它叫“巴科斯范式”挺好的。</p>
<p>范式并非难题，随着诺尔的工作，很快就通过了，13位代表开始讨论新一代ALGOL本身的设计。这次会议，大家吸取了上次苏黎世的教训，要求坚决不能再留下争议，对每一个细节都不能含糊。于是，每名代表都铆足了劲儿，进行了旷日持久的讨论，整个会议竟然持续了半个多月才闭幕。后来佩利回忆这次巴黎会议，他说最大的感觉就是累，实在太累，感觉简直就是没完没了。而且像上次一样，这些人论战起来丝毫不留情面，很多人的想法刚说出来就被彻底否定，一点翻身机会都不给。佩利说，这13名代表的精神头儿实在令人感叹，在那半个多月里，他们每天一见面，个个都像打了鸡血。</p>
<p>13个人马不停蹄地论战半个月，平均下来，每个人要叭啦叭啦说上一整天还多。然而，他们的努力却没有白费，这次会议终于终一了意见，完整地规划出了新一代ALGOL语言，按照年份，命名为ALGOL60。在会议的最后，由诺尔对此进行总结，整理会议讨论出的ALGOL60的所有特性，形成了后来名扬江湖的《算法语言ALGOL60报告》。这个总结工作充分体现了诺尔的才华和巴科斯范式的力量。在这之前的编程语言，是由编译器代码来描述的，既冗长又混乱，学习起来很有难度，而且非常难以在人类之间进行交流。这就好比你买了一部手机，发现附带的说明书很有特色，是这个手机的全部电路图，请你根据这些图来学习使用手机。当时学习编程，就是这么尴尬，但诺尔改变了这些，他首开先例，使用巴科斯范式对语言进行定义，用人类语言精心措词，短短17页报告，简洁优雅至极。这份报告成为了计算机科学史上的名作，它完整地描述了ALGOL60语言的所有特性，却不依赖任何机器细节，便于在人类之间交流——编程语言第一次拥有了“使用说明”而不是“电路全图”。诺尔的这项工作，改变了此后描述编程语言的方式，直到现在仍在使用。</p>
<p>巴黎会议，诺尔一鸣惊人。这个来自童话王国，热爱古典音乐的天文学家，站在这里告诉世界，计算机科学也可以很美的。</p>
<p>各位读者，我们已经从苏黎世的春天，一路走到了巴黎的冬天，ALGOL语言的正式版本终于被确定下来了。接下来要做的，就是把它付诸实践。冬去春来，万物复苏，1960年夏天，荷兰计算机科学家狄克斯特拉（Edsger Dijkstra）开发出了ALGOL60的编译器，ALGOL正式登上了计算机科学的舞台。随后，佩利将它引入了大学的课堂，在那个计算机科学的初始混沌期，此举一下子让无数的人们看到计算机科学到底应该是什么样子（“哇塞，原来不是电路全图耶～”）。狄克斯特拉说，这是一个伟大的标志，这标志着计算机科学真正地诞生了，ALGOL60是个绝对的奇迹。在接下来的30年里，ALGOL一直是教课书和学术界用来描述算法的不二之选。</p>
<p>说到这里，按照学习编程的惯例，认识一种语言，要先看它的“Hello,world”样例。下面就是ALGOL60的例子，我们共同一睹这个“绝对的奇迹”芳容如何。没有学习过编程的读者不必担心，这段程序的功能，就是在屏幕上显示一行“Hello,world!”，要是您实在看得一头雾水，那就直接跳过这些蝌蚪文，我保证不会影响您享受接下来的旅途。当然，我相信以ALGOL语言的优美，一头雾水的可能性并不大的。</p>
<blockquote>
<pre><strong>BEGIN
DISPLAY("HELLO WORLD!") ;
END.</strong></pre>
</blockquote>
<p>值得注意的是，这个写法并不唯一，因为ALGOL60仍然保持了ALGOL58的那个奇怪特性：分成文言文和白话文。事实上，ALGOL60主要是在ALGOL58的基础上改进得来的，所以它在许多地方都继承了ALGOL58的特性。如今，很难再找到编译器来让这段程序跑起来了，因为半个世纪荏苒而逝，时代的浪潮不饶人，想让ALGOL复活，已经不太可能了。然而，ALGOL的灵魂却从未离开，它简洁而优雅的定义（这主要归功于诺尔），影响了后面一系列编程语言的设计。ALGOL提出的许多概念都被后来的编程语言沿用，例如“代码块结构”这些我们习以为常的编程方式，都是由ALGOL率先使用的。包括C和C++在内的大部分五星级上将语言，都因为师出 ALGOL而被称为“类ALGOL语言”。可以说，ALGOL直接影响了整个计算机科学界和工业界的发展，影响之程度深入骨髓，而且至今经久不衰。</p>
<p>好了，我们旅途的第一站已经游览完了，不知这一路上大家感觉如何，是否感受到了瑞士的美丽和法国的浪漫，是否感受到了巴科斯揭竿而起改造编程语言的决心，是否感受到了佩利在语言设计和教育方面的高瞻远瞩，是否感受到了诺尔才华横溢的优雅气质，是否感受到了舌战群儒半个多月的激烈气氛，是否感受到了两次会议每名代表的聪明才智，是否感受到了ALGOL是一个“绝对的奇迹”。现在，女士们先生们，让我们屏住呼吸，颁奖的时刻到了。</p>
<p>那位认为“IAL”绕嘴又狂妄的艾伦佩利，因为在卡内基和普渡创建了计算机专业，并在ALGOL早期发展中带队做了大量工作，于1962年当选为美国计算机学会（ACM）主席。四年后，也许是近水楼台先得月，佩利成为历史上首位ACM图灵奖得主，捧走了历史上的第一个图灵碗。ACM对他的颁奖词是：</p>
<blockquote><p><strong>授予艾伦佩利图灵奖，以表彰其在高级编程技术及其编译器构造领域的影响 。</strong></p></blockquote>
<p>五年后，佩利再次跳槽，来到了耶鲁大学，连任多届计算机科学系主任，期间还一度执教于加州理工大学。1982年，退休后的佩利返老还童，写下了一系统关于编程的幽默，发表于ACM的SIGPLAN期刊上。其中他写道，如果你给别人讲解程序时，看到对方在点头，那就拍他一下吧，他一定是睡着了。 1990年2月7日，佩利因心脏病在纽哈芬去世，享年68岁。</p>
<p>还记得这场“绝对的奇迹”的导火索、不爱学习、后来在IBM揭竿而起的巴科斯吗？在佩利获得图灵奖11年后，1977年10月17日，巴科斯也凭着ALGOL的设计工作，在西雅图ACM年会上获得了图灵奖，捧走了第14个图灵碗。ACM对他的颁奖词是：</p>
<blockquote><p><strong>授于约翰巴科斯图灵奖，以表彰其在高级编程系统，程序设计语言规范的形式化定义方面所做的贡献。</strong></p></blockquote>
<p>巴科斯随后发表了获奖演讲，不知是不是因为他最初提议设计新语言时，曾经遭到冯诺伊曼的反对，从而对冯诺伊曼记恨在心（哈哈开个玩笑），他演讲的题目是《程序设计能从冯诺伊曼形式中解脱出来吗？》。2007年3月17日，巴科斯在美国俄勒冈州的家中去世，享年82岁。</p>
<p>已经两个了，可是还没有结束，我们一定没有忘记后来出场的那位才华横溢的科学家诺尔，他的图灵奖比前面两位来得似乎晚了一些。2005年，已经77 岁高龄的诺尔，在ALGOL60报告发布的45年后，终于等到了迟来的图灵奖，捧走了第50个ACM图灵碗。ACM给诺尔的颁奖词是：</p>
<blockquote><p><strong>授予彼得诺尔图灵奖，以表彰其在定义ALGOL60程序设计语言方面的先驱性工作。</strong></p></blockquote>
<p>虽然他的图灵碗迟到了40年，但是以诺尔的淡泊和平和，我们不难想见，他不会太介意的。</p>
<p>计算机科学早期的程序语言设计，是一项很艰难的工作，在这十多位科学家的努力下，创造了ALGOL这个绝对的奇迹。其中，上面这三位直接因为 ALGOL捧得了图灵碗，事实上参加巴黎会议的13名科学家中，还包括麦卡锡（John McCarthy），他后来因为在人工智能领域的杰出贡献获得了图灵奖，我们将在后面单独欣赏他的工作。为ALGOL60开发编译器的狄克斯特拉，也紧跟着麦卡锡，作为一位编程艺术大师而获得了次年的图灵奖。ALGOL，它就像一个阿拉丁神灯，亲手触摸过它的寥寥十几位科学家中，先后5位捧得了图灵碗，戴上了计算机科学界的最高桂冠，从这个意义上来说，它真的是一个“绝对的奇迹”。</p>
<p>（第一章完）</p>
]]></content:encoded>
			<wfw:commentRss>http://songshuhui.net/archives/31345/feed</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>近看图灵碗 (一. 从苏黎世到巴黎) (上)</title>
		<link>http://songshuhui.net/archives/31343</link>
		<comments>http://songshuhui.net/archives/31343#comments</comments>
		<pubDate>Sun, 24 Jan 2010 14:43:24 +0000</pubDate>
		<dc:creator>苏椰</dc:creator>
				<category><![CDATA[计算机科学]]></category>
		<category><![CDATA[原创]]></category>
		<category><![CDATA[图灵奖]]></category>

		<guid isPermaLink="false">http://songshuhui.net/?p=31343</guid>
		<description><![CDATA[我们的旅程从世界花园瑞士开始，1958年5月27日，苏黎世过完了六鸣节，到处春暖花开。就在4年前的这个季节，图灵离开了人间。 这一天，一场8个人的讨论会将在苏黎世召开，没有花，没有酒，连个专门的会议名称都没有。会议桌的一边，是美国计算机学会（ACM）的4名代表，另 一边是德国应用数学和力学学会（GAMM）的4名代表，索性把地点和双方名称连起来，就叫苏黎世ACM-GAMM会议。后来的历史将会证明，这场毫不隆 重、甚至不太圆满的会议，改变了此后的计算机科学，特别是对于1922年成立的GAMM来说，这场会议几乎成了它唯一的光辉事迹。8名代表陆续抵达了苏黎世，他们将要在此讨论，规划一种新型的编程语言，叫作国际代数语言（IAL）。 在电子计算机刚刚出现时，想让它干活十分不容易，关键的问题就在于，计算机听不懂人类语言。既然没法让计算机说人话，人们只好使用机器语言跟它们沟通。 左手是电线，右手是开关，这就是最早的机器语言（图为1946年的ENIAC计算机）。程序员先在纸上把程序设计好，然后进行持续数周的扳开关和接 电线的工作，读者如果做过数字电路的课程实验，就能体会到那是怎样的麻烦，万一哪根儿线断了，排查起来那就是恶梦的样板。后来，程序员们有了新方法，把程 序设计成打孔卡片（有孔没孔就是二进制），于是编程的主要工作变成了打孔，大家要是有兴趣，把自己身份证号码转成二进制，打在纸条上，看看是什么滋味。打 一个数尚属不易，打一个程序就不难想象了。再后来，冯诺伊曼提出的存储程序实现了，人们把程序像数据一样保存在机器里，随时调用，编程从这时起才正式变成 脑力劳动。但别高兴得太早，虽然不用接电线和打孔，但编程还是要用0101001111，就像《麦兜的故事》里面麦太太说的，鸡包纸包纸包鸡包鸡包纸包再 包鸡鸡鸡。这种程序，编的时候只有作者和上帝能看懂，过一阵子之后，恐怕只有上帝能看懂了。随后，人们把一些常用的指令用一些“助记符”来代替，有了 ADD、MOV这样的写法，形成了汇编语言，但本质上跟鸡包纸包鸡还是同一码事。 1953年，IBM公司的巴科斯（John Backus）再也忍不下去了，这哪里是编程，这不跟受刑一样么。他揭竿而起上书董事长，要为IBM704系列计算机开发一种新型编程语言。号称计算机之 父的冯诺伊曼当时是IBM的顾问，他坚决认为这个提议十分不靠谱，但也许是应了有心人天不负，董事长Hurd同意了这个计划。 巴科斯1924年出生在美国费城，他的父亲是一家火药公司的员工。巴科斯小时候不爱读书，勉勉强强混了个中学毕业，进入弗吉尼亚大学学习化学，成绩 依然很不好。二战爆发后，巴科斯参加了美国陆军，在Haverford学院（这可不是哈佛）接受医疗训练，准备治病救人，结果别人没救成，倒是发现自己长 了一个脑瘤，于是接受了手术。后来，巴科斯打算当一名无线电技术员，在训练过程中，突然对数学产生了极大的兴趣，于是进入哥伦比亚大学学习数学，于 1949年获得硕士学位，进入了IBM公司工作。 巴科斯开发新语言的提议得到了批准后，立即组建了一个开发小组，并担任组长，主持开发工作。1957年，第一套Fortran语言诞生了，尽管呱呱 坠地时哭声不响，第一次演示就出了编译错误，但还是坚强地活了下来。本文不是编程教材，对于Fortran的具体细节，就不过多叙述了，但是我们要记住这 个名字，因为它是非常耀眼的。Fortran是世界上第一个被正式应用的高级语言，所谓高级语言，是说它的语法更接近人类语言，而不是鸡包纸包鸡。从此以 后，程序员不必再背那些枯燥的机器码，只需用“IF (x &#62; 0) THEN x = 0”这样的简单易懂的方式编程，可想而之它的推出让人多么兴奋。在电影《硅谷海盗》中，微软CEO鲍尔默讽刺说，要想激起比尔盖茨的性欲，必须这样叫 床：Oh!Fortran~Oh~For~~Tran～。直到如今，经过多年改进的Fortran仍然在计算机界占有一席之地，不知道知天命之年的 Fortran是否会记恨，当年冯诺伊曼差点把它掐死在摇篮里，戏剧的是，就在第一套Fortran诞生之前两个月，冯诺伊曼因癌症去世了。关于Fortran就先说到这里，尽管它光辉夺目，但对于本文来说，它只是配角。在上世纪 50年代末，编程语言的矛盾已经白热化，并非Fortran一己能够力挽狂澜。况且Fortran本身还有一个严重缺陷，它为IBM704而生，依赖特定 的机器型号，很难移植到别的机器上。革命尚未成功，同志仍需努力，在这个时候，ACM和GAMM都对编程语言有一些想法，于是他们决定坐在一起讨论讨论， 规划一种更好的语言。苏黎世讨论会就是在这样的背景下召开的。 Fortran语言之父巴科斯这回又没闲着，作为ACM的代表之一，他也来到了苏黎世，想再次参与锻造新刀。这次制定语言，主要有两个原则，第一点 毫无疑问，要使它更容易被人类理解，这是一直以来的革命方针；第二点，是要弥补Fortran的一些不足，主要是要具有通用性，兼容不同型号的机器。 讨论会开始了。由于只有8人，不必拘泥形式，再加上诸位代表都是理工背景，说起话来锱铢必较，这场讨论，注定激烈无比。 为了描述即将诞生的国际代数语言，巴科斯用他带着重重鼻音的费城口音，首先提出了一套用来描述语言的语言，称为巴科斯范式。我们知道，学英语的时 候，有一些“主+系+表”之类的句套子，对学习英语有很大帮助。对于计算机语言，也需要这样的句套子来描述它，巴科斯范式就是为了描述IAL而提出的。当 然这个范式并非这么简单，它也能描述其它编程语言，甚至一部分自然语言，是一套非常了不起的设计。 有了巴科斯范式，8名代表你一言我一语，将自己在设计语言方面的经验倾囊而出，开始制定国际代数语言的标准。正所谓众口难调，每个人都对自己心中的 新语言有着自己的观点，大家很快就陷入了争执，谁也不让谁，抢着用飞快的语速反驳对方，屋里的空气陷入了紧张，一个接一个的“IAL”、“IAL”、 “IAL”飘在空中，不停地游荡。这时，ACM小组的主席艾伦佩利（Alan Perlis）突然瞪着圆圆的眼睛大声说：停！你们难道没发现“IAL”这个词很绕嘴吗？ 佩利比巴科斯大两岁，1922年出生于美国匹兹堡，与巴科斯的家乡费城同在宾夕法尼亚州，俩人也算是半个老乡。佩利虽然出生在愚人节，但他一点儿也 不笨，比起巴科斯，佩利可算是年轻有为。无巧不成书，佩利初入大学时也是化学专业，他在21岁时，获得了卡内基理工学院的化学学士学位，这个学院就是现在 美国计算机专业排名第一的著名学府，卡内基梅隆大学。与巴科斯巧合的是，刚刚走出大学校园的佩利，看到满街都是征兵海报，看到山姆大叔紧盯着他说“I want you”，看到珍珠港事件后神经绷紧的美国，也选择了参军。更加惊人的巧合是，佩利也是在服役期间突然对数学产生了强烈兴趣，并转而攻读之。1950年， 他在麻省理工学院获得了博士学位。两年后他来到普渡大学，出任普渡大学计算中心首任主任，在普渡安装了IBM CPC计算机，并为其设计了一个叫作IT(Internal Translator)的编程语言。过了四年，这个毕业才6年的34岁年轻人，又一跃当上了卡内基理工学院第一任计算机科学系主任，为卡耐基配置了IBM 650，顺便把IT语言移植到650上。这些工作使佩利在程序语言的设计方面，有了许多经验和体会，所以在ACM成立这个程序设计语言委员会时，佩里坐上 了主席的位置。诸位读者，假如这个惊人的成长步伐让您吃惊，那您可要好好地适应一下了，在我们这个系列的文章中，比比皆是这样的天才人物，会让您脊背发 [...]]]></description>
			<content:encoded><![CDATA[<p>本文作者：苏椰</p>
<p>我们的旅程从世界花园瑞士开始，1958年5月27日，苏黎世过完了六鸣节，到处春暖花开。就在4年前的这个季节，图灵离开了人间。</p>
<p>这一天，一场8个人的讨论会将在苏黎世召开，没有花，没有酒，连个专门的会议名称都没有。会议桌的一边，是美国计算机学会（ACM）的4名代表，另 一边是德国应用数学和力学学会（GAMM）的4名代表，索性把地点和双方名称连起来，就叫苏黎世ACM-GAMM会议。后来的历史将会证明，这场毫不隆 重、甚至不太圆满的会议，改变了此后的计算机科学，特别是对于1922年成立的GAMM来说，这场会议几乎成了它唯一的光辉事迹。8名代表陆续抵达了苏黎世，他们将要在此讨论，规划一种新型的编程语言，叫作国际代数语言（IAL）。<span id="more-31343"></span></p>
<p>在电子计算机刚刚出现时，想让它干活十分不容易，关键的问题就在于，计算机听不懂人类语言。既然没法让计算机说人话，人们只好使用机器语言跟它们沟通。</p>
<p style="text-align: center"><a href="http://skylersun.info/wp-content/uploads/2009/12/Eniac.jpg"><img class="aligncenter" src="http://skylersun.info/wp-content/uploads/2009/12/Eniac-300x229.jpg" alt="" width="300" height="229" /></a></p>
<p>左手是电线，右手是开关，这就是最早的机器语言（图为1946年的ENIAC计算机）。程序员先在纸上把程序设计好，然后进行持续数周的扳开关和接 电线的工作，读者如果做过数字电路的课程实验，就能体会到那是怎样的麻烦，万一哪根儿线断了，排查起来那就是恶梦的样板。后来，程序员们有了新方法，把程 序设计成打孔卡片（有孔没孔就是二进制），于是编程的主要工作变成了打孔，大家要是有兴趣，把自己身份证号码转成二进制，打在纸条上，看看是什么滋味。打 一个数尚属不易，打一个程序就不难想象了。再后来，冯诺伊曼提出的存储程序实现了，人们把程序像数据一样保存在机器里，随时调用，编程从这时起才正式变成 脑力劳动。但别高兴得太早，虽然不用接电线和打孔，但编程还是要用0101001111，就像《麦兜的故事》里面麦太太说的，鸡包纸包纸包鸡包鸡包纸包再 包鸡鸡鸡。这种程序，编的时候只有作者和上帝能看懂，过一阵子之后，恐怕只有上帝能看懂了。随后，人们把一些常用的指令用一些“助记符”来代替，有了 ADD、MOV这样的写法，形成了汇编语言，但本质上跟鸡包纸包鸡还是同一码事。</p>
<p>1953年，IBM公司的巴科斯（John Backus）再也忍不下去了，这哪里是编程，这不跟受刑一样么。他揭竿而起上书董事长，要为IBM704系列计算机开发一种新型编程语言。号称计算机之 父的冯诺伊曼当时是IBM的顾问，他坚决认为这个提议十分不靠谱，但也许是应了有心人天不负，董事长Hurd同意了这个计划。</p>
<p><img class="aligncenter" src="http://skylersun.info/wp-content/uploads/2009/12/John_Backus.jpg" alt="" width="267" height="363" /></p>
<p>巴科斯1924年出生在美国费城，他的父亲是一家火药公司的员工。巴科斯小时候不爱读书，勉勉强强混了个中学毕业，进入弗吉尼亚大学学习化学，成绩 依然很不好。二战爆发后，巴科斯参加了美国陆军，在Haverford学院（这可不是哈佛）接受医疗训练，准备治病救人，结果别人没救成，倒是发现自己长 了一个脑瘤，于是接受了手术。后来，巴科斯打算当一名无线电技术员，在训练过程中，突然对数学产生了极大的兴趣，于是进入哥伦比亚大学学习数学，于 1949年获得硕士学位，进入了IBM公司工作。</p>
<p>巴科斯开发新语言的提议得到了批准后，立即组建了一个开发小组，并担任组长，主持开发工作。1957年，第一套Fortran语言诞生了，尽管呱呱 坠地时哭声不响，第一次演示就出了编译错误，但还是坚强地活了下来。本文不是编程教材，对于Fortran的具体细节，就不过多叙述了，但是我们要记住这 个名字，因为它是非常耀眼的。Fortran是世界上第一个被正式应用的高级语言，所谓高级语言，是说它的语法更接近人类语言，而不是鸡包纸包鸡。从此以 后，程序员不必再背那些枯燥的机器码，只需用“IF (x &gt; 0) THEN x = 0”这样的简单易懂的方式编程，可想而之它的推出让人多么兴奋。在电影《硅谷海盗》中，微软CEO鲍尔默讽刺说，要想激起比尔盖茨的性欲，必须这样叫 床：Oh!Fortran~Oh~For~~Tran～。直到如今，经过多年改进的Fortran仍然在计算机界占有一席之地，不知道知天命之年的 Fortran是否会记恨，当年冯诺伊曼差点把它掐死在摇篮里，戏剧的是，就在第一套Fortran诞生之前两个月，冯诺伊曼因癌症去世了。关于Fortran就先说到这里，尽管它光辉夺目，但对于本文来说，它只是配角。在上世纪 50年代末，编程语言的矛盾已经白热化，并非Fortran一己能够力挽狂澜。况且Fortran本身还有一个严重缺陷，它为IBM704而生，依赖特定 的机器型号，很难移植到别的机器上。革命尚未成功，同志仍需努力，在这个时候，ACM和GAMM都对编程语言有一些想法，于是他们决定坐在一起讨论讨论， 规划一种更好的语言。苏黎世讨论会就是在这样的背景下召开的。</p>
<p>Fortran语言之父巴科斯这回又没闲着，作为ACM的代表之一，他也来到了苏黎世，想再次参与锻造新刀。这次制定语言，主要有两个原则，第一点 毫无疑问，要使它更容易被人类理解，这是一直以来的革命方针；第二点，是要弥补Fortran的一些不足，主要是要具有通用性，兼容不同型号的机器。</p>
<p>讨论会开始了。由于只有8人，不必拘泥形式，再加上诸位代表都是理工背景，说起话来锱铢必较，这场讨论，注定激烈无比。</p>
<p>为了描述即将诞生的国际代数语言，巴科斯用他带着重重鼻音的费城口音，首先提出了一套用来描述语言的语言，称为巴科斯范式。我们知道，学英语的时 候，有一些“主+系+表”之类的句套子，对学习英语有很大帮助。对于计算机语言，也需要这样的句套子来描述它，巴科斯范式就是为了描述IAL而提出的。当 然这个范式并非这么简单，它也能描述其它编程语言，甚至一部分自然语言，是一套非常了不起的设计。</p>
<p>有了巴科斯范式，8名代表你一言我一语，将自己在设计语言方面的经验倾囊而出，开始制定国际代数语言的标准。正所谓众口难调，每个人都对自己心中的 新语言有着自己的观点，大家很快就陷入了争执，谁也不让谁，抢着用飞快的语速反驳对方，屋里的空气陷入了紧张，一个接一个的“IAL”、“IAL”、 “IAL”飘在空中，不停地游荡。这时，ACM小组的主席艾伦佩利（Alan Perlis）突然瞪着圆圆的眼睛大声说：停！你们难道没发现“IAL”这个词很绕嘴吗？</p>
<p><img class="aligncenter" src="http://skylersun.info/wp-content/uploads/2009/12/perlis-231x300.gif" alt="" width="231" height="300" /></p>
<p>佩利比巴科斯大两岁，1922年出生于美国匹兹堡，与巴科斯的家乡费城同在宾夕法尼亚州，俩人也算是半个老乡。佩利虽然出生在愚人节，但他一点儿也 不笨，比起巴科斯，佩利可算是年轻有为。无巧不成书，佩利初入大学时也是化学专业，他在21岁时，获得了卡内基理工学院的化学学士学位，这个学院就是现在 美国计算机专业排名第一的著名学府，卡内基梅隆大学。与巴科斯巧合的是，刚刚走出大学校园的佩利，看到满街都是征兵海报，看到山姆大叔紧盯着他说“I want you”，看到珍珠港事件后神经绷紧的美国，也选择了参军。更加惊人的巧合是，佩利也是在服役期间突然对数学产生了强烈兴趣，并转而攻读之。1950年， 他在麻省理工学院获得了博士学位。两年后他来到普渡大学，出任普渡大学计算中心首任主任，在普渡安装了IBM CPC计算机，并为其设计了一个叫作IT(Internal Translator)的编程语言。过了四年，这个毕业才6年的34岁年轻人，又一跃当上了卡内基理工学院第一任计算机科学系主任，为卡耐基配置了IBM 650，顺便把IT语言移植到650上。这些工作使佩利在程序语言的设计方面，有了许多经验和体会，所以在ACM成立这个程序设计语言委员会时，佩里坐上 了主席的位置。诸位读者，假如这个惊人的成长步伐让您吃惊，那您可要好好地适应一下了，在我们这个系列的文章中，比比皆是这样的天才人物，会让您脊背发 凉。</p>
<p>言归正传，我们刚才说到，佩利在讨论时，认为“IAL”这个词很绕嘴。假如他懂一点中文，没准还会发现，这个词一旦读快起来，很像汉语中的“哎 哟”。佩利扶了一下眼镜，继续说道：我想不明白为什么要起这么个名字，不但很绕嘴，而且狂妄自大，不就是个语言么，何必扯虎皮做大旗，叫什么“国际语 言”？佩利此言并无它意，然而他一心只顾着说，没有注意到身边的巴科斯此时已是脸红耳热，巴科斯所在的公司，早在1924年还在卖人口统计卡片的时候，就 “狂妄自大”地改名叫作国际商用机器公司。</p>
<p>尽管佩利认为IAL这个名字既绕嘴又狂妄，但其他代表却觉得这个名字好听又大气，再说这又不是什么要紧的事，何必在这上面浪费口舌。这件事情仿佛成 了插曲，直到五天后会议结束时，新语言的名字仍然是IAL，并写进了会议总结。也许这些代表怎么也没预料到，佩利在一年之后，还是执意改掉了这个名字，他 们更没预料到在多年之后，新的名称将以烫金大字铭刻在计算机科学的历史上，而IAL却鲜为人知。</p>
<p>取代“IAL”的新名字，叫作ALGOL。这是ALGOrithmic Language的缩写，即算法语言。后来Bauer强调说，ALGOL这个名字，是Bottenbruch最先提出的，这两位都是苏黎世讨论会的德国代表。</p>
<p>除了名字没有达成共识之外，最终大家对新语言的句法也没能统一意见，苏黎世ACM-GAMM会议带着许多未尽的争议，在1958年5月1日草草落下 了帷幕。然而，对于这些科学家来说，事实胜于一切雄辩，绝不能陷入驴子的困境。会议结束后，他们立即投入到实现新语言的工作中——既然分歧不能解决，那就 干脆两种都做出来再说。他们成立了一个ZMMD小组，旨在开发一种ALGOL语言的编译器，ZMMD这个名称的由来，是其几位组员以及他们使用的一台 Z22计算机分别所在的四个城市的开头字母。</p>
<p>请计算机专业的读者们在此稍息片刻，容我给其它专业的读者稍微解释一下什么是编译器。前面我们说过，因为计算机没法理解人类语言，我们需要用机器指 令来编写程序，我们现在有了高级编程语言，不必使用麻烦的机器指令，这并不是因为计算机学会了人类语言，而是因为我们请了一位翻译。简单地说，它能够把高 级语言翻译成机器指令，既使我们不用再做那些机械劳动，也能满足机器们的冰冷胃口，这个翻译就是编译器，它本身也是一套程序。好了，大家回回神，继续我们 的故事。</p>
<p>就在不久之后的1958年年底，欧洲的冬天到来了，世界各地的游客纷纷来到壮丽的阿尔卑斯山，体验激动人心的滑雪运动。就在这个冬天，在ZMMD小 组的努力下，第一套ALGOL语言及其编译器成功地开发出来了，按照年份，命名为ALGOL58。好玩的是，ALGOL58有三种不同版本的语法，在实际 编程和书面表达时写法是不同的，有点像汉语分白话文和文言文，其差异之大，连小数点的写法都不一样。由于巴科斯的参与，ALGOL58既继承了 Fortran的许多优点，又弥补了Fortran的许多不足，一度使Fortran的地位面临着严竣的挑战。这里我们不详细介绍ALGOL58的样子， 它的生命实在太短暂，很快就退出了历史舞台。因为，就在一年多以后，ALGOL58的创造者，包括巴科斯和佩利等，对这种新语言有了许多新的体会和感受。 1960年1 月，他们召集了其他几位参与ALGOL工作的计算机科学家，来到了浪漫之都巴黎，再次召开了一场关于ALGOL语言的研讨会。</p>
<p>(未完待续)</p>
<p><strong> </strong></p>
]]></content:encoded>
			<wfw:commentRss>http://songshuhui.net/archives/31343/feed</wfw:commentRss>
		<slash:comments>38</slash:comments>
		</item>
	</channel>
</rss>

