Contraejemplos en sistemas de tipos: una colección de casos sutiles

Counterexamples in Type Systems es una obra de referencia compilada por Stephen Dolan —con colaboraciones reconocidas de Andrej Bauer, Leo White y Jeremy Yallop— que reúne treinta y un contraejemplos cuidadosamente seleccionados para ilustrar los puntos delicados, las trampas y las excepciones de lo

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

El operador 'or' en guards de Elixir no es conmutativo

Los guards de Elixir permiten componer comprobaciones con los operadores booleanos `and` y `or`, pero su comportamiento difiere del esperado cuando se invierte el orden de las cláusulas. La entrada analiza un módulo de ejemplo con dos funciones, `Foo.a/1` y `Foo.b/1`, cuyas guardas son idénticas sal

Hybrid ClojureScript: un lenguaje que combina código textual y visual

Los lenguajes de programación dominantes obligan a los desarrolladores a expresar ideas geométricas de dominio específico únicamente mediante texto lineal. Un artículo reciente propone una solución: lenguajes híbridos que permitan crear construcciones sintácticas visuales combinables con el código t

Rhombus 1.0: un nuevo lenguaje de programación extensible sobre Racket

Rhombus es un lenguaje de programación de propósito general, funcional, dinámico y extensible que acaba de alcanzar su versión 1.0. Está construido sobre Racket, del que hereda herramientas como el entorno DrRacket y la suite de línea de comandos raco, y se activa simplemente iniciando un módulo con

La programación en 1992 según un texto recuperado de hace más de tres décadas

Un texto escrito en 1992, recuperado al ordenar un despacho, reflexiona sobre por qué los problemas de la programación informática no se habían resuelto pese a los avances en compiladores. Para ilustrarlo, su autor recurría a un caso de IBM: en la década de 1970, la compañía decidió sustituir su com

Cómo escribir un intérprete de Lisp en Python

Este artículo es un tutorial paso a paso para construir un intérprete de Scheme (un dialecto de Lisp) utilizando Python. El texto parte de la premisa de Steve Yegge según la cual, si no se sabe cómo funcionan los compiladores, no se entiende de verdad cómo funcionan los ordenadores, y aplica esa ide

CS 6120 de Cornell: curso autoguiado y abierto sobre compiladores avanzados

CS 6120 es un curso de nivel doctoral de la Cornell University, impartido por Adrian Sampson, que ahora se ofrece como itinerario autoguiado y abierto en la web. El programa aborda la implementación de lenguajes de programación desde una perspectiva tanto clásica como de investigación: representacio

Se estrena en YouTube 'C++: The Documentary', crónica de 40 años del lenguaje

El documental 'C++: The Documentary' se estrenó hoy en YouTube con un recorrido por los 40 años de historia del lenguaje de programación C++, desde su creación en los laboratorios Bell de AT&T a manos de Bjarne Stroustrup hasta su actual adopción global. El filme reúne a figuras clave del lenguaje y

SQL, el lenguaje que premia a quien se queda quieto

El artículo argumenta que SQL es el único lenguaje de programación que un desarrollador puede aprender una vez y usar durante décadas sin necesidad de reescribir su modelo mental. La razón, explica el autor, es que SQL se sostiene sobre el álgebra relacional, una rama de las matemáticas que no tiene

Mis impresiones tras un mes programando en Clojure

Tras un mes utilizando Clojure para reconstruir su sitio web personal, el autor comparte sus impresiones sobre el lenguaje y por qué piensa seguir con él. El autor se acercó a Clojure esperando la sintaxis engorrosa que suele asociarse a los dialectos de Lisp, pero en la práctica lo encontró más er

Elixir v1.20 ya es un lenguaje de tipado gradual sin anotaciones

El equipo de Elixir ha publicado la versión 1.20 del lenguaje de programación, que incorpora un sistema de tipado gradual sin necesidad de añadir anotaciones de tipo. Se trata del primer hito de desarrollo del proyecto de tipos, iniciado en 2022, que convierte a Elixir en un lenguaje gradualmente ti

Por qué deberías probar Janet, un dialecto de Lisp minimalista

