¿Qué diablos son los paradigmas de programación?

Comencemos por las palabras separadas, la palabra paradigma significa: ejemplo o modelo de algo, es decir, un paradigma es una base con la cual puedes partir para obtener una respuesta a algo.

Comencemos por las palabras separadas, la palabra paradigma significa: ejemplo o modelo de algo, es decir, un paradigma es una base con la cual puedes partir para obtener una respuesta a algo.

Ahora, combinándolo con el concepto de programación tenemos que un paradigma de programación es un modelo para crear programación, y ¿Qué es lo que hace la programación? Pues resolver problemas, creando soluciones.

Entonces tenemos que un paradigma de programación son modelos para partir en la creación de estas soluciones, y aquí es donde, ya entendiendo lo que es un paradigma, ya podemos entender lo siguiente: en la programación hay distintos modelos con los cuales podemos llegar a crear soluciones, por ejemplo tenemos el paradigma funcional, el paradigma orientado a objetos, el paradigma lógico y algunos otros más, y aquí vamos a darle una revisión a algunos.

Paradigma orientado a objetos

Este paradigma se centra en caracterizar el universo en el que vivimos, si observamos nuestro entorno, todo está compuesto por objetos, objetos que interactúan con otros objetos, objetos que son parte de otros objetos, todo es un objeto, pero para diferenciar un objeto de otro tenemos propiedades y acciones que hacen estos objetos.

Por ejemplo, sabemos que una cerveza es una cerveza porque tiene ciertas características y propósito: es líquido, tiene alcohol, tiene un porcentaje de malta, lúpulo y algunas otras cosas, estas cosas las llamaremos atributos o propiedades, y juntas hacen que una cerveza sea un objeto el cual podemos identificar por las mismas propiedades.

Pero una cerveza no solo tiene propiedades, también tiene un propósito o funcionalidad, y su funcionalidad es que se puede beber, y aquí lo bonito del ejemplo ¿Quién se bebe la cerveza? Pues un humano como yo, que viene siendo otro objeto con sus características y funcionalidades propias.

En este paradigma nos basamos en el mundo real para representar la problemática a resolver, como estos objetos interaccionan unos con otro, y gracias al concepto de Clase podemos crear estos objetos.

La clase en este paradigma es un molde que sirve para crear los objetos, como el molde para crear un auto por ejemplo, un molde que sabe que debe tener puertas, llantas, motor, ventanas y un proceso secuencial para crearlo, eso es una clase.

Este paradigma tiene más características de las cuales hablare en una entrada propia para adentrarnos de lleno.

Si deseas aprender programación orientada a objetos te recomiendo esta lista de videos.

Paradigma funcional

Cuando escuchamos hablar de este paradigma, creemos que es algo nuevo, que es el siguiente paso de la programación, y bueno, en realidad este paradigma es mucho más viejo que el paradigma orientado a objetos.

Este paradigma se basa en el concepto matemático de cálculo lambda, un sistema formal que fue creado en la década de 1930 gracias a Alonzo Church, este paradigma se basa en funciones que invocan otras funciones las cuales invocan a otras funciones.

Con funciones podemos hacer lo mismo que con la programación imperativa (programación que se basa en cómo hacerlo), en este paradigma nos preocupamos más en el ¿Qué vamos a hacer?, una forma de resolver los problemas de manera más humana.

Hay que resaltar que el paradigma funcional puede convivir con el paradigma orientado a objetos, es algo que estamos viendo últimamente en los lenguajes de programación más utilizados, pero también el paradigma funcional no solo es la creación de funciones, sino también llevar ciertas prácticas para cumplir con este objetivo

No me adentrare mucho, solo te mencionare que una función en este paradigma debería siempre regresar el mismo resultado si siempre es invocado con los mismos parámetros, por ejemplo una función suma que recibe 1 y 2 siempre debe devolver 3, y no depender de efectos colaterales, esto nos ayuda a que podamos remplazar suma por otra función que haga lo mismo sin que afecte a otras partes de nuestro sistema.

