串接式(concatenative)程式語言,是無點的電腦程式語言,在其中所有表達式都指示為函數,而表達式的並列指示函數複合[1]。串接式程式語言將常見於其他編程樣式中的函數應用,替代為函數複合,作為建造次常式的預設方法。
名稱含義
串接式語言這個名詞,最早在2001年提出的Joy語言中採用。在這門語言中,符號的串接的語法關係,被直接對映成函數的複合的語意關係上:「兩個程式的串接指示這兩個程式指示的函數的複合」[2]。
例子
例如,在如下的應用式語言的運算操作序列:
y = foo(x)
z = bar(y)
w = baz(z)
在串接式語言中被寫為沒有參數的函數的序列[3]:
foo bar baz
在串接式語言中的函數和過程,不是值級別而是函數級的,就是說它們典型的不通過顯式的名字或識別碼,來表示出它們所操作的數據結構;轉而在它們中,函數被定義為管道,它的一序列操作運算,從一個隱式數據結構上取得參數,所有函數都在其上操作,並將函數的結果返回到這個共用的數據結構,從而被下一個算子(operator)所用[4]。
複合式語意與鏡像這種語意的語法相組合,使得串接式語言高度服從於程式的代數式操縱[5];儘管在其中直接書寫數學表達式可能會有困難[6]。串接式語言可以通過堆疊機器以高效的方式實現,並以虛擬機器及其指令集的形式含蓄的出現[6]。
特性
串接式語言的特性來自它們的複合式語法和語意:
實現
第一個串接式程式語言是Forth,但是第一個自稱串接式語言的是Joy。其他串接式語言有Factor、Onyx、PostScript和RPL等。
多數現存的串接式語言是基於堆疊的;這不是必須要求,並已有其他模型提出[10][11][12]。串接式語言目前作為目標語言用於嵌入式系統、桌面和網頁編程,還用於研究用途。
參見
參照
外部連結
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.