Paradigma de programación para niños
Los paradigmas de programación son como diferentes estilos o formas de clasificar los lenguajes de programación. Piensa en ellos como distintas maneras de darle instrucciones a una computadora para que haga una tarea. Un mismo lenguaje de programación puede usar varios de estos estilos.
Algunos estilos se enfocan en cómo la computadora ejecuta las instrucciones, por ejemplo, si puede cambiar información mientras trabaja o si el orden de las operaciones es muy estricto. Otros estilos se centran en cómo se organiza el código, como agrupar instrucciones con la información que modifican. También hay estilos que se preocupan por la forma en que se escriben las instrucciones (la sintaxis).
Los paradigmas de programación más comunes son:
- Imperativo: Aquí, el programador le dice a la computadora, paso a paso, cómo cambiar su estado o información. Es como darle una receta detallada.
- Procedimental: Este es un tipo de programación imperativa. Agrupa las instrucciones en bloques llamados "procedimientos" o "funciones".
- Orientado a objetos: Otro tipo de programación imperativa. Agrupa las instrucciones con la información sobre la que trabajan, formando "objetos".
- Declarativo: En este estilo, el programador describe qué resultado quiere obtener, pero no dice exactamente cómo calcularlo. La computadora se encarga de encontrar la mejor manera.
- Funcional: Un tipo de programación declarativa. El resultado se obtiene aplicando una serie de "funciones" matemáticas.
- Lógico: Aquí, el resultado se busca respondiendo a una pregunta sobre un conjunto de hechos y reglas.
- Matemático: El resultado deseado se describe como la solución a un problema de optimización (encontrar la mejor opción).
- Reactivo: El resultado se define a partir de flujos de datos y cómo los cambios se propagan a través de ellos.
Por ejemplo, los lenguajes que siguen el estilo imperativo tienen dos características principales: el programador controla el orden de las operaciones y permiten que la información cambie en diferentes momentos. En cambio, en la programación orientada a objetos, el código se organiza en "objetos" que contienen información que solo puede ser modificada por el código dentro de ese mismo objeto. La mayoría de los lenguajes orientados a objetos también son imperativos.
Los lenguajes que usan el estilo declarativo no indican el orden exacto de las operaciones. En su lugar, describen qué operaciones están disponibles y bajo qué condiciones pueden ejecutarse. El sistema decide el orden en que se ejecutan.
Contenido
Lenguajes de programación procedimentales
Los lenguajes procedimentales se desarrollaron para usar un vocabulario relacionado con el problema que se quiere resolver. Algunos ejemplos son:
- COBOL (COmmon Business-Oriented Language): Usa términos de negocios como "archivo", "mover" y "copiar".
- FORTRAN (FORmula TRANslation): Usa términos del lenguaje matemático.
- ALGOL (ALGOritmic Language): Diseñado para definir algoritmos y también puede usar lenguaje matemático.
- PL/I (Programing Language One): Un lenguaje general que combina características comerciales y científicas.
- BASIC (Begginers All purpose Symbolic Instruction Code): Se creó para que más personas pudieran escribir programas.
- C: Un lenguaje de propósito general muy popular.
Todos estos lenguajes siguen un estilo procedimental. Describen, paso a paso, cómo resolver un problema. La calidad de la solución depende mucho de la experiencia y habilidad del programador.
Historia de los paradigmas de programación
A lo largo del tiempo, han surgido diferentes formas de programar. Una de las primeras ideas importantes fue la programación estructurada, que se promovió a mediados de los años 60. El concepto de "paradigma de programación" como tal se empezó a usar al menos desde 1978, en una conferencia de Robert W. Floyd.
Los primeros lenguajes de programación no tenían estilos tan definidos. A veces, los programas usaban mucho una instrucción llamada "goto", que hacía que el código fuera difícil de entender, como un "código espagueti". Esto llevó a crear paradigmas de programación estructurados que no permitían el "goto" y solo usaban formas de programación más claras y organizadas.
Código máquina y lenguaje ensamblador
Los estilos de programación de nivel más bajo son el código máquina y el lenguaje ensamblador.
- El código máquina son números que la computadora entiende directamente como instrucciones.
- El lenguaje ensamblador usa abreviaturas (mnemónicos) para representar esas instrucciones y nombres para las ubicaciones de memoria.
Estos se conocen a veces como lenguajes de primera y segunda generación. En los años 60, los lenguajes ensambladores mejoraron para permitir copiar partes de código, usar macros (instrucciones complejas con un solo nombre) y trabajar con subrutinas. El ensamblador se usa todavía en sistemas donde la velocidad es muy importante, como en los sistemas embebidos (computadoras pequeñas dentro de otros aparatos), porque permite un control muy directo sobre lo que hace la máquina.
Programación orientada a objetos
Después de los lenguajes procedimentales, surgieron los lenguajes de programación orientada a objetos (POO). Ejemplos famosos son Simula, Smalltalk, C++, Python, Java y C#.
En estos lenguajes, la información y las instrucciones para manejarla se agrupan en una unidad llamada objeto. Una característica clave de la POO es la encapsulación: la única forma de que otro objeto o usuario acceda a la información de un objeto es a través de sus métodos (instrucciones específicas). Así, se pueden cambiar las partes internas de un objeto sin afectar el resto del programa que lo usa.
Algunos programadores tienen diferentes opiniones sobre si la POO es más efectiva que la programación procedimental.
La programación orientada a objetos es un estilo, no un lenguaje específico. Incluso se puede crear un lenguaje ensamblador que use este estilo. Esto demuestra que los diferentes paradigmas de programación son más bien ideas o enfoques que los programadores eligen, en lugar de un progreso lineal de un nivel a otro.
Otros paradigmas
La programación literaria es una forma de programación imperativa que organiza los programas como si fueran un ensayo de hipertexto. La documentación es parte del programa, y el programa se estructura siguiendo la lógica de una explicación en prosa, no solo para que el compilador lo entienda.
Además de los estilos imperativos, se desarrollaron los paradigmas de programación declarativa. En estos lenguajes, se le dice a la computadora qué problema resolver, no cómo resolverlo. El programa se organiza como un conjunto de características que debe tener el resultado. Un ejemplo de lenguaje declarativo es SQL, que se usa para bases de datos. También están la familia de lenguajes funcionales y la programación lógica.
La programación funcional es un tipo de programación declarativa. Los programas escritos con este estilo usan funciones, que son bloques de código que se comportan como funciones matemáticas. Los lenguajes funcionales evitan cambiar el valor de las variables y usan mucho la recursión (una función que se llama a sí misma).
El paradigma de programación lógica ve la computación como un razonamiento automatizado sobre un conjunto de conocimientos. Los hechos sobre el problema se expresan como fórmulas lógicas, y los programas se ejecutan aplicando reglas hasta encontrar una respuesta.
La programación simbólica es un estilo que permite que los programas manipulen sus propias instrucciones y datos. Los programas pueden modificarse a sí mismos y parecer que "aprenden", lo que los hace útiles para la inteligencia artificial, los sistemas expertos y los juegos de computadora. Lenguajes como Lisp y Prolog soportan este paradigma.
Soporte para múltiples paradigmas
La mayoría de los lenguajes de programación modernos pueden usar más de un paradigma. Esto permite a los programadores elegir el estilo de programación y las herramientas del lenguaje que mejor se adapten a la tarea que están realizando.
Resumen
Así como la ingeniería de software (cómo se crea el software) tiene diferentes metodologías, los lenguajes de programación (cómo funcionan las computadoras) tienen diferentes paradigmas. Algunos lenguajes están diseñados para un solo estilo (como Smalltalk para programación orientada a objetos o Haskell para programación funcional), mientras que otros lenguajes soportan varios estilos. Ejemplos de estos últimos son C++, Java, Python y PHP. Los diseñadores y programadores deciden cómo usar estos diferentes elementos.
En la programación orientada a objetos, los programas son como un conjunto de objetos que interactúan. En la programación funcional, los programas son una secuencia de evaluaciones de funciones que no cambian el estado. Cuando se programan computadoras con muchos procesadores, los programas pueden verse como conjuntos de procesos que trabajan al mismo tiempo sobre información compartida.
Muchos paradigmas de programación son conocidos tanto por las técnicas que permiten como por las que prohíben. Por ejemplo, la programación funcional pura no permite cambiar información de forma inesperada, y la programación estructurada no permite la instrucción "go to". A veces, evitar ciertas técnicas puede hacer que el programa sea más fácil de entender y verificar que funciona correctamente.
Los paradigmas de programación también se pueden comparar con "modelos de programación", que permiten usar un estilo de ejecución específico a través de un conjunto de herramientas.
Para la computación paralela (cuando muchas partes de una computadora trabajan al mismo tiempo), a menudo se usa un modelo de programación en lugar de un lenguaje completo. Esto se debe a que los detalles del hardware paralelo influyen en cómo se programa. Por eso, ningún lenguaje de programación paralelo es perfecto para todos los problemas. Es más común usar un lenguaje base y añadirle llamadas a herramientas para la ejecución paralela. Estos modelos de programación paralela se pueden clasificar según cómo reflejan el hardware, como la memoria compartida o la memoria distribuida.
Véase también
En inglés: Programming paradigm Facts for Kids