En un panorama de lenguajes de programación cada vez más complejos, Janet se presenta como una propuesta singular: un pequeño dialecto de Lisp que combina simplicidad, potencia expresiva y portabilidad. Este artículo del autor del libro 'Janet for Mortals' —publicado en abierto— defiende por qué cua

Lua: el lenguaje eficiente para reducir la huella de carbono

En el marco de la Agenda 2030 de la ONU, la eficiencia energética del software ha dejado de ser un lujo para convertirse en una necesidad crítica para reducir la huella de carbono global. Este artículo, titulado "The Green Side of the Lua", explora cómo las decisiones de arquitectura de software, es

Bun detecta error de referencia colgante en código unsafe

Este issue reporta un error de 'Undefined Behavior' (comportamiento indefinido) en el código de Bun, un runtime de JavaScript/TypeScript escrito en Rust. El error específico es un 'dangling reference' (referencia colgante), que ocurre cuando se intenta acceder a memoria que ya ha sido liberada. El p

Así es Flightsim, el simulador de vuelo hecho con Spectre

Flightsim es un proyecto de código abierto que implementa un simulador de vuelo básico en 3D. Se trata de una demostración práctica del lenguaje de programación Spectre, creada por el desarrollador navid-m, que permite experimentar con la física de vuelo de una manera sencilla y accesible. El proyec

R vs. Kap: análisis de datos, ¿cuál es mejor?

Este artículo compara la experiencia de trabajar con R y Kap, dos lenguajes de programación, especialmente en el contexto del análisis de datos. El punto de partida es un artículo que critica la 'torpeza' de Pandas, la biblioteca de análisis de datos de Python, al compararla con R. El autor, familia

Jubbly: Nuevo enfoque para asignar valores en programación

El proyecto 'Jubbly' explora una idea innovadora en diseño de lenguajes de programación, enfocada en simplificar y mejorar la forma en que se realizan las reasignaciones de valores, especialmente en estructuras de datos complejas. Tradicionalmente, en muchos lenguajes, asignar un nuevo valor a una v

CSS como código: ¿programación más allá del diseño?

Este artículo explora una idea inusual: usar CSS como un lenguaje de consulta o incluso como un lenguaje de programación general, más allá de su función principal de diseñar páginas web. La pregunta central es por qué alguien querría hacer esto, dado que CSS es notoriamente complejo y existen lengua

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

Byterun: Intérprete de Python en 500 líneas

