Por qué los argumentos de función no son colores de función

Este ensayo técnico distingue entre dos tipos de cambios que puede sufrir una función en una pila de llamadas. Un cambio "normal" —como añadir un parámetro— afecta solo al llamador directo y puede encapsularse mediante programación estructurada; en la práctica, la cadena de propagación suele rompers

Bespoke: un lenguaje de programación para quienes dicen «por favor»

Bespoke es un lenguaje de programación estáticamente tipado presentado con tono humorístico como «El Código de la Reina», en el que toda interacción con el compilador, la consola de salida y el entorno de ejecución debe formularse con fórmulas de cortesía británicas. Los archivos fuente usan la exte

Coherencia y reglas de instancias huérfanas en sistemas de tipos

Las typeclasses (Haskell) y los traits (Rust) son mecanismos de sobrecarga que permiten resolver una llamada a método en función de los tipos de sus argumentos. Esta resolución descansa sobre una propiedad esencial: la coherencia. Un sistema de tipos es coherente cuando, para cualquier restricción g

POP-2000: un dialecto de POP-2 como lengua franca para sistemas diminutos

Un programador presenta POP-2000 (también llamado POP2K), un dialecto estandarizado del lenguaje POP-2 diseñado en los años setenta y utilizado en los mismos círculos que las primeras versiones de Lisp. El proyecto surge de la colaboración con Devine Lu Linvega, creador de Uxn, y busca crear una len

Cuatro niveles para la inicialización en el lugar en Rust

La inicialización en el lugar (in-place initialization) permite construir tipos directamente en una posición de memoria, sin movimientos ni copias adicionales. Resulta especialmente útil con tipos grandes —donde puede evitar desbordamientos de pila— y resulta imprescindible para los tipos sensibles

Hacia una informática que no privilegie el inglés: el reto de Nasser

Ramsey Nasser, diseñador de juegos, artista y educador, sostiene que toda herramienta de programación moderna exige conocimientos de inglés, lo que perpetúa una ventaja cultural difícil de justificar. En su charla, presentada como respuesta al artículo seminal de Alan Kay de 1972 «A Personal Compute

Opiniones sobre construcción de compiladores en el siglo XXI

El ingeniero de software Paul Tarvydas, con más de 30 años de experiencia en consultoría, comparte un conjunto de opiniones personales sobre cómo abordar la creación de compiladores y lenguajes de programación en la actualidad. Tarvydas distingue entre diseñar un lenguaje y construir un compilador,

Historia y origen del tipo RangeFrom en Rust

Este artículo es la primera parte de una serie que reconstruye la historia y los antecedentes del tipo RangeFrom en Rust, un tipo que representa rangos sin límite superior, como n.. . Se explica qué es un rango en el lenguaje, qué variantes existen (RangeFull, RangeTo, RangeFrom, Range y sus version

Programación funcional desde cero: motivación y funciones matemáticas

Este artículo, primero de una serie titulada "Programación funcional desde los principios básicos", explica qué es la programación funcional y por qué importa. Presenta las cuatro grandes familias de paradigmas de programación (imperativo procedural, orientado a objetos, lógico y funcional) y enmarc

Implementación de Forth en Lisp mediante macros

Este capítulo de 'Let Over Lambda' culmina una serie de técnicas de macros Lisp aplicadas a la construcción de un intérprete del lenguaje Forth dentro de Lisp. El objetivo no es meramente didáctico: el autor busca mostrar cómo Forth puede replantearse cuando se dispone de la potencia expresiva de Li

Cláusulas de captura explícitas como efectos en Rust

El desarrollador Yoshua Wuyts analiza en un ensayo técnico la ergonomía de las clausuras de captura explícitas en Rust, una línea de diseño discutida en la RFC 3968 y propuesta por Niko Matsakis como alternativa a la función move($expr) pensada para ecosistemas con uso intensivo de clones, como Bevy

Dos casos de estudio sobre los efectos inesperados de NaN en Python y Lua

NaN, el valor especial que representa «no es un número», infringe una de las reglas más asumidas en programación: que todo objeto es igual a sí mismo. Esa peculiaridad, definida en el estándar IEEE-754, se cuela en el diseño de lenguajes que dan por buena esa misma regla y produce comportamientos di

La regla de Stroustrup: explícito para principiantes, conciso para expertos

La regla de Stroustrup, formulada por el creador de C++, sostiene que los principiantes necesitan sintaxis explícita y detallada, mientras que los expertos prefieren notación breve y tersa. El principio aparece en una retrospectiva sobre C++ del propio Bjarne Stroustrup: las características nuevas p

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

LuaJIT 3.0 abre el debate sobre sus extensiones sintácticas

Mike Pall, responsable de LuaJIT, ha abierto el issue #1475 en el repositorio oficial del proyecto como punto central para definir las extensiones de sintaxis que incluirá la futura versión 3.0 del compilador. El hilo funcionará como documento vivo: la descripción recoge la propuesta inicial y un co

¿Qué convierte a una operación en primitiva de BQN?

BQN, un lenguaje de la familia APL dedicado a la programación con matrices, traza una frontera clara entre las operaciones designadas con símbolos propios —las primitivas— y las escritas con palabras. La pregunta de qué merece un símbolo y qué no ocupa el centro del diseño del lenguaje. El autor, c

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

Han: Nuevo lenguaje de programación con claves en coreano

Un nuevo lenguaje de programación llamado 'Han' ha sido desarrollado y se distingue por utilizar palabras clave en coreano, aprovechando el sistema de escritura Hangul. Creado por Xodn y basado en Rust, Han busca ofrecer una experiencia de programación única, combinando la belleza del diseño lingüís

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