interlisp語言

interlisp語言

INTERLISP是為面向過程表示而設計的程式語言。這個版本的LISP具有標準LISP的全部功能,並有一個精心設計的支持環境。支持環境包括利用跟蹤和條件斷點的高級調試器,一個面向LISP的編輯器和一個“做我想做的事”的程式,該程式可以幫助改正一點上的多種錯誤。該環境也允許用戶修改系統的常規固定部分,例如中斷字和存貯器碎片收集與分配。它運行在各種XEROX機上,它的商品化系統是由XEROX公司開發的。

基本介紹

  • 中文名:interlisp語言
  • 外文名:interlisp
  • 定義:為面向過程表示而設計的程式語言
  • 類型:LISP
  • 系統:計算機
  • 套用學科:計算機原理
系統簡介,關於INTERLISP,整體化的常駐系統,對程式設計師的輔助,程式的分析,調試工具,特性,

系統簡介

人工智慧語言原則上可以採用任何一種形式的語言,但如果以一般的高級語言進行編寫,其程式將極其繁瑣冗長,有時無法實現。60年美國麻省理工學院教授麥卡錫(Mecarthy)發明了LISP語言,後來又擴展為INTERLISP語言,該語言增強了執行程式在時間和空間上的有效性。在其基礎上,科德爾·格林(Cordell Green)又提出了QA4求解語言,並將其嵌入INTERLISP語言。隨後又陸續引出了UTILISP語言、PROLOG語言,人工智慧語言得到了飛躍發展,推動了尖端科學技術不斷創新和問世。
它包含歸結(resolution),作位(bit)映射顯示。與LISP語言不同之點為:
(1)結構及其碼需用到核心編輯程式;
(2)有自動糾錯、進行語法擴展、結構存取和說明等的程式環境;
(3)能在好多種機型上實現;
(4)面向工具和設備,特別考慮了個人LISP工作站和用戶接口。

關於INTERLISP

整體化的常駐系統

一般程式的編輯是通過一個通用的正文編輯程審進行,此時系統內常駐的是一個編輯程式及其編輯的結果,當程式要編譯或解釋執行時,系統要把編輯結果存入檔案,退出編輯狀態,重新進入編譯或解釋執行狀態,也即系統內常駐的不再是編輯程式,而是編譯或解釋程式.當程式運行及調試時,系統內常駐的是可執行的程式目標代碼及調試程式。假使程式調試時發現有錯需修改源程式檔案時,系統又將重新進入編輯狀態,運行編輯程式,修改源程式檔案,這類系統對於經常要更改的探索性程式設計來說是不方便的,效率也是不高的。
INTERLISP程式設計系統同時支持LISP程式的編輯及運行,程式的一個副本常駐在系統內,LISP程式以它的表結構的內部形式存儲在系統內,當程式編輯時,實際上是重新安排、改動那些內部數據結構,不僅如此,INTERLISP的編輯程式也是INTERLISP系統的一部分,它是用LISP語言寫的一個過程,它編輯的對象不是正文檔案的字元串,而是對表結構(樹型結構)進行查找編輯,它的基本編輯命令是在LISP的樹結構上移動游標,在當前表達式上更新某個元素、印出樹中的當前部分等。
這種整體化常駐系統,由於程式的編輯,運行均在系統的記憶體(或虛存)中進行,其編輯對象是這種語言的基本數據結構,因此對用戶來說是十分方便和高效的。 INTERLISP的成功運行,對以後整體化軟體工程環境(包括語法制導編輯器等)都有極大影響。這種系統由於其功能比較齊全,包括程式的編輯、編譯或解釋執行、調試等,因此系統比較複雜,它的內部數據結構是語法樹,因而對類似註解這類正文的處理不很方便。

對程式設計師的輔助

