SAC programming language


SAC is a strict purely functional programming language which design is focused on the needs of numerical applications. Emphasis is laid on efficient support for array processing via data parallelism. Efficiency concerns are essentially twofold. First, efficiency in program development is to be improved by the opportunity to specify array operations on a high level of abstraction. Second, efficiency in program execution, i.e., the runtime performance of programs, in time and memory consumption, is still to be achieved by sophisticated compiling schemes. Only as far as the latter succeeds, the high-level style of specifications can actually be called useful.
To facilitate compiling to efficiently executable code, certain functional language features considered non-essential for numerical applications, e.g., higher-order functions, polymorphism, or lazy evaluation, are not supported by SAC. They are supported in general-purpose functional languages, e.g., Haskell, Clean, Miranda, or ML.
To overcome the acceptance problems encountered by other functional or array based languages intended for numerical or array intensive applications, e.g., SISAL, NESL, Nial, APL, J, or K, particular regard is paid to ease the transition from a C or Fortran like programming environment to SAC.
In more detail, the basic language design goals of SAC are to: