Paradigma de programación

Sin embargo, otros se preocupan principalmente por el estilo de la sintaxis y la gramática.

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 implementación del modelo de ejecución del lenguaje rastrea qué operaciones son libres de ejecutar y elige el orden en forma independiente.

Tras el uso generalizado de los lenguajes procedimentales, se crearon los lenguajes de programación orientada a objetos (POO), como Simula, Smalltalk, C++, Eiffel, Python, PHP, Java, y C#.

En estos lenguajes, los datos y los métodos para manipularlos se mantienen como una unidad llamada object.

Todavía existe cierta controversia planteada por Alexander Stepanov, Richard Stallman[8]​ y otros programadores, sobre la eficacia del paradigma de programación orientada a objetos frente al paradigma procedimental.

Dado que la programación orientada a objetos se considera un paradigma, no un lenguaje, es posible crear incluso un lenguaje ensamblador orientado a objetos.

Las comparaciones precisas de la eficacia de los paradigmas en competencia a menudo son más difíciles debido a la terminología nueva y diferente aplicada a entidades y procesos similares, junto con numerosas distinciones de implementación entre idiomas.

[3]​ Los programas pueden modificarse a sí mismos y parecer que "aprenden", lo que los hace adecuados para aplicaciones como la inteligencia artificial, los sistemas expertos, el procesamiento del lenguaje natural y los juegos de ordenador.

Los lenguajes que soportan este paradigma incluyen Lisp y Prolog.

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.

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".

Estos pueden considerarse sabores del paradigma de programación que se aplican solo a lenguajes y modelos de programación paralelos.

Clasificación de los distintos paradigmas de programación según Peter Van Roy [ 13 ] : 5 [ 14 ]