個(gè)人成就
弗洛伊德在同年發(fā)表于《ACM學(xué)報(bào)》(Journal of ACM)10月號(hào)上的另一篇論文中,還第一次把“不確定性”概念引入程序。所謂“不確定性程序”(non deterministic program)就是根據(jù)操作規(guī)則有多種操作可供選擇,而只選其中之一搜索下去的程序。這對(duì)人工智能問(wèn)題的研究具有十分重要的意義。
此外,弗洛伊德還和伊萬(wàn)斯(R. 0.Evans,因設(shè)計(jì)世界上第一個(gè)類比推理程序Analogy而聞名于世的學(xué)者。Analogy是可以判定幾何圖形是否類似的人工智能程序)一起設(shè)計(jì)了一種稱為產(chǎn)生式語(yǔ)言的特殊的程序設(shè)計(jì)語(yǔ)言FPL(Floyd-Evans Production Language),用來(lái)編寫計(jì)算機(jī)語(yǔ)言的語(yǔ)法分析程序。之所以稱它為產(chǎn)生式語(yǔ)言,是因?yàn)橛盟帉懙某绦蛴梢幌盗挟a(chǎn)生式(或稱歸約式)組成。實(shí)際上,用 FPL編好語(yǔ)法分析程序以后,如果再插入語(yǔ)義子程序,就可以構(gòu)成一個(gè)完整的編譯器。用FPL語(yǔ)言編寫的程序簡(jiǎn)稱PP程序,由以下5個(gè)部分按自左至右順序組成:
⒈標(biāo)號(hào)(可有可無(wú));
⒉棧頂符號(hào)串;
⒊前看符號(hào)串(或稱窗口符號(hào)串);
⒋歸約符號(hào);
⒌語(yǔ)義動(dòng)作。
執(zhí)行一個(gè)PP程序的方法是:依次檢視各PP的第三部分。若某PP的第三部分和輸入的前看符號(hào)串一致,則進(jìn)一步檢視此PP的第四部分,若非空,表示要進(jìn)行歸約,此時(shí)把它的第二部分和當(dāng)前實(shí)際的棧頂符號(hào)串相比。如果能匹配上,則實(shí)行歸約,即刪去實(shí)際的棧頂符號(hào)串,用第四部分代替之,然后執(zhí)行第五部分的動(dòng)作。若此PP的第四部分為空,表示當(dāng)前無(wú)歸約可做,直接執(zhí)行第五部分的動(dòng)作即可。
弗洛伊德是1978年12月4日在華盛頓舉行的ACM年會(huì)上接受圖靈獎(jiǎng)的。他發(fā)表了題為“程序設(shè)計(jì)的風(fēng)范”(The Paradigms of Programming)的演說(shuō)。演說(shuō)全文刊于Communications of ACM,1979年8月,455-460頁(yè),也可見(jiàn)《前20年的ACM圖靈獎(jiǎng)演說(shuō)集》(ACM Turing Award Lectures——The First 20Years:1966—1985,ACM Pr.),131—142頁(yè)。弗洛伊德在演說(shuō)中對(duì)結(jié)構(gòu)化程序設(shè)計(jì),遞歸協(xié)同例程(recursive coroutine),動(dòng)態(tài)程序設(shè)計(jì),基于規(guī)則的系統(tǒng),狀態(tài)變換機(jī)制(state-transition mechanism)等各種不同程序設(shè)計(jì)風(fēng)范進(jìn)行了比較,并介紹了自己在研究工作中如何根據(jù)具體情況應(yīng)用不同風(fēng)范的例子,很給人以啟示。時(shí)間雖然已過(guò)去20多年,他的例子也許有些過(guò)時(shí),但他的觀點(diǎn)至今仍然是有效的。