Programación intencional


En programación informática , la Programación intencional es un paradigma de programación desarrollado por Charles Simonyi que codifica en el código fuente del software la intención precisa que los programadores (o usuarios) tienen en mente al concebir su trabajo. Al utilizar el nivel apropiado de abstracción en el que piensa el programador, la creación y el mantenimiento de programas de computadora se vuelven más fáciles. Al separar las preocupaciones por las intenciones y la forma en que se operan, el software se vuelve más modular y permite un código de software más reutilizable.

La Programación intencional fue desarrollada por el ex arquitecto jefe de Microsoft Charles Simonyi , quien dirigió un equipo en Microsoft Research , que desarrolló el paradigma y construyó un entorno de desarrollo integrado (IDE) llamado IP (para Programación intencional) que demostró el paradigma. Microsoft decidió no producir el paradigma de programación intencional, ya que a principios de la década de 2000 Microsoft estaba lanzando C # y .NET para contrarrestar la adopción de Java. [1] Charles Simonyi decidió, con la aprobación de Microsoft, sacar su idea de Microsoft y comercializarla él mismo. Fundó la empresa Intentional Softwarepara perseguir esto. Microsoft obtuvo la licencia de las patentes de Programación intencional que Simonyi había adquirido mientras estaba en Microsoft, pero no el código fuente, a Intentional Software.

En el capítulo 11 del libro Programación generativa: métodos, herramientas y aplicaciones, se ofrece una descripción general de la programación intencional tal como se desarrolló en Microsoft Research . [2]

Según lo previsto por Simonyi, el desarrollo de una nueva aplicación a través del paradigma de programación intencional procede de la siguiente manera. Un programador crea un entorno similar a WYSIWYG que respalda el esquema y la notación del conocimiento empresarial para un dominio de problema determinado (como aplicaciones de productividad o seguros de vida). Luego, los usuarios utilizan este entorno para capturar sus intenciones, que se registran con un alto nivel de abstracción. El entorno puede operar con estas intenciones y ayudar al usuario a crear documentos semánticamente más ricos que se pueden procesar y ejecutar, de forma similar a una hoja de cálculo.. El conocimiento registrado es ejecutado por un evaluador o se compila para generar el programa final. Los cambios sucesivos se realizan únicamente en el nivel WYSIWYG. A diferencia de los procesadores de texto, las hojas de cálculo o el software de presentación, un entorno intencional tiene más soporte para la estructura y la semántica de las intenciones que se van a expresar, y puede crear documentos interactivos que capturen de manera más rica lo que el usuario está tratando de lograr. Un caso especial es cuando el contenido es código de programa y el entorno se convierte en un IDE inteligente. [3]

La clave de los beneficios de la programación intencional es que el código de dominio que captura las intenciones no se almacena en archivos de texto de código fuente , sino en un almacenamiento basado en árbol (podría ser binario o XML). La estrecha integración del entorno con el formato de almacenamiento aporta algunas de las características más agradables de la normalización de la base de datos al código fuente . La redundancia se elimina dando a cada definición una identidad única y almacenando el nombre de las variables y los operadores exactamente en un lugar. Esto hace que sea más fácil distinguir intrínsecamente declaraciones de referencias , y el entorno puede mostrarlas de manera diferente.

Los espacios en blanco en un programa tampoco se almacenan como parte del código fuente , y cada programador que trabaja en un proyecto puede elegir una visualización con sangría de la fuente. Las visualizaciones más radicales incluyen mostrar listas de declaraciones como cajas anidadas, editar expresiones condicionales como puertas lógicas o volver a representar nombres en chino.