<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Raúl González (rafex)</title>
    <description>The latest articles on DEV Community by Raúl González (rafex) (@rafex).</description>
    <link>https://dev.to/rafex</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3792431%2F081c96f3-b32d-46e9-bfd7-1ed950cc2773.jpg</url>
      <title>DEV Community: Raúl González (rafex)</title>
      <link>https://dev.to/rafex</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rafex"/>
    <language>en</language>
    <item>
      <title>Claude Code Leak: cuando el hype supera a la ingeniería</title>
      <dc:creator>Raúl González (rafex)</dc:creator>
      <pubDate>Wed, 01 Apr 2026 18:55:54 +0000</pubDate>
      <link>https://dev.to/rafex/claude-code-leak-cuando-el-hype-supera-a-la-ingenieria-4mo0</link>
      <guid>https://dev.to/rafex/claude-code-leak-cuando-el-hype-supera-a-la-ingenieria-4mo0</guid>
      <description>&lt;p&gt;El día de ayer circularon titulares alarmantes:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Se filtraron más de 500 000 líneas del código de Claude Code”.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Sin embargo, al analizar el incidente con calma, la realidad es mucho menos dramática.&lt;br&gt;
Lo que realmente se publicó por error fue un &lt;strong&gt;source map&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
Y el código funcional ya estaba &lt;strong&gt;disponible&lt;/strong&gt; en el paquete &lt;strong&gt;npm&lt;/strong&gt; del proyecto.&lt;/p&gt;


&lt;h2&gt;
  
  
  1️⃣ El punto de partida: el bundle JS ya estaba público
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/package/@anthropic-ai/claude-code" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/@anthropic-ai/claude-code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/anthropics/claude-code" rel="noopener noreferrer"&gt;https://github.com/anthropics/claude-code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Si el paquete npm ya incluía el &lt;strong&gt;bundle JS&lt;/strong&gt;, entonces:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;La lógica del programa ya estaba disponible.&lt;/li&gt;
&lt;li&gt;Cualquiera podía analizarlo con:

&lt;ul&gt;
&lt;li&gt;deobfuscadores&lt;/li&gt;
&lt;li&gt;herramientas AST&lt;/li&gt;
&lt;li&gt;agentes LLM&lt;/li&gt;
&lt;li&gt;ingeniería inversa clásica.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;En otras palabras:&lt;/p&gt;

&lt;p&gt;El bundle JS ya contiene la lógica ejecutable del programa.&lt;/p&gt;

&lt;p&gt;El &lt;strong&gt;.map no agrega lógica nueva&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Solo agrega:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;nombres originales&lt;/li&gt;
&lt;li&gt;estructura de archivos&lt;/li&gt;
&lt;li&gt;comentarios&lt;/li&gt;
&lt;li&gt;metadata de compilación.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Por lo tanto no revela funcionalidad que no estuviera ya ahí.&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  🧪 Ejemplo simple: cómo funciona un source map
&lt;/h2&gt;

&lt;p&gt;Para entender por qué el &lt;code&gt;.map&lt;/code&gt; no contiene lógica nueva, veamos un ejemplo mínimo.&lt;/p&gt;
&lt;h3&gt;
  
  
  Código original (TypeScript)
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Código compilado/minificado (JavaScript distribuido)
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;a&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Este es el código que normalmente termina dentro del &lt;strong&gt;bundle publicado en npm&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  Archivo source map (simplificado)
&lt;/h3&gt;

&lt;p&gt;Un &lt;code&gt;.map&lt;/code&gt; contiene información que permite relacionar el bundle con el código original:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"sources"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"src/math.ts"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"names"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"sum"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;"a"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;"b"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mappings"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"AAAA,SAASA,IAAIC,EAAGC..."&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ese archivo indica cosas como:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;qué archivo original generó ese código&lt;/li&gt;
&lt;li&gt;cómo se llamaban realmente las funciones&lt;/li&gt;
&lt;li&gt;qué variables corresponden a qué posiciones en el bundle&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Con esa información una herramienta puede hacer esto:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bundle.js + bundle.js.map
        ↓
reconstruir
        ↓
