text: Chicken，是一個Scheme語言的編譯器和直譯器，能夠將scheme程式碼編譯成標準C程式碼。它基本上遵守R5RS標準並且提供了很多擴充套件。新近的R7RS標準是透過擴充套件庫支援的。Chicken是一個採用BSD許可證的自由軟體。關注.從Chicken的標誌下的口號可以看出它的關注非常明確：“一個實用的可移植Scheme系統”。Chicken的主要關注是將Scheme應用到業界的軟體中。Scheme在計算機科學課程和程式語言實驗中非常有名，但在工業界卻沒有什麼應用。 Chicken社群已經編寫了大量的庫，能勝任各類任務。Chicken的維基有一個用Chicken寫的軟體的列表。Chicken的另一個關注是可移植。透過編譯成C程式碼，Chicken寫的程式可以編譯到常見的平臺，如Linux、Mac OS X和其他類Unix系統以及Windows和Haiku。它還內建程式和擴充套件的交叉編譯功能，使它能夠在嵌入式系統上使用。設計.和許多Scheme編譯器一樣，Chicken使用標準C作為中間語言。一個Scheme程式透過Chicken編譯器翻譯成C，然後一個C編譯器將C程式編譯成目標機器的機器碼，生成一個可執行程式。C的通用性使它非常適合這種用途。Chicken的設計靈感來自電腦科學家的1994年論文，這篇論文提出了一個將Scheme翻譯為C的新方案，把一個Scheme程式翻譯成一些C函式。這些C函式永遠不會到達codice_1語句；而是在結束時呼叫一個新的續體。這些續體是C函式，並作為引數傳遞給其他的C函式。它們是由編譯器計算出來的。這些正是的核心。Baker的新想法是使用C呼叫棧來作為Scheme的堆。如此一來，一般的C的棧操作如自動建立變數、變長陣列分配等就可以用上了。當棧滿時就會觸發一個垃圾回收機制。垃圾回收設計採用了Cheney演算法，這種方法將所有的活躍續體和其他活躍的物件都複製到堆。儘管如此，C程式碼並不複製C棧中的幀，只複製Scheme物件，所以不需要了解C的實現。總體而言，Scheme的堆有一個C棧作為「溫床」，還有兩個堆用來做分代垃圾回收。這種方式使得許多操作具備了C棧的速度，並且允許透過續體做簡單的C呼叫。更重要的是，Baker的方案保證了漸進尾部遞迴，這是Scheme標準所要求的。不足.Chicken Scheme在大部份上遵守了R5RS，但具有一些明顯的限制和偏差，比如目前只能保證每個過程最多1000個引數。R7RS相容性是透過擴充套件庫提供的。核心系統有對UTF-8字元的基本支援，但是字串索引和操縱過程不察覺UTF-8。存在增加支援完全的UTF-8察覺的擴充套件庫。擴充套件.Chicken有一個站點提供了大量的叫做eggs的附加的庫和程式。這個eggs系統非常像RubyGems，並不整合到使用者作業系統的軟體包系統中去。
metadata: erhwenkuo/wikipedia-zhtw
metadata: Chicken (Scheme實現)
metadata: https://zh.wikipedia.org/wiki?curid=3136263