text: Factor是Slava Pestov建立的面向堆疊程式語言。Factor是動態型別的並擁有自動記憶體管理，還有強力的超程式設計特徵。語言有一個單一的實現，特徵包括自宿主的最佳化編譯器和一個整合開發環境。Factor發行包括一個大型的標準庫。歷史.Slava Pestov在2003年建立Factor作為影片遊戲的指令碼語言。最初的實現，現在稱為JFactor，是用Java實現的並執行在Java虛擬機器上。儘管在語法方面早期的語言表面上類似現代的Factor，現代的語言在實踐方面是非常不同的，並且當前實現更加快速。概述.Factor是動態型別的、函式式和麵向物件的程式語言。程式碼可以圍繞叫做單詞的小型過程來構造。在典型的程式碼中，這些過程一般1–3行長，多於7行長的過程是非常少見的。在其他程式語言中習慣上表達為一個過程的某個東西，在Factor中可以寫為多個單詞。每個單詞接受固定數目的實際引數並有固定數目的返回值。給單詞的實際引數被傳遞到資料棧上，使用逆波蘭表示法。這個堆疊只用來組織到單詞的呼叫，並非用作資料結構。在Factor中以類似於Forth中堆疊的方式使用堆疊；因此它們都被當作是堆疊語言。例如，下面的程式碼片段列印“hello world”到當前輸出流："hello world" printcodice_1是在codice_2詞彙表中的一個單詞，它從堆疊接受一個字串而不返回東西。它列印這個字串到當前輸出流。階乘函式formula_1，在Factor中可以用如下方式實現：factorial ( n -- n! ) dup 1 &gt; [ [1,b] product ] [ drop 1 ] if不是所有資料都必須只通過堆疊來傳遞。詞法作用域的區域性變數，在過程內可用作來儲存和訪問。動態作用域的變數被用於在過程呼叫之間傳遞東西而不使用堆疊。例如，當前輸入和輸出流被儲存在動態作用域的變數中。Factor強調靈活性和擴充套件語言的能力。有宏系統，還有對Factor語法的任意擴充套件。Factor的語法經常被擴充套件來允許新型別的單詞定義和用於資料結構的新型別的。它還被用在XML庫中提供生成XML的文字語法。例如，下列單詞接受一個字串併產生一個XML文件物件，它是強調這個字串的一個HTML文件：: make-html ( string -- xml )dup ;單詞codice_3重複在堆疊上的頂部元素。codice_4表示將來自堆疊的一個專案填入XML文件的指定部份。實現和庫.Factor包括一個大型的標準庫，完全用本語言寫成。包括有：Factor內建了，允許同C、Objective-C和Fortran程式進行通訊。還支援執行用GLSL書寫的著色器並與之通訊。Factor是用Factor和C++實現的。它最初自舉於早期的Java實現。現在，解析器和最佳化編譯器都用本語言書寫。語言的特定的基礎部分是用C++實現的，比如垃圾回收器和特定原始操作。Factor使用基於的模型，類似於很多Smalltalk實現，這裡編譯的程式碼和資料都儲存在映像之中。要編譯一個程式，這個程式被裝載入一個映像並儲存這個映像。一個特殊工具輔助建立最小映像來執行一個特定程式的過程，包裝這個結果進入可以被部署為一個獨立應用的某個東西中。Factor編譯器實現了很多高階最佳化並被用於新最佳化技術研究中的目標。
metadata: erhwenkuo/wikipedia-zhtw
metadata: Factor語言
metadata: https://zh.wikipedia.org/wiki?curid=7408697