Los paradigmas de programación son modelos para resolver problemas comunes con nuestro código. Son caminos, guías, reglas, teorías y fundamentos que agilizan nuestro desarrollo y evitan que reinventemos la rueda.
Un paradigma de programación, por tanto, es un método para resolver un problema o realizar una tarea. Si bien existen diferentes lenguajes de programación se necesita de una estrategia cuando se implementa, es decir, un camino, y ese puede ser los paradigmas.
Los paradigmas más populares son:
Pero en realidad existen cientos más. Afortunadamente, podemos estudiarlos más fácilmente clasificándolos en dos categorías: paradigmas imperativos y paradigmas declarativos. Estos paradigmas son fundamentales en el desarrollo de aplicaciones web online.
La programación imperativa consiste en explicar muy bien cómo funciona nuestro código. Las instrucciones de nuestro programa deben ser bastante explícitas. El “cómo” realizamos cada paso del algoritmo debe ser muy claro.
Algunos lenguajes de programación que utilizan este paradigma son:
Por ejemplo, si queremos crear imperativamente una lista de números del 1 al 10, podemos crear una lista vacía, una variable contadora y agregar un elemento a la lista en cada iteración de un ciclo while.
list = []
count = 1while i < 10:
list.append(i)
i += 1
Dentro de la programación imperativa se desglosan otras:
Está orientada a mejorar la claridad, calidad y tiempo de desarrollo.
Agrupa el código en procedimientos, estos son un tipo de funciones o subrutinas a través de un sistema de pilas.
Basado en “objetos”, es decir contienen datos y código. Datos en forma de campos (atributos o propiedades); código en forma de procedimientos (métodos).
Contrario al paradigma imperativo, la programación declarativa, prioriza la claridad del resultado por encima que la claridad del paso a paso.
Siguiendo el ejemplo anterior, para crear una lista del 1 al 10, no definiríamos explícitamente el paso a paso de agregar un número a la lista en cada iteración de algún ciclo. Más bien, podemos utilizar una función range
que agregue la cantidad de números que necesitemos.
list(range(1, 10))
Algunos lenguajes que usan este paradigma son:
Dentro de la programación declarativa encuentras:
Usa funciones como “ciudadanas de primera clase”. Puede crear funciones de orden superior. Prioriza el uso de recursividad y HOF para resolver problemas.
Expresa los objetivos como una colección de afirmaciones o reglas acerca de los resultados y restricciones en lógica matemática.
Ninguno de los dos bloques de código es mejor que el anterior. Simplemente llegan a la misma solución siguiendo diferentes paradigmas.
💡 Considera esta clasificación de paradigmas de programación cuando crees tu propio lenguaje de programación.
No existe el mejor paradigma de programación. Si quieres aprender algún paradigma de programación, pero no sabes cuál elegir de primeras, te recomiendo tomar estas recomendaciones:
Cada paradigma intenta solucionar los problemas o falencias que no resolvieron los paradigmas históricamente anteriores. Y estos paradigmas históricamente anteriores hicieron exactamente lo mismo, intentaron solucionar los errores e incomodidades de sus predecesores.
Esto no significa que los paradigmas nuevos son mejores que los viejos. Elige tu paradigma dependiendo del proyecto que vas a desarrollar. Analiza los problemas con los que más probablemente te vas a enfrentar y escoge el paradigma que mejor te ayude a combatirlos.
No todos los lenguajes te permiten programar con cualquier paradigma. Algunos lenguajes no soportan los paradigmas más nuevos. Pero también hay lenguajes modernos que soportan varios paradigmas simultáneamente.
Esto abre un mundo gigante de posibilidades para aprovechar lo mejor de cada mundo.
💡 Elige tu paradigma de programación dependiendo del proyecto que vas a desarrollar y el lenguaje de programación que piensas utilizar. Te sugiero leer:
Si quieres conocer la historia de los lenguajes y paradigmas de programación, te recomiendo tomar el Curso de Historia de la Programación: Lenguajes y Paradigmas.
Además, si quieres aplicar los paradigmas más importantes en tu lenguaje de programación favorito, te recomiendo los siguientes cursos prácticos:
Además, sí o sí, te recomiendo revisar nuestra nueva Escuela de JavaScript. Cursos nuevos para que nunca pares de aprender🚀
Las startups necesitan talentos digitales dispuestos a asumir grandes retos, por eso si quieres convertirte en uno de ellos necesitarás especializarte en un área específica como: programación, ingeniería de datos, marketing digital o en la que quieras acorde a tu perfil y objetivos. Por eso, en Platzi te preparamos para que alcances tu sueño de trabajar en una startup, trabajes desde cualquier parte del mundo y te conviertas en referente de la industria tecnológica.
Prepárate hoy en Programación o lo que quieras y comienza tu camino para convertirte en #StartupReady, el talento que las startups necesitan a través de nuestros cursos especializados en donde puedes aprender de manera efectiva y lo mejor, desde ceros.
¿Te interesa aprender sobre IA? Conoce como iniciar en inteligencia artificial desde cero
Si creo un preprocesador para CSS que permita usar POO para aplicar estilos… ¿Entonces podré decir que CSS soporta POO? 🙈
Tu preprocesador soporta POO, CSS lo soportaría si lo dice la W3C.
A mi ver, veo a CSS más estructurado que otro paradigma 🐵
Si, es sorprendente ver lo bien estructurado que esta CSS. Si no, démonos cuenta a la hora de diseñar con CSS como se estructura cada clase, id o elemento que hallamos declarado en nuestro HTML.
Me encantó el post, siempre escuchaba hablar de paradigmas de la programación y nunca los explicaban, y yo tampoco los buscaba. Ahora me quedo clarisimo, muchas gracias! 😃
cual es la diferencia entre un paradigma de programación y un patrón de diseño?
https://platzi.com/clases/1619-arquitectura-android/20847-patron-de-diseno-vs-arquitectura-de-diseno/
Los paradigmas son mucho más generales sobre cómo escribirás todo tu código, mientras que los patrones son mucho más específicos para solucionar problemas muy concretos.
Me surge la siguiente pregunta, los patrones se pueden usar en cualquier paradigma? o son específicos de un paradigma?
Muy muy buen post,muchas gracias
Muy bueno!!!
Con el curso de Programacion estructurada de Daniela Coyotzi pude entender muy bien lo q es la programacion en C. Ya casi termino POO, y me falta bastante practica
Excelente artículo Juan David. Gracias por compartir
Excelente post, muchas veces cuando estamos en la universidad nos enseñan a programar pero no nos hablan o nos dan un contexto histórico sobre los paradigmas
@juandc Una pregunta, entonces React sería Programación declarativa?
Es programación reactiva React.
La ejecución asíncrona y los datos son lo más importante de este paradigma. Reactivo significa que reacciona a algo.
también me aparece otra información, esta la pondré tal cual la he encontrado: <<React está basado en un paradigma llamado programación orientada a componentes en el que cada componente es una pieza con la que el usuario puede interactuar. Estas piezas se crean usando una sintaxis llamada JSX permitiendo escribir HTML (y opcionalmente CSS) dentro de objetos JavaScript.>>
Hay casos en los cuales pueden estar presentes más de un tipo de paradigmas. Habría que investigar a fondo eso. Por cierto, quise borrar mi respuesta anterior y no pude. Así que agrego esta nueva información.
Me encanto esto, ahora siento que desbloquee un superpoder a la hora de pensar una solución para diferentes problemas.
Genial! Gracias por la detallada explicación, nunca tuve claro el concepto de paradigma de programación, lo veía en todos lados y nunca me tomé el tiempo de leer sobre ello.
Una pregunta
¿Para qué sirve un paradigma de programación?
Hola. Sirve para que agilices y hagas más sencilla la tarea de programar, ya que te ayuda a elegir la mejor forma o método para llevar a cabo tu proyecto o la resolución de algún problema.
Muy buena explicación. Me sirvió para aclarar muchas de mis dudas y armarme un mapa mental más claro sobre los diferentes paradigmas de programación mencionados. ¡Muchas gracias!