跳转到内容

SISAL

本页使用了标题或全文手工转换
维基百科,自由的百科全书

这是本页的一个历史版本,由InternetArchiveBot留言 | 贡献2021年2月8日 (一) 21:44 (补救5个来源,并将0个来源标记为失效。) #IABot (v2.0.8)编辑。这可能和当前版本存在着巨大的差异。

SISAL
编程范型函数式数据流程
設計者James McGraw
實作者James McGraw等人,在曼彻斯特大学LLNL科罗拉多州立大学DEC
发行时间1983年,​41年前​(1983
型態系統静态强类型
主要實作產品
osc, sisalc
啟發語言
VAL, Pascal, C, Fortran
影響語言
HaskellSAC

SISAL(串流和迭代所用单赋值语言)是通用单赋值函数式编程语言,它具有严格语义英语Strict function隐式并行英语Implicit parallelism和高效阵列处理。SISAL输出中间形式1(IF1)的数据流程。它派生自VAL(Jack Dennis英语Jack Dennis1979年设计的面向值的算法语言),并增加了递归和有限串流(stream)。它有着类Pascal语法,并被设计为用于在各种多处理器上的数值程序的高级语言。

历史

SISAL的定义在1983年由James McGraw等人于曼彻斯特大学劳伦斯利弗莫尔国家实验室科罗拉多州立大学DEC提出[1]。它被修订于1985年,而第一个编译实现于1986年做出。据某些来源所说[2],它的性能优于C并匹敌Fortran,它将高效性和自动并行化英语Automatic parallelization结合了起来。

它有如下版本:Cray X-MP、Cray Y-MPCray-2SequentEncore AlliantDEC VAX-11/784数据流程架构英语Dataflow architecture、KSR1、Transputer脉动阵列英语Systolic array

架构

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 存档副本 (PDF). [2020-04-17]. (原始内容存档 (PDF)于2016-03-04). 
  4. ^ 存档副本. [2020-04-17]. (原始内容存档于2018-06-12). 

引用

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

外部链接