Lenguajes & Paradigmas

Desarrollo & Construcción de Software

Todo proceso de digitalización nace de un esfuerzo de desarrollo articulado a través del uso de lenguajes. Más allá de sintaxis particulares y modelos o estilos de codificación, resulta especialmente importante prestar atención a las formas en la que es posible construir software hoy en día desde distintos paradigmas y modelos arquitectónicos. Si bien esto es cierto, cada lenguaje impone una interpretación del paradigma al que da soporte y cada esfuerzo de arquitectura hoy vive desplegado directamente sobre el código. Dentro de Lenguajes & Paradigmas centraremos nuestra atención en describir diferentes modelos, patrones, estilos, principios, técnicas y mecanismos que conforman la base conceptual de los más relevantes paradigmas de construcción de software y ello lo haremos desde los ojos del desarrollador de soluciones de software. Si se dedica a desarrollar software, tal vez esta categoría le resulte un punto de referencia relevante para aprender sobre la actividad de desarrollo desde una perspectiva no tan habitual.
Desarrollo · Programación · Lenguajes · Paradigmas · Mecanismos · Técnicas · Modelos · Patrones · Principios
Artículos & Opinión
Modelos de Abstracción
Paradigmas & Modelos de Abstracción
Javier Vélez · Nov 2023 · 13 mins
Los procesos de diseño y construcción de software siempre comienzan, de manera consciente o inconsciente, por la selección de un paradigma de programación. Un paradigma establece un marco de conceptos y restricciones que dirige las actividades de desarrollo de manera conveniente. De esta manera, debe entenderse que un paradigma es en realidad una herramienta de trabajo que nos ayuda a posicionarnos en un marco mental para articular los trenes de pensamiento que conducen a una solución.Ocurre de
Programación Estructurada
Paradigmas & Modelos de Abstracción
Javier Vélez · Nov 2023 · 19 mins
No tengo memoria suficiente para atestiguar que efectivamente fue así, pero supongo que fue una cuestión de hastío. La comunidad de científicos - lo que décadas después se convertiría en desarrolladores e ingenieros de sofware - llevaban ya demasiados años escribiendo programas de ordenador en base a acrónimos en ensamlador o, lo que es peor, directamente en código binario. Y así, debieron concluir que había llegado el momento de cambiar el nivel de abstracción en los procesos de especificación
Programación Funcional
Paradigmas & Modelos de Abstracción
Javier Vélez · Nov 2023 · 19 mins
Habían pasado ya algunos años desde que la programación estructurada estuviera en pleno apogeo. La incipiente comunidad de desarrolladores e ingenieros de software estaba empezando a aprender una nueva forma en la que se podía dar respuesta a los problemas de complejidad creciente que se venían demandando en base al uso de algoritmos encapsulados fuertemente estructurados de acuerdo a un diseño modular descendente.La nueva era de desarrollo había alcanzado una verdadera velocidad de crucero.
Programación Orientada a Objetos
Paradigmas & Modelos de Abstracción
Javier Vélez · Nov 2023 · 25 mins
Tendrían que pasar dos largas décadas y varios paradigmas de programación - primero la programación estructurada y su variante modular y más tarde la programación funcional - para darnos cuenta, dentro de la comunidad del ingeniería del software, que algo no funcionaba. Si bien, desde un punto de vista exclusivamente académico, toda respuesta a los problemas de construcción de soluciones digitales parecía tener su espacio de aceptación, cuando estos modelos se pusieron en práctica en el más
Programación Orientada a Componentes
Paradigmas & Modelos de Abstracción
Javier Vélez · Nov 2023 · 23 mins
Habíamos entrado en un nuevo siglo y la orientación a objetos gozaba de plena salud. La vieja escuela de pensar que la programación consistía en llevar a cabo actividades de composición algorítmica había quedado muy atrás. La masa de desarrolladores había parecido aceptar plenamente que el diseño y construcción de productos digitales partía de la creación de abstracciones de datos.No solo había quedado constatado que esta nueva forma de aproximarse al desarrollo de soluciones resultaba mucho
Programación Orientada a Servicios
Paradigmas & Modelos de Abstracción
Javier Vélez · Nov 2023 · 21 mins
En los mismos años en los que la comunidad académica estaba atribulada preocupándose por los nuevos modelos de orientación a componentes, la industria del software ponía foco de atención en un nuevo espacio tecnológico donde abrir oportunidades de negocio. Y es que por aquella época, casi estrenado el nuevo siglo, Internet se había convertido en una realidad estable tanto a nivel profesional como familiar y el índice de penetración de las comunicaciones telemáticas era una realidad
Modelos de Ejecución
Paradigmas & Modelos de Ejecución
Javier Vélez · Dic 2023 · 11 mins
En una serie anterior, presentamos los diferentes paradigmas de programación en base a sus modelos de abstracción característicos. Allí explicamos que un modelo de abstracción se describe siempre en términos del tipo de artefacto arquitectónico que se utiliza y de los mecanismos de soporte que se aplican para crear realidades compositivas funcionales y operativas.Sin embargo, caracterizar de esta manera en exclusiva los paradigmas de programación ha sido una actividad tan frecuente como
La Dimensión Espacial
Paradigmas & Modelos de Ejecución
Javier Vélez · Dic 2023 · 7 mins
Los modelos de ejecución centrados en el eje espacial ofrecen una metáfora sistémica ambiental para explicar la manera en que se llevan a cabo los procesos de ejecución de código. Esta metáfora sirve de elemento interpretativo que permite dar un significado específico a cada constructo sintáctico del lenguaje en el marco del paradigma de programación al que pertenece.En particular, un modelo de ejecución espacial describe cómo se produce la interpretación y evaluación del código a lo largo de
La Dimensión Temporal
Paradigmas & Modelos de Ejecución
Javier Vélez · Dic 2023 · 13 mins
Los modelos de ejecución que caen dentro de la dimensión temporal se preocupan por ofrecer diferentes interpretaciones semánticas del código que se desarrolla a lo largo del tiempo. En particular, estos modelos aciertan en dar respuesta a determinados problemas que tienen que ver con cómo se gestiona el flujo de ejecución de un programa sujeto a un marco de restricciones particular.A diferencia de lo que ocurría con la dimensión espacial, donde lo declarativo y lo imperativo se dibujaba como
La Dimensión Volumétrica
Paradigmas & Modelos de Ejecución
Javier Vélez · Dic 2023 · 9 mins
La dimensión volumétrica constituye el último eje sobre el que pivota el marco conceptual del que nos hemos servido a lo largo de esta serie para describir los modelos de ejecución. En particular, sobre esta dimensión se considera la manera en la que el código puede quedar desplegado en diferentes nodos de red para su uso y explotaciónDesde esta perspectiva - y también de manera coincidente en atención a un punto de vista histórico - es adecuado describir dentro de este eje dos aproximaciones
El Efecto Ornitorrinco
El Efecto Ornitorrinco
Javier Vélez · Dic 2023 · 7 mins
Hace ahora casi una década que escribí un artículo en mi Web titulado El efecto Ornitorrinco. El artículo surgió de una discusión en la lista de distribución del grupo Madrid JS donde muchas voces críticas hacían una demanda encendida para que JavaScript se pareciera por diseño más al lenguaje que ellos imaginaban.Ya en aquellos días, mi respuesta en el foro, y en el artículo que escribiría días después, defendía que no se puede pedir a un lenguaje que se ajuste académica y rigurosamente a los
Clases & Funciones
El Efecto Ornitorrinco
Javier Vélez · Dic 2023 · 9 mins
Tal vez la sentencia más sonada en relación con la orientación a objetos es que se trata de un paradigma basado en clases, ya que estos son los artefactos esenciales que sirven de soporte a los procesos de construcción de objetos. Esta afirmación tan simplista, que ha aparecido recurrentemente en la literatura más académica, encierra muchas trampas que conducen frecuentemente a confusión. Por eso, parece conveniente empezar por este punto para separar grano de paja.Y es que, que la orientación
Tipos & Prototipos
El Efecto Ornitorrinco
Javier Vélez · Ene 2024 · 9 mins
En un artículo anterior, hablamos acerca del papel que juegan las clases en relación a los procesos de construcción de objetos. En ese texto se discutió cómo, en el modelo estático de la orientación a objetos, las clases son uno de los ciudadanos de primera categoría y que, este tipo de artefactos sirve al propósito de conferir a los objetos así construidos una estructura y lógica operativa común.Sin embargo, en los modelos de esta naturaleza, las clases cubren un espacio de responsabilidad
Herencia & Referencia
El Efecto Ornitorrinco
Javier Vélez · Ene 2024 · 13 mins
Hasta este artículo hemos completado la descripción de la responsabilidad que tienen las clases en el marco de la orientación a objetos más clásica y convencional. Este relato, que se enmarca en el espacio que estamos llamando modelo estático a lo largo de esta serie, nos ha servido para poner en valor parte de las diferencias que existen dentro de este modelo con una aproximación alternativa no basada en clases ni tipos que venimos a referir como el modelo dinámico de la orientación a objetos
Conformidad Semántica & Sintáctica
El Efecto Ornitorrinco
Javier Vélez · Ene 2024 · 9 mins
Hasta el momento dentro de esta serie, nos hemos centrado en la fase de diseño para hacer una descripción comparativa de las diferencias que existen entre el modelo estático y dinámico de la orientación objetos. En el modelo estático, los procesos de construcción se elaboran a través de las clases que también sirven como cualificadores semánticos de tipo. Este hecho sirve de elemento clasificador, de manera que es posible crear familias de artefactos con perfiles estructurales y funcionales
Conformidad Total & Parcial
El Efecto Ornitorrinco
Javier Vélez · Ene 2024 · 9 mins
En un artículo anterior, hablábamos de los dos tipos de conformidad que se aplican dentro de la orientación a objetos y los poníamos en contraste para explicar las diferencias de comportamiento que se dan durante la ejecución entre los modelos estático y dinámico.En el modelo estático, se utiliza conformidad semántica a la hora de articular la participación de objetos dentro de una colaboración. Las clases, de manera principal, y los mecanismos de la herencia, de manera secundaria, confieren a
Contratos & Protocolos
El Efecto Ornitorrinco
Javier Vélez · Ene 2024 · 11 mins
Llegados a este punto, ya hemos descubierto gran parte de las diferencias que existen entre los modelos estático y dinámico de la orientación objetos. Mientras que los primeros operan con una estrategia de desarrollo basada en conformidad semántica total los segundos lo hacen de acuerdo una aproximación basada en conformidad sintáctica parcial.Y este hecho, más allá de caracterizar la manera en que los objetos entran a participar en espacios de colaboración durante el tiempo de ejecución,
Arquitecturas Solidas & Plásticas
El Efecto Ornitorrinco
Javier Vélez · Ene 2024 · 11 mins
Con este último texto, ponemos punto final a este estudio que ha tenido como propósito describir, de manera detallada, El Efecto Ornitorrinco según el cual, la pragmática de uso que debe aplicarse sobre los lenguajes de programación queda siempre por encima de cualquier movimiento cultural y marco teórico académico.A lo largo de los artículos de esta serie, hemos ido describiendo las diferencias esenciales que se dan entre los dos modelos alternativos existentes dentro del paradigma de
Ejecución Asíncrona
El Modelo de Ejecución Asíncrona
Javier Vélez · Ene 2024 · 7 mins
En una serie anterior, al hablar de modelos de ejecución, ya describimos de manera puntual la asincronía. En aquel artículo, ubicábamos sobre la dimensión temporal este tipo de soluciones ya que, en efecto, están centradas en ofrecer un mayor grado de rendimiento a lo largo del tiempo.Aquel trabajo tuvo por objetivo posicionar a la programación asíncrona en el marco de los modelos de ejecución existentes dentro de los paradigmas de construcción de software. Sin embargo, dada la relevancia que
Modelo de Continuaciones
El Modelo de Ejecución Asíncrona
Javier Vélez · Ene 2024 · 11 mins
En el artículo anterior, presentábamos la programación asíncrona como un modelo de ejecución que presta especial atención al rendimiento sobre la dimensión temporal. La propuesta, en este sentido, gira en torno a la idea de identificar los fragmentos algorítmicos dentro de un programa que puedan ser lanzados en paralelo, ya sean estos funciones o procedimientos.En ese mismo artículo, explicábamos también que si las funciones así diseñadas presentan por construcción un carácter autónomo, es
Modelo de Diferimiento
El Modelo de Ejecución Asíncrona
Javier Vélez · Ene 2024 · 11 mins
El modelo de continuaciones que presentábamos en el artículo anterior, resultaba pretendidamente sencillo. En efecto, si una función no bloqueante necesita incluir toda la lógica necesaria para procesar el valor de retorno obtenido, simplemente se extiende el conjunto de parámetros de ésta para incluir un manejador de continuidad.Sin embargo, en el pecado se tiene la penitencia. Porque si bien es un mecanismo bastante efectivo, conduce a experiencias de desarrollo en las que la lógica de
Modelo de Promesas
El Modelo de Ejecución Asíncrona
Javier Vélez · Ene 2024 · 13 mins
Con el modelo de diferimiento descrito en el articulo anterior descubrimos que, a veces, pequeños cambios en la estructura de los elementos de soporte a la asincronía podían suponer considerables mejoras en la experiencia de uso. Si comparamos ese modelo con respecto al original basado en el paso de continuaciones, observábamos en efecto, que se recuperaba la estructura paramétrica de las funciones por medio de una estrategia de evaluación en dos fases.Sin embargo, en sendas aproximaciones, la
Modelo de Intercesión
El Modelo de Ejecución Asíncrona
Javier Vélez · Ene 2024 · 13 mins
A lo largo de esta serie hemos presentado diferentes modelos de desarrollo que ofrecen aproximaciones de mejora progresiva en el perímetro de la ejecución asíncrona. Se trataba ante todo de dar una respuesta eficaz en relación a cómo un algoritmo puede mejorar sus tiempos de respuesta en base a la paralelización sistemática de cada una de sus funciones constituyentes. Pero a la vez, conseguir este objetivo manteniendo, en la medida de lo posible, la sensación de continuidad secuencial propia
Ejecución Concurrente
El Modelo de Ejecución Concurrente
Javier Vélez · Ene 2024 · 17 mins
En una serie anterior nos preocupamos por estudiar cómo es posible mejorar las cotas de ejecución de soluciones de software a través de la aplicación de modelos de desarrollo asíncrono. Se trataba en esencia de transformar cada una de las funciones y procedimientos de un cuerpo algorítmico en operaciones no bloqueantes que devolvieran instantáneamente el control al programa llamante para empezar a ejecutar de forma paralela.En la ejecución concurrente, por el contrario, un conjunto de agentes
El Modelo de Cerrojos
El Modelo de Ejecución Concurrente
Javier Vélez · Ene 2024 · 13 mins
Como explicamos en el artículo anterior, uno de los elementos más relevantes a la hora de llevar a cabo un diseño concurrente es incluir la lógica de coordinación pertinente que sirve de garante a las propiedades de seguridad, vivacidad y prioridad propias del problema bajo análisis.Dentro de las aproximaciones de memoria compartida, este esfuerzo se lleva a cabo a través de la definición de protocolos de bloqueo y desbloqueo que, operando sobre una arquitectura de colas, recubren
El Modelo de Semáforos
El Modelo de Ejecución Concurrente
Javier Vélez · Ene 2024 · 13 mins
En un artículo anterior presentamos el primer modelo de soporte al control concurrente basado en el uso de cerrojos. Mediante esta metáfora sistémica, el desarrollador era capaz de modular el acceso a las zonas críticas dentro del cuerpo algorítmico de los agentes donde se opera sobre el espacio de memoria compartida.Pese a que la aproximación basada en cerrojos resultaba sencilla y eficaz, lo cierto es que tuvo que ser tildada como una respuesta de bajo nivel dado que no ofrece ni mecanismos
El Modelo de Regiones Críticas
El Modelo de Ejecución Concurrente
Javier Vélez · Ene 2024 · 11 mins
En los dos artículos anteriores discutimos los dos modelos más clásicos para el control de la ejecución concurrente. Mientras que las aproximaciones basadas en cerrojos permitían definir zonas de acceso restringido a los recursos compartidos por acotación de protocolos de bloqueo y desbloqueo, el uso de semáforos extendía esta semántica a situaciones donde la lógica de coordinación se expresaba en términos de carga volumétrica.En efecto, en el marco de nuestro problema de ejemplo las
El Modelo de Monitores
El Modelo de Ejecución Concurrente
Javier Vélez · Ene 2024 · 15 mins
El modelo de regiones criticas condicionales que discutimos ampliamente en el artículo anterior supuso un claro avance en el camino hacia la identificación de metáforas sistémicas más abstractas y potentes que permitieran llevar a cabo un adecuado control de la concurrencia.En efecto, cada región crítica proporcionaba inyectores explícitos para especificar la lógica de coordinación y de operación. La primera, resolvería las condiciones que deben darse para conceder acceso a la sección critica.
El Modelo de Canales
El Modelo de Ejecución Concurrente
Javier Vélez · Ene 2024 · 13 mins
Las soluciones basadas en cerrojos que discutimos al comienza de esta serie demostraron que muchas veces el uso de un artefacto sencillo de control del flujo de ejecución convenientemente articulado ya ofrecía una respuesta suficientemente flexible y eficaz. Y que cuando esta metáfora se extendía en cardinalidad para permitir la entrada concurrente a un número acotado de agentes para dar lugar al concepto de semáforo, se simplificaba aún más el control ya que este artefacto absorbería parte de