2.2 Paradigmas de lenguajes.
Después de ver el computador real, y el computador virtual, veremos ahora el modelo de computación que maneja el LP.
¿cómo se ejecuta el programa?, ¿qué clase de construcciones suministra el programa?
Existen 4 modelos básicos de computación que describen casi todos los lenguajes de programación actuales: el imperativo, el aplicativo, basado en reglas y el orientado a objetos.
Lenguajes imperativos o de procedimientos: Son lenguajes controlados por comandos u orientados a instrucciones. Un programa se compone de una secuencia de instrucciones, y la ejecución de cada una de éstas hace que el intérprete cambie el valor de una o más ubicaciones de memoria, es decir que cambie de estado. La sintaxis de esta clase de lenguajes tiene por lo general la forma:
instrucción 1;
instrucción 2;
El desarrollo de programas consiste en construir los estados sucesivos que se necesitan para llegar a la solución. ejemplos: C, C++, FORTRAN, ALGOL, Pascal, ADA, COBOL, Smalltalk.
Lenguajes aplicativos: En vez de examinar la serie de estados a través de los cuales debe pasar la máquina para obtener una respuesta, la pregunta que se debe hacer es: ¿Cuál es la combinación de funciones que se debe aplicar a los datos iniciales para obtener los resultados esperados? Los lenguajes que hacen énfasis en este punto de vista se conocen como lenguajes aplicativos o funcionales. En vez de examinar los estados sucesivos de cómputo se ponderan las transformaciones funcionales sucesivas que se deben aplicar a los datos para llegar a la respuesta. En general la sintaxis de esta clase de lenguajes es similar a:
funciónn(...función2(función1(datos))...)
Lisp y ML son dos ejemplos de lenguajes funcionales.
Lenguajes basados en reglas: Se ejecutan verificando la presencia de una cierta condición habilitadora, que, cuando se satisface, ejecuta una acción apropiada. El lenguaje más común de esta clase es Prolog, también conocido como lenguaje de programación lógica puesto que las condiciones habilitadoras son expresiones lógicas de predicados. La ejecución de este tipo de lenguajes es similar a la de un lenguaje imperativo, excepto que las instrucciones no son secuenciales. Las condiciones habilitadoras determinan el orden de ejecución. En general la sintaxis es similar a:
Condición habilitadora1 -> acción1
Condición habilitadora2 -> acción2
:
Condición habilitadoran -> acciónn
Herramientas como YACC (Yet Another Compiler Compiler; todavía otro compilador de compiladores) para el análisis sintáctico de programas, usa reglas que usan la sintaxis formal como condición. Otra herramienta que usa reglas son los Shells de sistemas expertos basados en reglas como NEXPERT, LEVEL-5, que proporcionan algoritmos para realizar la máquina de inferencias de sistemas expertos.
Programación orientada a objetos: En la programación orientada a objetos, se construyen objetos de datos y se asigna un conjunto limitado de funciones para que operen esos datos. Los objetos complejos se diseñan como extensiones de objetos más simples y heredan propiedades del objeto más simple.
Al construir objetos de datos concretos, un programa orientado a objetos gana la eficiencia de los lenguajes imperativos, y al construir clases de funciones que utilizan un conjunto restringido de objetos, se construye la flexibilidad y confiabilidad del modelo aplicativo.