Elevar el Nivel de Abstracción (Parte 1) Introducción

En este siglo escribí muchos posts sobre generación de código. Es un tema que me interesa desde los ochenta del siglo pasado: cómo hacer programas que escriban programas. Pero no es solamente generación de código: quiero poner énfasis en generación de código DESDE UN MODELO. Ahora, quiero escribir sobre la base de esa solución pragmática a algunos de los problemas que encontramos en el desarrollo de software. Mi principal afirmación:

Generación de Código desde un Modelo es un ejercicio de Elevar el Nivel de Abstracción

La historia de la programación es una historia de “elevar el nivel de abstracción”. En lugar de manipular botones en el panel frontal de las primeras computadoras, ahora escribimos programas usando un lenguaje que es una abstracción: usamos “int a” como una abstracción de una palabra en memoria. Escribimos “foo(bar)” como abstracción de guardar el estado en la pila, y saltar a una dirección en memoria: ya no escribimos más instrucciones BALR (Branch and Link Register) en un lenguaje ensamblador de mainframe IBM. Entonces, cada día estamos usando generación de código: desde el lenguaje general o específico que usamos para escribir programas, nuestros compiladores generan código de máquina, el único código que cuenta para las computadoras.

En esta nueva serie de post quiero explorar y escribir sobre estas ideas:

- Nosotros mejoramos continuamente nuestras ideas y habilidades, pero la tecnología también está sujeta a cambio constante
- Modelos abstractos vs modelos tecnológicos, concretos
- Separar los problemas de las soluciones
- Destilar y reusar el conocimiento de los desarrolladores
- Generación de Código DESDE UN MODELO como un ejercicio de abstracción
- Entonces, la generación de código desde un modelo tiene un efecto beneficioso colateral: arroja luz sobre la separación entre lo que es importante y lo que es accidental o técnico 
- La generación de código puede (y debe) coexistir con la codificación manual

Muchos de estos temas fueron mencionados en mis posts de AjGenesis, pero es tiempo de presentarlos de nuevo como un todo integrado. El título de esta serie “Raise the Level of Abstraction” (ver mi post en inglés) nació en una charla técnica en uno de mis clientes, ya hace unos años. Es bueno encontrar la misma frase como “leit motiv” para la conferencia Code Generation 2011:

http://www.codegeneration.net/cg2011/index.php

Recuerdo también otra frase anterior de ese sitio: “code generation for the pragmatic engineer”. La generación de código desde un modelo no es una “bala de plata”: es otra bala, herramienta más, a usar en el contexto correcto.

(Nota: Encontré las imágenes que acompañan a este post buscando el Google Images, con términos: “two apples”, “two oranges”, “two sheep” and…..  “two person” ;-)… no busqué Microsoft ;-))

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

This entry was posted in 2643, 3463, 6145. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>