A++
# A++

A++ es sinónimo de abstracción más referencia más síntesis, que se usa como un nombre para el lenguaje de programación minimalista que se basa en ARS. ARS es una abstracción del cálculo lambda, tiene sus tres operaciones básicas, y le da un sentido más general, lo que proporciona una base para los tres principales paradigmas de programación: programación funcional, programación orientada a objetos y la programación imperativa.

Programación basada en ARS es el nombre dado para la programación que consiste principalmente en la aplicación de patrones derivados de ARS para la programación en cualquier lenguaje.

## Historia

A++ fue desarrollado en 2002 con el propósito de servir como un instrumento de aprendizaje y no como un lenguaje de programación utilizado para resolver problemas prácticos.

Se supone que es una herramienta eficaz para familiarizarse con el núcleo de la programación y con los patrones de programación que se pueden aplicar en otros lenguajes necesarios para enfrentarse al mundo real.

## Propósito

A++ es un lenguaje similar a C++, con su intérprete disponible en Scheme, Java, C, C++ y Python, y ofrece un ambiente ideal para el entrenamiento básico en la programación, cumpliendo con la aplicación de los fundamentos de los lenguajes de programación.

## Principios Constitutivos

* ARS (operaciones básicas)
   * Abstracción
   * Referencia
   * Síntesis
* Ámbito léxico
* Cierre

## Paradigmas de Programación Soportados

* Programación funcional, (directamente compatibles)
   * (escribir expresiones para ser evaluadas)
* Programación orientada a objetos (directamente compatibles)
   * (envío de mensajes a objetos)
* Programación imperativa (directamente compatibles)
   * (escribir sentencias que se ejecutan), incluyendo la programación estructurada.
* Programación lógica (indirectamente compatibles)
   * (programación basada en reglas)

## Funciones Centrales

* Abstracciones lógicas
   * (true, false, if, not, and, or)
* Abstracciones numéricas
   * (natural numbers, zerop, succ, pred, add, sub, mult)
* Abstracciones relacionales
   * (equalp, gtp, ltp, gep)
* Recursividad
* Creación y procesamiento de listas
   * (cons, car, cdr, nil, nullp, llength, remove, nth, assoc)
* Funciones de orden superior
   * (compose, curry, map, mapc, map2, filter, locate, for-each)
* Establecer operaciones
   * (memberp, union, addelt)
* Estructura de control iterativo
   * ('while')

## Desarrollo de Aplicaciones con A++

El propósito de A++ no es ser utilizado como un lenguaje de programación para escribir aplicaciones para las necesidades del mundo real. Sin embargo, es posible escribir programas sencillos en A++ como implementaciones orientadas a objetos para el un manejo de cuenta simple y un sistema de gestión de librerías.

Para escribir programas de aplicación reales se ofrece el lenguaje ARS++, que extiende A++ a un lenguaje similar a Scheme. ARS se deriva de ARS más Scheme más Extensiones.