src/math.ts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pero observa algo importante:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;La lógica (&lt;code&gt;return a + b&lt;/code&gt;) ya estaba en el bundle.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;El source map solo permite reconstruir:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;nombres originales&lt;/li&gt;
&lt;li&gt;estructura de archivos&lt;/li&gt;
&lt;li&gt;posiciones de código&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No añade &lt;strong&gt;comportamiento nuevo&lt;/strong&gt; al programa.&lt;/p&gt;




&lt;h2&gt;
  
  
  2️⃣ Lo que realmente aporta el .map: información para humanos
&lt;/h2&gt;

&lt;p&gt;Esto es clave:&lt;/p&gt;

&lt;p&gt;&lt;u&gt;los nombres y comentarios son para humanos&lt;/u&gt;&lt;/p&gt;

&lt;p&gt;Un agente puede inferir cosas como:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;a&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;){...}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ inferir que probablemente es:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;executeAgentTask&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;task&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Hoy con análisis semántico eso es &lt;strong&gt;trivial&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Por eso muchos proyectos open-source publican directamente el JS compilado sin preocuparse demasiado.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  3️⃣ El bundle no “oculta” arquitectura
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;El bundle no elimina la arquitectura del programa; simplemente reduce su legibilidad.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Aunque esté minificado, aún puedes ver:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;imports&lt;/li&gt;
&lt;li&gt;llamadas a APIs&lt;/li&gt;
&lt;li&gt;flujo del programa&lt;/li&gt;
&lt;li&gt;dependencias&lt;/li&gt;
&lt;li&gt;estructura de módulos&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ejemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./agentLoop&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./tools/fileTool&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Eso ya te revela cómo funciona el &lt;strong&gt;runtime&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  4️⃣ Lo que sí cambia el .map &lt;strong&gt;(pero no dramáticamente)&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;El .map reduce el &lt;strong&gt;trabajo humano&lt;/strong&gt;.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Caso&lt;/th&gt;
&lt;th&gt;Esfuerzo&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;bundle minificado&lt;/td&gt;
&lt;td&gt;medio&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;bundle + LLM&lt;/td&gt;
&lt;td&gt;bajo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;bundle + map&lt;/td&gt;
&lt;td&gt;inmediato&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Pero no cambia la información disponible, solo la fricción para analizarla.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Bundle publicado en npm
        ↓
Código JavaScript ejecutable
        ↓
Puede analizarse con
- herramientas AST
- ingeniería inversa
- agentes LLM

Source map
        ↓
solo añade
- nombres originales
- estructura de archivos
- comentarios
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  5️⃣ El verdadero motivo del ruido mediático
&lt;/h2&gt;

&lt;p&gt;Las noticias &lt;strong&gt;exageran&lt;/strong&gt; por tres razones:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;del&gt;“512 000 líneas filtradas”&lt;/del&gt; suena dramático&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pero esas líneas ya estaban en el bundle.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;del&gt;“código interno de Anthropic”&lt;/del&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pero Claude Code no es el modelo ni la infraestructura.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;narrativa de &lt;del&gt;“AI company leak”&lt;/del&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Eso genera clics.&lt;/p&gt;




&lt;h2&gt;
  
  
  6️⃣ Qué sí sería un leak serio
&lt;/h2&gt;

&lt;p&gt;Algo realmente grave sería filtrar:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;pesos del modelo&lt;/li&gt;
&lt;li&gt;prompts internos del sistema&lt;/li&gt;
&lt;li&gt;pipelines de entrenamiento&lt;/li&gt;
&lt;li&gt;datasets&lt;/li&gt;
&lt;li&gt;infra de serving&lt;/li&gt;
&lt;li&gt;estrategias de RLHF&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Eso no ocurrió.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  7️⃣ En resumen
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;El “leak” de Claude Code &lt;strong&gt;no es un leak real&lt;/strong&gt;, sino un &lt;strong&gt;source map&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;El &lt;strong&gt;bundle JS&lt;/strong&gt; ya estaba público, por lo que la lógica del programa ya era accesible.&lt;/li&gt;
&lt;li&gt;El &lt;strong&gt;.map&lt;/strong&gt; solo facilita la lectura humana, pero no revela funcionalidad nueva.&lt;/li&gt;
&lt;li&gt;El &lt;strong&gt;impacto técnico real es limitado&lt;/strong&gt;, aunque el hype mediático ha sido grande.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;map file ≠ código nuevo&lt;/strong&gt;&lt;br&gt;
&lt;u&gt;map file = metadata para humanos&lt;/u&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;El código funcional ya estaba público en &lt;strong&gt;npm&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Por eso varios desarrolladores también han comentado que la noticia es más hype que incidente de seguridad real.&lt;/p&gt;




&lt;h3&gt;
  
  
  Este episodio deja una lección simple:
&lt;/h3&gt;

&lt;p&gt;Si publicas JavaScript en &lt;strong&gt;npm&lt;/strong&gt;, tu lógica ya es pública.&lt;/p&gt;

&lt;p&gt;Los &lt;em&gt;source maps&lt;/em&gt; solo hacen que el código sea más fácil de leer para humanos.&lt;/p&gt;

&lt;p&gt;La verdadera propiedad intelectual de las empresas de IA no está en el CLI que distribuyen,&lt;br&gt;
sino en:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;los modelos&lt;/li&gt;
&lt;li&gt;los datos&lt;/li&gt;
&lt;li&gt;la infraestructura&lt;/li&gt;
&lt;li&gt;los sistemas de entrenamiento&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;u&gt;Nada de eso fue filtrado en este caso.&lt;/u&gt;&lt;br&gt;
Lo único que ocurrió fue que un archivo de depuración llegó a producción.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Este caso también sirve como recordatorio para leer con espíritu crítico las noticias sobre “filtraciones” tecnológicas.&lt;br&gt;
Muchas veces el impacto técnico real es muy diferente al que sugieren los titulares.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ai</category>
      <category>javascript</category>
      <category>news</category>
      <category>security</category>
    </item>
    <item>
      <title>COBOL, IA y la democratización del conocimiento técnico</title>
      <dc:creator>Raúl González (rafex)</dc:creator>
      <pubDate>Tue, 17 Mar 2026 08:01:22 +0000</pubDate>
      <link>https://dev.to/rafex/cobol-ia-y-la-democratizacion-del-conocimiento-tecnico-3bd9</link>
      <guid>https://dev.to/rafex/cobol-ia-y-la-democratizacion-del-conocimiento-tecnico-3bd9</guid>
      <description>&lt;p&gt;Durante décadas, COBOL fue el corazón de muchos sistemas críticos del mundo: banca, seguros, aerolíneas y gobierno.&lt;/p&gt;

&lt;p&gt;No porque fuera el único lenguaje capaz de resolver esos problemas, sino porque estaba profundamente integrado con el ecosistema de &lt;strong&gt;mainframes&lt;/strong&gt;, donde gran parte del conocimiento técnico estaba concentrado en pocos lugares.&lt;/p&gt;

&lt;p&gt;Aprender COBOL en serio significaba, muchas veces:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;trabajar dentro de una gran organización,&lt;/li&gt;
&lt;li&gt;acceder a entornos mainframe,&lt;/li&gt;
&lt;li&gt;o aprender de consultores especializados.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;El conocimiento estaba ahí, pero &lt;strong&gt;no era fácilmente accesible&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Durante muchos años, ese modelo funcionó. La tecnología y el conocimiento estaban controlados por un ecosistema relativamente cerrado.&lt;/p&gt;

&lt;p&gt;Hoy el panorama es muy distinto. Con la aparición de &lt;strong&gt;herramientas abiertas, documentación pública y ahora inteligencia artificial&lt;/strong&gt;, entender sistemas heredados o incluso escribir código COBOL ya no requiere acceso a un mainframe corporativo.&lt;/p&gt;

&lt;p&gt;De hecho, hoy puedes programar COBOL desde tu laptop con Linux usando un compilador open source.&lt;/p&gt;

&lt;p&gt;Y ahí aparece una ironía interesante de la historia tecnológica:&lt;/p&gt;

&lt;p&gt;Muchos de los expertos que durante años formaron parte de un ecosistema donde el conocimiento era escaso y difícil de acceder, hoy participan activamente en &lt;strong&gt;difundir ese conocimiento en internet&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;El resultado es algo positivo: &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;una democratización del conocimiento técnico.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Y para demostrarlo, hagamos algo simple. Programar COBOL en Linux.&lt;/p&gt;




&lt;h2&gt;
  
  
  Programando COBOL hoy en Linux
&lt;/h2&gt;

&lt;p&gt;Existe un compilador open source llamado GnuCOBOL, disponible en la mayoría de distribuciones Linux.&lt;/p&gt;

&lt;p&gt;Este compilador traduce código COBOL a C y luego usa el compilador de C del sistema para generar el ejecutable. Es decir: &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;COBOL funcionando sobre un stack completamente open source. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Instalar el compilador
&lt;/h3&gt;

&lt;p&gt;En Debian o Ubuntu:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;gnucobol
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verificamos la instalación:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cobc &lt;span class="nt"&gt;-v&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Nuestro primer programa COBOL
&lt;/h3&gt;

&lt;p&gt;Creamos un archivo llamado:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;hola.cob
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Con el siguiente contenido:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;IDENTIFICATION DIVISION.
PROGRAM-ID. HOLA.

PROCEDURE DIVISION.
DISPLAY "Hola mundo desde COBOL en Linux".
STOP RUN.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;COBOL tiene una estructura muy clásica basada en divisiones:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;IDENTIFICATION DIVISION → metadatos del programa&lt;br&gt;
DATA DIVISION → definición de datos&lt;br&gt;
PROCEDURE DIVISION → lógica del programa&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;En este ejemplo solo usamos la parte más simple.&lt;/p&gt;




&lt;h3&gt;
  
  
  Compilar el programa
&lt;/h3&gt;

&lt;p&gt;Usamos el compilador:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cobc &lt;span class="nt"&gt;-x&lt;/span&gt; hola.cob
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esto generará un ejecutable llamado:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;hola
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ahora lo ejecutamos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./hola
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Resultado:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Hola mundo desde COBOL en Linux
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Lo interesante de todo esto
&lt;/h3&gt;

&lt;p&gt;Hace algunas décadas, compilar COBOL implicaba tener acceso a:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;un mainframe&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;licencias costosas&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;y conocimientos muy específicos del entorno&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hoy puedes hacerlo con:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Linux&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;software open source&lt;/li&gt;
&lt;li&gt;y documentación pública&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Esto refleja un cambio profundo en la industria tecnológica.&lt;/p&gt;

&lt;p&gt;El verdadero cambio no es solo la modernización de sistemas COBOL con IA.&lt;/p&gt;

&lt;p&gt;El cambio real es que &lt;strong&gt;el conocimiento que antes estaba concentrado ahora está disponible para cualquiera que quiera aprenderlo&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Y eso, probablemente, sea una de las transformaciones más importantes de nuestra industria.&lt;/p&gt;




&lt;h2&gt;
  
  
  Cómo la IA está ayudando a modernizar COBOL
&lt;/h2&gt;

&lt;p&gt;Aquí es donde entra el fenómeno actual.&lt;/p&gt;

&lt;p&gt;Durante muchos años, &lt;strong&gt;modernizar sistemas COBOL implicaba&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;    leer millones de líneas de código&lt;/li&gt;
&lt;li&gt;    entender dependencias&lt;/li&gt;
&lt;li&gt;    reescribir todo manualmente&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Un proceso extremadamente caro y lento.&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Hoy la IA está empezando a ayudar en tres áreas clave. &lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ai</category>
      <category>learning</category>
      <category>programming</category>
      <category>opensource</category>
    </item>
    <item>
      <title>¿Por qué deberíamos decir bibliotecas y no librerías en software?</title>
      <dc:creator>Raúl González (rafex)</dc:creator>
      <pubDate>Wed, 25 Feb 2026 19:03:57 +0000</pubDate>
      <link>https://dev.to/rafex/por-que-deberiamos-decir-bibliotecas-y-no-librerias-en-software-3k6b</link>
      <guid>https://dev.to/rafex/por-que-deberiamos-decir-bibliotecas-y-no-librerias-en-software-3k6b</guid>
      <description>&lt;p&gt;Uno de los errores más comunes que cometemos al hablar de programación en español es referirnos a las &lt;em&gt;software libraries&lt;/em&gt; como “librerías”. Aunque parezca una traducción directa e inocente, este término es, en realidad, un falso amigo. En este artículo te explico por qué deberíamos usar la palabra correcta: &lt;strong&gt;bibliotecas&lt;/strong&gt;.  &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqtribsomiecbupklvh5r.png" alt="Image cada que decimos libreria muere un gatito" width="800" height="800"&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  🧠 La trampa del falso amigo
&lt;/h2&gt;

&lt;p&gt;En inglés, &lt;em&gt;library&lt;/em&gt; hace referencia a una colección organizada de funciones, clases o recursos reutilizables. En español, la palabra más cercana por significado no es “librería” (que es una tienda de libros), sino &lt;strong&gt;biblioteca&lt;/strong&gt;. Ambas palabras comparten raíz etimológica (liber en latín, biblion en griego), pero tomaron caminos distintos.&lt;br&gt;&lt;br&gt;
Así que cuando decimos &lt;del&gt;“librería de software”&lt;/del&gt;, estamos usando una palabra que en español significa otra cosa completamente diferente. Es como si tradujéramos &lt;em&gt;actually&lt;/em&gt; como “actualmente” cuando realmente significa “en realidad”.  &lt;/p&gt;




&lt;h2&gt;
  
  
  📌 ¿Y por qué importa?
&lt;/h2&gt;

&lt;p&gt;Porque el lenguaje técnico también construye pensamiento. Usar correctamente “biblioteca” en lugar de “librería” no es solo una cuestión de purismo lingüístico: es una forma de comunicarnos con precisión y evitar malentendidos, especialmente cuando explicamos conceptos a personas que están aprendiendo.  &lt;/p&gt;

&lt;p&gt;Además, muchas traducciones oficiales y comunidades en español ya han adoptado este estándar. Por ejemplo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;En Python, hablamos de la &lt;strong&gt;biblioteca estándar&lt;/strong&gt;.
&lt;/li&gt;
&lt;li&gt;En Java, usamos el término &lt;strong&gt;bibliotecas externas&lt;/strong&gt;.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📚 Conceptos relacionados
&lt;/h2&gt;

&lt;p&gt;Aquí tienes algunos términos útiles para entender mejor este fenómeno lingüístico:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Falso amigo (False friend)&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Palabras que parecen similares en dos idiomas pero tienen significados diferentes. Por ejemplo: &lt;em&gt;library&lt;/em&gt; → &lt;strong&gt;biblioteca&lt;/strong&gt;, no &lt;em&gt;librería&lt;/em&gt;.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Traducción literal (Literal translation)&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Traducir palabra por palabra sin considerar el contexto real.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Calco lingüístico&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Adoptar literal y directamente una expresión extranjera, aunque no sea natural en el idioma destino.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Anglicismo&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Uso innecesario o incorrecto de una palabra en inglés cuando existe una opción correcta en español.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Malapropismo&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Error en el uso de una palabra confundiéndola con otra de sonido similar.  &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🤔 ¿Y si ya todo el mundo dice “librería”?
&lt;/h2&gt;

&lt;p&gt;Es verdad que el uso está bastante extendido. Pero eso no significa que sea correcto ni que no podamos mejorar nuestra precisión técnica. Muchos términos se han ido afinando con el tiempo, y este es uno que vale la pena corregir.  &lt;/p&gt;




&lt;h2&gt;
  
  
  🇫🇷 Bonus: ¿y en francés?
&lt;/h2&gt;

&lt;p&gt;Sí, es totalmente cierto: en francés, el término correcto para &lt;em&gt;software library&lt;/em&gt; también es &lt;strong&gt;bibliothèque&lt;/strong&gt;, no &lt;em&gt;librairie&lt;/em&gt;.  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Library (software)&lt;/strong&gt; → &lt;em&gt;bibliothèque logicielle&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Librairie&lt;/strong&gt; → tienda de libros
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;En la documentación oficial de Python en francés se habla de la “bibliothèque standard de Python”.&lt;br&gt;&lt;br&gt;
&lt;a href="https://theworldofrafex.blog/2025/05/06/por-que-deberiamos-decir-bibliotecas-y-no-librerias-en-software/" rel="noopener noreferrer"&gt;The World of Rafex's&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;¿Te gustó este artículo? ¡Comparte y ayúdame a promover un uso más preciso del lenguaje técnico! 💬&lt;/p&gt;

</description>
      <category>spanish</category>
      <category>software</category>
    </item>
  </channel>
</rss>
