目錄
C語言
書籍

Forth語言

C語言 · 武兵

{

\"code\": 200,

\"title\": \"\",

\"content\": \"Forth語言是CharlesMoore在20世紀60年代發明的基於堆棧、互動式、具有簡單性哲學思想的計算機編程語言和環境,已被證明特彆適合於軟件代碼在千行數量級的中規模嵌入式係統應用,作為國外大公司競爭係統開發週期、生產成本和係統可靠性的秘密武器之一,被廣泛應用於天文、軍事、航空、航天、工業自動化、圖形、儀器儀表、工作站領域,並且研製了以Forth為體繫結構的處理器晶片。\\n\\n按照Forth語言的發明人CharlesMoore(Chuck)的說法:\\n\\n我第一次把各種想法組合成一個整體之後,它在“第三代計算機”IBM1130上工作得如此有效,以致於我認為它是“第四代語言”,理所當然地應該被稱為FOURTH。不過,當時的IBM計算機隻允許5個字元的標識符。所以FOURTH變成了Forth,這是一個非常好的的文字遊戲。\\n\\n曆史\\n\\nForth語言是60年代發明的,當時Moore在斯坦福線性加速器中心做計算機程式員工作,後來變成了一個自由工程師。當時的工程技術人員為了控製編譯程式必須學習大量的方法,包括連接器、彙編器、偽指令以及高級語言,開發這個新工具的目標就是為了克服這些問題。\\n\\n第一個稱為Forth的程式大約是在1970年編寫的。第一個完整的實現是1971年在一台PDP-11上完成的,用於亞利桑那州國家射電天文台的11米射電望遠鏡。這個係統的責任是定向和跟蹤望遠鏡,收集數據並記錄到磁帶上,支援一個互動式的圖形終端,供天文學家分析以前記錄的數據。係統的多任務特點允許這些功能同時執行,冇有時間上和其它方麵的衝突。\\n\\n這個係統取得了巨大的成功,世界各地的天文學家開始請求提供軟件拷貝。Forth的使用範圍迅速也擴大,國際天文學會於1976年接受了Forth作為標準語言。\\n\\n這個應用的成功還促使Moore和ElizabethRather((\\\"Bess\\\")於1973年成立了Forth,Inc.公司,目標是開發這種語言的商業應用。Forth,Inc.在小型機上開發了多用戶的Forth版本,可以用於從數據庫到圖像處理等科學和應用領域。和第一個應用一樣,它們需要不同工具的組合。\\n\\n1977年,公司為剛剛出現的8位處理器開發了一個稱為“microForth”的版本,對小型機上的“miniForth”做了擴展和補充。1979年,稱為“PolyForth”的產品替代了這些係統。從此以後,它就成了市場上銷售量最大的Forth係統。\\n\\n“microForth”係統在美國、歐洲和日本的嵌入式微處理器應用中取得了成功,由此產生了歐洲Forth用戶團體(EFUG);1978年,位於北加利福尼亞的計算機愛好者成立了Forth興趣組織(FIG).\\n\\nFIG從天文台得到Forth係統,再用這個係統開發出一個簡單的模型,然後在幾個不同的係統上實現(那當然是得到了Forth,Inc的許可之後)並以非常低的價格銷售。這個模型後來變成了著名的FIG-Forth模型。所有這些使得對Forth的興趣迅速增大。FIG目前在15個國家中有60個分支。\\n\\n特點\\n\\nForth是一個互動式的程式設計環境,最初是為程式員在小型和微型計算機上開發應用程式而設計的。最早用於科學和工業應用,比如儀器、機器人、過程控製、圖形和圖像處理、人工智慧和商業應用。Forth的主要優點是軟件開發快速、互動式、計算機硬體的高效使用等。\\n\\nForth常常被作為一種語言,這當然也是它最常見的方麵,然而Forth所提供的功能比傳統的程式設計語言要多。傳統的高級語言工具包含有許多分離的工具(編譯器、編輯器、彙編器等等),Forth把它們融為一體。與傳統的高級語言相比,它是經過深思熟慮的,完全冇有傳統高級語言那麼複雜的語法特性。\\n\\n最早實現的Forth是一個獨立的係統,它包含獨立操作係統的一般功能,還包括有編輯器、編譯器、彙編器、調試器和其它工具。一個單一的、簡單的、一致的規則支配這些能力。今天,儘管還能在許多處理器上見到獨立的版本,但更多的版本是與MSDOS、WINDOWS、UNIX一類操作係統協同工作的。\\n\\n起源\\n\\nForth並不起源於其它已有的程式設計語言,所以它的外觀和內部特點對於新用戶來說是特殊的。但是Forth的簡單性、高度模塊化和互動式特性可以彌補初學者的陌生感,使得Forth非常易於學習和使用。一個新的程式員通常需要花一些時間來掌握Forth巨大的命令集,通過一個月左右的全麵使用,程式員就可以理解它的整個內部工作機理,所學到的東西要比傳統操作係統和編譯器多得多。\\n\\nForth與傳統語言最大的不同是它的可擴展性。Forth的編程過程就是定義新的字,字實際上就是語言的新命令。字可以用一係列以前定義的字來定義,這個過程與教育孩子的過程相似:我們總是用孩子們以前理解的概念來教給孩子們新的概念,而這些字被稱為“高級定義”。同樣,新的字也可以用彙編代碼定義,因為在多數Forth實現中都包括宿主處理器的彙編器,而這些字被稱為CODE字。\\n\\n可擴展性的結果是我們在開發一個應用的同時,也間接地開發了一個特殊的、針對這一類應用的“麵嚮應用的語言”,它可以用於或者經過修改之後被用於相似的應用。\\n\\nForth的可擴展性並不僅僅是為語言自身增加新的命令,所以不要把定義字與傳統高級語言定義函數、過程等同。可擴展性還能夠創建一個可以定義其它字的字,這種字被稱為“定義字”。在創建這樣一個定義字的時候,程式員能夠指定它所創建的字在編譯時間、運行時間或者這兩種狀態下的特殊行為。這個能力允許我們定義特殊的數據類型,並對其行為和結構實施完全的控製。又由於這種字的運行時間行為可以用高級語言或者組合語言來定義,所以由定義字創建的字將具有與其它Forth字一樣的效能。係統也允許我們增加一個新的“編譯指示符”以實現特殊類型的循環或者其它的控製結構,比如CASE結構。\\n\\n編程\\n\\nForth語言和英語非常相似,它的基本元素是已命名的數據項、過程,以及創建用戶化數據項的定義字的能力。過程和定義字可以使用以前定義的字或者彙編代碼來定義,它們與其它語言的子程式相似,也與其它語言的命令等效。Forth允許我們在鍵盤上打入一個函數的名字,這個函數將被立即執行。然而,如果我們把功能的名字放到定義中,將編譯成對於這個函數的引用。\\n\\n高級字是由其它字的集合來定義的,我們可以把這個過程想象成是其它語言的宏或者詞典中的英語定義。新的字被加入到它們可以使用的存儲器中,其定義被加入到字典中。在一個Forth字的命名規則中,隻有很少的幾個字元不能作為命名字元使用。許多程式組織使用更好的命名約定,通過可列印的字元以增加程式的可讀性。\\n\\n當遇到一個字的時候,Forth就通過字典搜尋希望找到這個字的定義,如果找到,這個字定義的功能或者被立即執行,或者作為引用而被編譯到新的定義中。然而,如果在字典中冇有找到這個字,係統就試著把它轉換成一個數。如果轉換成功,就把它放在堆棧上。如果不能轉換成數字,就顯示這個字並列印出一個錯誤的資訊來報告這個字是係統所不知道的。\\n\\nForth堅持“結構化程式設計”原理:\\n\\n·字必須在引用之前被定義;\\n\\n·邏輯流限製隻有順序、條件和循環,有專門的字用於實現常用的程式控製結構;\\n\\n·程式員使用許多小的、獨立的模塊(字)來實現最大的可測試性和可靠性;\\n\\n這種方法有兩個明顯的優點\\n\\n·新的字總是用以前定義和測試過的字來構造,所以調試更容易。模塊可以單獨執行以測試它的功能;\\n\\n·固有的模塊性使Forth成為一個“設計性語言”,允許自頂向下的設計同時保持自底向上的測試。一個字可以在不同的程式中使用,但是它的功能隻需要定義一次;\\n\\n這些都保證了Forth軟件能夠快速和有效地被開發,同時,如果管理得當,也可以作為自身文檔的基礎。\\n\\nForth的5個主要元素決定了它的特點:\\n\\n·一個字典;\\n\\n·兩個堆棧,一個是參數棧,另一個是用於巢狀的返回棧;\\n\\n·鍵盤(輸入流)解釋器;\\n\\n·一個彙編器;\\n\\n·虛擬存儲;\\n\\n用Forth開發的項目\\n\\n以下是一些使用Forth開發的項目\\n\\nAtari的許多投幣遊戲機都是用Forth開發的。他們相信開發高效能代碼的最快方法是使用Forth,加上使用組合語言來重寫最內層的循環。\\n\\n按照最近與著名的Infocom高級遊戲開發者的談話,他們的遊戲解釋器也是用Forth寫成的。\\n\\nUnisonWorld為CP\\/M操作係統開發了許多遊戲,全部都是用FIG-Forth編寫的。按他們技術總監MarcdeGroot的說法,把一個基於Z80的遊戲移植到6502或者MC6809上,典型的時間不多於3個月。\\n\\n美國FederalExpress(聯邦快遞)公司的手持式行李分撿係統的程式是用Forth編寫的。項目經理GeneFarrar說,他可以按需要在幾個星期內升級新韌體,相比而言,其它的小組維護C語言代碼則至少需要6個月的時間。\\n\\n1990年11月哥倫比亞航天飛機的4個載荷中有3個是用Forth編程的。按設計團隊之一JohnsHopkinsUniversity'sAppliedPhysicsLaboratory的JohnHayes說法,他們選擇Forth來解決飛行中的硬體問題,靈活性是一個主要的因素。\\n\\nSUN公司把Forth用於它的工作站可編程BootROM中,以每天500-1000台的速度發貨,是可編程Forth係統中數量最大的。1994年IEEE1275-1994將Forth用於BOOT(初始配置)韌體的標準,這也是POWERPC通用硬體平台的基礎。\\n\\n在電影《終結者II:世界末日》中,CyberdyneSystemsT1000係統的特技效果是基於Morphing軟件包Forth產生的。\\n\\n\"

}

若章節內容顯示異常,請重新整理或切換到 手機版 / 電腦版 檢視。