SAC (Single Assignment C) es un lenguaje de programación estrictamente funcional cuyo diseño se centra en las necesidades de las aplicaciones numéricas. Se hace hincapié en el soporte eficiente para el procesamiento de matrices mediante paralelismo de datos . Las preocupaciones por la eficiencia son esencialmente dobles. Por un lado, se debe mejorar la eficiencia en el desarrollo de programas mediante la oportunidad de especificar operaciones de matriz en un alto nivel de abstracción . Por otro lado, la eficiencia en la ejecución de programas, es decir, el rendimiento en tiempo de ejecución de los programas, en consumo de tiempo y memoria, aún debe lograrse mediante esquemas de compilación sofisticados . Solo en la medida en que esto último tenga éxito, el estilo de especificaciones de alto nivel puede considerarse realmente útil.
Para facilitar la compilación de código ejecutable de manera eficiente, SAC no admite (aún) ciertas características de lenguaje funcional que no se consideran esenciales para aplicaciones numéricas, por ejemplo, funciones de orden superior, polimorfismo o evaluación diferida . Estas pueden encontrarse en lenguajes funcionales de propósito general, por ejemplo, Haskell , Clean , Miranda o ML .
Para superar los problemas de aceptación que enfrentan otros lenguajes funcionales o basados en matrices, pensados para aplicaciones numéricas o intensivas en matrices, por ejemplo, SISAL , NESL , Nial , APL , J o K , se presta especial atención a facilitar la transición desde un entorno de programación tipo C / Fortran a SAC.
En más detalle, los objetivos básicos del diseño del lenguaje de SAC son:
- proporcionar un lenguaje puramente funcional con una sintaxis muy similar a la de C con el fin de facilitar, para una gran comunidad de programadores, la transición de un estilo de programación imperativo a un estilo de programación funcional;
- Admite matrices multidimensionales como objetos de primera clase;
- permitir la especificación de operaciones de matriz invariantes en forma y dimensión;
- Proporcionar operaciones de matriz de alto nivel que liberan la programación de especificaciones tediosas y propensas a errores de inicios, paradas y pasos para recorridos de matriz, mejorando así la reutilización del código y la productividad de la programación en general.
- incorporar un sistema de módulos que permita la compilación separada, espacios de nombres separados y tipos de datos abstractos y, además, proporcione una interfaz con idiomas extranjeros para permitir la reutilización del código existente;
- proporcionar medios para una integración fluida de estados y modificaciones de estados en el paradigma funcional basado en tipos de unicidad ;
- utilizar el sistema de módulos, la interfaz de lenguaje extranjero y la integración de estados para crear una biblioteca estándar que proporcione una funcionalidad similar a la de las bibliotecas C estándar, por ejemplo, potentes facilidades de E/S o funciones matemáticas;
- facilitar la compilación de código de máquina host que pueda ejecutarse eficientemente tanto en términos de demanda de tiempo como de espacio;
- facilitar la compilación para la ejecución de programas no secuenciales en entornos multiprocesador .
Referencias
- Scholz, Sven-Bodo (1996). Asignación única C - Entwurf Und Implementierung Einer Funktionalen C-variante Mit Spezieller Unterstützung Shape-invarianter Array-operativeen [ Asignación única C - Diseño e implementación de una variante C funcional con soporte especial para operaciones de matriz invariantes de forma ] (PhD) (en Alemán). Instituto de Ciencias de la Computación y Matemáticas Aplicadas, Universidad Christian-Albrecht de Kiel, Kiel, Alemania.
- Grelck, Clemens (2001). Soporte multiprocesador de memoria compartida implícita para el lenguaje de programación funcional SaC — Trabajo único C (doctorado). Instituto de Ciencias de la Computación y Matemáticas Aplicadas, Universidad Christian-Albrecht de Kiel, Kiel, Alemania. ISBN 3-89722-719-3.
{{cite thesis}}: Mantenimiento de CS1: errores de ISBN ignorados ( enlace )
Enlaces externos
- La página de inicio del SAC