Forth

維基百科,自由的百科全書
跳至導覽 跳至搜尋
Forth
編程範型面向堆棧過程式反射式串接
設計者Charles H. Moore
面市時間1970年,​56年前​(1970
當前版本
    Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
    型態系統無類型
    文件擴展名.fs, .fth, .forth
    網站{{URL|example.com|可选的显示文本}}Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
    主要實作產品
    SwiftForth (Forth, Inc.)
    Gforth英語Gforth (自由軟件)
    VFX Forth (微處理器引擎)
    受影響於
    Burroughs大型系統英語Burroughs large systems, Lisp, APL
    影響語言
    Factor, Joy, PostScript, RPL英語RPL (programming language), REBOL

    Forth是1960年代末期,由查理斯·摩爾發展出來在天文台使用的電腦自動控制系統程序設計語言[1],允許使用者很容易組合系統已有的簡單指令,定義成為功能較複雜的高階指令。由於其結構精簡、執行快速、操作方便,廣為當代天文學界使用[2][3]。八十年代以後,有愛用者成立Forth Interest Group在世界各地推廣,並陸續在各類計算機上建立Forth系統及標準的語言。

    簡介[編輯]

    Forth以可延伸的詞典為核心,採用以堆棧為基礎的高度模塊化結構,是一種將解譯器編譯器合併運用的雙態系統。使用FORTH,可在編譯過程中檢測差錯,並且逐步擴充編譯程序代碼。利用標準Forth所寫的程序幾乎不必大修改,就能在各類計算機運作;甚至在特別設計的電腦上可以完全放棄組合語言,直接由Forth轉化成機器語言,就好像現代的Java虛擬機。同時,使用者也可以把自己定義的運算功能加入編譯器中,使Forth語言更有彈性。

    Forth是一種可擴展的,交互式的語言。亦適用於小型的嵌入式電腦,現在它幾乎可以在任何主流的芯片上解譯和編譯,甚至已有多種可直接運行Forth指令的芯片。在電子表格,專家系統,多用戶數據庫,和分布式實時控制系統中有廣泛的應用。表面來看,Forth是一種基於堆棧的概念機。例如要計算(3+4)*5,程序就是:3 4 + 5 *。首先把3和4入堆棧,然後調用+子程序,把堆棧的最頂上兩個元素取出(也就是3和4)進行加法運算,然後把結果入堆棧,然後把5入堆棧,然後調用*子程序,把最頂的2個元素,也就是7和5取出,並進行乘法運算,然後把結果入堆棧,最後的。把結果從堆棧中取出列印。事實上這是一種最簡單有效的概念機。當然Forth遠遠不止這些。

    最常用在內建程序,以及系統與過程控制,它也用在微電腦上。主要運用在數據搜集與處理、圖形處理專家系統,以及實時流程控制等。

    樣例程序[編輯]

    下面是一個在標準輸出設備上輸出Hello World的簡單程序,這種程序通常作為開始學習編程語言時的第一個程序:

    : run-hello \定义一个单词,名字叫run-hello
      ." Hello, world!" CR ;
    run-hello
    

    只有在編譯模式,也就是在定義一個單詞的中使用."指令,才能輸出字符串。

    從程序員的角度看Forth[編輯]

    用Forth的「追隨者」的話來說[誰?],Forth是一種「人機一體」的語言。在程序員的意識中必須要有一台邏輯上的機器(可能是實際的芯片,也可能是虛擬機)。這台機器擁有兩個堆棧(數據堆棧和返回堆棧),一個詞典(在Forth中的詞(word)對應於高級語言的函數或者子程序,若干的詞構成詞典。)一個內部解釋器和一個外部解釋器。

    和Forth語言一樣,也是基於堆棧程序設計語言還有PostScript。基於堆棧的工具還有linux下的計算器dc,在其內部是通過堆棧實現的。

    使用Forth開發應用程序與使用其他語言開發應用程序的感受有很大的不同。Forth的一切都是透明的,使用者可以看到每一個功能的實現原理和過程,正是由於這一點,Forth可以作為學習操作系統及編程的非常好的工具。關於Forth編程的特點有一個較為貼切的描述:"如果C語言給你的感覺是:它是最好的程序設計語言,那麼使用Forth給你的感覺則是:自己是最好的程序設計師。」[原創研究?]

    實現[編輯]

    在微軟的windows操作系統下,一個很好的Forth系統是Win32Forth。詳見win32forth[4]

    GNU/Linux系列操作系統下,GForth是GNU對ANS Forth的一個實現,可在gnu網站[5]下載(另有HTTP鏈接[6],GNU軟件一般推薦通過鏡像站點[7]下載)。下載後,使用通常的configure; make; make install指令即可編譯安裝。GForth還可以內置在著名的文本編輯器Emacs中使用。若出現問題,請閱讀BUILD-FROM-SCRATCH文件。

    GForth同時適用於其他系統,例如OS X等UNIX類系統。

    引用[編輯]

    1. ^ C. H. Moore; E. D. Rather; D. R. Colburn. The Evolution of Forth. ACM SIGPLAN Notices. ACM SIGPLAN History of Programming Languages 28 (3). March 1993 [2021-04-04]. (原始內容存檔於2011-08-22). 
    2. ^ NASA applications of Forth (original NASA server no longer running, copy from archive.org)
    3. ^ Space Related Applications of Forth. [2007-09-04]. (原始內容存檔於2010-10-24). 
    4. ^ [1]頁面存檔備份,存於網際網路檔案館
    5. ^ [2]頁面存檔備份,存於網際網路檔案館
    6. ^ HTTP鏈接頁面存檔備份,存於網際網路檔案館
    7. ^ 鏡像站點頁面存檔備份,存於網際網路檔案館

    外部連結[編輯]