Paradigma de programación | una forma de agrupar los lenguajes de programación por lo que hacen

Los paradigmas de programación son una forma de agrupar los lenguajes de programación por lo que hacen. Los lenguajes pueden estar en más de un paradigma.

Algunos paradigmas se fijan en la forma en que se ejecuta el código, como permitir efectos secundarios o tener que hacer las cosas en un orden determinado. Otros paradigmas se fijan en la forma en que se agrupa el código, como poner el código en una o dos piezas (o, en cambio, en muchas piezas pequeñas). Otros paradigmas se fijan en el orden y las piezas que hacen que el programa sea como es.

Hay dos grupos principales de paradigmas, el imperativo y el declarativo. Un lenguaje puede ser ambos al mismo tiempo.


 

Programación imperativa

En los programas imperativos, los programadores dan al ordenador un conjunto de pasos ordenados que deben realizarse para hacer algo. Si alguien quiere que el ordenador dibuje la cara de un gato, podría darle instrucciones como "Dibuja un círculo aquí, dibuja dos círculos más pequeños allí, dibuja dos triángulos encima" y así sucesivamente. Los programas imperativos a veces tienen muchos efectos secundarios.

Hay dos grandes paradigmas imperativos, y muchas veces un lenguaje tendrá ambos:

  • Estructurado - El ordenador recibe instrucciones que están siempre en un orden determinado. No se permiten pasos como "volver al paso 3" (conocidos como sentencias goto).
    • Procedimental - El programa permite al programador dar un nombre a una lista de órdenes, lo que convierte esas órdenes en un "procedimiento" que puede utilizar posteriormente. La mayoría de los lenguajes estructurados también son procedimentales.
  • Orientado a objetos - Las ideas se explican al ordenador mediante objetos, piezas de código que tienen un conjunto de órdenes que se les pueden dar y alguna información sobre ellas.

 

Programación declarativa

En los paradigmas declarativos, el programador le dice al ordenador lo que debe hacer en lugar de cómo hacerlo. Si quisieran que el ordenador dibujara la cara de un gato, podrían darle instrucciones como "Dibuja una cara, dibuja dos ojos, dos orejas y una boca".

Los paradigmas declarativos más conocidos son:

  • Funcional - La mayor parte del trabajo lo realizan las funciones sin efectos secundarios.
  • Lógica - Se exponen una serie de hechos y luego se formulan una o varias "preguntas".
  • Dirigido por eventos - Las piezas de código se configuran para ejecutarse cuando ocurren ciertas cosas (como que el ordenador se encienda).

 

Otros paradigmas

Algunos paradigmas pueden encontrarse tanto en los lenguajes imperativos como en los declarativos. Estos paradigmas suelen encontrarse con uno de los paradigmas anteriores en lugar de ir por separado.

  • En paralelo: Más de una pieza de código se ejecuta al mismo tiempo.
  • Meta: Las cosas especiales del lenguaje permiten al programador cambiar la forma de actuar del propio lenguaje.

 

Resumen

Los lenguajes de programación se agrupan por paradigmas de la misma manera que las máquinas pueden agruparse por el uso que se les da.

Algunas lenguas se ajustan a un solo paradigma principal, como:

  • Smalltalk (orientado a objetos)
  • Ensamblaje (imperativo, pero no estructurado ni orientado a objetos)
  • Haskell (funcional)
  • Prolog (lógica)

Sin embargo, la mayoría de las lenguas tienen más de un paradigma. Algunos de los que destacan por tener más de uno son:

  • Scala (orientado a objetos, funcional, paralelo)
  • Visual Basic (orientado a eventos, orientado a objetos)
  • Common Lisp (procedimental, funcional, orientado a objetos, meta)
  • Esquema (funcional, procedimental, meta)
  • Perl (funcional, procedimental, meta, orientado a objetos, orientado a eventos)
  • Python (funcional, orientado a objetos, procedimental)
  • Ruby (funcional, orientado a objetos, procedimental)
  • Wolfram Language (funcional, procedimental, generalmente declarativo)
  • Oz (lógica, funcional, imperativa, orientada a objetos)
  • F# (funcional, imperativo, orientado a objetos, meta)

