Funcionalmente Zen: principios de simplicidad para Python

El artículo «Funcionalmente Zen» parte del principio KISS, formulado por Kelly Johnson en Lockheed Skunk Works, y lo conecta con el Zen de Python para proponer varios preceptos adicionales orientados a escribir código más simple en este lenguaje. Tras un glosario de términos clave —idiomaticidad, ef

Por qué existe la programación orientada a objetos

La programación orientada a objetos (OOP) no surge de una moda académica, sino de una necesidad práctica: organizar el código en torno a las entidades del mundo real que representa. Este artículo lo ilustra con un caso concreto: un proyecto universitario de gestión de bibliotecas en el que dos estud

Cómo codificar métodos guarded en OCaml con testigos de igualdad de tipos

Los métodos guarded permiten asociar restricciones al receptor (self) únicamente a métodos concretos, de modo que solo puedan invocarse cuando el receptor cumpla dichas restricciones. OCaml no admite esta construcción de forma nativa en su sintaxis, pero el artículo muestra cómo codificarla mediante

El ordenador del fondo de un canal escocés

A finales de los años ochenta, Linn Products, una empresa escocesa de alta fidelidad conocida por su tocadiscos Sondek LP12, envió al fondo del canal Forth and Clyde un procesador diseñado a medida llamado Rekursiv. La máquina verificaba en hardware el tipo y los límites de cada acceso a memoria, re

Alan Kay aclara el significado original de «programación orientada a objetos»

Dos correos electrónicos enviados por Alan Kay —aclamado coinador del término «object-oriented programming»— a Stefan Ram en julio de 2003 arrojan luz sobre el sentido original de la orientación a objetos. En el primero, fechado el 23 de julio, Kay sitúa la primera mención pública del concepto hacia

Common Lisp Metaspec: el estándar ANSI X3J13 en la web

Common Lisp Metaspec es una versión en HTML, renderizada a partir de las fuentes TeX del borrador propuesto para el estándar ANSI de Common Lisp, conocido formalmente como el documento X3J13 número 94-101R. Constituye una referencia técnica completa y navegable del lenguaje, organizada en capítulos

Por qué los patrones de diseño suelen sobrar en el software moderno

Los patrones de diseño, popularizados por el libro de 1994 de la «Banda de los Cuatro» (Gamma, Helm, Johnson y Vlissides), se concibieron como plantillas reutilizables y agnósticas al lenguaje para resolver problemas recurrentes de diseño. Con el tiempo, señala el autor, se han convertido en dogma:

La abstracción equivocada: por qué duplicar puede ser mejor que abstraer

La programadora Sandi Metz sostiene que la duplicación de código resulta mucho más barata que una abstracción mal planteada, una afirmación popularizada en su charla de RailsConf 2014 "All the little things". El problema, describe, sigue un patrón reconocible: una programadora identifica código dupl

Nueve formas de simular herencia en Rust, el lenguaje sin clases

Rust carece de herencia de clases al estilo de los lenguajes orientados a objetos: no existen clases, declaraciones de subclases ni campos heredados de una clase padre. Sin embargo, las necesidades que la mayoría de los programadores resuelve con herencia —interfaces compartidas, comportamiento reut

orígenes del código: los 'ur-lenguajes' revelados

Este artículo explora un concepto fundamental en el desarrollo de software: los "ur-lenguajes" (lenguajes ancestrales). La idea central es que, aunque existen miles de lenguajes de programación, muchos comparten patrones básicos de construcción y organización, agrupándose en familias o "ur-lenguajes

C++: Cómo funciona el borrado de tipo en std::any

Este artículo explora la técnica de "type erasure" (borrado de tipo), un mecanismo fundamental detrás de la implementación de `std::any` en C++. La idea principal es permitir trabajar con objetos de diferentes tipos a través de una interfaz común, ocultando los tipos concretos subyacentes. El artícu

LLMs vs. OOP: Encapsulación, el Nuevo Desafío

El artículo explora los desafíos que enfrentan los Modelos de Lenguaje Grandes (LLMs) en la implementación de la encapsulación, un principio fundamental de la programación orientada a objetos (OOP). Inspirándose en la visión de Alan Kay, considerado el 'padre' de OOP, el texto critica la práctica co