Si quieres darte una idea de este paradigma ya a nivel práctico te recomiendo este video.

Paradigma lógico

El paradigma funciona y el paradigma lógico son parte de la programación declarativa, aquella que se centra en que vamos a hacer, y no el cómo vamos a hacerlo.

El paradigma lógico se centra en el concepto de lógica matemática, todo son predicados y hechos.

Teniendo una base de hechos como “Todos los que toman cerveza son borrachos” y consultando ¿Quiénes son borrachos? Este paradigma nos regresaría “Todos los que toman cerveza”.

Este paradigma resulta útil en sistemas expertos gracias a su naturalidad de hechos y predicados, imaginar lo siguiente, cuando uno va al doctor, va con un experto en una rama, este experto tiene una base de hechos en su experiencia, y dependiendo de nuestras preguntas el utilizara sus predicados para darnos una respuesta, tal cual funciona este paradigma.

También es utilizado para el reconocimiento del lenguaje natural y demostración de teoremas.

En este video te explico el lenguaje lógico prolog por si deseas darte una idea de a que va este paradigma.

Paradigma reactivo

Este paradigma es lo de moda de hoy en día, pero en realidad tiene ya sus años de existir.

El paradigma reactivo se centra en los flujos de datos y como entrelazarlo con objetos.

Por ejemplo, todos hemos utilizado Excel, sabemos que Excel se compone de celdas (los observadores), y sabemos que en Excel podemos hacer formulas, como una fórmula que sume un conjunto de celdas, la celda donde aparecerá el total será un observador de algo, este algo es la sumatoria de el conjunto de celdas que representan la suma, por lo cual si una de las celdas dentro de la formula tiene un cambio, la celda que observadora representara este cambio de manera automática, esto es el paradigma reactivo.

Tenemos muchas ventajas con este paradigma que se basa en un conjunto de patrones de diseño, sobre todo en el patrón observador, el cual es muy sencillo de explicar: teniendo un sujeto, siendo el sujeto cualquier cosa que tenga información, existirá una colección de observadores interesados cada que cambie el sujeto sus valores, estos observadores estarán a la espera de cuando el sujeto cambie algo y serán notificados de ese cambio, cada sujeto sabrá que hacer dependiendo ese cambio, esto en pocas palabras es el patrón observador.

En el siguiente video te muestro como puedes programar el patrón observador en javascript

Conclusión

Como te diste cuenta hay distintas formas de crear programación (hay más paradigmas no mencionados), y un punto que quiero plantear aquí, es que con cualquiera de las formas anteriores mencionadas puedes llegar al mismo resultado, la diferencia radica que unas serán mas aptas que otras para cierta problemática.

Los paradigmas no son enemigos, últimamente los lenguajes de programación más utilizados son multiparadigma, esto con el propósito de darnos flexibilidad de poder trabajar con un estilo de programación dependiendo la circunstancia.

Así que ya sabes que es un paradigma, y espero esta entrada te haya dado su propósito, gracias por llegar hasta aquí.

Te dejo una charla que tuve con Nicolás Schürmann  del canal HolaMundo sobre paradigmas de programación.

¿Cómo aprender un nuevo lenguaje de programación?

Adentrarnos en un nuevo lenguaje de programación es un proceso que más de una vez va a pasarnos en nuestra carrera como programadores.

En mi historia he trabajado con más de 10 lenguajes de programación a lo largo de 20 años programando, y puedo decir que es ya un proceso común para mi aprender (o re-aprender) nuevos lenguajes de programación.

En mi experiencia puedo darte algunos consejos de cómo es que yo aprendo un nuevo lenguaje (no framework) de programación y es lo siguiente.

Fundamentos del lenguaje