Tener más paradigmas no siempre es bueno. Una vez que tener menos paradigmas puede ser algo bueno es cuando hay un lenguaje que es sólo funcional. Una función en uno de estos lenguajes a veces hace menos trabajo (como recorrer sólo las partes de un grupo de cosas que realmente necesita) de lo que tendría que hacer si el lenguaje fuera también procedimental.

Muchos paradigmas de programación son tan conocidos por las cosas que no dejan hacer a la gente como por las que dejan hacer. Un caso en el que esto es cierto son los lenguajes funcionales. Cuando un lenguaje funcional es sólo o principalmente funcional, normalmente no permite efectos secundarios. Otro momento en el que esto es cierto es la programación estructurada: se diferencia de los lenguajes imperativos normales porque no permite a los programadores utilizar "sentencias goto" (sentencias que indican al programa que vaya a un paso anterior). Por esta y otras razones, la gente a veces piensa que los nuevos paradigmas no permiten suficientes cosas. Sin embargo, a veces está bien que el ordenador no permita hacer cosas: puede ayudar a la gente a evitar problemas con su código, y dejar que el ordenador haga conjeturas para que pueda ejecutar el código más rápidamente, ¡o incluso comprobar el código en busca de problemas antes de que se ejecute!



 Visión general de los distintos paradigmas de programación según Peter Van Roy  Zoom
Visión general de los distintos paradigmas de programación según Peter Van Roy  

Problemas con los paradigmas

A algunas personas que estudian los lenguajes de programación no les gusta que se utilicen paradigmas para agrupar los lenguajes de programación, como Harper y Krishnamurthi. Esas personas dicen que muchos lenguajes de programación no pueden agruparse simplemente en paradigmas porque los lenguajes toman prestadas cosas e ideas de muchos paradigmas.


 

Historia

Se han creado nuevos paradigmas a lo largo del tiempo, y la gente los señaló en su momento, o al mirar atrás. Uno de los primeros paradigmas que se reconoció como una nueva forma de programar fue la programación estructurada de los años 60. La idea de un "paradigma de programación" es de 1978, si no anterior, cuando Robert W. Floyd la utilizó mientras enseñaba. La palabra "paradigma" en la forma en que Robert la entendía fue utilizada por primera vez por Thomas Kuhn en su libro La estructura de las revoluciones científicas (1962).

Código de la máquina

El paradigma de programación de más bajo nivel (el más cercano a cómo le gusta entender las cosas al ordenador) y más antiguo es el código máquina, un paradigma imperativo. Las instrucciones en código máquina son sólo un conjunto de números en un orden determinado. El lenguaje ensamblador es un poco menos de bajo nivel (y un poco menos antiguo). En el lenguaje ensamblador, las direcciones del ordenador reciben mnemónicos (nombres más fáciles de recordar), y las direcciones de memoria (direcciones para encontrar una pieza de información en el ordenador) pueden recibir nombres. A veces se denominan lenguajes de primera y segunda generación.

En la década de 1960, los lenguajes ensambladores mejoraron añadiendo cosas nuevas como la biblioteca COPY, las macros (trozos de código "especial" que se transformaban en código normal antes de que el programa comenzara a ejecutarse), los procedimientos de ejecución (conjuntos de direcciones a los que se les da un nombre y se guardan para más tarde) y las variables (elementos a los que se les da un nombre y se guardan para más tarde) desde fuera del programa. Esto permitía a la gente utilizar cierto código en más de un proyecto, y no tener que preocuparse por los problemas específicos del hardware (problemas que sólo se dan en un tipo de ordenador) gracias a los comandos (nombres para las direcciones) como READ/WRITE/GET/PUT.

El ensamblador se utilizaba, y a veces se sigue utilizando, en sistemas en los que es importante que el código sea rápido, y también se utiliza mucho en los sistemas embebidos porque permite al usuario tener un control exacto de lo que hace la máquina.