Este artículo de Allison Kaptur, ingeniera de Dropbox, explora Byterun, un intérprete de Python escrito en Python. El objetivo principal es desmitificar el funcionamiento interno de un intérprete, demostrando que su estructura fundamental puede caber en un código relativamente corto (menos de 500 lí

Rust: Maximiza el potencial con menos esfuerzo

El autor ha estado buscando el lenguaje de programación perfecto durante años, frustrado por las limitaciones de opciones populares como F#, TypeScript y C#. Si bien Rust ofrece un gran potencial, su curva de aprendizaje y complejidad (relacionada con la gestión de memoria y el sistema de tipos) han

K: Eliminan 'raze' para optimizar código

Este artículo explora una optimización interesante en el lenguaje de programación K, específicamente relacionada con la eliminación de una técnica llamada 'raze'. K es un lenguaje de programación de matriz (array language) conocido por su concisión y expresividad. El problema que aborda el autor, Ch

aprende a usar ⍋⍋: la función inesperada de APL

Este artículo explora el significado y la utilidad de la función ⍋⍋ en el lenguaje de programación APL, un tema que inicialmente parecía carecer de sentido según Paul Mansour. Aunque inicialmente se considera inútil (equivalente a una versión más lenta de otra función), el artículo revela una aplica

Spath y Splan: Sumato AI optimiza la codificación con IA

El artículo de Sumato AI introduce Spath y Splan, dos nuevas herramientas diseñadas para mejorar la eficiencia y la calidad de los agentes de codificación basados en IA. Tradicionalmente, la programación ha estado intrínsecamente ligada al sistema de archivos, lo que implica una estructura jerárquic

memo: Programa con fluidez y experimenta

## memo: Un Entorno de Programación Fluido y Experimental memo es un entorno de programación inusual, descrito como un "entorno de codificación de flujo de conciencia". En esencia, se trata de un lenguaje de programación experimental que prioriza la continuidad y la espontaneidad sobre la estructur

Mejoran inferencia de tipos para errores más claros

El artículo presenta un nuevo algoritmo de inferencia de tipos llamado 'Quadratic Micropass Type Inference', diseñado para mejorar la claridad de los mensajes de error en lenguajes de programación con inferencia de tipos. La inferencia de tipos, una característica que permite al compilador deducir e

Python: El operador que sacudió al lenguaje

Este artículo narra la controvertida introducción del 'walrus operator' (:=) en Python 3.8, un evento que llevó a la renuncia de Guido van Rossum, el creador y líder de facto del lenguaje durante tres décadas. ¿Qué es y por qué es importante? El walrus operator es una nueva forma de asignar valore

Tipos y errores: un análisis de Map.take! en Elixir

Este artículo explora las limitaciones de los sistemas de tipos en lenguajes de programación dinámicos, utilizando como ejemplo la propuesta de una función `Map.take!/2` en Elixir. `Map.take/2` es una función existente en Elixir que extrae un subconjunto de claves de un mapa, ignorando las claves in

Go: el nuevo favorito para crear agentes de IA

El artículo argumenta que Go es el lenguaje de programación ideal para trabajar con agentes de IA, basándose en la experiencia del autor en el desarrollo de herramientas de ETL como Bruin. Aunque Python ha sido tradicionalmente popular en el ecosistema de datos, Go ofrece ventajas significativas en

Dada simplifica referencias: una alternativa a Rust

Este artículo del blog explora cómo Dada, un nuevo lenguaje de programación, aborda el manejo de referencias y permisos de una manera innovadora, superando las limitaciones de Rust. Dada introduce un sistema de permisos basado en 'lugares' (places) en lugar de 'tiempos de vida' (lifetimes), lo que s

¿Fin de la programación? La IA desafía el rol del programador

A lo largo de la historia de la informática, una promesa recurrente ha impulsado la innovación: la de simplificar la creación de software, reducir costos y, en última instancia, eliminar la necesidad de programadores. Este ciclo, que se repite desde la década de 1960, se manifiesta hoy con la irrupc

Rust: Una herramienta, no una solución mágica

Rust: Una herramienta útil pero no mágica El lenguaje de programación Rust, celebrado durante una década como el más admirado según las encuestas de Stack Overflow, no es la solución mágica que algunos defienden. Así lo aseguran dos voces del sector tecnológico que, desde perspectivas distintas, ad

Aprende Clojure: Plataforma práctica para desarrolladores

ClojureStream es una plataforma integral diseñada para el aprendizaje y la comunidad en torno a los lenguajes de programación Clojure, ClojureScript y Datalog. En un mundo donde la curva de aprendizaje de nuevas tecnologías puede ser empinada, ClojureStream se presenta como un recurso estructurado y

Programación: ¿La Sintaxis Define un Lenguaje?

Este artículo explora una peculiaridad en la comunidad de programación: la tendencia a juzgar y elegir lenguajes basándose en su sintaxis de declaración, a menudo sin considerar la semántica subyacente. El autor, un desarrollador de Odin, argumenta que la sintaxis es, en gran medida, superficial y f

Tipado: ¿Hindley-Milner o Bidireccional?

Este artículo aborda una pregunta común entre los desarrolladores de lenguajes de programación: ¿deberían usar un sistema de tipos Hindley-Milner (HM) o Bidireccional (Bidir)? La respuesta, según el autor, no es tan simple como elegir entre dos opciones mutuamente excluyentes. La verdadera pregunta

Swift y Kotlin: ¿Demasiada Estricción en la Programación?

El artículo del blog 'The Clean Code' explora una tendencia preocupante en el desarrollo de lenguajes de programación modernos, específicamente Swift y Kotlin. Ambos lenguajes, aunque con orígenes distintos (Swift derivado de Objective-C y Kotlin de Java), comparten una marcada inclinación hacia la

ga68: Reviven Algol 68 con Compilador para GCC

## FOSDEM 2026: Descubriendo ga68, el Compilador Algol 68 para GCC **¿Qué es Algol 68 y por qué deberíamos prestarle atención?** Algol 68 es un lenguaje de programación histórico, diseñado a mediados de la década de 1960 como sucesor de Algol 50. Aunque nunca alcanzó la popularidad de otros lengua