Siempre, lo primero que hago es ir a ver los fundamentos del lenguaje, es decir, las cosas básicas del mismo, sin importar que tenga experiencia en otros lenguajes, es bueno no suponer, la suposición de creer que es igual una palabra reservada en un lenguaje que en otro es un error al cual no debemos caer (por ejemplo la palabra reservada var de javascript que es muy distinta a la misma palabra var en c# por ejemplo).

Los fundamentos van desde como declarar una variable, que paradigmas soporta el lenguaje (orientado a objetos, funcional, estructurado), como declarar una clase, si el lenguaje soporta interfaces o no, las cualidades únicas del lenguaje, las debilidades y ventajas del lenguaje son importantes también, pero sobre todo ir a este lenguaje nuevo como una persona que se adentrara sin suposiciones traídas de otros lenguajes de programación.

Documentación oficial

Para leer sobre los fundamentos, cuando aprendo un lenguaje de programación que tiene gran cantidad de apoyo, la documentación oficial siempre nos dará un camino sobre las cualidades de este.

La documentación oficial, sobre todo en inglés, ayuda dándonos lo correcto, lo oficial, y de primera mano la información correcta de cómo utilizar el lenguaje.

Antes de tomar un curso, te recomiendo ir a la documentación oficial.

Cursos

Una vez que se han leído los fundamentos, que se ha ido a la documentación oficial, ya podemos tener una base sólida para tomar un curso, ¿Por qué no antes? Pues porque necesitamos la base para poder tener un criterio del curso que tomaremos, hay cursos buenos y malos, pero para saber si estamos perdiendo el tiempo o no, necesitamos este criterio.

Los cursos son un complemento en el aprendizaje, pero es importante tener conocimiento por lo menos base antes de tomarlo, ya que algunos cursos podrían mal educarnos, o no darnos las bases que la documentación oficial ya a este punto nos habrá brindado.

Al tomar un curso ya sea de paga o gratuito hay que leer lo que comenta la gente, la ventaja de youtube es que podemos ir a los comentarios y leer sobre que va el curso, la ventaja en algunas plataformas de paga es que podemos ver lo que la gente dice del curso, es bueno antes de pagar saber si por lo que se va a pagar vale la pena.

Programar

Suena como algo obvio, pero lo he puesto ya que no se gana nada con solo leer, hay que darle al código, no hay buen corredor que sea buen corredor solo leyendo, hay que correr, hay que errar, hay que aprender de los errores, y un consejo es ir más allá del típico “Get Started” de la documentación, y puedes hacerlo vislumbrando algo que puedas hacer que sea utilizado por alguien, una aplicación básica que tenga la solución a algo básico.

Por ejemplo, si es un lenguaje para aplicaciones móviles, pues crear una app que resuelva alguna tarea de la vida diaria ya sea personal o de algún conocido, esto nos ira dando pautas de que ir investigando para ir solucionando las distintas partes de la aplicación. Esto ira forjando un camino orgánico de investigación, ya que tendrás un fin y objetivo por el cual puedes ir investigando, aprendiendo y sobre todo programando.

Comunidades

Las comunidades son parte esencial en el aprendizaje, ya que brindan un apoyo de compañerismo, apoyándonos en momento cuando caigamos en bugs endemoniados, o dudas sobre el lenguaje que estamos adentrándonos.

Por suerte, hoy en día las comunidades las podemos encontrar desde foro, hasta en slack, telegram o discord.

Es bueno involucrarnos con comunidades, ya que podemos tener varios puntos de vista extras, que nos podrán dar más objetividad a nuestro conocimiento.

Conclusión

Espero estos consejos te sirvan, y sobre todo, entender que para aprender un nuevo lenguaje de programación, se debe tener un propósito por el cual deseamos aprenderlo, ya sea laboral, ya sea por gusto, pero nunca que sea porque lo escuchamos como el lenguaje de moda, no caigamos en fanatismos.

Patrones de diseño en javascript

Los patrones de diseño son técnicas ya probadas que resuelven problemáticas en concreto.

Imagina que tienes soluciones que ya han sido utilizadas por muchos programadores, y estas soluciones fueron documentadas como soluciones comunes para un tipo de problemas comunes.

Aprender el porqué de los patrones de diseño te ayudara a poder tener una mente más organizada al momento de programar.

En esta entrada tienes videos de varios patrones de diseño explicados en javascript.

El curso es publicado en mi canal de Youtube y para seguir el rastro te invito a que te suscribas dando clic aquí.

Inyección de dependencia en Javascript 💉
Prev 1 of 1 Next
Prev 1 of 1 Next

Curso de fundamentos de C# .Net Core

En este curso aprenderas las caracteristicas fundamentales del lenguaje de programación C#.

Al finalizar el curso aprenderas:

  • Variables y tipos de datos
  • Programación orientada a objetos: herencia, polimorfismo, control de acceso
  • Generics
  • Deserialización y serialización de objetos
  • Json
  • Conexión a base de datos
  • Interfaces en Programación orientada a objetos
  • Solicitudes a servicios web
  • Delegados
  • Excepciones
  • Creación, lectura y escritura de archivos

El curso esta en desarrollo y para que no pierdas ningún video puedes suscribirte a mi canal aquí.

1.- Tipos de datos y var | Curso de fundamentos de C#
Prev 1 of 2 Next
Prev 1 of 2 Next

Curso de Python orientado a novatos

En este curso veras los fundamentos básicos de python, características que son necesarias para comenzar con este lenguaje de programación.

Aprenderás como hacer variables, listas, funciones, clases, programación funcional, conexiones a base de datos, y por ultimo haremos un Crud(crear, obtener, editar y eliminar).

El curso esta orientado a nivel novato o principiante.

Curso de Python, De novato a experto | Variables y listas #1
Prev 1 of 1 Next
Prev 1 of 1 Next

Curso programando un sistema de venta real con: .Net Core, angular y Xamarin

En este curso haremos un sistema de venta real utilizando como tecnología de backend .Net Core y en el frontend Angular y Xamarin.

Me acercare lo más posible a lo que sería un sistema real, por lo cual veremos muchos temas como son:

  • Autentificación
  • Seguridad
  • Entity Framework
  • Cruds
  • Creación de servicios web
  • Aplicación de patrones de diseño
  • Diagramas de componentes
  • JWT
  • Directivas en angular
  • Servicios en angular
  • Observadores en angular
  • Y mucho más

El curso es publicado en mi canal de Youtube y para seguir el rastro te invito a que te suscribas dando clic aquí.

Programando un sistema de ventas real | Introducción
Prev 1 of 2 Next
Prev 1 of 2 Next

Preguntas y respuestas de programación #15 ¿Que son los microservicios?

Contestando preguntas y respuestas sobre programación.

  • ¿Qué son los microservicios?
  • ¿Cómo identificar que patrón de diseño se está utilizando?
  • ¿Cuál es la parte más difícil de trabajar en instituciones de gobierno?
  • ¿Cómo compartir la capa de negocio y de datos en aplicaciones de escritorio, web y apps?
  • ¿Cómo confirmar correo sin Identity?

¿Cómo trabajar Entity Framework con Mysql en Visual Studio 2019?

En este video te mostrare los pasos que debes seguir para poder trabajar con Entity Framework con Mysql en Visual Studio 2019.

Links de descargas:

¿Cómo ver los archivos en tiempo real de un directorio con C# Windows forms? FileSystemWatcher

En este video te mostrare como utilizar FileSystemWatcher para que puedas ver los cambios en tiempo real de un directorio en Windows Forms: nuevos archivos, archivos renombrados, eliminación de archivos.

¿Cómo crear un módulo Maestro Detalle en C# MVC .Net Framework?

En este video te explicare como hacer un formulario maestro detalle con la tecnologia MVC .Net Framework. Te enseñare desde como esta organizado MVC .Net, como insertar los datos a una base de datos con Entity Framework y como agregar elementos diatónicamente con javascript en tu formulario.

Descargar código fuente