lunes, 22 de noviembre de 2010

Lenguajes Multiparadigmas

Materia: Lenguajes de Programacion


Introduccion:

Un lenguaje de programación puede soportar distintos paradigmas de programación con el objetivo de que un programador utilice el más conveniente a la hora de resolver un problema.

Un lenguaje de programación multiparadigma es el cual soporta más de un paradigma de programación. Según lo describe Bjarne Stroustrup, permiten crear “programas usando más de un estilo de programación”.

Ningún paradigma es capaz de resolver todos los problemas de forma sencilla y eficiente, por lo tanto es útil poder elegir entre distintos “estilos” de programación dependiendo del tipo de problema. También hay lenguajes que permiten mezclar los paradigmas que, en principio, parecerían irreconciliables. Se debe aclarar que hay subparadigmas que se incluyen en paradigmas más generales, pero hay otros que utilizan métodos de programación totalmente distintos entre sí e igualmente hay lenguajes que los combinan. Por ejemplo, el lenguaje Oz emplea programación lógica, funcional, orientada a objeto y otras.

Lenguajes como Delphi, C++ y Visual Basic combinan el paradigma imperativo, el procedural y el orientado a objetos.
Incluso lenguajes más puros en sus paradigmas como Prolog (paradigma lógico) o Scheme (paradigma funcional) poseen estructuras iterativas típicas de los lenguajes de paradigma imperativos.

Esto sirve solamente para la referencia rápida para los paradigmas de programación enumerados aquí

• Flujo de datos - recálculo forzado de fórmulas cuando los valores de los datos cambian (e.g. Hojas de balance)

• Lenguaje de programación visual - elementos de programa de manipulación gráficamente más bien que especificándolos textual (e.g. Simulink)

• Programación declarativa - describe acciones (e.g. HTML describa una página pero no cómo exhibirla realmente)

• Programación imprescindible - declaraciones explícitas que cambian un estado del programa

• Programación funcional - la evaluación de las aplicaciones de funciones matemáticas y evita el estado y datos mutable

• Programación orientada al objeto - clases y casos, herencia, encapsulación de las aplicaciones y polimorfismo

• programación Prototipo-basada - programación orientada al objeto que evita clases y pone herencia en ejecución vía la reproducción de casos

• El computar paralelo - ejecución simultánea con la comunicación necesaria y sincronización entre los procesos/los hilos de rosca

• Modelo del agente - cómputo concurrente con los “agentes” esos decisiones locales de las marcas en respuesta al ambiente (capaz de comportamiento egoísta o competitivo)

• programación de la tubería - ningunas llamadas de función jerarquizadas, pero las estructuras simples de un flujo con fácil visualizar/entienden que los datos atraviesan el programa

• programación de constreñimiento - las relaciones entre las variables se expresan como los apremios (o redes del constreñimiento), dirigiendo soluciones permisibles (satisfacción del constreñimiento de las aplicaciones o algoritmo a una cara)

• programación basada en las reglas - una red de las reglas del pulgar que abarcan una base de conocimiento y se pueden utilizar para los sistemas expertos y deducción y resolución del problema

• programación de la lógica - hechos lógicos de las aplicaciones para crear un modelo que puede probar consistencia, deducir otras verdades o contestar a preguntas sobre el modelo (e.g. ¡Los perros son animales! ¡Los perros son rojos! Son algunos animales rojos?)

• programación reflexiva - caso especial de metaprogramming (la modificación de programas como datos por otro programa o la capacidad de hacer la parte del trabajo adentro compila tiempo en vez de tiempo en marcha) en el cual el programa modifica o se amplía

Dos paradigmas

• flujo de datos, visual

o LabVIEW

• funcional, imprescindible

o APL

• funcional, lógica

o ALF

• funcional, orientado al objeto (clase-basado)

o Dylan[la citación necesitó]

o Sather[citación necesitada]

• funcional, visual

o Hojas de balance

• imperativo, orientado al objeto (clase-basado)

o AmigaE

o PHP

o Simula]

• orientado al objeto (clase-basado), (prototipo-basado)

o Metaobject protocolos

• orientado al objeto (clase-basado), visual

o Lava

Tres paradigmas

• concurrente, flujo de datos, funcional

o SISAL

• concurrente, funcional, distribuido

o Erlang

• concurrente, funcional, lógica

o Curry

• concurrente, imprescindible, orientado al objeto (clase-basado)

o Tirada

o Java

• flujo de datos, orientado al objeto (clase-basado), visual

o Prograph

• funcional, imprescindible, lógica

o Poplog

• funcional, imprescindible, orientado al objeto (clase-basado)

o BETA

o F#

o J

o Perl

o Pliant

o Python

o Rubí

o Tcl con itcl o XOTcl extensiones

• funcional, imprescindible, orientado al objeto (prototipo-basado)

o [1] Lenguaje de programación del halcón

o ECMAScript

 ActionScript

 DMDScript

 E4X

 Javascript

 JScript

o Lua

o Tcl con Snit extensión

• genérico (plantilla metaprogramming), imperativo, orientado al objeto (clase-basado)

o C++

o D

Cuatro paradigmas

• funcional, imprescindible, genérico (plantilla metaprogramming), orientado al objeto (clase-basado)

o C#

• funcional, imprescindible, genérico (plantilla metaprogramming), orientado al objeto (clase-basado)

o Caml objetivo

• funcional, imprescindible, concurrente (Modelo del agente), orientado al objeto (clase-basado)

o Scala

• funcional, imprescindible, concurrente (Modelo del agente), orientado al objeto (prototipo-basado)

o Io

• funcional, imprescindible, lógica, orientada al objeto (clase-basado)

o Leda

• funcional, imprescindible, orientado al objeto (prototipo-basado), dialected

o REBOL

• imperativo, lógica, orientada al objeto (clase-basado), basado en las reglas

o ROOP

• funcional, imprescindible, orientado al objeto (clase-basado), reflexivo

o Lisp común (aunque hay otros paradigmas puestos en ejecución como bibliotecas)

Cinco paradigmas

• concurrente (rendezvous y monitor-como basado), distribuido, genérico, imprescindible, orientado al objeto (clase-basado)

o Ada

• funcional, imprescindible, tubería, orientado al objeto (clase-basado), reflexivo

o Windows PowerShell

• funcional, genérico (plantilla metaprogramming), imperativo, orientado al objeto (clase-basado), reflexivo

o Enrollamiento

Ocho paradigmas
• concurrente, constreñimiento, flujo de datos, distribuido, funcional (evaluación: impaciente, perezoso), imperativo, lógica, orientada al objeto (clase-basado)

o Onza

 Sistema de programación de Mozart (a multiplatform Onza)

Bibliografias:

http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_multiparadigma

http://www.alegsaonline.com/art/14.php

http://www.worldlingo.com/ma/enwiki/es/Multi-paradigm_programming_language

1 comentario: