Magia oscura en la coincidencia de patrones de Python 3.10: Aprovechando `__subclasshook__`

2025-08-22

Este artículo explora las capacidades inesperadas que surgen de la combinación de la coincidencia de patrones de Python 3.10 y el método `__subclasshook__` de las Clases Base Abstractas (CBAs). Al utilizar hábilmente `__subclasshook__`, el autor demuestra 'secuestrar' la coincidencia de patrones, permitiendo la definición personalizada de qué tipos coinciden e incluso la coincidencia basada en atributos de objetos, no solo en tipos. Si bien muestra funcionalidades potentes, como la creación de coincidencias personalizadas, el autor advierte firmemente contra el uso de esta técnica en código de producción debido a su naturaleza impredecible y potencialmente perjudicial.

Leer más

La Influencia Sorprendentemente Profunda de los Lenguajes de Programación 'Muertos'

2025-07-16

Este artículo explora el impacto sorprendentemente significativo de lenguajes de programación históricamente influyentes que ya no se usan ampliamente, como COBOL, ALGOL, APL y BASIC. Al examinar sus antecedentes, contribuciones y razones de declive, el autor revela su influencia duradera en los lenguajes modernos. Ejemplos incluyen las estructuras de datos de registro de COBOL, el alcance léxico y la programación estructurada de ALGOL, y el procesamiento de matrices de APL. El artículo destaca la importancia de estudiar la historia de los lenguajes de programación y las contribuciones a menudo pasadas por alto de lenguajes que nunca alcanzaron popularidad generalizada.

Leer más

Orígenes mal entendidos de la OOP: Poniendo las cosas en claro

2025-05-10

Este artículo desmiente la idea errónea común de que Alan Kay inventó tanto la programación orientada a objetos (OOP) como el concepto de objetos. En realidad, el lenguaje Simula fue un precursor significativo de la OOP, un hecho reconocido por el equipo de Smalltalk. Si bien Kay acuñó el término "objetos", más tarde se arrepintió, enfatizando el paso de mensajes como la idea central de la OOP. El artículo explora aún más las contribuciones únicas de Smalltalk a la OOP, particularmente su principio de diseño de tratar todo como un objeto y su mecanismo innovador de manejo de mensajes. El autor argumenta que la evolución de la OOP no fue un evento singular, sino una confluencia de ideas y necesidades, con diferentes desarrolladores entendiendo y aplicando la OOP de diferentes maneras en varios contextos.

Leer más
Desarrollo

La curiosa historia de los comentarios de JavaScript: por qué funcionan `<!--` y `-->`

2025-03-12

Este artículo desentraña la curiosa historia detrás del uso de `` como caracteres de comentario en JavaScript. Inicialmente, para asegurar la compatibilidad con navegadores antiguos, los desarrolladores envolvían su código JavaScript en comentarios HTML dentro de etiquetas ``. Sorprendentemente, los navegadores modernos aún admiten esta sintaxis debido a problemas históricos de compatibilidad de navegadores y al compromiso del comité de estandarización de 'no romper la web'. El artículo explica cómo funciona esta sintaxis y por qué `-->` debe aparecer al principio de una línea.

Leer más
Desarrollo

Aplicando la Jerarquía de Controles a la Ingeniería de Software

2025-03-08

Un ingeniero mecánico le presentó al autor la Jerarquía de Controles (HoC), un concepto crucial en la seguridad del lugar de trabajo. El autor aplica HoC a la ingeniería de software, analizando un incidente de base de datos de producción causado por una consulta incorrecta hace diez años. El artículo explora la aplicación de la eliminación, la sustitución, los controles de ingeniería, los controles administrativos y el equipo de protección personal (EPP) para mitigar riesgos en el desarrollo de software. Se discuten las ventajas, desventajas y limitaciones de cada nivel; por ejemplo, las políticas de acceso demasiado estrictas pueden ralentizar la resolución de problemas. El autor enfatiza la necesidad de considerar de forma holística el impacto de los controles en la seguridad del sistema, evitando la introducción de nuevos riesgos.

Leer más
Desarrollo