SISAL

出自Local Chinese Wikipedia
imported>SchlurcherBot2026年1月24日 (六) 05:55的修訂 (Bot: http → https)
(差異) ←上個修訂 | 最新修訂 (差異) | 下個修訂→ (差異)
跳至導覽 跳至搜尋

頁面Module:Infobox/styles.css沒有內容。

SISAL
編程範型函數式數據流程
設計者James McGraw
實作者James McGraw等人,在曼徹斯特大學LLNL科羅拉多州立大學DEC
釋出時間1983年,​43年前​(1983
目前版本Template:Software version
型態系統靜態強型別
網站sourceforge.net/projects/sisal/
主要實作產品
osc, sisalc
受影響於
VAL, Pascal, C, Fortran
影響語言
HaskellSAC

SISAL(串流和迭代所用單賦值語言)是通用單賦值函數式程式設計語言,它具有package.lua第80行Lua錯誤:module 'Module:Ilh/data' not foundpackage.lua第80行Lua錯誤:module 'Module:Ilh/data' not found和高效陣列處理。SISAL輸出中間形式1(IF1)的數據流程。它衍生自VAL(package.lua第80行Lua錯誤:module 'Module:Ilh/data' not found1979年設計的面向值的演算法語言),並增加了遞歸和有限串流(stream)。它有着類Pascal語法,並被設計為用於在各種多處理器上的數值程式的高階語言。

歷史[編輯]

SISAL的定義在1983年由James McGraw等人於曼徹斯特大學勞倫斯利弗莫爾國家實驗室科羅拉多州立大學DEC提出[1]。它被修訂於1985年,而第一個編譯實現於1986年做出。據某些來源所說[2],它的效能優於C並匹敵Fortran,它將高效性和package.lua第80行Lua錯誤:module 'Module:Ilh/data' not found結合了起來。

它有如下版本:Cray package.lua第80行Lua錯誤:module 'Module:Ilh/data' not found、Cray package.lua第80行Lua錯誤:module 'Module:Ilh/data' not foundCray-2package.lua第80行Lua錯誤:module 'Module:Ilh/data' not foundpackage.lua第80行Lua錯誤:module 'Module:Ilh/data' not foundDEC VAX-11/784package.lua第80行Lua錯誤:module 'Module:Ilh/data' not found、KSR1、Transputer脈動陣列

架構[編輯]

SISAL不只是數據流程和細粒度並列的語言。它還是把人類可讀文字的數據流程語言轉換成圖格式(所謂的「IF1」,即中間形式1)的一組工具。SISAL計劃有一部份還涉及到將這種圖轉換成可執行的C代碼[3]

例子[編輯]

兩個n×n矩陣的乘法的例子程式:

define main
type OneDim = array [real];
type TwoDim = array [OneDim];

function generate(n : integer returns TwoDim, TwoDim)
    for i in 1, n cross j in 1, n
        returns array of real(i)/real(j)
                array of real(i)*real(j)
    end for
end function % generate

function doit(n : integer; A, B : TwoDim returns TwoDim)
    for i in 1, n
        cross j in 1, n
        c := for k in 1, n
                 t := A[i,k] * B[k,j]
                 returns value of sum t
             end for
        returns array of c
    end for
end function % doit

function main(n : integer returns TwoDim)
let A, B := generate(n) in
    doit(n, A, B)
end let
end function % main

SISAL復興[編輯]

在2010年SISAL短暫的復活了,伍斯特理工學院的一群本科生為SISAL語言探究實現了一個細粒度並列後端[3]

在2018年於SISAL-IS計劃中SISAL被現代化為基於縮排的語法、頭等函數、lambda、閉包和惰性語意[4]

註腳[編輯]

  1. James R. McGraw, Stephen K. Skedzielewski, Stephen J. Allan, Dale H. Grit, R. Oldehoeft, John R. W. Glauert, Ivan Dobes, Paul H. Hohensee. SISAL: streams and iteration in a single-assignment language. Language reference manual
  2. Retire Fortran?: a debate rekindled, David Cann, August 1992, Communications of the ACM, Volume 35, Issue 8
  3. 3.0 3.1 package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  4. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found

參照[編輯]

本條目部分或全部內容出自以GFDL授權發佈的《自由線上電腦詞典》(FOLDOC)。

外部連結[編輯]