Lenguajes procedimentales

A finales de los años 60, la gente empezó a inventar lenguajes procedimentales. Estos lenguajes de tercera generación (los primeros de lo que ahora llamamos lenguajes de alto nivel) tenían palabras relacionadas con lo que intentaban resolver. Por ejemplo,

  • COmmon Business Oriented Language (COBOL) - utiliza palabras como file, move y copy.
  • FORmula TRANslation (FORTRAN) - utiliza palabras y símbolos matemáticos (formas utilizadas en la escritura y el tecleo). Se desarrolló principalmente para la ciencia y la ingeniería.
  • Lenguaje ALGOrítmico (ALGOL) - hecho para escribir algoritmos (conjuntos de pasos que indican al ordenador lo que debe hacer). Utiliza palabras y símbolos matemáticos, al igual que FORTRAN.
  • Lenguaje de Programación Uno (PL/I) - se suponía que era útil para todos.
  • Código de instrucciones simbólicas para principiantes (BASIC): hecho para ayudar a los principiantes a programar.
  • C: un lenguaje de programación pensado para hacer muchas cosas. Dennis Ritchie trabajó en él de 1969 a 1973 en los laboratorios Bell de AT&T.

Programación orientada a objetos

Después de que mucha gente empezara a utilizar lenguajes procedimentales, se inventaron los lenguajes de programación orientados a objetos. En estos lenguajes, los datos y sus "métodos" (formas de manipular los datos) se ponen en un "objeto". Algunos programadores, como Richard Stallman, no están de acuerdo en que los lenguajes orientados a objetos sean mejores para explicar ideas a un ordenador que los lenguajes procedimentales.

Dado que la programación orientada a objetos es un paradigma, no un lenguaje, la gente ha creado lenguajes de ensamblaje orientados a objetos como el HLA (ensamblaje de alto nivel).

Paradigmas declarativos

Al mismo tiempo, algunas personas estaban haciendo lenguajes de programación declarativos. Un lenguaje muy conocido por ser declarativo es SQL (un lenguaje para añadir y eliminar cosas de las tablas).


 

Páginas relacionadas

  • Mentalidad
  • Sistema tipo
  • Completitud de Turing
 

Preguntas y respuestas

P: ¿Qué es un paradigma de programación?


R: Un paradigma de programación es una forma de agrupar los lenguajes de programación en función de su funcionamiento.

P: ¿Cuáles son los dos principales grupos de paradigmas?


R: Los dos grupos principales de paradigmas son el imperativo y el declarativo.

P: ¿En qué se diferencian los paradigmas imperativo y declarativo?


R: Los paradigmas imperativos se fijan en la forma en que se ejecuta el código, como permitir efectos secundarios o tener que hacer las cosas en un orden determinado, mientras que los paradigmas declarativos se fijan en la forma en que se agrupa el código, como poner el código en una o dos piezas (o en su lugar, muchas piezas pequeñas).

P: ¿Puede un lenguaje ser a la vez un paradigma imperativo y declarativo?


R: Sí, un lenguaje puede ser un paradigma imperativo y declarativo al mismo tiempo.

P: ¿Cómo agrupa un paradigma de programación a los lenguajes?


R: Los paradigmas de programación agrupan los lenguajes por lo que hacen. Se fijan en cómo se ejecuta el código, cómo se agrupa y qué orden y piezas componen el programa.

P: ¿Existen otros tipos de paradigmas de programación además del imperativo y el declarativo?


R: Sí, hay otros tipos de paradigmas de programación además del imperativo y el declarativo. Por ejemplo, algunos se fijan en la forma en que se ejecuta el código (como permitir los efectos secundarios), mientras que otros se fijan en la forma en que se agrupa el código (como poner el código en una o dos piezas).

P: ¿Cada lenguaje pertenece a un solo tipo de paradigma de programación?


R: No, no todos los lenguajes pertenecen a un solo tipo de paradigma de programación; algunos lenguajes pueden pertenecer a más de un tipo de paradigma.

AlegsaOnline.com - 2020 / 2023 - License CC3