INTERLISP系統有一個極吸引入的特點,這就是它的DWIM(Do What I Mean)設施,這是一個智慧型化的錯誤分析設施,它對於用戶輸入信息中的可能拼寫錯進行檢測,利用當前的上下文關係,猜測並自動糾正這個錯誤。例如,用戶可能將某個函式調用名拼錯字母,則DWIN利用已有的函式名找出最接近的名字予以糾正,當用戶在鍵盤上鍵入下列遞歸函式定義時:
DEFIN[((FACT(N)IF N=0
THEN 1
ELSE NN*(FACT N一1)]
產生了兩處錯誤。當執行這個輸入函式時,DWIN發現DEFIN不是函式名,並發現該字和DEFINE十分接近,於是通知用戶“=DEFINE”。DWIN並自動進行糾正、再執行這個函式。類似地,當用戶鍵入FATC(3)去測試這個函式時,DWIN將把FATC糾正為FACT。
FACT函式被調用時,NN將引起一個錯誤,DWIN使用上下文的關係猜測NN可能是函式自變數N,於是通知用戶“NN(in FACT)→N?”並等待用戶同意,當用戶鍵入“Y”,或在規定時間內不回響時,則DWIN進行糾正並繼續;當用戶鍵入“N”,系統因有錯而掛起.DWIN除了能判斷拼寫錯,對字母對換錯、字母重複錯及按錯“shift”鍵錯均能猜測,若DWIN錯誤地進行了糾正,INTERLlSP允許執行UNDO予以恢復。
除了DWIN設施以外,INTERLISP還監視並記錄用戶的輸入、操作的副作用及操作的結果,有了這樣的稱為“歷史表”的數據結構INTERLISP給用戶提供了進行各種探索性程式設計的活動能力。例如,通過記錄下來的用戶輸入命令的歷史表,可執行REDO重做以前的一個命令或命令串;可執行FIX先進行修改,再重做以的的命令;可取消以前的操作,並恢復原來的狀態(UNDO);可使用USE實行一個替換後再重做。這些命令可以組合成用戶所希望的各種試驗,用戶不是被動地等待上一次結果,而是主動地選擇各種操作。

程式的分析

INTERLISP提供許多程式分析工具。其中Master Scope用來顯示程式的調用樹結構,並能回答用戶有關的問題,實際上它有一個程式分析結果的資料庫存儲了函式定義、自變數名及其用法以及函式間的調用關係等。當程式修改後,可重新分析,以致和檔案管理包集成在一起自動地實現修改後重新分析。
除了MasterScope以外,INTERLISP還提供了測量工具,幫助用戶分析所開發程式的行為,以便改進程式的質量。

調試工具

INTERLISP系統的調試工具允許用戶對任一函式進行中斷或跟蹤,並能在任何一個用戶所期望的級別(原始碼級、目標代碼級等)上考察機器的狀態.它不僅能顯示一個終止了的計算過程狀態,採用圖示方式供閱讀,而且能對某一專門段展開,使有問題的程式重新編輯,再恢復執行。它也可根據用戶指定的條件設定斷點,如當一個函式調用另一個函式時中斷,這些調試工具使程式中的問題能容易地找到。

特性

INTERLISP除了擁有基本LISP的所有功能之外,另外還有一些其他特性,使它便於建立大型程式。這些特性包括有:
1.除了串列外,還有各種資料形態。雖然串列是許多A.I.程式的重心,但是經常也需要其他結構,如陣列、位元字串等。
2.程式被儲存於通心堆疊(Spaghetti Stack)之中。在標準LISP中,程式只是被存於單純的堆疊中,所以不可能有共用的例行程式(coroutine)。通心堆疊實際上是一種樹狀分枝的棒想,所以若干平行的程式內容可以同時被儲存,且控制權可以在他們之同來回傳遞。
3.有各種便於編寫程式的工具。DWIM代表Do What I Mean,它是系統和使用者之間的介面,可以從事如更正拼字錯誤之類的事情。另外,Programmer’s Assistant會追蹤曾經用過的所有函式,所以能夠行(UNDO X)或(REPEAT X)。

相關詞條

熱門詞條

聯絡我們