Factor語言
Factor是 Slava Pestov 建立的疊導向程式語言。Factor 是動態型別的並有自動記憶體管理,猶閣有強力的元程式設計特徵。語言有一个單一的實現,徵包括自宿業的最佳化編譯器佮一个整合式開發環境。Factor 發行包括一个大型的標準庫。
歷史
Slava Pestov 佇二空空三年建立 Factor 成做電動遊戲的手稿語言。上蓋起初的實現,這馬稱為 JFactor,是用 Java 實現的並執行佇咧 Java 虛擬機器頂懸。就算講佇這个語法的方面較早的語言表面上類似現代的 Factor,現代的這个語言咱佇實踐方面是足無仝款的,並且實現更加快速。
概述
Factor 是動態型別項、函數式和物件導向的程式語言。代碼會當圍踅叫做單詞的小型過程來構造。佇典型的代碼內底,遮的過程一般一–三行長,加佇七行長的過程是足罕咧看的。佇咧其他的程式語言內底慣勢表達做一个過程的某一个物件,佇咧 Factor 中間會當寫做濟个單詞。
逐个單詞接受固定數目的實際參數並有固定數目的倒轉來值。予單詞的實際參數被傳達到資料棧頂面,使用逆波蘭表示法。這个疊干焦用來組織著單詞的呼叫,並毋是用做資料結構。佇咧 Factor 中以類似 Forth 中堆疊的方式疊起來;因此𪜶攏去予人當做是疊語言。比如講,下跤的代碼片段列印「hello world」到彼个時陣輸出流:
` print ` 是佇咧 ` io ` 詞表內底的一个單詞,伊對堆疊接受一字串毋轉去物件。伊列印這字串到當前輸出流(預設的是終端抑是圖咧收聽器)。
階乘函式 $ n ! $,佇咧 Factor 中會當用如下方式實現:
毋是所有的資料攏愛用干焦通過堆疊來傳達。詞法作用域的局部變數,佇咧過程內底會當用做臨時的變數來儲存佮存取。動態作用域的變數被用佇咧過程呼叫之間傳遞物件莫用疊疊。比如講,彼當前輸入佮輸出流被儲存佇動態作用域的變數中。
Factor 強調講靈活性佮擴充語言的能力。有宏系統,閣有嘿 Factor 語法的任意擴充。Factor 的語法定定予人擴充來允准新類型的單詞定義佮用佇咧資料結構的新類型的文字。伊閣被用佇咧 XML 庫內底提供生的 XML 的文字語法。比如講,下列單詞接受一字串並產生一个 XML 文件的東西,伊是強調這个字串的一个 HTML 文件:
單詞 ` dup ` 重複咧疊起去的頂懸的元素。` <-> ` 表示我將來自堆疊的一个專案坉入去 XML 文件的指定部份。
實現佮庫
Factor 包括一个大型的標準庫,完全用本語言寫做。包括有:
- 跨平台 GUI 工具箱,起佇咧 OpenGL 佮各種窗口系統之上,用佇咧開發環境。
- 結著濟个資料庫函式庫,包括講 PostgreSQL 和 SQLite。
- 一个 HTTP 侍服器佮客戶捀,具有 Furnace web 框架。
- 高效的同質的整數、浮點數佮 C 結構的陣列。
- 實現正規表示式的一个庫,生成機器碼來做匹配。
Factor 內建了外界函式介面,容允同 C、Objective-C 和 Fortran 程式進行通信。閣支援執行用 GLSL 書寫的著色器並佮之通信。
Factor 是用 Factor 和 C + + 實現的。伊上頭仔自舉古早的 Java 實現。這馬乎,解析器佮最佳化編譯器攏用本語言書寫。語言的特定的基礎部份是用 C + + 實現的,比如講糞埽回收器佮特定原始操作(primitive)。
Factor 使用基於影像的模型,類似著真濟 Smalltalk 實現,遮編譯的代碼佮資料攏存在映像中。愛編譯一个程式,這个程式被裝載入一个影像並儲存這个影像。一个特殊工具輔助建立上小映像來執行一个特定程式的過程,包裝這結果進入會當予部署做一个獨立應用的某一个物件。
Factor 編譯器實現真濟進階最佳化並予人用佇新最佳化技術研究中的目標。
參照
外部連結
- 官方網站
- Slava Pestov . Factor : An Extensible Interactive Language ( Tech talk ) . Google . October 二十七 , 兩千空八 [二千空二十一孵三孵七] .(原始的內容 ( flv ) 存檔佇二千空二十一孵一孵十五).
- Zed Shaw . The ACL is Dead ( CUSEC 兩千空八 ) . CUSEC . 兩千空八 [二千空二十一孵三孵七] .(原始的內容 ( flv ) 存檔佇二千空二十五十一石十九). –a presentation written in Factor which mentions and praises Factor