新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> It is the theory that decides what can be observed. - Albert Einstein
    [返回] 计算机科学论坛计算机理论与工程『 理论计算机科学 』 → 数理逻辑大师们[转帖] 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 63683 个阅读者浏览上一篇主题  刷新本主题   平板显示贴子 浏览下一篇主题
     * 贴子主题: 数理逻辑大师们[转帖] 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     chzhuang 帅哥哟,离线,有人找我吗?
      
      
      等级:大三(研究MFC有点眉目了!)
      文章:33
      积分:671
      门派:XML.ORG.CN
      注册:2006/2/13

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给chzhuang发送一个短消息 把chzhuang加入好友 查看chzhuang的个人资料 搜索chzhuang在『 理论计算机科学 』的所有贴子 引用回复这个贴子 回复这个贴子 查看chzhuang的博客楼主
    发贴心情 

    Rule of Simplicity (by C.A.R. Hoare) - -
                                           
    "There are a number of ways of constructing a software design.
    One way is to make it so simple that there are obviously no deficiencies,
    and the other way is to make it so complicated that there are no obvious deficiencies." -- C.A.R. Hoare


    查尔斯·霍尔

                       ---从QUICKSORT、CASE到程序设计语言程序设计语言的公理化

        学过“数据结构”或“算法设计与分析”的人都知道著名的快速排序算法QUICKSORT;编过程序的人大概也都用过实现条件转移的最方便的语句CASE语句。但是你知道这个算法和这个语句是谁发明的吗?它们的发明者就是1990年IEEE计算机先驱奖和1980年图灵奖的获得者英国牛津大学计算机科学家查尔斯·霍尔(Charles AntonyRichard Hoare)。当然霍尔之所以获得这两项大奖决不仅仅是因为他发明了QUICKSORT和CASE,而是因为他在计算机科学技术的发展中,尤其是在程序设计语言的定义和设计、数据结构和算法、操作系统等许多方面都起了重要的作用,有一系列发明创造,QUICKSORT和CASE只是其中的一小部分而已。

        霍尔于1934年1月11日诞生于英国南部。在坎特伯雷(Canter·bury)的国王学校(King’s Sch001)度过中学阶段以后,进入牛津的莫顿学院(Merton College)学习数学,1960年取得硕士学位。之后他进入伦敦一家不大的计算机生产厂家Elliott Brothers公司,为该公司的Elliott 803计算机编写库子程序,从此开始他的计算机生涯。QUICK,SORT就是他在那个时候用原有的SHELLSORT(以算法的发明人D.L.Shell命名的通过调换并移动数据项实现排序的一种算法,发明于1959年)编程时分析了它的缺点而发明出来的。QUICKSORT具有“快刀斩乱麻”的特点,能迅速地对乱序作大幅度调整,特别适合于因多次追加、删除而变得杂乱无章的数据集合。QUICKSORT是利用“分治法”(divide and conquer)进行算法设计的一个成功范例,它的发明是霍尔在计算机方面的天才的第一次显露,受到老板的赞赏和重视。第二年,霍尔接受了一个新的任务,为公司的新机型Elliott 503设计一个新的高级语言。但就在其时,他弄到了一份Algol 60报告的复印件,还参加了一个由狄克斯特拉(E.W.D耻stra,首届计算机先驱奖获得者)等人在布赖顿举办的Algol 60培训班,感到与其自己没有把握地去设计一个新的语言,还不如将比较成熟的Algol 60在Elliott 503上加以实现。霍尔和他的同事们的这个想法获得公司同意以后,由霍尔主持设计与实现了Algol 60的一个子集的版本。霍尔在开发初首先制定了明确的目标,即系统要安全可靠,生成的目标码要简洁,工作区数据要紧凑,过程和函数的人口和出口要清晰、严密等,还明确了整个编译过程采用一次扫描等原则。这样,ElliottAl-gol的开发十分顺利与成功,它在1963年中推出以后大受欢迎,成为世界各国所开发的Algol 60的各种版本中在效率、可靠性和方便性等方面的性能指标都首屈一指的一个版本,霍尔本人也从此受到国际学术界的重视。国际信息处理联盟IFIP后来任命霍尔为2.1工作组(WorkingGroup 2.1)的负责人,这个工作组的任务是维护和发展Algol。霍尔果然不负众望,主持设计了Algol X以继承与发展Algol60。正是在AlgolX的设计中,霍尔发明了CASE语句。CASE语句具有如下形式的语法结构:

    CASE E of

    C1:S1;

    C2:S2;

    .

    .

    .

    Cn-1:Sn-1;

    Otherwise:Sn

    End

    其中E是一个表达式,称为“选择子”(Selector),每个Ci的值为常数,称为“分情形标号”,Si则为可执行语句。CASE语句的含义是:若E的值等于某个Ci的值,则执行其后的Si(i=1,2,3,…,n—1),否则执行Sn。某个Si或S。执行完之后,整个CASE语句也就执行完毕。由于CASE语句构成多路分支,程序结构清晰、直观,所以CASE语句后来几乎成为程序设计语言的标准,被各种语言广泛采用。在C语言中,没有独立的CASE语句,但它的SWITCH语句(开关语句)实际上是在CASE语句的基础上形成的:

    switch E

    {case C1:S1;

    case C2:S2;

    .

    .

    .

    case Cn-1:Sn-1;

    [default:Sn]

      不同之处有二:一是C;可以是表达式,但计算结果必须仍是常数;二是E的结果若不等于某个Ci(i=1,2,3,…,n—1)的值,则视有无default子句,若有,执行Sn;若无,则什么也不执行,控制转向SWITCH后的语句。显然,这些都是对CASE语句的进一步改进。

      霍尔于1968年离开Elliott,离开产业界,原因是作为学者他对程序设计浯言的形式化定义这类更偏重于学术性和理论性的课题更感兴趣。离开Elliott以后,他任职过一年英国国家计算中心主任,发现自己也不适于从事行政管理,因此又转入爱尔兰的昆土大学(Queen’s University),从事教学和研究,1977年转入牛津大学。离开Elliott以后,霍尔在计算机科学理论的研究中发挥其特长,作出了许多创造性的重大贡献。首先是1969年10月,霍尔在Communications of ACM上发表了他那篇有里程碑意义的论文“计算机程序设计的公理基础”(An Axiomatic Basis for Computer Programming)。在这篇论文中,霍尔提出了程序设计语言的公理化定义方法,即公理语义学(axiomatic semantics),也就是用一组公理和一组规则描写语言应有的性质,从而使语言与具体实现的机器无关,而且也易于证明程序的正确性。这是继麦卡锡(J.McCarthy,1985年计算机先驱奖获得者)在1963年提出用递归函数定义程序、弗洛伊德(R.W.Floyd,1991年计算机先驱奖获得者)在1967年提出基于程序流程图的归纳断言法以后,在程序逻辑研究中所取得的又一个重大技术进展。霍尔提出的方法在逻辑上与弗洛伊德提出的方法类似,但不是用流程图而是用代数法,即控制流用以下一些结构表示:

        begin al;a2;a3;…;an end

        if p then a1 else a2

        while p do a

        后面为了方便,我们用到第一个结构时省略首尾的begin和end。

        相应于弗洛伊德的验证条件,霍尔引入下列符号:

        p{a}q

        其意义是:如果在执行。之前P(叫做precondition)成立,则当α执行完了后q(叫做postcondition)成立。

        霍尔给出了以下一组证明规则(proof rule)或叫推导规则:

           p’ pp{a}qq→q’

        1.

              p’{a}q’

        这个规则中的p’→和q’→q是普通数理逻辑中的断言命题,表示若p’(或q’)成立,则p(或q)成立。这个规则表示,若横线以上的p’→p、p{a}q、q→q’成立,则横线以下的p’{a}q1成立。

    2.

       P(e){x:=e}p(x)

    这个规则表示,如果在将e赋给x之前p(e)成立,则其后p(x)成立。

    3. P{a}qq{b}r

        p{a;b}r

        这个规则表示的是“传递律”(transitive law),即如果执行α之前p成立,α执行完了以后q成立;而如果执行b之前q成立,b执行完了以后r成立,则若在动作序列。和^执行之前P成立,则a和b执行完了以后r成立。

      

       4.   p∧r{a}qp∧~r(b)q

           p{if r then a else b}q

        这个规则中的∧和~是一般数理逻辑中的合取(conjunction)和否定(negation)连接词。这个规则定义了if-then-else的执行取决于precondition r的值。

      

    5.        p∧q{a}p

         p{while q do a}p∧~q

        这个规则定义了while循环:p是循环不变量(loop invariant),而q是终止循环的条件。

        下面我们举一个例子说明如何用霍尔建立的系统验证程序的正确性。设有计算n的阶乘n!的如下程序:

    A: x:1;B

    B: while y>0 do C

    C: x:y×x;y:=y-1

        则通过下列霍尔断言可以证明上述程序是正确的,因为这些断言都是真的,而且在霍尔的系统中是可以被证明的,而最后一个断言正是我们所要寻求的结论,因此它们形成对上述阶乘程序正确性的说明。

    i.  y>0∧x×y! =n! {x:=y×x}y>0∧x×(y-1)! =n!

    [首先y>0∧x×y! =n!→y>0∧(y×x)×(y-1)! =n!]

    然后用规则(2),用x代替y×x]

    ii. y>0∧x×(y-1)! =n!{y:=y-1}y≥0∧x×y! =n!

        [类似(i),利用规则(2)]

    iii.y>0∧x×y! =n! {C}y≤0∧x×y! =n!

    [对(i)和(ii)用规则(3)]

    iv.Y≥0∧y=n∧x=1{B}x=n!

    [因为] y=n∧x=1→x×y! =n!

    又因为0! =1,所以Y≥0∧x×y! =n! ∧y≤0→y=0∧x=n! →x×y! =n!

    根据(iii),利用规则(5),令(5)中p=y≤0∧x×y! =n!,q=y>0,孥可得(iv)]

    v.  y≥0∧y=n{x:=1}y≥0∧y!=n∧x=1

    [因为p{x:=1}p∧x=1]

    vi. y≥0∧y=n{A}x=n!

    [对(V)和(Vi)利用规则(3)]

        因为(vi)中的precondition正好是n的初始条件,而postcondition给出了所需结果,这样就证明了程序可算出n!。

        为了给出证明,应该从程序的最后一行开始逐步后推。在这个例子中,(iii)步是最关键的,其中y≥0∧x×y! =n!就是循环不变量或归纳假设(induction hypothesis)。

        利用霍尔提出的这种方法,已经成功地描述了PASCAL等语言,说明了这个方法的巨大威力。但应该指出的是,霍尔的这个方法是不完备的,因为霍尔在开发和建立这个系统时并没有追求系统的完备性,而更多地追求系统的实用性。

        在数据类型、数据结构和操作系统设计等方面,霍尔也做了许多开创性的工作。目前广泛流行与应用着的许多概念都源于霍尔的工作。例如,关于抽象数据类型的规格说明(Specification,也叫规约)与其实现是否一致,就是由霍尔于1972年公式化了的。霍尔通过前后断言方法用已经定义了的(抽象)数据类型给出所要定义的新类型的抽象模型,这成为抽象数据类型规格说明的两种主要方法之一,即模型方法(另一方法为基于异调代数理论的代数方法)。对于操作系统的设计与实现十分关键的monitor(监控程序)的概念也是霍尔首先提出,并界定了它的作用与功能,即作为操作系统的核心,在把操作系统看做虚拟机扩充时,monitor是硬件的第一次扩充,它完成中断处理、进程控制与进程通信、存储区动态分配,建立软时钟,驱动设备通道,进行处理机调度。monitor为外面各层的设计提供良好的环境,并提高系统的安全性。

        20世纪70年代后期,霍尔又深入研究了运行在不同的机器上的若干个程序之间如何互相通信、互相交换数据的问题,实现了面向分布式系统的程序设计语言CSP。在该语言中,一个并发系统由若干并行运行的顺序进程组成,每个进程不能对其他进程的变量赋值。进程之间只能通过一对通信原语实现协作:Q?x表示从进程Q输入一个值到变量x中;P!e表示把表达式e的值发送给进程户。当户进程执行Q?x,同时口进程执行户!‘时,发生通信,e的值从Q进程传送给户进程的变量x。CSP语言后来成为著名的并行处理语言OCCAM(由INMOS公司为Transputer开发)的基础。20世纪80年代中期,霍尔又和布鲁克斯(S.Brooks)等人合作,提出了“CSP理论”TCSP(Theory Of Communicating Sequential Processes),它与上述CSP不同,但又有联系,这是一个代数演算系统,其基本成分是事件(或动作)。进程由事件和一组算子构造而成。TCSP采用“广播式通信”,而不像程序设计语言CSP中那样采用握手式通信,即只有当并行运行的各进程都执行同一动作时,才发生通信。此外,TCSP采用失败等价作为确定进程等价的准则,这就是著名的“失败语义”。利用失败可以构造TCSP的指称模型。霍尔为失败等价建立了一些公理系统,可以对语义上的等价关系进行形式推导。霍尔在这方面的工作开创了用代数方法研究通信并发系统的先河,形成了所谓“进程代数”(process algebra)这一新的研究领域,产生了很重要的影响。

        霍尔的论著极多,而且都很有份量,有很高的学术水平。有评论说,霍尔每发表一篇论文,几乎就要改变一次人们对程序设计的认识。这虽然是一种夸张的说法,但也说明霍尔的论著确实非常重要。ACM在1983年评选出最近四分之一个世纪中发表在Communications of ACM上的有里程碑式意义的25篇经典论文,只有两名学者各有2篇论文人选,霍尔就是其中之一(另一名是首届计算机先驱奖获得者狄克斯特拉)。霍尔人选的两篇论文分别是1969年10月的“计算机程序设计的公理基础”(An Axiomatic Basis for Computer Programming,这篇论文的要点我们前面已经介绍过了),另一篇是1978年8月的“通信顺序进程”(Communicating Sequential Processes),该论文奠定了前述CSP语言的基础。CSP现在已推广为“混合通信/顷序进程”(Hybrid Communicating Sequential Processes)。在这个语言中,有一种特殊的语句称为“连续构件”,可表示一个具体给定初值的微分方程;而原有的通信语句可用来表达事件的起源和发生;语言中的顺序算子、条件算子等则用来刻画连续构件和通信间的耦合关系。

        值得指出的是,霍尔还和我国软件学者、中国科学院软件所的周巢尘研究员等合作,在20世纪80年代末由于Esprit的ProCos项目的需要而对基于时态逻辑的逻辑型混合计算模型进行了研究,在这个模型中引入了时段和切变的概念,建立了时段演算,已引起该领域同行的广泛重视。时段用以刻画系统在一个时间区间上的连续变化,而切变则表示事件的发生(离散变量的变化)。在单个时段上,借助连续数学(微分方程理论)推导系统的行为;而在相邻时段间,则用时态逻辑中切变算子的规则,推导系统行为的转化。这种混合计算模型对于设计要求绝对安全的软件系统具有十分重大的意义。时段演算已在煤气燃烧器、铁路岔口控制、水位控制、自动导航、OCCAM语言的实时语义、描述调度程序的实时行为和电路设计等方面获得成功应用。

        此外,由法国学者阿勃利尔(J.R.Abrial)提出的以状态机为模型的著名的形式规约语言Z语言,也是由霍尔所领导的研究小组加以发展并实现的。

      霍尔出版的专著主要有以下几种:

      《操作系统技术》(Operating Systems Techniques,Academic Pr.,1972)

        《数理逻辑和程序设计语言》(Mathematical Logic and Programming language,Prentice—Hall,1985)

      《并发和通信的发展》(Development in  Concurrency and Communication,Addison-Wesley,1990)

      《机器推理和硬件设计》(Mechanized Reasoning and Hardware Design,Prentice·Hall,1992)

        除了获得计算机先驱奖和图灵奖以外,霍尔还在1981年获得AFIPS的Harry Goode奖;1985年获得英国IEE的法拉第奖章。霍尔曾应邀到过世界的许多国家讲学,中国科学院研究生院也曾于1983年邀请霍尔到北京讲学,并主办讨论班。1989年霍尔当选为欧洲科学院院士。1992年新加坡政府授予霍尔“李光耀优秀访问学者”称号。在2000年北京WCC大会上,霍尔应邀作了主题报告。

      顺便提一下,霍尔所开创的进程代数,我国学者给予了高度重视和深入研究,并有创新。国防科技大学李舟军博土已撰写出《进程代数导论——理论及应用》一书,被列入“中创软件丛书"2001年度计划即将出版。

    ----------------------------------------------
    觉之道:http://www.unicornblog.cn/user1/20/index.html

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/4/18 15:43:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 理论计算机科学 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/5/26 13:57:25

    本主题贴数15,分页: [1] [2]

     *树形目录 (最近20个回帖) 顶端 
    主题:  数理逻辑大师们[转帖](19685字) - chzhuang,2006年4月18日
        回复:  好高兴自己开始学数量逻辑了,真希望以后做出点成绩来。(52字) - Kysio,2010年1月11日
        回复:  相当不错(10字) - xixi8356,2006年5月29日
        回复:  谢谢yang兄指正:1、他们两位相对没这么大吧,但在目前来说,他们参与的基于逻辑的人工智能,和基..(641字) - chzhuang,2006年4月19日
        回复:  ?[align=right][color=#000066][此贴子已经被作者于2006-4-19..(91字) - yangfeather,2006年4月19日
            回复:  这个跟个人兴趣和视野有关呀,不可能面面俱到。HILBERT当然称得上数理逻辑大学了,他提出问题,哥..(273字) - chzhuang,2006年4月19日
        回复:  不错!!!(10字) - amny,2006年4月18日
        回复:  Rule of Simplicity (by C.A.R. Hoare) - - ..(11868字) - chzhuang,2006年4月18日
        回复:  约翰.麦卡锡 --"人工智能之父"和LISP语言的发明人 1971年的图灵奖授予提出"人..(9704字) - chzhuang,2006年4月18日
        回复:  呵呵,顺序放错了,这个要放最前面,按时间顺序。莱布尼兹出生于书香门第的莱布尼兹是德国一位博学多..(3125字) - chzhuang,2006年4月18日
        回复:  阿伦·图灵 作者:liny信息来源:XY Studio编辑:EmilMatthew 更新时间..(4969字) - chzhuang,2006年4月18日
        回复:  邱奇-图灵论题邱奇-图灵论题(The Church-Turing thesis)是计算机科学中以..(5371字) - chzhuang,2006年4月18日
        回复:  哥德尔中国科学院软件研究所 张锦文 作者:张锦文 文章来源:中数网 点击数: 601 ..(22979字) - chzhuang,2006年4月18日
        回复:  ●希尔伯特,D.(Hilbert,David,1862~1943) 希尔伯特,D.(..(7208字) - chzhuang,2006年4月18日
            回复:  作者区分数理逻辑的标准是什么哪?好几位大师都没有提到,Hilbert是否可以称为数理逻辑大师?他的..(140字) - chinake,2006年4月19日

    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    125.000ms