x
1

Paradigma de programación



Se denominan paradigmas de programación a las formas de clasificar los lenguajes de programación en función de sus características. Los idiomas se pueden clasificar en múltiples paradigmas.

Algunos paradigmas se ocupan principalmente de las implicancias para el modelo de ejecución del lenguaje, como permitir efectos secundarios o si la secuencia de operaciones está definida por el modelo de ejecución. Otros paradigmas se refieren principalmente a la forma en que se organiza el código, como agrupar un código en unidades junto con el estado que modifica el código. Sin embargo, otros se preocupan principalmente por el estilo de la sintaxis y la gramática.

Los paradigmas de programación comunes incluyen:[1][2][3]

Las técnicas simbólicas como la reflexión, que permiten que el programa se refiera a sí mismo, también pueden ser consideradas como un paradigma de programación. Sin embargo, esto es compatible con los principales paradigmas y, por lo tanto, no es un paradigma real por derecho propio.

Por ejemplo, los lenguajes que caen en el paradigma imperativo tienen dos características principales: establecen el orden en el que ocurren las operaciones, con construcciones que controlan explícitamente ese orden, y permiten efectos secundarios, en los que el estado puede modificarse en un momento determinado, dentro de una unidad de código, y luego leer en un momento diferente dentro de una unidad de código diferente. La comunicación entre las unidades de código no es explícita. Mientras tanto, en la programación orientada a objetos, el código se organiza en objetos que contienen un estado que solo es modificado por el código que forma parte del objeto. La mayoría de los lenguajes orientados a objetos también son lenguajes imperativos. Por el contrario, los lenguajes que se ajustan al paradigma declarativo no indican el orden en el que ejecutar las operaciones. En su lugar, proporcionan una serie de operaciones disponibles en el sistema, junto con las condiciones en las que se permite que se ejecute cada una. La implementación del modelo de ejecución del lenguaje rastrea qué operaciones son libres de ejecutar y elige el orden en forma independiente. Más en Comparación de lenguajes de programación de múltiples paradigmas.

El desarrollo de lenguajes procedurales dio lugar a lenguajes sirven de vocabulario relacionado con el problema a resolver. Ejemplos de estos lenguajes son:

Todos estos lenguajes siguen un paradigma procedural. Describen, paso a paso, exactamente el proceso que debe seguirse para resolver un problema específico. La eficacia y eficiencia de cada solución dependen de la experiencia, la inventiva y la habilidad del programador.

Así como la ingeniería de software (como proceso) se define mediante diferentes metodologías, los lenguajes de programación (como modelos de computación) se definen mediante diferentes paradigmas. Algunos lenguajes están diseñados para admitir un paradigma (Smalltalk admite programación orientada a objetos, Haskell admite programación funcional), mientras que otros lenguajes de programación admiten múltiples paradigmas (como Object Pascal, C++, Java, JavaScript, C#, Scala, Visual Basic, Common Lisp, Scheme, Perl, PHP, Python, Ruby, Oz y F# ). Por ejemplo, los programas escritos en C ++, Object Pascal o PHP pueden ser puramente procedimentales, puramente orientados a objetos o pueden contener elementos de ambos u otros paradigmas. Los diseñadores y programadores de software deciden cómo utilizar esos elementos paradigmáticos.

En la programación orientada a objetos, los programas se tratan como un conjunto de objetos que interactúan. En la programación funcional, los programas se tratan como una secuencia de evaluaciones de funciones sin estado. Cuando se programan computadoras o sistemas con muchos procesadores, en la programación orientada a procesos, los programas se tratan como conjuntos de procesos concurrentes que actúan sobre estructuras de datos compartidas lógicas.

Muchos paradigmas de programación son tan conocidos por las técnicas que prohíben como por las que habilitan. Por ejemplo, la programación funcional pura no permite el uso de efectos secundarios, mientras que la programación estructurada no permite el uso de la instrucción "go to". En parte por esta razón, los nuevos paradigmas a menudo son considerados doctrinarios o demasiado rígidos por quienes están acostumbrados a estilos anteriores.[6]​ Sin embargo, evitar ciertas técnicas puede facilitar la comprensión del comportamiento del programa y demostrar teoremas sobre la corrección del programa.

Los paradigmas de programación también se pueden comparar con modelos de programación, lo que permite invocar un modelo de ejecución utilizando solo una API. Los modelos de programación también se pueden clasificar en paradigmas según las características del modelo de ejecución.

Para la computación paralela, es común usar un modelo de programación en lugar de un lenguaje. La razón es que los detalles del hardware paralelo se filtran en las abstracciones utilizadas para programar el hardware. Esto hace que el programador tenga que mapear patrones en el algoritmo sobre patrones en el modelo de ejecución (que se han insertado debido a una fuga de hardware en la abstracción). Como consecuencia, ningún lenguaje de programación paralelo se adapta bien a todos los problemas de cálculo. Por lo tanto, es más conveniente utilizar un lenguaje secuencial base e insertar llamadas a la API en modelos de ejecución paralela a través de un modelo de programación. Dichos modelos de programación paralela se pueden clasificar de acuerdo con abstracciones que reflejan el hardware, como la memoria compartida, la memoria distribuida con paso de mensajes, nociones de lugar visibles en el código, etc. Estos pueden considerarse sabores del paradigma de programación que se aplican solo a lenguajes y modelos de programación paralelos.



Escribe un comentario o lo que quieras sobre Paradigma de programación (directo, no tienes que registrarte)


Comentarios
(de más nuevos a más antiguos)


Aún no hay comentarios, ¡deja el primero!