<script data-pm-proxy="intercept"></script><?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Érase una vez un algoritmo... ]]></title><description><![CDATA[Un lugar de reflexiones sobre computación desde un punto de vista científico, técnico y filosófico.]]></description><link>https://camilocs.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!agOV!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a2d40fe-b5a6-44a2-8dea-24beb6a802b1_831x831.png</url><title>Érase una vez un algoritmo... </title><link>https://camilocs.substack.com</link></image><generator>Substack</generator><lastBuildDate>Wed, 02 Sep 2026 23:49:31 GMT</lastBuildDate><atom:link href="/__u/camilocs.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Camilo Chacón Sartori]]></copyright><language><![CDATA[es]]></language><webMaster><![CDATA[camilocs@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[camilocs@substack.com]]></itunes:email><itunes:name><![CDATA[Camilo Chacón Sartori]]></itunes:name></itunes:owner><itunes:author><![CDATA[Camilo Chacón Sartori]]></itunes:author><googleplay:owner><![CDATA[camilocs@substack.com]]></googleplay:owner><googleplay:email><![CDATA[camilocs@substack.com]]></googleplay:email><googleplay:author><![CDATA[Camilo Chacón Sartori]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Nuevo libro: CriterIA. Piense antes de pedirle a la IA]]></title><description><![CDATA[Este es un librito diferente a los que he escrito.]]></description><link>https://camilocs.substack.com/p/nuevo-libro-criteria-piense-antes</link><guid isPermaLink="false">https://camilocs.substack.com/p/nuevo-libro-criteria-piense-antes</guid><dc:creator><![CDATA[Camilo Chacón Sartori]]></dc:creator><pubDate>Sun, 09 Aug 2026 19:02:25 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!cNKb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc055115e-d10d-4cec-8ede-f28e26c5d958_415x607.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Este es un librito diferente a los que he escrito. Primero, por su tama&#241;o: un poco m&#225;s de 100 p&#225;ginas. Segundo, porque no tuve que investigar nada para escribirlo, cosa que tiene su lado bueno y su lado malo; esto lo explicar&#233; m&#225;s abajo. Y, tercero, lo decisivo: es el primer libro que escribo para un p&#250;blico amplio.</p><p>El tema del libro es c&#243;mo usar la IA generativa con criterio. Parece evidente, pero no lo es. Hay libros que te ense&#241;an a escribir <em>prompts</em>, otros a usar la herramienta de moda (ChatGPT o Claude). Pero &#191;acaso no hay principios de uso subyacentes a toda herramienta de IA generativa? Los que me han le&#237;do sabr&#225;n, con raz&#243;n, que esa pregunta siempre ronda todos mis libros: conceptos sobre herramientas, aunque sin caer en la pura teor&#237;a. Si las ideas no compilan de alguna forma, no me interesa.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://camilocs.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscribirse&quot;,&quot;language&quot;:&quot;es&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">&#161;Gracias por leer &#201;rase una vez un algoritmo... ! Suscr&#237;bete gratis para recibir nuevos posts y apoyar mi trabajo.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Escribe tu correo electr&#243;nico..." tabindex="-1"><input type="submit" class="button primary" value="Suscribirse"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>As&#237; pues, este librito, corto y conciso, busca ense&#241;ar algo m&#225;s simple: c&#243;mo pensar antes de preguntarle a la IA; quiz&#225;, m&#225;s preciso: c&#243;mo dialogar con la IA para que usted la use y no ella a usted.</p><p>Volviendo al segundo punto. Mis libros anteriores part&#237;an de la idea de proyectos de investigaci&#243;n. Para m&#237; escribir es aprender, investigar y, en el camino, ir escribiendo, siempre escribiendo. El caso m&#225;s evidente fue cuando me puse a investigar sobre c&#243;mo se origin&#243; la escritura humana para poder escribir mi libro <em><a href="https://www.marcombo.com/libro/libros-tecnicos-de-arte-y-cientificos/informatica-libros-tecnicos-y-cientificos/inteligencia-artificial/palabras-y-algoritmos/">Palabras y Algoritmos. C&#243;mo la IA transformar&#225; la escritura</a></em> (2025); sin esa investigaci&#243;n, ese libro no hubiese existido. Este libro, en cambio, es diferente. Al hacerlo m&#225;s amplio en cuanto al p&#250;blico, el tema es m&#225;s general y exige un lenguaje simple y directo; la prosa &#8212;o sea, la forma&#8212; pasa a un segundo plano. Y mi deber fue plasmar lo que hago en mi investigaci&#243;n cient&#237;fica en un lenguaje llano, cercano y amigable, sin engordarlo de referencias y notas a pie de p&#225;gina. Es decir, que usted lo pueda leer en una tarde, camino a la playa o en el metro; que saque ideas sin exigencia.</p><p>Fue un experimento divertid&#237;simo. Que a&#250;n no termina, ya que este a&#241;o saldr&#225;n otros tres libritos sobre temas similares.</p><p>&#161;Nos vemos!<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p><div><hr></div><p>Lo pueden conseguir tanto en <a href="https://www.amazon.es/CriterIA-Piense-antes-pedirle-INFORMATICA/dp/8426742483">Amazon.es</a> como en <a href="https://www.marcombo.com/libro/libros-tecnicos-de-arte-y-cientificos/informatica-libros-tecnicos-y-cientificos/programacion-e-inteligencia-artificial-informatica/criteria/">Marcombo</a>:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!cNKb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc055115e-d10d-4cec-8ede-f28e26c5d958_415x607.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!cNKb!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc055115e-d10d-4cec-8ede-f28e26c5d958_415x607.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!cNKb!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc055115e-d10d-4cec-8ede-f28e26c5d958_415x607.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!cNKb!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc055115e-d10d-4cec-8ede-f28e26c5d958_415x607.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!cNKb!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc055115e-d10d-4cec-8ede-f28e26c5d958_415x607.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!cNKb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc055115e-d10d-4cec-8ede-f28e26c5d958_415x607.jpeg" width="415" height="607" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c055115e-d10d-4cec-8ede-f28e26c5d958_415x607.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:607,&quot;width&quot;:415,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;CriterIA&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="CriterIA" title="CriterIA" srcset="/__u/substackcdn.com/image/fetch/$s_!cNKb!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc055115e-d10d-4cec-8ede-f28e26c5d958_415x607.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!cNKb!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc055115e-d10d-4cec-8ede-f28e26c5d958_415x607.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!cNKb!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc055115e-d10d-4cec-8ede-f28e26c5d958_415x607.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!cNKb!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc055115e-d10d-4cec-8ede-f28e26c5d958_415x607.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Mi ausencia por este medio no se ha debido a la escritura de este libro, sino a la locura por escribir papers (art&#237;culos cient&#237;ficos). Si tiene curiosidad sobre ello, lo invito a mi perfil de <a href="https://scholar.google.com/citations?view_op=list_works&amp;hl=en&amp;hl=en&amp;user=oEYuOoIAAAAJ&amp;sortby=pubdate">Google Scholar</a>.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://camilocs.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscr&#237;bete ahora&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/camilocs.substack.com/subscribe"><span>Suscr&#237;bete ahora</span></a></p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[Cuando la divulgación debe esperar]]></title><description><![CDATA[Tanto aqu&#237; como en el p&#243;dcast, mi productividad ha bajado.]]></description><link>https://camilocs.substack.com/p/cuando-la-divulgacion-debe-esperar</link><guid isPermaLink="false">https://camilocs.substack.com/p/cuando-la-divulgacion-debe-esperar</guid><dc:creator><![CDATA[Camilo Chacón Sartori]]></dc:creator><pubDate>Sun, 14 Sep 2025 16:41:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Xu2A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5e6237b-0b3e-4f29-a6a5-0d30790562a2_3264x2448.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Tanto aqu&#237; como en el p&#243;dcast, mi productividad ha bajado. Antes sol&#237;a subir entrevistas y alguna que otra reflexi&#243;n cada mes, y en mi mejor &#233;poca incluso cada d&#237;a. Ya no. En general, ha sido porque la IA generativa me ha parecido interesant&#237;sima y he querido vivirla en la esquina m&#225;s pr&#243;xima a su gestaci&#243;n: la investigaci&#243;n. As&#237;, esta ausencia productiva-divulgativa coincide con el a&#241;o m&#225;s productivo de mi vida: hasta ahora llevo cuatro art&#237;culos cient&#237;ficos y una aplicaci&#243;n web para investigadores,<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> un n&#250;mero que crecer&#225; antes de finalizar el a&#241;o.</p><p>En mi faceta de investigador, he estado trabajando en incorporar los LLM a mi &#225;rea: dise&#241;o e implementaci&#243;n de metaheur&#237;sticas para problemas de optimizaci&#243;n. Hemos tenido buenos resultados, y al mismo tiempo mantengo un pie en la industria, asesorando a empresas de miner&#237;a chilenas para incorporar IA en sus productos.</p><p>Pero hay m&#225;s: hoy he iniciado la aventura de escribir mi primer libro de investigaci&#243;n en ingl&#233;s, para Springer, en coautor&#237;a con mi director de tesis y una gran investigadora, sobre <em>Search Trajectory Networks</em>, mi segunda l&#237;nea de investigaci&#243;n doctoral.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> Ah, mi tesis doctoral: ma&#241;ana la deposito y deber&#237;a defenderla pronto. Son 279 p&#225;ginas.</p><p>Mi vida est&#225; sufriendo muchos cambios. Dejar&#233; las penurias de sobrevivir con una beca doctoral para pasar a una nueva etapa, mejor, acaso. Me ofrecieron un postdoc en Barcelona y las asesor&#237;as se afianzan, mientras sigo dando clases y charlas, aunque con menos frecuencia que antes. Todo esto refleja lo que sospecho que ustedes ya intuyen: me gusta estar en varios frentes: la ciencia, la filosof&#237;a,<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> la ingenier&#237;a y la ense&#241;anza. Con un hilo en com&#250;n: la inform&#225;tica.</p><p>Sin embargo, deb&#237;a pausar la divulgaci&#243;n, porque la mejor forma de divulgar es primero estar en el &#171;campo de batalla&#187; y despu&#233;s retirarse a compartir. Todo el conocimiento y la experiencia que estoy adquiriendo, tanto en la academia como en la industria, se transformar&#225;n en nuevos episodios de p&#243;dcast, nuevas entradas en este blog y, por supuesto, en nuevos libros en espa&#241;ol.</p><p>&#191;Me esperar&#225;n?</p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!Xu2A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5e6237b-0b3e-4f29-a6a5-0d30790562a2_3264x2448.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!Xu2A!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5e6237b-0b3e-4f29-a6a5-0d30790562a2_3264x2448.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!Xu2A!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5e6237b-0b3e-4f29-a6a5-0d30790562a2_3264x2448.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!Xu2A!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5e6237b-0b3e-4f29-a6a5-0d30790562a2_3264x2448.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!Xu2A!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5e6237b-0b3e-4f29-a6a5-0d30790562a2_3264x2448.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!Xu2A!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5e6237b-0b3e-4f29-a6a5-0d30790562a2_3264x2448.jpeg" width="591" height="443.25" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d5e6237b-0b3e-4f29-a6a5-0d30790562a2_3264x2448.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:591,&quot;bytes&quot;:998997,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://camilocs.substack.com/i/173585409?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5e6237b-0b3e-4f29-a6a5-0d30790562a2_3264x2448.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!Xu2A!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5e6237b-0b3e-4f29-a6a5-0d30790562a2_3264x2448.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!Xu2A!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5e6237b-0b3e-4f29-a6a5-0d30790562a2_3264x2448.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!Xu2A!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5e6237b-0b3e-4f29-a6a5-0d30790562a2_3264x2448.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!Xu2A!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5e6237b-0b3e-4f29-a6a5-0d30790562a2_3264x2448.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://camilocs.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscr&#237;bete ahora&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/camilocs.substack.com/subscribe"><span>Suscr&#237;bete ahora</span></a></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p><a href="https://www.stn-analytics.com/">https://www.stn-analytics.com/</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>Una herramienta visual que permite entender/interpretar el comportamiento de algoritmos estoc&#225;sticos en el tiempo. &#201;sta permite a los investigadores enriquecer y justificar el dise&#241;o de este tipo de algoritmos (mi primera l&#237;nea de investigaci&#243;n).</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>Este a&#241;o escrib&#237; mi <a href="https://papers.ssrn.com/abstract=5265751">primer art&#237;culo</a> acad&#233;mico de filosofia. Ahora se encuentra bajo revisi&#243;n en una revista.</p></div></div>]]></content:encoded></item><item><title><![CDATA[Arquitecturas del error]]></title><description><![CDATA[El error como naturaleza del software]]></description><link>https://camilocs.substack.com/p/arquitecturas-de-error</link><guid isPermaLink="false">https://camilocs.substack.com/p/arquitecturas-de-error</guid><dc:creator><![CDATA[Camilo Chacón Sartori]]></dc:creator><pubDate>Fri, 13 Jun 2025 20:12:31 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1621646912321-c97a233701d2?fm=jpg&amp;q=60&amp;w=3000&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>&#191;Qu&#233; compartimos todos los programadores, tanto novatos como expertos? Est&#225; claro que no el lenguaje de programaci&#243;n: algunos aman los de bajo nivel, mientras otros se divierten escribiendo en Python. Tampoco es la capacidad resolutiva para afrontar un problema, pues esta var&#237;a seg&#250;n la experiencia y, a su vez, del talento propio. &#191;Ser&#225; acaso el ego? Aunque extendido en todos los niveles &#8212;basta dar una vuelta por LinkedIn&#8212; no necesariamente es algo compartido por todos. &#191;La pasi&#243;n por escribir c&#243;digo? Ojal&#225;, pero me temo que hay suficientes ejemplos de personas que no aman programar y est&#225;n ah&#237; porque no hallaron otra alternativa. No es, por tanto, una pregunta f&#225;cil de responder&#8230;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1621646912321-c97a233701d2?fm=jpg&amp;q=60&amp;w=3000&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1621646912321-c97a233701d2?fm=jpg&amp;q=60&amp;w=3000&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D 424w, https://images.unsplash.com/photo-1621646912321-c97a233701d2?fm=jpg&amp;q=60&amp;w=3000&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D 848w, https://images.unsplash.com/photo-1621646912321-c97a233701d2?fm=jpg&amp;q=60&amp;w=3000&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D 1272w, https://images.unsplash.com/photo-1621646912321-c97a233701d2?fm=jpg&amp;q=60&amp;w=3000&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1621646912321-c97a233701d2?fm=jpg&amp;q=60&amp;w=3000&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" width="390" height="544.83" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1621646912321-c97a233701d2?fm=jpg&amp;q=60&amp;w=3000&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:4191,&quot;width&quot;:3000,&quot;resizeWidth&quot;:390,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;texto&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="texto" title="texto" srcset="https://images.unsplash.com/photo-1621646912321-c97a233701d2?fm=jpg&amp;q=60&amp;w=3000&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D 424w, https://images.unsplash.com/photo-1621646912321-c97a233701d2?fm=jpg&amp;q=60&amp;w=3000&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D 848w, https://images.unsplash.com/photo-1621646912321-c97a233701d2?fm=jpg&amp;q=60&amp;w=3000&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D 1272w, https://images.unsplash.com/photo-1621646912321-c97a233701d2?fm=jpg&amp;q=60&amp;w=3000&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>William Faulkner, el famoso escritor estadounidense, escribi&#243;: &#171;Nunca pierdas el tiempo lamentando errores. Basta con que no los olvides&#187;. Un destino com&#250;n entre todos los programadores es la vivencia de los errores. Errores de c&#243;digo. Todos han cometido errores en su carrera. Unos m&#225;s evidentes, obvios, absurdos, simplones; y otros, m&#225;s sofisticados e inveros&#237;miles, que llevaron horas y horas de depuraci&#243;n hasta encontrar su causa. Los errores son instructivos pero no iguales. Lo que cambia es la forma de percibirlos, de vivirlos, de incluso corregirlos. Una vivencia subjetiva. De ah&#237; nace una diferencia que radica en la experiencia y personalidad del programador.</p><p>Un error emerge de una arquitectura. S&#237;, una arquitectura. Una estructura que impone l&#237;mites: podemos moldearla, pero no reestructurarla por completo. Los humanos tenemos una arquitectura cognitiva basada en procesos mentales y sistemas de mecanismos &#8212;producto de la evoluci&#243;n&#8212; que nos permite generar c&#243;digo, pero no exento de errores. Un error de tipeo, una confusi&#243;n al entender el requerimiento de un cliente, la elecci&#243;n equivocada de una tecnolog&#237;a, o c&#243;digo que funciona (verificaci&#243;n) pero que no cumple lo requerido (validaci&#243;n). Todo ello puede deberse al cansancio, a sesgos cognitivos, a limitaciones de nuestra memoria de trabajo. Somos tan falibles como el software.</p><p>Puesto frente a nosotros, cara a cara, la IA generativa tambi&#233;n genera c&#243;digo. Y si genera c&#243;digo, tambi&#233;n genera errores. Al igual que los humanos, la IA generativa cuenta con una <em>Arquitectura de Error </em>&#8212;no biol&#243;gica ni cognitiva sino artificial&#8212; que se basa en capacidades estoc&#225;sticas y en patrones estad&#237;sticos. Sus errores suelen ser sem&#225;nticos, producto de la ausencia de contexto y del peso y calidad de su conjunto de entrenamiento.</p><p>Lo que hace verdaderamente experto a un programador es la capacidad de conocer su propia <em>Arquitectura de Error</em>: sus propios l&#237;mites. No sus aciertos ni la cantidad de proyectos exitosos que haya conseguido. Esos l&#237;mites son los que marcan las decisiones de dise&#241;o e implementaci&#243;n. Y, a su vez, conocer otras <em>Arquitectura de Error </em>&#8212;como la de la IA generativa&#8212;, sus similitudes y diferencias en cuanto a errores, es esencial para construir ese nuevo territorio compartido: software h&#237;brido, tejido por errores humanos y errores artificiales.</p><p><em>Quiz&#225;, hoy, convenga m&#225;s aprender del origen de nuestros errores que de sus soluciones.</em></p><div><hr></div><p>Si te interesa este tema, te invito a leer mi art&#237;culo en ingl&#233;s: </p><p><a href="https://papers.ssrn.com/sol3/papers.cfm?abstract_id=5265751">Architectures of Error: A Philosophical Inquiry into AI-Generated and Human-Generated Code</a></p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://camilocs.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscr&#237;bete ahora&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/camilocs.substack.com/subscribe"><span>Suscr&#237;bete ahora</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Entrevista a Jeffrey Ullman (ACM Turing Award)]]></title><description><![CDATA[Pionero en los fundamentos de los compiladores y los lenguajes de programaci&#243;n.]]></description><link>https://camilocs.substack.com/p/entrevista-a-jeffrey-ullman-acm-turing</link><guid isPermaLink="false">https://camilocs.substack.com/p/entrevista-a-jeffrey-ullman-acm-turing</guid><dc:creator><![CDATA[Camilo Chacón Sartori]]></dc:creator><pubDate>Sun, 04 May 2025 02:06:17 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ujkt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6a37a11-6ee5-4c83-8735-dd6a91d3b099_900x1200.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>Esta entrevista fue originalmente realizada en ingl&#233;s por email. Por tanto, primero se ofrece una traducci&#243;n al espa&#241;ol, y al final, se encuentra la versi&#243;n original.</p><p><em>This interview was originally conducted in English by email. The Spanish translation is provided first, followed by the original version.</em></p></blockquote><p><a href="https://es.wikipedia.org/wiki/Jeffrey_Ullman">Jeffrey Ullman</a> gan&#243;, junto a Alfred Aho, el <a href="https://awards.acm.org/about/2020-turing">Premio Turing de la ACM en 2020</a> por sus aportes fundamentales a los compiladores y a la teor&#237;a de los lenguajes de programaci&#243;n.</p><p>Autor de multiples libros que, con el paso de los a&#241;os, se han consolidados como cl&#225;sicos de la ciencias de la computaci&#243;n. El &#171;libro del drag&#243;n&#187;, como se conoce a <em>Compilers: Principles, Techniques and Tools</em> (1985), hoy, m&#225;s de tres d&#233;cadas de su publicaci&#243;n, se considera la &#171;biblia&#187; de los compiladores y ha marcado a una generaci&#243;n de entusiastas de la computaci&#243;n. Tambi&#233;n es autor de libros sobre bases de datos, teor&#237;a de la computaci&#243;n, mineria de datos y de algoritmos y estructuras de datos.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p><p>Y, como se puede ver en esta entrevista, nada relacionado con la computaci&#243;n le es ajeno. Conversamos sobre el origen de la ic&#243;nica portada del &#171;libro del drag&#243;n&#187; &#8212;donde aparece un guerrero enfrentando a un drag&#243;n&#8212;, sobre sus reflexiones en torno a la Inteligencia Artificial Generativa, e incluso sobre qu&#233; estrategias recomienda para hacer investigaci&#243;n. Deja, adem&#225;s, consejos que merecen ser recordados.</p><p>Le estoy profundamente agradecido a Jeffrey por su generosidad a la hora de responder a mis preguntas.</p><p>&#161;Espero la disfruten!<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!ujkt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6a37a11-6ee5-4c83-8735-dd6a91d3b099_900x1200.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!ujkt!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6a37a11-6ee5-4c83-8735-dd6a91d3b099_900x1200.webp 424w, /__u/substackcdn.com/image/fetch/$s_!ujkt!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6a37a11-6ee5-4c83-8735-dd6a91d3b099_900x1200.webp 848w, /__u/substackcdn.com/image/fetch/$s_!ujkt!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6a37a11-6ee5-4c83-8735-dd6a91d3b099_900x1200.webp 1272w, /__u/substackcdn.com/image/fetch/$s_!ujkt!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6a37a11-6ee5-4c83-8735-dd6a91d3b099_900x1200.webp 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!ujkt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6a37a11-6ee5-4c83-8735-dd6a91d3b099_900x1200.webp" width="426" height="568" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d6a37a11-6ee5-4c83-8735-dd6a91d3b099_900x1200.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1200,&quot;width&quot;:900,&quot;resizeWidth&quot;:426,&quot;bytes&quot;:882574,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://camilocs.substack.com/i/162790014?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6a37a11-6ee5-4c83-8735-dd6a91d3b099_900x1200.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!ujkt!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6a37a11-6ee5-4c83-8735-dd6a91d3b099_900x1200.webp 424w, /__u/substackcdn.com/image/fetch/$s_!ujkt!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6a37a11-6ee5-4c83-8735-dd6a91d3b099_900x1200.webp 848w, /__u/substackcdn.com/image/fetch/$s_!ujkt!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6a37a11-6ee5-4c83-8735-dd6a91d3b099_900x1200.webp 1272w, /__u/substackcdn.com/image/fetch/$s_!ujkt!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6a37a11-6ee5-4c83-8735-dd6a91d3b099_900x1200.webp 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Imagen extra&#237;da de https://www.nae.edu/27919/Professor-Jeffrey-D-Ullman</figcaption></figure></div><div><hr></div><h2><strong>Versi&#243;n traducida</strong></h2><blockquote><p><strong>(1) Me gustar&#237;a empezar con una curiosidad. Cuando<a href="/__u/camilocs.substack.com/p/entrevista-a-alfred-aho-acm-turing"> entrevist&#233; a Alfred Aho</a>, no pude evitar preguntarle c&#243;mo surgi&#243; la idea del drag&#243;n de la portada de &#171;Principles of Compiler Design&#187;, y me respondi&#243;: &#171;La idea del drag&#243;n de la portada de nuestro libro de 1977, 'Principles of Compiler Design', se debe a Jeff Ullman. La portada es una alegor&#237;a basada en 'Don Quijote', la novela &#233;pica de Miguel de Cervantes publicada en 1605&#187;. As&#237; que me gustar&#237;a preguntarle a usted c&#243;mo se le ocurri&#243; la conexi&#243;n con Don Quijote, ya que resuena profundamente entre los lectores de habla hispana.</strong></p></blockquote><p>A decir verdad, no estaba seguro de que la teor&#237;a que promov&#237;amos en el Libro del Drag&#243;n (<em>Dragon Book</em>) fuera realmente a ser eficaz. As&#237; que en la portada puse un dibujo que suger&#237;a que los m&#233;todos que promov&#237;amos, como el an&#225;lisis sint&#225;ctico LR(k) o la traducci&#243;n dirigida por sintaxis, eran realmente eficaces para &#171;matar al drag&#243;n&#187;, que era el objetivo de facilitar la escritura de compiladores. Pero luego, para reconocer mi preocupaci&#243;n de que la teor&#237;a en realidad no iba a ser tan eficaz, suger&#237; que en realidad solo est&#225;bamos &#171;luchando contra molinos de viento&#187;, como dice la expresi&#243;n (sin duda derivada del libro de Don Quijote). Ir&#243;nicamente, las herramientas espec&#237;ficas que mencionamos s&#237; resultaron ser muy eficaces, aunque otras partes de un compilador nunca se doblegaron realmente a la teor&#237;a en gran medida.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!oxH1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89763c46-7aa5-4d22-9cb5-1a71f5122b4c_265x375.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!oxH1!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89763c46-7aa5-4d22-9cb5-1a71f5122b4c_265x375.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!oxH1!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89763c46-7aa5-4d22-9cb5-1a71f5122b4c_265x375.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!oxH1!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89763c46-7aa5-4d22-9cb5-1a71f5122b4c_265x375.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!oxH1!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89763c46-7aa5-4d22-9cb5-1a71f5122b4c_265x375.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!oxH1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89763c46-7aa5-4d22-9cb5-1a71f5122b4c_265x375.jpeg" width="265" height="375" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/89763c46-7aa5-4d22-9cb5-1a71f5122b4c_265x375.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:375,&quot;width&quot;:265,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!oxH1!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89763c46-7aa5-4d22-9cb5-1a71f5122b4c_265x375.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!oxH1!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89763c46-7aa5-4d22-9cb5-1a71f5122b4c_265x375.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!oxH1!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89763c46-7aa5-4d22-9cb5-1a71f5122b4c_265x375.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!oxH1!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89763c46-7aa5-4d22-9cb5-1a71f5122b4c_265x375.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!OGbr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e5b68fc-430a-4266-b1db-b30a7dd90576_772x1000.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!OGbr!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e5b68fc-430a-4266-b1db-b30a7dd90576_772x1000.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!OGbr!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e5b68fc-430a-4266-b1db-b30a7dd90576_772x1000.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!OGbr!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e5b68fc-430a-4266-b1db-b30a7dd90576_772x1000.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!OGbr!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e5b68fc-430a-4266-b1db-b30a7dd90576_772x1000.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!OGbr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e5b68fc-430a-4266-b1db-b30a7dd90576_772x1000.jpeg" width="255" height="330.31088082901556" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4e5b68fc-430a-4266-b1db-b30a7dd90576_772x1000.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1000,&quot;width&quot;:772,&quot;resizeWidth&quot;:255,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Compilers: Principles, Techniques, and Tools by Aho, Alfred V., Sethi,  Ravi, Ullman, Jeffrey D. (1986) Hardcover : Aho, Alfred V., Sethi, Ravi,  Ullman, Jeffrey D.: Amazon.es: Libros&quot;,&quot;title&quot;:&quot;Compilers: Principles, Techniques, and Tools by Aho, Alfred V., Sethi,  Ravi, Ullman, Jeffrey D. (1986) Hardcover : Aho, Alfred V., Sethi, Ravi,  Ullman, Jeffrey D.: Amazon.es: Libros&quot;,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Compilers: Principles, Techniques, and Tools by Aho, Alfred V., Sethi,  Ravi, Ullman, Jeffrey D. (1986) Hardcover : Aho, Alfred V., Sethi, Ravi,  Ullman, Jeffrey D.: Amazon.es: Libros" title="Compilers: Principles, Techniques, and Tools by Aho, Alfred V., Sethi,  Ravi, Ullman, Jeffrey D. (1986) Hardcover : Aho, Alfred V., Sethi, Ravi,  Ullman, Jeffrey D.: Amazon.es: Libros" srcset="/__u/substackcdn.com/image/fetch/$s_!OGbr!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e5b68fc-430a-4266-b1db-b30a7dd90576_772x1000.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!OGbr!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e5b68fc-430a-4266-b1db-b30a7dd90576_772x1000.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!OGbr!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e5b68fc-430a-4266-b1db-b30a7dd90576_772x1000.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!OGbr!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e5b68fc-430a-4266-b1db-b30a7dd90576_772x1000.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!R9ec!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fa19642-4f2b-475a-855f-4a38918a4fe5_330x500.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!R9ec!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fa19642-4f2b-475a-855f-4a38918a4fe5_330x500.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!R9ec!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fa19642-4f2b-475a-855f-4a38918a4fe5_330x500.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!R9ec!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fa19642-4f2b-475a-855f-4a38918a4fe5_330x500.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!R9ec!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fa19642-4f2b-475a-855f-4a38918a4fe5_330x500.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!R9ec!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fa19642-4f2b-475a-855f-4a38918a4fe5_330x500.jpeg" width="252" height="381.8181818181818" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3fa19642-4f2b-475a-855f-4a38918a4fe5_330x500.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:330,&quot;resizeWidth&quot;:252,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Compilers: Principles, Techniques, and Tools - Aho, Alfred; Ullman,  Jeffrey; Sethi, Ravi; Lam, Monica: 9780321486813 - AbeBooks&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Compilers: Principles, Techniques, and Tools - Aho, Alfred; Ullman,  Jeffrey; Sethi, Ravi; Lam, Monica: 9780321486813 - AbeBooks" title="Compilers: Principles, Techniques, and Tools - Aho, Alfred; Ullman,  Jeffrey; Sethi, Ravi; Lam, Monica: 9780321486813 - AbeBooks" srcset="/__u/substackcdn.com/image/fetch/$s_!R9ec!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fa19642-4f2b-475a-855f-4a38918a4fe5_330x500.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!R9ec!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fa19642-4f2b-475a-855f-4a38918a4fe5_330x500.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!R9ec!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fa19642-4f2b-475a-855f-4a38918a4fe5_330x500.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!R9ec!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fa19642-4f2b-475a-855f-4a38918a4fe5_330x500.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><blockquote><p><strong>(2) En su art&#237;culo de la conferencia del Premio Turing de 2020, <a href="https://dl.acm.org/doi/10.1145/3490685">&#171;Abstractions, Their Algorithms, and Their Compilers&#187;</a> (Las abstracciones, sus algoritmos y sus compiladores), termina con la siguiente frase: &#171;Ser&#237;a muy beneficioso contar con abstracciones que orienten la creaci&#243;n eficiente de aplicaciones robustas mediante aprendizaje autom&#225;tico&#187;. Ahora, en 2025, con la adopci&#243;n generalizada de la IA generativa, &#191;c&#243;mo ve el futuro de la abstracci&#243;n, considerando que el c&#243;digo es generado cada vez m&#225;s no solo por humanos sino tambi&#233;n por sistemas de IA?</strong></p></blockquote><p>En todo caso, la situaci&#243;n es peor. Todav&#237;a no tenemos ninguna teor&#237;a &#250;til para responder a muchas preguntas sobre las redes profundas (<em>deep nets</em>), por ejemplo, que tan propensa es a clasificar err&#243;neamente ante peque&#241;os cambios en la entrada (p. ej., una foto de un gato se clasifica como un perro cuando cambias 10 p&#237;xeles). Y los LLM (Modelos de Lenguajes Colosales) son a&#250;n m&#225;s opacos. No tenemos ni idea de c&#243;mo prevenir los &#171;jailbreaks&#187;, por ejemplo, casos en los que un LLM revela informaci&#243;n para la que fue espec&#237;ficamente entrenado para no divulgar.</p><p>Tambi&#233;n menciona el c&#243;digo generado por LLM. Creo que las abstracciones son especialmente importantes cuando quieres dar al LLM una instrucci&#243;n (<em>prompt</em>) que te consiga el c&#243;digo correcto. Necesitas poder describir lo que quieres que haga el c&#243;digo, pero de una manera abstracta que transmita la idea en mucho menos espacio que el c&#243;digo que se va a generar.</p><blockquote><p><strong>(3) Ser autor de libros de inform&#225;tica tan populares es bastante poco com&#250;n. &#191;C&#243;mo fue la experiencia de escribir tantos libros influyentes y verlos alcanzar una difusi&#243;n tan amplia? &#191;Qu&#233; significa escribir para usted?</strong></p></blockquote><p>Cuando empec&#233; a trabajar en Bell Labs, y John Hopcroft estaba de a&#241;o sab&#225;tico en nuestro grupo, me dijo: &#171;Ullman, si queremos ser famosos, tenemos que escribir un libro&#187;. As&#237; que acordamos trabajar sobre teor&#237;a de aut&#243;matas, porque ambos hab&#237;amos estudiado el tema y el libro existente era, en nuestra opini&#243;n, demasiado dif&#237;cil de leer para los estudiantes. El primer libro que hicimos fue un desastre. No sab&#237;amos escribir y cometimos muchos errores que no se corrigieron hasta que estuvimos en las pruebas de imprenta (galeradas), cuya correcci&#243;n fue muy cara para el editor; no estaban contentos con nosotros. Ahora, no solo la tecnolog&#237;a es m&#225;s simple, por lo que las correcciones son f&#225;ciles, sino que, como con cualquier cosa, cuando la practicas lo suficiente, acabas haci&#233;ndolo bien. As&#237; que producir libros en serie se volvi&#243; para m&#237; m&#225;s r&#225;pido y f&#225;cil.</p><blockquote><p><strong>(4)  En su larga carrera en ciencias de la computaci&#243;n, ha trabajado en lo que podr&#237;a llamarse el &#171;n&#250;cleo&#187; de la disciplina: compiladores, algoritmos, lenguajes de programaci&#243;n, bases de datos. &#191;Qu&#233; &#8212;o qui&#233;n&#8212; le inspir&#243; en su juventud a abordar estos desaf&#237;os fundamentales? Le pregunto esto porque vivimos en un mundo cada vez m&#225;s especializado donde a menudo se pasan por alto los fundamentos.</strong></p></blockquote><p>En los primeros d&#237;as de la ciencias de la computaci&#243;n, hab&#237;a muy poco contenido y muy pocos tipos diferentes de software que fueran significativos. Incluso las bases de datos no eran realmente &#171;algo&#187; establecido hasta mediados de la d&#233;cada de 1970. As&#237; que pod&#237;as saber algo de casi todo lo que se consideraba &#171;ciencia de la computaci&#243;n&#187;. Dicho de otro modo, todo lo que ten&#237;amos disponible como desaf&#237;os estaba en un &#225;rea que ahora consideramos &#171;fundamental&#187;.</p><blockquote><p><strong>(5) Durante d&#233;cadas, la inform&#225;tica ha oscilado entre la b&#250;squeda de fundamentos formales y la presi&#243;n por soluciones pragm&#225;ticas. &#191;C&#243;mo ha vivido usted esa tensi&#243;n entre la elegancia te&#243;rica y la utilidad pr&#225;ctica? &#191;Cree que ahora estamos m&#225;s cerca de reconciliar estas dos dimensiones, o m&#225;s lejos?</strong></p></blockquote><p>Dir&#237;a que ligeramente m&#225;s cerca. No es que la teor&#237;a y la pr&#225;ctica tengan que reconciliarse, sino que los l&#237;deres en muchos campos han reconocido que la teor&#237;a tiene un papel que desempe&#241;ar en el desarrollo de software &#250;til. Al principio, realmente no ten&#237;amos idea de qu&#233; tipo de teor&#237;a ser&#237;a &#250;til, as&#237; que la gente hac&#237;a pr&#225;cticamente lo que quer&#237;a y lo llamaba &#171;teor&#237;a de las ciencias de la computaci&#243;n&#187;. Ir&#243;nicamente, fue el &#233;xito de cosas como la teor&#237;a del an&#225;lisis sint&#225;ctico (<em>parsing</em>), donde matem&#225;ticas sofisticadas realmente redujeron el tiempo necesario para dise&#241;ar e implementar un analizador sint&#225;ctico (<em>parser</em>) de meses a horas, lo que hizo creer a la gente que todo iba a someterse a una teor&#237;a. Llev&#243; un tiempo darse cuenta de que eso era falso. Algunas cosas son realmente mejores porque a alguien se le ocurri&#243; la abstracci&#243;n correcta o el enfoque matem&#225;tico adecuado, pero otras cosas simplemente no parecen tener una teor&#237;a &#250;til.</p><blockquote><p><strong>(6) A lo largo de su carrera, ha abordado algunos de los problemas m&#225;s fundamentales de la inform&#225;tica. &#191;Cu&#225;l dir&#237;a que ha sido el problema t&#233;cnicamente m&#225;s desafiante al que se ha enfrentado y c&#243;mo lo abord&#243; para resolverlo, tanto intelectual como pr&#225;cticamente?</strong></p></blockquote><p>Bueno, nunca tuve la paciencia para trabajar en algo durante m&#225;s de una semana. Pero d&#233;jeme hablarle del desaf&#237;o que finalmente se llam&#243; &#171;Datalog&#187;. Alrededor de 1983, not&#233; que la comunidad de IA trataba los datos de forma muy parecida a la comunidad de bases de datos, pero en lugar de usar lenguajes como SQL que eran tanto tratables (las consultas pod&#237;an ejecutarse en tiempo polin&#243;mico) como optimizables (SQL, al menos en su n&#250;cleo, es lo suficientemente simple como para saber si dos consultas eran equivalentes en lo que hac&#237;an), la IA buscaba formas de l&#243;gica cada vez m&#225;s complejas que, si bien pod&#237;an expresar m&#225;s que SQL, no eran ni tratables ni optimizables. As&#237; que me propuse plantear una versi&#243;n de la l&#243;gica &#8212;colecciones de cl&#225;usulas de Horn de primer orden (&#171;si esto y esto y... entonces aquello&#187;)&#8212; que pudiera hacer lo esencial de SQL, pero que tambi&#233;n pudiera hacer recursi&#243;n, algo que el SQL de la &#233;poca no pod&#237;a. Este lenguaje, &#171;Datalog&#187;, tambi&#233;n era tratable y, como demostr&#243; la investigaci&#243;n posterior, bastante bien optimizable.</p><p>Pero el gran desaf&#237;o fue pol&#237;tico y se extendi&#243; durante d&#233;cadas. A la gente de IA no le gust&#243; porque era demasiado d&#233;bil, y a la gente de bases de datos no le gust&#243; porque no ve&#237;an la necesidad de la recursi&#243;n. Una forma de recursi&#243;n inspirada en Datalog finalmente se incorpor&#243; al est&#225;ndar SQL98 y ahora es implementada por los principales proveedores. Uno de los algoritmos de optimizaci&#243;n que surgi&#243; de la investigaci&#243;n de Datalog &#8212;los &#171;conjuntos m&#225;gicos&#187; (&#171;magic sets&#187;)&#8212; se implement&#243;, pero en otro contexto inesperado, en el compilador SQL de IBM incluso antes de eso. Fue implementado a escala por LogicBlox y se ha utilizado de diversas formas inesperadas, p. ej., el uso de Joe Hellerstein en el an&#225;lisis de sistemas distribuidos o el uso de Monica Lam en la optimizaci&#243;n de c&#243;digo.</p><blockquote><p><strong>(7) Espero que esto no suene a clich&#233;, pero es una pregunta que despierta curiosidad. &#191;Qu&#233; consejo le dar&#237;a a un joven investigador que espera hacer contribuciones significativas a la inform&#225;tica en esta era de cambios r&#225;pidos, donde tendencias como la IA y los enfoques basados en datos a menudo acaparan la atenci&#243;n?</strong></p></blockquote><p>Aqu&#237; va una sugerencia con la que pocos est&#225;n de acuerdo, pero que en la pr&#225;ctica es bastante buena. La gente asume que la forma de investigar es leer todo sobre un campo y luego abordar uno de los problemas abiertos que encuentras al final de algunos art&#237;culos. Creo que eso es un error por la siguiente raz&#243;n. Alguien puede ver un problema real, uno que realmente necesita una soluci&#243;n. Intenta resolverlo, avanza algo, pero no lo resuelve del todo. As&#237; que escriben un art&#237;culo y, al final, sugieren que alguien complete la soluci&#243;n. Otra persona lee ese art&#237;culo. Tampoco puede resolverlo, pero realmente no conoce la necesidad pr&#225;ctica que abordaba el art&#237;culo. Para ellos era solo una cuesti&#243;n abstracta. As&#237; que juguetean con ello, encuentran algo cercano a lo que es el problema abierto, pero que quiz&#225;s no aborda realmente el problema central, y escriben un art&#237;culo al respecto y lanzan algo que no pudieron hacer como un &#171;problema abierto&#187;. Una tercera persona toma ese art&#237;culo, tiene menos comprensi&#243;n del problema real, pero resuelve una parte del &#171;problema abierto&#187; y plantea otra cosa como abierta. A medida que este proceso contin&#250;a, los art&#237;culos se alejan cada vez m&#225;s del problema real, y la gente simplemente escribe art&#237;culos cuyos resultados no son realmente &#250;tiles. La conclusi&#243;n es: &#171;no conf&#237;es en que valga la pena resolver un problema solo porque alguien m&#225;s diga que est&#225; 'abierto'&#187;.</p><p>Lo que sol&#237;a decir a mis estudiantes es que lean lo suficiente para entender la terminolog&#237;a y las abstracciones o modelos b&#225;sicos que tiene un campo, pero que luego sigan su propio camino. Elijan un problema cuya soluci&#243;n sea &#250;til y vean si pueden resolverlo. Luego tienen que revisar la bibliograf&#237;a para asegurarse de que lo que han hecho es verdaderamente original. Ocasionalmente, su b&#250;squeda descubrir&#225; algo que est&#225; inc&#243;modamente cerca de lo que han hecho, y tienen que reconocerlo. He visto esfuerzos perdidos por ese efecto. Pero es raro. M&#225;s a menudo, lo que tienen es nuevo. Y como empezaron con un problema cuya utilidad identificaron ustedes mismos, saben que lo que tienen merece la pena.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://camilocs.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscr&#237;bete ahora&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/camilocs.substack.com/subscribe"><span>Suscr&#237;bete ahora</span></a></p><div><hr></div><h1>Original</h1><blockquote><p><strong>(1) I'd like to start with a curiosity. When I interviewed Alfred Aho, I couldn't help but ask about how the idea for the dragon on the cover of "Principles of Compiler Design" came about, and he replied: "The idea for the dragon on the cover of our 1977 book 'Principles of Compiler Design' is due to Jeff Ullman. The cover is an allegory based on 'Don Quixote', Miguel de Cervantes' epic novel published in 1605." So I&#8217;d like to ask you how the connection with Don Quixote came to you, as it resonates deeply with Spanish-speaking readers.</strong></p></blockquote><p>To tell the truth, I was not confident that the theory we were promoting in the Dragon Book was really going to be effective.  So on the front I put a drawing that suggested the methods we were promoting, like LR(k) parsing or syntax-directed translation were really effective in "slaying the dragon," which was the goal of making it easier to write compilers.  But then, to acknowledge my concern that the theory wasn't actually going to be that effective, i suggested that we were really just "tilting with windmills," as the expression goes (undoubtedly derived from the don Quixote book).  Ironically, the specific tools we mentioned did turn out to  be  very effective, although other parts of a compiler never really yielded to theory to any great extent.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!oxH1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89763c46-7aa5-4d22-9cb5-1a71f5122b4c_265x375.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!oxH1!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89763c46-7aa5-4d22-9cb5-1a71f5122b4c_265x375.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!oxH1!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89763c46-7aa5-4d22-9cb5-1a71f5122b4c_265x375.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!oxH1!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89763c46-7aa5-4d22-9cb5-1a71f5122b4c_265x375.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!oxH1!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89763c46-7aa5-4d22-9cb5-1a71f5122b4c_265x375.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!oxH1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89763c46-7aa5-4d22-9cb5-1a71f5122b4c_265x375.jpeg" width="265" height="375" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/89763c46-7aa5-4d22-9cb5-1a71f5122b4c_265x375.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:375,&quot;width&quot;:265,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!oxH1!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89763c46-7aa5-4d22-9cb5-1a71f5122b4c_265x375.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!oxH1!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89763c46-7aa5-4d22-9cb5-1a71f5122b4c_265x375.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!oxH1!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89763c46-7aa5-4d22-9cb5-1a71f5122b4c_265x375.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!oxH1!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89763c46-7aa5-4d22-9cb5-1a71f5122b4c_265x375.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!OGbr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e5b68fc-430a-4266-b1db-b30a7dd90576_772x1000.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!OGbr!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e5b68fc-430a-4266-b1db-b30a7dd90576_772x1000.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!OGbr!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e5b68fc-430a-4266-b1db-b30a7dd90576_772x1000.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!OGbr!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e5b68fc-430a-4266-b1db-b30a7dd90576_772x1000.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!OGbr!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e5b68fc-430a-4266-b1db-b30a7dd90576_772x1000.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!OGbr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e5b68fc-430a-4266-b1db-b30a7dd90576_772x1000.jpeg" width="255" height="330.31088082901556" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4e5b68fc-430a-4266-b1db-b30a7dd90576_772x1000.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1000,&quot;width&quot;:772,&quot;resizeWidth&quot;:255,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Compilers: Principles, Techniques, and Tools by Aho, Alfred V., Sethi,  Ravi, Ullman, Jeffrey D. (1986) Hardcover : Aho, Alfred V., Sethi, Ravi,  Ullman, Jeffrey D.: Amazon.es: Libros&quot;,&quot;title&quot;:&quot;Compilers: Principles, Techniques, and Tools by Aho, Alfred V., Sethi,  Ravi, Ullman, Jeffrey D. (1986) Hardcover : Aho, Alfred V., Sethi, Ravi,  Ullman, Jeffrey D.: Amazon.es: Libros&quot;,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Compilers: Principles, Techniques, and Tools by Aho, Alfred V., Sethi,  Ravi, Ullman, Jeffrey D. (1986) Hardcover : Aho, Alfred V., Sethi, Ravi,  Ullman, Jeffrey D.: Amazon.es: Libros" title="Compilers: Principles, Techniques, and Tools by Aho, Alfred V., Sethi,  Ravi, Ullman, Jeffrey D. (1986) Hardcover : Aho, Alfred V., Sethi, Ravi,  Ullman, Jeffrey D.: Amazon.es: Libros" srcset="/__u/substackcdn.com/image/fetch/$s_!OGbr!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e5b68fc-430a-4266-b1db-b30a7dd90576_772x1000.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!OGbr!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e5b68fc-430a-4266-b1db-b30a7dd90576_772x1000.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!OGbr!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e5b68fc-430a-4266-b1db-b30a7dd90576_772x1000.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!OGbr!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e5b68fc-430a-4266-b1db-b30a7dd90576_772x1000.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!R9ec!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fa19642-4f2b-475a-855f-4a38918a4fe5_330x500.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!R9ec!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fa19642-4f2b-475a-855f-4a38918a4fe5_330x500.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!R9ec!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fa19642-4f2b-475a-855f-4a38918a4fe5_330x500.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!R9ec!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fa19642-4f2b-475a-855f-4a38918a4fe5_330x500.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!R9ec!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fa19642-4f2b-475a-855f-4a38918a4fe5_330x500.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!R9ec!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fa19642-4f2b-475a-855f-4a38918a4fe5_330x500.jpeg" width="252" height="381.8181818181818" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3fa19642-4f2b-475a-855f-4a38918a4fe5_330x500.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:330,&quot;resizeWidth&quot;:252,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Compilers: Principles, Techniques, and Tools - Aho, Alfred; Ullman,  Jeffrey; Sethi, Ravi; Lam, Monica: 9780321486813 - AbeBooks&quot;,&quot;title&quot;:&quot;Compilers: Principles, Techniques, and Tools - Aho, Alfred; Ullman,  Jeffrey; Sethi, Ravi; Lam, Monica: 9780321486813 - AbeBooks&quot;,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Compilers: Principles, Techniques, and Tools - Aho, Alfred; Ullman,  Jeffrey; Sethi, Ravi; Lam, Monica: 9780321486813 - AbeBooks" title="Compilers: Principles, Techniques, and Tools - Aho, Alfred; Ullman,  Jeffrey; Sethi, Ravi; Lam, Monica: 9780321486813 - AbeBooks" srcset="/__u/substackcdn.com/image/fetch/$s_!R9ec!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fa19642-4f2b-475a-855f-4a38918a4fe5_330x500.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!R9ec!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fa19642-4f2b-475a-855f-4a38918a4fe5_330x500.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!R9ec!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fa19642-4f2b-475a-855f-4a38918a4fe5_330x500.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!R9ec!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fa19642-4f2b-475a-855f-4a38918a4fe5_330x500.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><blockquote><p><strong>(2) In your 2020 Turing Award lecture article<a href="https://dl.acm.org/doi/10.1145/3490685"> "Abstractions, Their Algorithms, and Their Compilers"</a>, you end with the following sentence: "Abstractions that could guide the efficient creation of robust applications using machine learning would be very beneficial." Now, in 2025, with the widespread adoption of generative AI, how do you see the future of abstraction, considering that code is increasingly being generated not only by humans but also by AI systems?</strong></p></blockquote><p>If anything, the situation is worse.  We still have no theory that is useful for answering a lot of questions about deep nets, e.g., how prone is it to misclassifying under small input changes (e.g., a cat picture gets classified as a dog when you change 10 pixels).  And LLMs are even more opaque.  We have no idea about how to prevent "jailbreaks," for example, where an LLM will give out information that it was specifically trained not to do.</p><p>You also mention LLM-generated code.  I think abstractions are especially important when you want to give the LLM a prompt that will get you the right code.  You need to be able to describe what you want the code to do, but in an abstract way that gets the point across in much less space than the code to be generated.</p><blockquote><p><strong>(3) Being the author of widely popular computer science books is quite uncommon. What was the experience like of writing so many influential books, and seeing them become so widely read? What does writing mean to you?</strong></p></blockquote><p>When I started working at Bell Labs, and John Hopcroft was on sabbatical  in our group, he said to me "Ullman, if we want to be famous people, we have to write a book."  So we agreed to work on automata theory, because we both had studied the subject and the existing book was, we felt, way too hard for students to read.  The first book we did was a mess.  We didn't know how to write, and we messed up a lot that didn't get fixed until we were in page proofs (which were very expensive for the publisher to fix -- they were not happy with us).  Now, not only is the technology simpler, so corrections are easy, but like anything, when you practice it enough, you eventually get good at it.  So churning out books for me became both quicker and easier.</p><blockquote><p><strong>(4) In your long career in computer science, you have worked on what might be called the "core" of the discipline: compilers, algorithms, programming languages, databases. What &#8212;or who&#8212; inspired you in your younger days to take on these foundational challenges?  I ask this because we are living in an increasingly specialized world where the fundamentals are often overlooked.</strong></p></blockquote><p>In the early days of CS, there was very little content, and very few different kinds of software that were significant.  Even databases were not really a thing until the mid-1970s.  So you could pretty much know something about everything that was considered "computer science."  Put another way, everything we had available as challenges was in an area we now consider "core."  </p><blockquote><p><strong>(5) For decades, computer science has oscillated between the pursuit of formal foundations and the pressure for pragmatic solutions. How have you experienced that tension between theoretical elegance and practical usefulness? Do you think we are now closer to reconciling these two dimensions&#8212;or further apart?</strong></p></blockquote><p>I would say slightly closer.  It's not that theory and practice have to be reconciled, but the leaders in many fields have recognized that theory has a role to play in developing useful software.  In the early days, we really had no idea what sorts of theory would be useful, so people did pretty much anything they wanted and called it "CS theory."  Ironically, it was the success of things like theory of parsing, where some sophisticated mathematics really did reduce the time it took to design and implement a parser from months to hours, that made people believe everything was going to yield to a theory.  It took a while to realize that was false.  Some things really are better because someone came up with the right abstraction or the right mathematical approach, but other things just don't seem to have a useful theory.   </p><blockquote><p><strong>(6) Over the course of your career, you&#8217;ve tackled some of the most fundamental problems in computer science. What would you say has been the most technically challenging problem you&#8217;ve faced, and how did you go about solving it&#8212;both intellectually and practically?</strong></p></blockquote><p>Well I never had the patience to work on something for more than a week.  But let me talk about the challenge that eventually was called "Datalog."  Around 1983, I noticed that the AI community was dealing with data much like the database community was, but instead of using languages like SQL that were both tranctable (queries could be executed in polynomial time) and optimizable (SQL, at least its core, is sufficiently simple that you can tell if two queries were equivalent in what they did), AI was looking at more and more complex forms of logic that, while they could express more than SQL, were neither tractable nor optimizable.  So I set out to propose a version of logic -- collections of first-order Horn clauses (if this and this and... then that), that could do the core of SQL, but also could do recursion, which the SQL of the day could not.  This language, "Datalog," was also tractable and, as research later showed, pretty well optimizable.</p><p>But the big challenge was political, and extended over decades.  AI folks didn't like it because it was too weak, and database people didn't like it because they saw no need for recursion.  A form of recursion that was inspired by Datalog eventually found it into the SQL98 standard and is now implemented by major vendors.  One of optimization algorithms that came out of the Datalog research -- "magic sets" -- was implemented, but in another, unexpected context, in IBM's SQL compiler before that.  It was implemented at scale by LogicBlox, and it has been used in various unexpected ways, e.g., Joe Hellerstein's use in analysis of distributed systems, or Monica Lam's use in code optimization.</p><blockquote><p><strong>(7) I hope this doesn&#8217;t sound like a clich&#233;, but it&#8217;s a question that sparks curiosity. What advice would you give to a young researcher who hopes to make meaningful contributions to computer science in this era of rapid change, where trends like AI and data-driven approaches often dominate the spotlight?</strong></p></blockquote><p>Here's one suggestion that few agree with, but in practice is pretty good.  People assume the way you do research is you read everything in a field, and then tackle one of the open problems that you find at the end of some papers.  I think that is a mistake for the following reason.  Someone may see a real problem -- one that really needs a solution.  They try to solve it, get somewhere, but don't really solve it.  So they write a paper and at the end, they suggest someone complete the solution.  Someone else reads that paper.  They can't solve it either, but they really don't know the practical need the paper was addressing.  To them it was just some abstract question.  So they fiddle around with it, find something that is close to what the open problem is, but perhaps not really addressing the core problem, and they write a paper about it and throw out something they were unable to do as an "open problem."  A third person, picks up that paper, has less understanding of the real problem, but solves a part of the "open problem" and poses something else as open.  As this process continues, the papers get further and further away from the real problem, and people are just writing papers whose results are not really useful.  The bottom line is "don't trust that a problem is worth solving just because someone else says it is "open."</p><p>What I used to tell my students is to read enough that you understand the terminology and basic abstractions or models that a field has, but then go off on your own.  Pick a problem whose solution would be useful, and see if you can solve it.  You then have to check the literature to make sure that what you have done is truly original.  Occasionally, your search will uncover something that is uncomfortably close to what you have done, and you have to acknowledge that.  I've seen effort lost because of that effect.  But it is rare.  More often, what you have is new.  And because you started with a problem whose use you yourself identified, you know that what you have is worthwhile.</p><p></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Lista de libros: <a href="http://infolab.stanford.edu/~ullman/ullman-books.html">http://infolab.stanford.edu/~ullman/ullman-books.html</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>La versi&#243;n traducida se realiz&#243; usando Gemini 2.5 pro.</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[Nuevo libro: Palabras y Algoritmos (preventa)]]></title><description><![CDATA[La escritora brit&#225;nica Virginia Woolf expresaba as&#237; su relaci&#243;n con la escritura: &#171;Siento que al escribir estoy haciendo lo que es mucho m&#225;s necesario que cualquier otra cosa&#187;.]]></description><link>https://camilocs.substack.com/p/nuevo-libro-palabras-y-algoritmos</link><guid isPermaLink="false">https://camilocs.substack.com/p/nuevo-libro-palabras-y-algoritmos</guid><dc:creator><![CDATA[Camilo Chacón Sartori]]></dc:creator><pubDate>Mon, 02 Dec 2024 14:25:17 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!w9Sv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ee4d5d9-c79b-4021-928f-6fb0a85d285f_627x866.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>La escritora brit&#225;nica Virginia Woolf expresaba as&#237; su relaci&#243;n con la escritura: &#171;Siento que al escribir estoy haciendo lo que es mucho m&#225;s necesario que cualquier otra cosa&#187;. Entre las pasiones que seducen a los escritores se encuentra un deseo perpetuo por comunicarse, por entablar una relaci&#243;n con lectores desconocidos y, por sobre todo, un ansia de autoconocimiento. No todos los escritores son felices cuando escriben, ni buscan serlos, pues la escritura no tiene nada que ver con la felicidad sino con la necesidad. Lo hacen porque no pueden dejar de hacerlo.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!w9Sv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ee4d5d9-c79b-4021-928f-6fb0a85d285f_627x866.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!w9Sv!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ee4d5d9-c79b-4021-928f-6fb0a85d285f_627x866.png 424w, /__u/substackcdn.com/image/fetch/$s_!w9Sv!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ee4d5d9-c79b-4021-928f-6fb0a85d285f_627x866.png 848w, /__u/substackcdn.com/image/fetch/$s_!w9Sv!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ee4d5d9-c79b-4021-928f-6fb0a85d285f_627x866.png 1272w, /__u/substackcdn.com/image/fetch/$s_!w9Sv!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ee4d5d9-c79b-4021-928f-6fb0a85d285f_627x866.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!w9Sv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ee4d5d9-c79b-4021-928f-6fb0a85d285f_627x866.png" width="419" height="578.7145135566188" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1ee4d5d9-c79b-4021-928f-6fb0a85d285f_627x866.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:866,&quot;width&quot;:627,&quot;resizeWidth&quot;:419,&quot;bytes&quot;:171592,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!w9Sv!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ee4d5d9-c79b-4021-928f-6fb0a85d285f_627x866.png 424w, /__u/substackcdn.com/image/fetch/$s_!w9Sv!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ee4d5d9-c79b-4021-928f-6fb0a85d285f_627x866.png 848w, /__u/substackcdn.com/image/fetch/$s_!w9Sv!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ee4d5d9-c79b-4021-928f-6fb0a85d285f_627x866.png 1272w, /__u/substackcdn.com/image/fetch/$s_!w9Sv!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ee4d5d9-c79b-4021-928f-6fb0a85d285f_627x866.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Cuando comenc&#233; a escribir <em>Palabras y Algoritmos</em> quer&#237;a, por una parte, presentar la importancia que ha tenido la escritura, como tecnolog&#237;a, en el desarrollo de nuestras sociedades y, por otro, como la inteligencia artificial cambiar&#225; nuestra manera de interactuar con ella. Antes de la escritura, la oralidad era el mecanismo predominante para transmitir informaci&#243;n, y se ten&#237;an que hacer grandes esfuerzos para entrenar la memoria para pasar un mensaje de un lugar a otro. Las limitaciones eran muchas. Con la escritura &#233;ramos capaces, por primera vez en la historia, poder revivir las experiencias de hombres y mujeres en la antig&#252;edad, conocer tanto sus alegr&#237;as como sus temores. A su vez, pod&#237;amos dejar registro de intercambio de bienes y de compra y ventas de productos. Pero la escritura no es matem&#225;tica, est&#225; a merced de las interpretaciones, de las emociones, de los sesgos de sus autores. O, como dir&#237;a Wittgenstein: &#171;de los juegos de lenguajes&#187;. Y replicarla se vuelve un desaf&#237;o sumamente complejo.</p><p>En 2022, cuando se lanz&#243; ChatGPT sent&#237; que, por primera vez, una m&#225;quina era capaz de entender el lenguaje escrito, y no solo eso, sino de analizarlo y proponer mejoras, detectando sutilezas en el juego de palabras: como la iron&#237;a, el sarcasmo, y diferentes figuras ret&#243;ricas como las met&#225;foras o las an&#225;foras. Estos modelos generativos &#8212;como ChatGPT&#8212; no son &#171;loros estoc&#225;sticos&#187; como algunos investigadores afirmaron con rotundidad, sino que cuenta con sorprendentes capacidades de detectar patrones en los textos, &#171;loros estoc&#225;sticos h&#225;biles en la conversaci&#243;n&#187;. Acerc&#225;ndonos a una nueva etapa en la creaci&#243;n de tecnolog&#237;a, donde no solo seremos capaces de generar textos, sino tambi&#233;n im&#225;genes y contenido audiovisual. Contenido a nuestra medida. Y para el escritor ser&#225; una ayuda, una suerte de editor en las sombras alert&#225;ndonos de cuando nos desviemos del camino, no un reemplazo.</p><p><em>Palabras y Algoritmos</em> es un ensayo que narra mi amor por las humanidades y la inform&#225;tica. Una invitaci&#243;n hacia los sucesos y personas que dieron forma a la escritura humana; mientras conocemos el sue&#241;o de algunos inform&#225;ticos que pensaron, con cierta ingenuidad, que aquellas m&#225;quinas &#8212;alg&#250;n d&#237;a&#8212; podr&#237;an ser capaces de desafiar una de las actividades creativas que nos diferencian de otras especies.</p><div><hr></div><p>El libro se encuentra en <a href="https://www.marcombo.com/libro/libros-para-formacion/certificados-de-profesionalidad-libros-para-formacion/informatica-certificados-de-profesionalidad/palabras-y-algoritmos/">preventa</a>. Y estar&#225; disponible oficialmente el 23 de enero del 2025.</p><p>Adem&#225;s, contiene el pr&#243;logo de mi buen amigo David Sanchez Molina, Investigador de la Universitat Polit&#232;cnica de Catalunya.</p><p>Pueden leer un extracto aqu&#237;:</p><p><a href="https://www.researchgate.net/publication/386334083_Palabras_y_Algoritmos">https://www.researchgate.net/publication/386334083_Palabras_y_Algoritmos</a></p><p></p><div><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://camilocs.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscr&#237;bete ahora&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/camilocs.substack.com/subscribe"><span>Suscr&#237;bete ahora</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Entrevista a Grady Booch]]></title><description><![CDATA[Cocreador de UML]]></description><link>https://camilocs.substack.com/p/entrevista-a-grady-booch</link><guid isPermaLink="false">https://camilocs.substack.com/p/entrevista-a-grady-booch</guid><dc:creator><![CDATA[Camilo Chacón Sartori]]></dc:creator><pubDate>Sun, 27 Oct 2024 02:15:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!vM1b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7bc32c3-2b3e-4d18-a2dd-15c0b40970d3_512x512.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>Esta entrevista fue originalmente realizada en ingl&#233;s por email. Por tanto, primero se ofrece una traducci&#243;n al espa&#241;ol, y al final, se encuentra la versi&#243;n original.</p><p><em>This interview was originally conducted in English by email. The Spanish translation is provided first, followed by the original version.</em></p></blockquote><p><a href="https://computingthehumanexperience.com">Grady Booch</a> es uno de los pioneros en el campo de la ingenier&#237;a de software. Es principalmente conocido por ser uno de los creadores del Lenguaje Unificado de Modelado (<a href="https://es.wikipedia.org/wiki/Lenguaje_unificado_de_modelado">UML</a>) junto con Ivar Jacobson y James Rumbaugh, y por desarrollar el <a href="https://es.wikipedia.org/wiki/Metodolog%C3%ADa_de_Booch">M&#233;todo Booch</a>, una metodolog&#237;a para el desarrollo de software orientado a objetos.</p><p>Nacido en 1955, Booch ha dedicado su carrera a avanzar las pr&#225;cticas de desarrollo de software. Actualmente es Cient&#237;fico Jefe y miembro de IBM Research, donde contin&#250;a investigando en &#225;reas como arquitectura de software, inteligencia artificial y desarrollo de software. En su lado &#171;menos pol&#233;mico&#187; lo podemos leer con frecuencia en su cuenta de <a href="https://x.com/Grady_Booch">Twitter/X</a>, donde se mantiene implicado en c&#243;mo la inform&#225;tica se integra a la sociedad.</p><p>Sus contribuciones al campo incluyen:</p><ul><li><p>El desarrollo del M&#233;todo Booch para dise&#241;o orientado a objetos.</p></li><li><p>La cocreaci&#243;n de UML, que se convirti&#243; en el est&#225;ndar de facto para el modelado de software.</p></li><li><p>La autor&#237;a de varios libros influyentes, incluyendo <em>Object-Oriented Analysis and Design with Applications</em>.</p></li><li><p>Su trabajo pionero en patrones de arquitectura de software.</p></li></ul><p>Un apunte: UML ha repercutido a toda la inform&#225;tica, pues a medida que el software va creciendo su complejidad aumenta y, por tanto, se vuelve necesario &#8212;e inevitable&#8212; dise&#241;ar herramientas visuales. Incluso los m&#225;s cr&#237;ticos de UML, no pueden evitar dibujar figuras geom&#233;tricas en la pizarra, que se van relacionando y que nos recuerdan a, s&#237;, UML :-)</p><p>Booch ha recibido numerosos reconocimientos por sus contribuciones, incluyendo el premio Lovelace de la Association for Computing Machinery (ACM) en 2012 y el IEEE Computer Society Computer Pioneer en 2016.</p><div><hr></div><p>Algunas de sus citas memorables:</p><ol><li><p>&#171;La funci&#243;n de un buen software es hacer que lo complejo parezca simple&#187;.</p><ol><li><p>Que se puede combinar con &#171;La tarea del equipo de desarrollo de software es dise&#241;ar la ilusi&#243;n de simplicidad&#187;.</p></li></ol></li><li><p>&#171;El ingeniero de software aficionado siempre est&#225; en busca de magia&#187;.</p></li><li><p>&#171;Toda la vida es iterativa. Esto nos lleva de nuevo al punto que mencion&#233; antes, que es que no se puede saber a priori lo suficiente como para siquiera hacer las preguntas correctas&#187;.</p><p></p></li></ol><p>&#161;Espero disfruten de esta corta pero interesante entrevista!<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!vM1b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7bc32c3-2b3e-4d18-a2dd-15c0b40970d3_512x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!vM1b!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7bc32c3-2b3e-4d18-a2dd-15c0b40970d3_512x512.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!vM1b!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7bc32c3-2b3e-4d18-a2dd-15c0b40970d3_512x512.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!vM1b!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7bc32c3-2b3e-4d18-a2dd-15c0b40970d3_512x512.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!vM1b!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7bc32c3-2b3e-4d18-a2dd-15c0b40970d3_512x512.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!vM1b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7bc32c3-2b3e-4d18-a2dd-15c0b40970d3_512x512.jpeg" width="512" height="512" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c7bc32c3-2b3e-4d18-a2dd-15c0b40970d3_512x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:512,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:126934,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!vM1b!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7bc32c3-2b3e-4d18-a2dd-15c0b40970d3_512x512.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!vM1b!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7bc32c3-2b3e-4d18-a2dd-15c0b40970d3_512x512.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!vM1b!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7bc32c3-2b3e-4d18-a2dd-15c0b40970d3_512x512.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!vM1b!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7bc32c3-2b3e-4d18-a2dd-15c0b40970d3_512x512.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Imagen extra&#237;da de <a href="https://www.oop-konferenz.de/oop-2021/programm/speaker/sprecherdetails/grady-booch-11640">aqu&#237;</a>.</figcaption></figure></div><h2>Versi&#243;n traducida</h2><blockquote><p><strong>(1) A lo largo de tu extensa carrera en ingenier&#237;a de software, has sido testigo de la evoluci&#243;n de muchas tecnolog&#237;as y paradigmas. &#191;Cu&#225;les han sido los hitos m&#225;s importantes que has presenciado y c&#243;mo crees que han dado forma al campo de la ingenier&#237;a de software?</strong></p></blockquote><p>La transici&#243;n de lenguajes y m&#233;todos algor&#237;tmicos a orientados a objetos represent&#243; un cambio masivo; el auge de los sistemas distribuidos a trav&#233;s de Internet, particularmente con dispositivos m&#243;viles, cambi&#243; la naturaleza misma del desarrollo. </p><p>Es justo decir que el campo de la ingenier&#237;a de software est&#225; en constante cambio. </p><p>Y eso es algo bueno.</p><blockquote><p><strong>(2) Fuiste uno de los creadores de UML, una herramienta fundamental en el dise&#241;o de sistemas. M&#225;s de dos d&#233;cadas despu&#233;s de su introducci&#243;n, &#191;c&#243;mo ves la relevancia actual de UML en la industria, y qu&#233; mejoras crees que deber&#237;an hacerse para adaptarlo a las necesidades actuales?</strong></p></blockquote><p>El lenguaje unificado de modelado alcanz&#243; quiz&#225;s una penetraci&#243;n del 20% en todo el campo, lo cual es francamente bastante grande, pero lo m&#225;s importante es que introdujo una forma diferente de pensar sobre el desarrollo de software, y eso perdura: las clases y objetos son tanto parte de la atm&#243;sfera del desarrollo de software que es como un pez pensando en el agua. </p><p>Independientemente del UML, sigue existiendo la necesidad de visualizar y razonar sobre la arquitectura de sistemas intensivos en software; de hecho, mira los diagramas de AWS para arquitectura, o la forma en que tratamos de visualizar sistemas de IA generativa.</p><blockquote><p><strong>(3) Con el avance de la IA generativa (de la cual he visto que has sido cr&#237;tico), muchos predicen que parte del proceso de desarrollo de software ser&#225; automatizado. &#191;Cu&#225;l es tu perspectiva sobre c&#243;mo la IA cambiar&#225; el papel de los ingenieros de software y cient&#237;ficos de la computaci&#243;n en los pr&#243;ximos a&#241;os?</strong></p></blockquote><p>No soy cr&#237;tico de la IA generativa; soy cr&#237;tico de las empresas e individuos que exageran la IA generativa m&#225;s all&#225; de lo que es capaz de hacer. </p><p>La IA cambiar&#225; la naturaleza del desarrollo de software de la misma manera que lo hicieron los compiladores: ayudan a elevar el nivel de abstracci&#243;n del desarrollo.</p><blockquote><p><strong>(4) Eres un fuerte defensor de la &#233;tica en el desarrollo de software. En un mundo donde la IA tiene un impacto cada vez mayor, &#191;c&#243;mo podemos asegurar que las tecnolog&#237;as emergentes se desarrollen y utilicen &#233;ticamente? &#191;Cu&#225;l ser&#225; el papel de la filosof&#237;a en este proceso?</strong></p></blockquote><p>Esa es la pregunta correcta y dif&#237;cil. El problema es que hay individuos intensamente ricos que realmente no se preocupan por la &#233;tica y ese es el mayor obst&#225;culo. </p><p>La educaci&#243;n es clave; el hecho de que ACM, IEEE, AAAI y otras organizaciones profesionales est&#233;n impulsando la &#233;tica de la IA me da esperanza.</p><blockquote><p><strong>(5) Mirando hacia el futuro, m&#225;s all&#225; de la inteligencia artificial y las tecnolog&#237;as actuales, &#191;qu&#233; tendencias emergentes en ciencias de la computaci&#243;n crees que tendr&#225;n el impacto m&#225;s profundo en nuestra sociedad y en la forma en que interactuamos con la tecnolog&#237;a?</strong></p></blockquote><p>La computaci&#243;n se ha movido hacia los espacios intersticiales de la sociedad, y eso es simult&#225;neamente maravilloso y desafiante. </p><p>Los modelos basados en transformadores son, en mi opini&#243;n, &#250;tiles aunque un callej&#243;n sin salida arquitect&#243;nico, y creo que veremos el surgimiento de sistemas neurales simb&#243;licos.</p><blockquote><p><strong>(6) S&#233; que te apasionan los libros. Si tuvieras que recomendar algunos libros a nuevos cient&#237;ficos de la computaci&#243;n que est&#225;n comenzando en el mundo actual, un mundo donde la ciencia de la computaci&#243;n parece conectarse con muchas &#225;reas del conocimiento, particularmente las humanidades, &#191;cu&#225;les elegir&#237;as y por qu&#233;?</strong></p></blockquote><p>Mira algunos cl&#225;sicos: <em>The Human Use of Human Beings</em> de Wiener y <em>The Pattern on the Stone</em> de Hillis.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!i9CZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f85fcdb-ab5c-4e33-8c43-b77eec841720_956x1500.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!i9CZ!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f85fcdb-ab5c-4e33-8c43-b77eec841720_956x1500.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!i9CZ!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f85fcdb-ab5c-4e33-8c43-b77eec841720_956x1500.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!i9CZ!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f85fcdb-ab5c-4e33-8c43-b77eec841720_956x1500.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!i9CZ!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f85fcdb-ab5c-4e33-8c43-b77eec841720_956x1500.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!i9CZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f85fcdb-ab5c-4e33-8c43-b77eec841720_956x1500.jpeg" width="234" height="367.1548117154812" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0f85fcdb-ab5c-4e33-8c43-b77eec841720_956x1500.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1500,&quot;width&quot;:956,&quot;resizeWidth&quot;:234,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!i9CZ!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f85fcdb-ab5c-4e33-8c43-b77eec841720_956x1500.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!i9CZ!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f85fcdb-ab5c-4e33-8c43-b77eec841720_956x1500.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!i9CZ!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f85fcdb-ab5c-4e33-8c43-b77eec841720_956x1500.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!i9CZ!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f85fcdb-ab5c-4e33-8c43-b77eec841720_956x1500.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!CgJV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96935066-c8a0-4365-8384-68c5e844cbeb_775x1222.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!CgJV!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96935066-c8a0-4365-8384-68c5e844cbeb_775x1222.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!CgJV!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96935066-c8a0-4365-8384-68c5e844cbeb_775x1222.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!CgJV!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96935066-c8a0-4365-8384-68c5e844cbeb_775x1222.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!CgJV!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96935066-c8a0-4365-8384-68c5e844cbeb_775x1222.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!CgJV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96935066-c8a0-4365-8384-68c5e844cbeb_775x1222.jpeg" width="234" height="368.96516129032256" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/96935066-c8a0-4365-8384-68c5e844cbeb_775x1222.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1222,&quot;width&quot;:775,&quot;resizeWidth&quot;:234,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!CgJV!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96935066-c8a0-4365-8384-68c5e844cbeb_775x1222.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!CgJV!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96935066-c8a0-4365-8384-68c5e844cbeb_775x1222.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!CgJV!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96935066-c8a0-4365-8384-68c5e844cbeb_775x1222.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!CgJV!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96935066-c8a0-4365-8384-68c5e844cbeb_775x1222.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><blockquote><p><strong>(7) Si tuvieras la oportunidad de viajar en el tiempo y darle un consejo no t&#233;cnico a tu yo m&#225;s joven, &#191;cu&#225;l ser&#237;a y por qu&#233; lo consideras importante?</strong></p></blockquote><p>Compra m&#225;s acciones de Apple y NVIDIA :-)</p><div><hr></div><h2>Original</h2><blockquote><p><strong>(1) Throughout your extensive career in software engineering, you've witnessed the evolution of many technologies and paradigms. What have been the most important milestones you've witnessed, and how do you think they have shaped the field of software engineering?</strong></p></blockquote><p>The transition from algorithmic, languages and methods to object oriented ones represented a massive change; the rise in distributed systems via the Internet in particular with mobile devices change the very nature of development.<br><br>It is fair to say that the field of software engineering is under constant change.<br><br>And that's a good thing.</p><blockquote><p><strong>(2) You were one of the creators of UML, a fundamental tool in system design. More than two decades after its introduction, how do you see UML's current relevance in the industry, and what improvements do you think should be made to adapt it to current needs?</strong></p></blockquote><p>The unified modeling language achieved perhaps a 20% market penetration throughout the field, which is frankly quite large, but most importantly, it introduced a different way of thinking about software development, and that endures: classes and objects are so much a part of the atmosphere of software development that it is akin to a fish thinking about water<br><br>Independent of the UML, there remains need to visualize and reason about the architecture of software intensive systems; indeed, look at AWS&#8217;s diagrams for architecture, or the way we try to visualize genAI systems.</p><blockquote><p><strong>(3) With the advancement of generative AI (which I've seen you being critical of), many predict that part of the software development process will be automated. What's your perspective on how AI will change the role of software engineers and computer scientists in the coming years?</strong></p></blockquote><p>I am not critical of generative AI; I am critical of the companies and individuals, who hype generative AI beyond what it is capable of doing<br><br>AI will change the nature of software development in the same way the compilers did: they help raise the level of abstraction of development.</p><blockquote><p><strong>(4) You're a strong advocate for ethics in software development. In a world where AI has an increasingly greater impact, how can we ensure that emerging technologies are developed and used ethically? What will be the role of philosophy in this process?</strong></p></blockquote><p>That is the right and hard question. The problem is you have intensely wealthy individuals who really don't care about ethics and that is the greatest stumbling block.<br><br>Education is key; the fact of the ACM, the IEEE, AAAI, and other professional organizations are pushing the ethics of AI gives me hope</p><blockquote><p><strong>(5) Looking toward the future, beyond artificial intelligence and current technologies, what emerging trends in computer science do you think will have the most profound impact on our society and the way we interact with technology?</strong></p></blockquote><p>Computing has moved itself into the interstitial spaces of society, and that is simultaneously wonderful and challenging.<br><br>Transformer based models are in my opinion&nbsp; useful albeit an architectural dead end, and I think we will see the rise of neural symbolic systems.</p><blockquote><p><strong>(6) I know you're passionate about books. If you had to recommend some books to new computer scientists starting out in today's world, a world where computer science seems to connect with many areas of knowledge, particularly the humanities, which ones would you choose and why?</strong></p></blockquote><p>Look at some classics: The Human Use of Human Beings by Wiener and The Pattern on the Stone by Hillis.</p><blockquote><p><strong>(7) If you had the opportunity to travel back in time and give non-technical advice to your younger self, what would it be, and why do you consider it important?</strong></p></blockquote><p>Buy more Apple and NVIDIA stock :-)</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://camilocs.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscr&#237;bete ahora&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/camilocs.substack.com/subscribe"><span>Suscr&#237;bete ahora</span></a></p><p></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>La traducci&#243;n se realiz&#243; con Claude-3.5-Sonnet.</p></div></div>]]></content:encoded></item><item><title><![CDATA[Palabras y Algoritmos y demás digresiones]]></title><description><![CDATA[He escrito otro libro.]]></description><link>https://camilocs.substack.com/p/palabras-y-algoritmos-y-demas-digresiones</link><guid isPermaLink="false">https://camilocs.substack.com/p/palabras-y-algoritmos-y-demas-digresiones</guid><dc:creator><![CDATA[Camilo Chacón Sartori]]></dc:creator><pubDate>Fri, 18 Oct 2024 10:31:57 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!WwM7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7556a51-04ed-4b31-9558-6c232848c4c2_1280x960.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>He escrito otro libro. Supongo que en unos a&#241;os m&#225;s no recordar&#233; la fecha de publicaci&#243;n de los anteriores. Escribo porque lo necesito. No gano dinero y es dudoso que gane alg&#250;n prestigio. Porque la mayor&#237;a de los inform&#225;ticos no leen, algunos dicen que tampoco escriben c&#243;digo, con suerte leen libros t&#233;cnicos, y si lo hacen aplican una de las tantas t&#233;cnicas modernas para no leer: <em>leer en diagonal</em>. Mover la mirada sin direcci&#243;n, distra&#237;damente, creyendo que entendieron algo, cuando en realidad ni el t&#237;tulo ni el nombre del autor recordar&#225;n una semana despu&#233;s. En fin. Nada de eso me desmotiva. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!WwM7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7556a51-04ed-4b31-9558-6c232848c4c2_1280x960.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!WwM7!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7556a51-04ed-4b31-9558-6c232848c4c2_1280x960.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!WwM7!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7556a51-04ed-4b31-9558-6c232848c4c2_1280x960.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!WwM7!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7556a51-04ed-4b31-9558-6c232848c4c2_1280x960.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!WwM7!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7556a51-04ed-4b31-9558-6c232848c4c2_1280x960.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!WwM7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7556a51-04ed-4b31-9558-6c232848c4c2_1280x960.jpeg" width="1280" height="960" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a7556a51-04ed-4b31-9558-6c232848c4c2_1280x960.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:960,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:207166,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!WwM7!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7556a51-04ed-4b31-9558-6c232848c4c2_1280x960.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!WwM7!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7556a51-04ed-4b31-9558-6c232848c4c2_1280x960.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!WwM7!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7556a51-04ed-4b31-9558-6c232848c4c2_1280x960.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!WwM7!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7556a51-04ed-4b31-9558-6c232848c4c2_1280x960.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Ahora estoy viviendo en un peque&#241;o apartamento a las afueras de Par&#237;s, de unos 27&#8239;m&#178;, en la zona de Neuilly-Plaisance. Encontrar un lugar para vivir solo, con el dinero de una beca, es ya un logro. He evitado la incertidumbre de convivir con desconocidos. Pues nunca se sabe qui&#233;n te puede joder el d&#237;a. La vida, por tanto, ha transcurrido bien, estoy en una estancia doctoral &#8212;de dos meses&#8212; en el &#8220;impopular&#8221; <a href="https://www.bell-labs.com/about/awards/">Nokia Bell Labs</a>, aprendiendo sobre <em>Knowledge Graph</em> y su integraci&#243;n con <em>Large Language Models</em>, mientras sigo avanzando en otros c&#243;digos y art&#237;culos y libros.</p><p>Mi cuarto libro se titula <em>Palabras y Algoritmos. &#191;C&#243;mo la Inteligencia Artificial transformar&#225; la escritura?</em> (Editado por <a href="https://www.marcombo.com">Marcombo</a>). La idea surgi&#243; a mediados del 2023, cuando estaba todo el revuelo de ChatGPT. Entre los m&#250;ltiples usos que le di a &#233;sta tecnolog&#237;a, estuvo usarla como un editor: encontrar horrores ortogr&#225;ficos, frases absurdamente complejas, repeticiones de palabras innecesarias y otras cosas. Entonces me di cuenta de que, bien usada, esta tecnolog&#237;a podr&#237;a ayudarnos en la escritura. No para evitar que escribamos usando un <em>prompt</em> del tipo: &#8220;Dame la introducci&#243;n a mi libro de programaci&#243;n, porque no s&#233; escribir y quiero seguir siendo inh&#225;bil&#8221;, no, m&#225;s bien como un editor sofisticado que conoce tu prosa y le ahorra tiempo a un editor humano. </p><p>En este libro, de unas 200-250 p&#225;ginas, que es mi primer ensayo, exploro c&#243;mo se relaciona la escritura humana y la escritura artificial. Como la escritura humana es una tecnolog&#237;a, y c&#243;mo ha evolucionado en el tiempo, mientras convive con los avances tecnol&#243;gicos de la IA. En &#233;l presento la idea de &#8220;escritura simbi&#243;tica&#8221;, que viene a ser una nueva forma de escritura humana asistida por la IA, pero que no busca ser un reemplazo a la creatividad humana, ni ser un alentador de la pereza, sino un potenciador creativo. Fue una excusa para leer y aprender sobre temas fuera de mi campo de estudio, como tambi&#233;n medio para rendirle homenaje a escritores que admiro. Y es que siempre me he declarado un Inform&#225;tico Humanista, que significa simple y llanamente: un inform&#225;tico que no olvida el l&#225;piz y el papel.</p><p>Tampoco pretendo dar m&#225;s detalles del libro en esta entrada, pues falta un tiempo para su publicaci&#243;n. S&#243;lo deseaba hacer un <em>ping</em> a los suscriptores del newsletter, mencionar que a&#250;n sigo vivo, y que todav&#237;a no es necesario darse de baja. Aunque usted es libre de hacer lo que quiera, por supuesto, incluso de invitarme un caf&#233;, pero sobre todo para decirle que pronto regresar&#233; con nuevas cosas. </p><p><em>Au revoir, &#224; la prochaine.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://camilocs.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscribirse&quot;,&quot;language&quot;:&quot;es&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption"></p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Escribe tu correo electr&#243;nico..." tabindex="-1"><input type="submit" class="button primary" value="Suscribirse"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Entrevista a Richard Hipp]]></title><description><![CDATA[Creador de SQLite]]></description><link>https://camilocs.substack.com/p/entrevista-a-richard-hipp</link><guid isPermaLink="false">https://camilocs.substack.com/p/entrevista-a-richard-hipp</guid><dc:creator><![CDATA[Camilo Chacón Sartori]]></dc:creator><pubDate>Tue, 07 May 2024 17:38:11 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Du66!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6911987e-34ef-45b8-8194-c8fe9611ece9_673x900.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>Esta entrevista fue originalmente realizada en ingl&#233;s por email. Por tanto, primero se ofrece una traducci&#243;n al espa&#241;ol, y al final, se encuentra la versi&#243;n original.</p><p><em>This interview was originally conducted in English by email. The Spanish translation is provided first, followed by the original version.</em></p></blockquote><p><a href="https://www.hwaci.com/drh/index.html">Richard Hipp</a> es un desarrollador de software estadounidense, conocido principalmente por ser el creador del sistema de gesti&#243;n de bases de datos relacionales <a href="https://es.wikipedia.org/wiki/SQLite">SQLite</a>. Hipp, tiene un PhD en Ciencias de la Computaci&#243;n de la Duke University, comenz&#243; a trabajar en SQLite en 2000 mientras trabajaba en General Dynamics. En 2002, lanz&#243; la primera versi&#243;n p&#250;blica de SQLite, que r&#225;pidamente gan&#243; popularidad debido a su tama&#241;o peque&#241;o, eficiencia y flexibilidad. Desde entonces, Hipp ha continuado desarrollando y manteniendo SQLite, que se ha convertido en una de las bases de datos m&#225;s populares y ampliamente utilizadas en el mundo.</p><p>Adem&#225;s de SQLite, Hipp ha desarrollado y contribuido a numerosos otros proyectos de software de c&#243;digo abierto; incluyendo <a href="http://www.cvstrac.org/">CVSTrac</a>, un sistema de seguimiento de bugs y wiki para CVS; un <a href="http://tkhtml.tcl.tk">widget HTML </a>para Tcl/Tk; y es creador del sistema de control de versiones <a href="https://www.fossil-scm.org/home/doc/trunk/www/index.wiki">Fossil SCM</a> (que es competidor de Git). En reconocimiento a su trabajo en SQLite, Hipp recibi&#243; un premio Google O'Reilly Open Source Award en 2005.</p><div><hr></div><p>Existe un consenso en que tanto SQLite como Fossil SCM son herramientas f&#225;ciles de usar; y no s&#243;lo eso, tambi&#233;n su implementaci&#243;n es simple y elegante. Por tanto, es para mi un gusto haber podido conversar con uno de los grandes desarrolladores de software y contribuidores del ecosistema <em>open source</em>.</p><p>&#161;Espero disfruten de la entrevista!<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!Du66!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6911987e-34ef-45b8-8194-c8fe9611ece9_673x900.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!Du66!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6911987e-34ef-45b8-8194-c8fe9611ece9_673x900.png 424w, /__u/substackcdn.com/image/fetch/$s_!Du66!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6911987e-34ef-45b8-8194-c8fe9611ece9_673x900.png 848w, /__u/substackcdn.com/image/fetch/$s_!Du66!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6911987e-34ef-45b8-8194-c8fe9611ece9_673x900.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Du66!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6911987e-34ef-45b8-8194-c8fe9611ece9_673x900.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!Du66!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6911987e-34ef-45b8-8194-c8fe9611ece9_673x900.png" width="573" height="766.2704309063893" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6911987e-34ef-45b8-8194-c8fe9611ece9_673x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:900,&quot;width&quot;:673,&quot;resizeWidth&quot;:573,&quot;bytes&quot;:491372,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!Du66!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6911987e-34ef-45b8-8194-c8fe9611ece9_673x900.png 424w, /__u/substackcdn.com/image/fetch/$s_!Du66!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6911987e-34ef-45b8-8194-c8fe9611ece9_673x900.png 848w, /__u/substackcdn.com/image/fetch/$s_!Du66!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6911987e-34ef-45b8-8194-c8fe9611ece9_673x900.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Du66!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6911987e-34ef-45b8-8194-c8fe9611ece9_673x900.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Imagen extra&#237;da de <a href="https://sigmodrecord.org/publications/sigmodRecord/1906/pdfs/06_Profiles_Hipp.pdf">https://sigmodrecord.org/publications/sigmodRecord/1906/pdfs/06_Profiles_Hipp.pdf</a></figcaption></figure></div><div><hr></div><h2>Versi&#243;n traducida</h2><blockquote><p><strong>(1) &#191;Cu&#225;l fue el momento clave que te llev&#243; a crear SQLite, y qu&#233; problemas espec&#237;ficos estabas tratando de resolver en ese momento?</strong></p></blockquote><p>Quer&#237;a una biblioteca de base de datos SQL que pudiera vincular con mi aplicaci&#243;n y que pudiera leer y escribir contenido directamente desde el disco en lugar de enviar mensajes de ida y vuelta a un proceso de servidor separado. No pude encontrar tal biblioteca, as&#237; que la escrib&#237; yo mismo y la llam&#233; SQLite. </p><p>Estaba trabajando como programador freelance. Uno de los problemas que me hab&#237;an contratado para resolver involucraba un programa para encontrar soluciones aproximadas &#243;ptimas a un problema de grafos NP-completo. El &#8220;grafo&#8221; necesitaba leerse de una base de datos Informix. Funcion&#243; bien la mayor&#237;a del tiempo. Pero a veces la base de datos Informix estar&#237;a ca&#237;da y cuando el cliente hac&#237;a doble clic en mi aplicaci&#243;n, mi aplicaci&#243;n mostraba un cuadro de di&#225;logo de error que dec&#237;a &#8220;No se puede conectar a la base de datos&#8221;. No hab&#237;a nada que mi aplicaci&#243;n pudiera hacer al respecto, ya que el problema era externo a la aplicaci&#243;n. Sin embargo, como era mi aplicaci&#243;n la que entregaba el mensaje de error, yo recib&#237;a el ticket de problemas. </p><p>Pens&#233;: &#8220;Si pudiera leer el contenido de la base de datos directamente desde el disco, entonces mi aplicaci&#243;n no depender&#237;a de un servidor externo y este problema no surgir&#237;a&#8221;. </p><p>El cliente no aprob&#243; esta idea, as&#237; que no implement&#233; SQLite como parte de ese contrato. Comenc&#233; a escribir SQLite unos meses despu&#233;s, en mi propio tiempo. El primer c&#243;digo se verific&#243; el 2000-05-29.</p><blockquote><p><strong>(2) &#191;C&#243;mo logr&#243; SQLite una adopci&#243;n tan amplia en la industria, y qu&#233; factores crees que contribuyeron a su &#233;xito?</strong></p></blockquote><p>Nunca fue parte de mi plan de carrera ser un &#8220;chico de bases de datos&#8221;. Puse el c&#243;digo fuente de SQLite en internet como una curiosidad, pensando que otras personas podr&#237;an encontrarlo interesante. Nunca anticip&#233; el nivel de inter&#233;s que provocar&#237;a. Nunca pens&#233; que SQLite se convertir&#237;a en un negocio. </p><p>De hecho, durante los primeros dos o tres a&#241;os de su existencia, SQLite fue un proyecto de c&#243;digo abierto poco conocido y raramente utilizado. Segu&#237; mejor&#225;ndolo, poco a poco, porque disfruto escribiendo y trabajando en software. Pero SQLite no se utilizaba ampliamente. Luego, a partir de alrededor de 2003, comenc&#233; a recibir llamadas de las principales empresas tecnol&#243;gicas de la &#233;poca (AOL, Motorola, Symbian) pidiendo mejoras y soporte para SQLite para que pudieran utilizarlo en sus productos. Me dije a m&#237; mismo: &#8220;&#191;Qu&#233;? &#191;Puedes realmente ganar dinero con software de c&#243;digo abierto?&#8221; SQLite se convirti&#243; en un negocio a tiempo parcial en ese momento. Un par de a&#241;os m&#225;s tarde, Android y iPhone salieron al mercado, y en ese punto SQLite se estableci&#243; firmemente en el paisaje de software para dispositivos embebidos. Dej&#233; de hacer trabajo de desarrollo freelance y comenc&#233; a dedicar toda mi atenci&#243;n a SQLite. </p><p>&#191;Por qu&#233; fue exitoso SQLite? No lo s&#233;, pero mi conjetura es que SQLite es simple:</p><ul><li><p>SQLite proporciona un modelo m&#225;s simple para una base de datos relacional que los motores de base de datos cliente-servidor como PostgreSQL y MySQL, ya que no hay proceso de servidor que mantener en ejecuci&#243;n. Lee y escribe directamente desde el disco. Si el sistema de archivos funciona, entonces puedes acceder a tus datos. No dependes de un servidor separado.</p></li><li><p>La base de datos SQLite es un solo archivo en el disco. Esto simplifica la gesti&#243;n de m&#250;ltiples bases de datos. Es trivial hacer una copia de seguridad de la base de datos (simplemente copia el archivo) o transferir la base de datos de una m&#225;quina a otra. Es mucho m&#225;s f&#225;cil para los desarrolladores pensar en ella porque hay un solo archivo en el disco que pueden se&#241;alar y decir &#8220;Esta es la base de datos&#8221;.</p></li><li><p>La biblioteca SQLite no tiene dependencias externas m&#225;s all&#225; de la biblioteca C est&#225;ndar, por lo que es simple de implementar. Adem&#225;s, la biblioteca SQLite es compacta y utiliza poca memoria en comparaci&#243;n con las soluciones de base de datos cliente-servidor.</p></li></ul><p>En resumen, SQLite &#8220;simplemente funciona&#8221;. Los desarrolladores de aplicaciones no necesitan preocuparse tanto por su soluci&#243;n de almacenamiento de datos y pueden enfocar m&#225;s esfuerzo mental en resolver problemas para sus clientes.</p><blockquote><p><strong>(3) &#191;C&#243;mo surgi&#243; Fossil SCM, y qu&#233; diferencias de dise&#241;o tiene en comparaci&#243;n con Git?</strong></p></blockquote><p>El primer c&#243;digo para SQLite se almacen&#243; en <a href="https://en.wikipedia.org/wiki/Concurrent_Versions_System">CVS</a>, que era el sistema de control de versiones predominante en esa &#233;poca. CVS era genial (mejor que otros sistemas de control de versiones contempor&#225;neos y mucho mejor que los sistemas que vinieron antes) pero ten&#237;a sus limitaciones. As&#237; que comenc&#233; a buscar alternativas. </p><p>Me inspir&#233; en <a href="https://en.wikipedia.org/wiki/Monotone_(software)">Monotone</a>, que hab&#237;a llamado mi atenci&#243;n porque utilizaba una base de datos SQLite como formato de archivo de repositorio. Probablemente habr&#237;a movido SQLite a Monotone excepto por el hecho de que necesitaba un puerto TCP personalizado y protocolo de comunicaci&#243;n cliente-servidor. Esto fue antes de la disponibilidad generalizada de servidores virtuales privados (VPS) y as&#237; que mi sitio web se hac&#237;a a trav&#233;s de hosting compartido y necesitaba un sistema donde pudiera ejecutar el lado del servidor como un script CGI. Comenc&#233; a experimentar con estas ideas en 2005. Git y Mercurial tambi&#233;n hab&#237;an comenzado en ese momento y los examin&#233; tambi&#233;n. Pero, al igual que con Monotone, no ve&#237;a c&#243;mo ejecutarlos como CGI. Al mismo tiempo, tambi&#233;n ten&#237;a un contrato con el fabricante de avi&#243;nica Rockwell Collins y ellos me presentaron <a href="https://en.wikipedia.org/wiki/DO-178B">DO-178B</a>, que estudi&#233; cuidadosamente. No sent&#237; que ni Git ni Mercurial cumplieran con los requisitos de gesti&#243;n de configuraci&#243;n de software de DO-178B. Al no encontrar un sistema existente que se ajustara a mis necesidades, una vez m&#225;s me dispuse a escribir mi propio. </p><p>Fossil es como Git (y Monotone y Mercurial) en que representa la historia de un proyecto de software como un grafo dirigido ac&#237;clico, donde cada confirmaci&#243;n es un nodo. Los nodos se identifican mediante un hash criptogr&#225;fico y, por lo tanto, son inmutables. As&#237; que el modelo de datos subyacente es conceptualmente el mismo. </p><p>Fossil se diferencia de Git de muchas maneras:</p><ol><li><p>El formato de los artefactos individuales (&#8220;objetos&#8221; en la jerga de Git) es completamente diferente.</p></li><li><p>Los repositorios de Fossil se sincronizan sobre HTTP/HTTPS ordinarios. El servidor se puede ejecutar utilizando CGI.</p></li><li><p>El repositorio de Fossil se almacena en una base de datos SQLite (como Monotone), en lugar de como una pila de archivos m&#225;s el formato de archivo &#8220;packfile&#8221; personalizado de Git.</p></li><li><p>Fossil es un ejecutable aut&#243;nomo, lo que lo hace f&#225;cil de instalar, actualizar y/o desinstalar.</p></li><li><p>Adem&#225;s de control de versiones, Fossil tambi&#233;n admite tickets de problemas distribuidos, wiki y documentaci&#243;n. Y tiene un servicio de chat de desarrolladores integrado.</p></li><li><p>Inspirado en DO-178B, Fossil pone un gran &#233;nfasis en mantener un registro de auditor&#237;a inmutable y promover la conciencia situacional de los desarrolladores.</p></li></ol><p>Un beneficio no intencionado de escribir Fossil es que tambi&#233;n sirve como una plataforma de prueba y &#8220;<a href="https://en.wikipedia.org/wiki/Eating_your_own_dog_food">dogfooding</a>&#8221; excelente para SQLite. Cuando estoy trabajando en Fossil, tengo que utilizar SQLite de la misma manera que cualquier otro desarrollador. Esto me fuerza a mirar la API de SQLite desde una perspectiva diferente a cuando estoy trabajando en SQLite mismo. Me ayuda a empatizar con las luchas de otros desarrolladores que est&#225;n tratando de integrar SQLite en sus productos, y a ser m&#225;s simp&#225;tico con las solicitudes de mejoras de API. He agregado muchas caracter&#237;sticas &#250;tiles en SQLite simplemente porque las necesitaba yo mismo para utilizarlas en Fossil. SQLite es un producto mejor porque lo uso en la implementaci&#243;n de Fossil.</p><blockquote><p><strong>(4) La opini&#243;n general entre los desarrolladores de software es que tanto SQLite como Fossil SCM tienen un buen dise&#241;o, no s&#243;lo en t&#233;rminos de facilidad de uso, sino tambi&#233;n de implementaci&#243;n. &#191;Cu&#225;les son los principios de dise&#241;o de software que crees que son relevantes para hacer buen software?</strong></p></blockquote><ul><li><p>(A) La complejidad es tu enemiga. Mant&#233;n las cosas lo m&#225;s simples posible.</p></li><li><p>(B) Evita utilizar la primera soluci&#243;n que se te ocurra. Si piensas un poco m&#225;s en el problema, a menudo encontrar&#225;s una aproximaci&#243;n mejor.</p></li><li><p>(C) Documenta tu c&#243;digo, especialmente las definiciones de estructuras de datos y variables, con comentarios cuidadosos. Escribe el c&#243;digo de manera que pueda ser le&#237;do, entendido y mantenido por otros. Explica las cosas claramente. No, el prop&#243;sito de esa subrutina que acabas de escribir o esa variable que acabas de declarar <strong>no </strong>es obvio desde su nombre.</p></li><li><p>(D) Dise&#241;a para la prueba. No es suficiente escribir software que funcione; tambi&#233;n debes escribir software que sea f&#225;cil de verificar, que pueda ser f&#225;cilmente probado para funcionar.</p></li></ul><blockquote><p><strong>(5) &#191;Qu&#233; proyectos o &#225;reas de investigaci&#243;n est&#225;s explorando actualmente, y c&#243;mo ves el futuro de la tecnolog&#237;a de bases de datos?</strong></p></blockquote><p>Siempre tendremos bases de datos. Como dice el viejo dicho: &#8220;Sin datos, o eres afortunado o est&#225;s equivocado&#8221;. La pregunta deber&#237;a ser: &#8220;&#191;C&#243;mo ser&#225;n las bases de datos en el futuro?&#8221; Creo que SQL estar&#225; aqu&#237; para quedarse. Incluso cuando empec&#233; a escribir SQLite, segu&#237;a pensando que SQL estaba m&#225;s relacionado con el soporte de mainframes heredados y que no era m&#225;s que una complicaci&#243;n innecesaria. Pero he llegado a reconocer que SQL realmente tiene algunas ideas inquebrantables: (1) transacciones, (2) abstracci&#243;n de datos y (3) un lenguaje declarativo.</p><p>Tener transacciones es vital para construir sistemas robustos. Si las m&#225;quinas nunca se caen y el poder nunca se corta inesperadamente, entonces tal vez las transacciones no ser&#237;an tan importantes, pero esas cosas suceden.</p><p>Fred Brooks escribi&#243; en <em>The Mythical Man-Month</em> que &#8220;La representaci&#243;n es la esencia de la programaci&#243;n inform&#225;tica&#8221;. Y ten&#237;a raz&#243;n. Es m&#225;s importante obtener la estructura de datos correcta que obtener el c&#243;digo correcto. La estructura de datos puede persistir durante a&#241;os y d&#233;cadas. Resulta que el modelo de datos relacional es una excelente manera de definir las estructuras de datos para la mayor&#237;a de los problemas del mundo real.</p><p>La caracter&#237;stica clave de SQL es que el programador le dice a la m&#225;quina &#8220;qu&#233;&#8221; computar, no &#8220;c&#243;mo&#8221; computarlo. Esto es una inversi&#243;n de la mayor&#237;a de los otros lenguajes de programaci&#243;n, donde el programador especifica un algoritmo y el &#8220;qu&#233; computa esto&#8221; se deja como ejercicio para el lector. Con SQL, el programador no necesita pensar en algoritmos, sino que se enfoca en conceptos de alto nivel. Mientras tanto, una inteligencia artificial integrada en el motor de base de datos (el &#8220;planificador de consultas&#8221;) deduce el mejor algoritmo.</p><p>SQL tiene sus defectos, pero en su n&#250;cleo es un concepto muy poderoso. Hemos visto m&#250;ltiples esfuerzos en las &#250;ltimas d&#233;cadas para reemplazar SQL con conceptos de gesti&#243;n de datos m&#225;s &#8220;modernos&#8221;. Pero todos esos esfuerzos han fracasado, y la gente sigue volviendo a SQL. Creo que SQL estar&#225; aqu&#237; en alguna forma u otra (esperanzadamente, pero no necesariamente incluyendo SQLite) durante muchas d&#233;cadas m&#225;s.</p><blockquote><p><strong>(6) &#191;C&#243;mo ves la industria de desarrollo de software actual con la popularidad de los sistemas de generaci&#243;n de c&#243;digo autom&#225;tico impulsados por inteligencia artificial?</strong></p></blockquote><p>Creo que el potencial de la inteligencia artificial (IA) est&#225; sobrevalorado.</p><p>La IA es ciertamente &#250;til. Recuerda que hay una IA (llamada &#8220;planificador de consultas&#8221;) en el coraz&#243;n de cada motor de base de datos SQL. Estoy seguro de que se encontrar&#225;n nuevos usos para la IA y que las tecnolog&#237;as de IA ser&#225;n un ahorro de tiempo valioso en los pr&#243;ximos a&#241;os. Pero soy esc&#233;ptico sobre las predicciones apocal&#237;pticas para una toma de posesi&#243;n de la IA.</p><p>Me recuerda cuando era ni&#241;o en la d&#233;cada de 1960 y 1970, y los futuristas predijeron que todos tendr&#237;amos helic&#243;pteros privados en lugar de coches, que pronto tendr&#237;amos colonias humanas en la luna, y que toda nuestra ropa ser&#237;a hecha de fibras vegetales para que pudi&#233;ramos usarla una vez y luego tirarla. Me recuerda cuando la gente dec&#237;a que los reactores de fusi&#243;n nuclear har&#237;an que la electricidad fuera tan barata que no valdr&#237;a la pena medirla. Nada de esto se ha cumplido, al menos de momento.</p><p>Recientemente, los tecn&#243;logos han estado prediciendo que los coches pronto ser&#237;an completamente aut&#243;nomos. Parece que la conducci&#243;n totalmente aut&#243;noma est&#225; siempre a dos o tres a&#241;os vista.</p><p>Creo que la IA se desarrollar&#225; de manera similar. Seguro que habr&#225; algunos resultados &#250;tiles. Pero creo que la generaci&#243;n completamente autom&#225;tica de c&#243;digo ser&#225; dif&#237;cil de conseguir. La codificaci&#243;n asistida por IA parece un resultado m&#225;s probable que la generaci&#243;n de c&#243;digo totalmente aut&#243;noma.</p><blockquote><p><strong>(7) Si tuvieras la oportunidad de viajar en el tiempo y dar consejos no t&#233;cnicos a tu yo m&#225;s joven, &#191;qu&#233; ser&#237;a, y por qu&#233; lo consideras importante?</strong></p></blockquote><p>Responder&#233; a una pregunta ligeramente diferente: &#8220;&#191;Qu&#233; consejo dar&#237;as a los j&#243;venes de hoy?&#8221; Mi respuesta: &#8220;<strong>Resuelve m&#225;s problemas de los que creas</strong>&#8221;.</p><p>Hay dos lados en esta ecuaci&#243;n: los problemas que creas y los problemas que resuelves. Minimiza el primero y maximiza el segundo.</p><p>Todo el mundo crea problemas. Consumes comida y agua y aire. Ocupas espacio de vida. Esperas que tu empleador y/o tus clientes te paguen. No puedes evitar crear todos los problemas, pero puedes evitar crear problemas innecesarios. No desperdicies recursos. No seas dif&#237;cil de llevar. No seas dram&#225;tico innecesariamente. No hagas un desastre innecesario.</p><p>Por otro lado, resuelve tantos problemas como puedas. Comienza con peque&#241;as cosas: haz tu cama. Recoge la basura y ponla en la papelera. S&#233; amable con el cajero que te atiende en la tienda. Estas cosas son buenos ejercicios para resolver problemas m&#225;s grandes. Una vez que seas bueno en las peque&#241;as cosas, busca problemas m&#225;s grandes que resolver. Ayuda a tu familia y amigos. Ayuda a tus clientes. Ayuda a la comunidad.</p><p>Si puedes resolver m&#225;s problemas de los que creas, nunca te faltar&#225;n empleo, amigos, amor y felicidad.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://camilocs.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscr&#237;bete ahora&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/camilocs.substack.com/subscribe"><span>Suscr&#237;bete ahora</span></a></p><div><hr></div><h2>Original</h2><blockquote><p><strong>(1) What was the pivotal moment that led you to create SQLite, and what specific problems were you trying to solve at that time?</strong></p></blockquote><p>I wanted an SQL database library that I could link with my application and that could read and write content directly from disk instead of sending messages back and forth to a separate server process. I couldn't find such a library, so I wrote my own and called it SQLite.<br><br>I was working as a freelance programmer.&nbsp;One of the problem I was hired to solve involved a program to find good approximate solutions to a certain NP-complete graph problem.&nbsp; The &#8220;graph&#8221; needed to be read out of an Informix database. That worked great most of the time.&nbsp; But sometimes the Informix database would be down and then when the client would double-click on my application, my application would show an error dialog box that said &#8220;Cannot connect to database&#8221;.&nbsp;There is nothing my application could do about this, since the problem was external to the application.&nbsp;Nevertheless, since it was my application that delivered the error message, I got the trouble ticket.<br><br>I thought: &#8220;If only I could read the database content directly from disk, then my application wouldn't need to depend on an external server and this issue wouldn't arise.&#8221;<br><br>The customer did not approve of this idea, so I did not implement SQLite as part of that contract.&nbsp;I started writing SQLite a few months later, on my own time.&nbsp; The first code was checked in on 2000-05-29.</p><blockquote><p><strong>(2) How did SQLite achieve such widespread adoption in the industry, and what factors do you think contributed to its success?</strong></p></blockquote><p><br>Being a &#8220;database guy&#8221; was never a part of my career plan. I put the SQLite source code out on the internet as a curiosity, thinking other people might find it interesting. I never anticipated the level of interest that it would provoke. I never thought that SQLite would become a business.<br><br>Indeed, for the first two or three years of its existence, SQLite was a scarcely known and seldom used open-source project.&nbsp;I kept improving it, little by little, because I enjoy writing and working on software.&nbsp;But SQLite was not widely deployed.&nbsp; Then beginning in around 2003, I started getting phone calls from the largest tech companies of that time (AOL, Motorola, Symbian) asking for enhancements to and support for SQLite so they could use in their products.&nbsp;I thought to myself:&nbsp; &#8220;What?&nbsp; You can actually make money from open-source software?&#8221;&nbsp;SQLite became a part-time business at that point.&nbsp;A couple more years passed and Android and iPhone came out, and at that point SQLite became firmly established in the software landscape for embedded devices.&nbsp;I stopped doing freelance development work and began devoting all of my attention to SQLite.<br><br>Why was SQLite successful?&nbsp;I don't know, but my guess is because SQLite is simple:</p><ul><li><p>SQLite provides a simpler model for a relational database than client/server database engines like PostgreSQL and MySQL in that there is no server process to keep running.&nbsp; It reads and writes directly from the disk. If the filesystem is working then you can have access to your data.&nbsp; You do not depend on a separate server.</p></li><li><p>SQLite database is a single file on disk. This simplifies management of multiple databases.&nbsp;It is trivial to make a backup of the database (just copy the file) or to transfer the database from one machine to another. It is much easier for developers to think about because there is a single file on disk that they can point to and say &#8220;This is the database&#8221;.</p></li><li><p>The SQLite library has no external dependencies beyond the standard C library, so it is simple to deploy.&nbsp;Furthermore the SQLite library is compact and uses little memory compared to client/server database solutions.</p></li></ul><p>In short, SQLite &#8220;just works&#8221;.&nbsp;Application developers do not need to stress as much about their data storage solution and can focus more mental effort on solving problems for their customers.</p><blockquote><p><strong>(3) How did Fossil SCM emerge, and what design-level differences does it have compared to Git?</strong></p></blockquote><p>The first code for SQLite was stored in <a href="https://en.wikipedia.org/wiki/Concurrent_Versions_System">CVS </a>which was the predominate version control system of that era. CVS was great (better than other contemporary version control systems, and far better than systems that came before) but it did have its limitations. So, I began looking for alternatives.<br><br>I was inspired by <a href="https://en.wikipedia.org/wiki/Monotone_(software)">Monotone </a>which had come to my attention because it used an SQLite database as its repository file format.&nbsp;I probably would have moved SQLite into Monotone except for the fact that it needed a custom TCP port and protocol for client/server communications.&nbsp;This was before the wide-spread availability of Virtual Private Servers (VPSes) and so my websites were done via shared hosting and I needed a system where I could run the server side as a CGI script.&nbsp; I started tinkering with these ideas in 2005.&nbsp; Git and Mercurial had also started up at that time and I looked at them too.&nbsp; But as with Monotone, I didn't see a way to run them as CGI.&nbsp;At about the same time, I also had a contract with avionics manufacturer Rockwell Collins and they introduced me to <a href="https://en.wikipedia.org/wiki/DO-178B">DO-178B</a> which I studied closely. I didn't feel like either Git or Mercurial met the software configuration management requirements of DO-178B.&nbsp; Finding no existing system that met my needs, I once again set out to write my own.<br><br>Fossil is like Git (and Monotone and Mercurial) in that it represents the history of a software project as an acyclic directed graph, where each check-in is a node.&nbsp; Nodes are identified by a cryptographic hash and are thus immutable.&nbsp; So the underlying data model is conceptually the same.<br><br>Fossil differs from Git in many ways:&nbsp; </p><ol><li><p>The format of individual artifacts (&#8220;objects&#8221; in Git-parlance) is completely different.&nbsp; </p></li><li><p>Fossil repositories sync over ordinary HTTP/HTTPS.&nbsp; The server can be run using CGI.&nbsp; </p></li><li><p>The repository for Fossil is stored in an SQLite database (like Monotone), rather than as a pile-of-files plus the bespoke &#8220;packfile&#8221; format of Git.&nbsp; </p></li><li><p>Fossil is a self-contained, standalone executable, making it easy to install, upgrade, and/or uninstall.&nbsp; </p></li><li><p>In addition to version control, Fossil also supports distributed trouble tickets and wiki and documentation.&nbsp; And it has a built-in developer chat service.&nbsp; </p></li><li><p>Inspired by DO-178B, Fossil puts a lot of emphasis on maintaining an immutable audit trail and promoting developer situational awareness.</p></li></ol><p>An unintended benefit of writing Fossil is that it also serves as a great testing and &#8220;<a href="https://en.wikipedia.org/wiki/Eating_your_own_dog_food">dogfooding</a>&#8221; platform for SQLite.&nbsp;When I'm working on Fossil, I have to use SQLite in the same way that any other developer would. This forces me to look at the SQLite API from a different perspective than when I'm working on SQLite itself.&nbsp;It helps me to empathize with the struggles of other developers who are trying to build SQLite into their products, and to be more sympathetic to requests for API enhancements. I've ended up adding a lot of useful features in SQLite simply because I needed them myself for use in Fossil.&nbsp;SQLite is a better product because I use it in the implementation of Fossil.</p><blockquote><p><strong>(4) A general opinion among software developers is that both SQLite and Fossil SCM have good software design, not only in terms of ease of use but also in terms of implementation. What software design principles do you think are relevant for making good software?</strong></p></blockquote><ul><li><p>(A) Complexity is your enemy.&nbsp;Always keep things as simple as possible.</p></li><li><p>(B) Avoid using the first solution that comes to mind.&nbsp;If you think about a problem a little longer, often you will come up with a better approach.</p></li><li><p>(C) Document your code, and especially data structure and variable definitions, very carefully with comments.&nbsp;Write the code such that it can be read, understood, and maintained by others. Explain things clearly.&nbsp;No, the purpose of that subroutine you just wrote or that variable you just declared is <strong>not </strong>obvious from its name!</p></li><li><p>(D) Design for testability.&nbsp;It is not sufficient to write software that works - you also need to write software that is easily verified, that can be easily proven to work.</p></li></ul><blockquote><p><strong>(5) What projects or areas of research are you currently exploring, and how do you see the future of database technology?</strong></p></blockquote><p>We will always have databases. As the old saying goes: &#8220;Without data, you are either lucky or you are wrong.&#8221;&nbsp;The question should be: &#8220;What will databases look like in the future?&#8221;<br><br>I think that SQL is here for the long term.&nbsp;I didn't used to think that way.&nbsp;Even when I first started writing SQLite, I was still of the opinion that SQL was more about mainframe legacy support and was just an unnecessary complication.&nbsp;But I have since come to recognize that SQL really does have some unstoppable ideas:&nbsp; (1) Transactions, (2) Data abstraction, and (3) A declarative language.<br><br>Having transactions is vital to building robust systems.&nbsp;If machines never crashed and the power never went out unexpectedly, then perhaps transactions would not be as important, but those things do happen.<br><br>Fred Brooks wrote in &#8220;The Mythical Man-Month&#8221; that &#8220;Representation is the essence of computer programming.&#8221;&nbsp;And he was spot on.&nbsp;It is more important to get your data structure right than to get the code right.&nbsp;The code can be replaced, but data structures linger for years and decades.&nbsp;It turns out (and this was a big surprise to me) that the relational data model is great way to define the data structures for most real-world problems.<br><br>The key feature of SQL is that the programmer tells the machine &#8220;what&#8221; to compute, not &#8220;how&#8221; to compute it.&nbsp;This is an inversion of most other programming language where the programmer specifies an algorithm and the &#8220;what does this compute&#8221; aspect as left as an exercise to the reader. With SQL, the programmer does not need to think about algorithms, but instead focuses on higher-level concepts. Meanwhile, an AI embedded inside the database engine (the &#8220;query planner&#8221;) deduces the best algorithm.<br><br>SQL has its warts, but at its core it is a very powerful concept.&nbsp;We've seen multiple efforts over the past few decades to replace SQL with newer, more &#8220;modern&#8221;, data management concepts.&nbsp;But all those efforts have fallen flat, and people keep coming back to SQL.&nbsp;I think SQL will be around in some form or another (hopefully, but not necessarily including SQLite) for many decades to come.</p><blockquote><p><strong>(6) How do you see the current software development industry with the popularity of AI-powered automatic code generation systems?</strong></p></blockquote><p>I think the potential of AI is over-hyped.<br><br>AI is certainly useful.&nbsp; Remember, there is an AI (called the &#8220;query planner&#8221;) at the heart of every SQL database engine.&nbsp; I'm sure new uses for AI will be found, and that AI technologies will prove to be an invaluable time saver in coming years.&nbsp;But I'm skeptical of the apocalyptic predictions for an AI take-over.<br><br>I remember when I was a kid in the 1960s and 1970s, futurists were predicting that everybody would have private helicopters rather than cars, that we would soon have human colonies on the moon, and that all our clothing would be made from plant fibers such that you wear an outfit once and then toss it away.&nbsp; I remember people saying that nuclear fusion reactors would make electricity so plentiful that it would be too cheap to meter.&nbsp; None of this has come to pass, at least not yet.<br><br>More recently, technologists have been predicting that cars would soon be fully autonomous.&nbsp;It seems like full autonomous driving is always just two or three years away.<br><br>Untold billions of dollars of research has gone into these things, but it turned out the end goal is more difficult than originally estimated.&nbsp;I'm guessing that AI will play out similarly.&nbsp; Sure, there will be some useful results.&nbsp;But I think that full automatic code generation will prove to be elusive.&nbsp;AI-assisting coding seems a more likely outcome than fully autonomous code generation.</p><blockquote><p><strong>(7) If you had the opportunity to travel back in time and give non-technical advice to your younger self, what would it be, and why do you consider it important?</strong></p></blockquote><p>I'll answer a slightly different question: &#8220;What advice do you give to younglings today?&#8221; My answer: &#8220;Solve more problems than you create.&#8221;<br><br>There two sides to this inequality:&nbsp;The problems you create and the problems that you solve.&nbsp; Minimize the first and maximize the second.<br><br>Everyone creates problems. You consume food and water and air.&nbsp;You take of living space.&nbsp; You expect your employer and/or your customers to pay you. You cannot avoid creating all problems, but you can avoid creating unnecessary problems.&nbsp;Don't waste resources.&nbsp;Don't be hard to get along with.&nbsp;Don't pick unnecessary fights.&nbsp;Don't be unnecessarily dramatic.&nbsp;Don't make an unnecessary mess.<br><br>On the other side, solve as many problems as you can.&nbsp;Start small:&nbsp;Make up your bed.&nbsp; Pick up litter and put in in the waste can.&nbsp;Be kind to the clerk who is ringing up your purchase at the market.&nbsp;These things are good practice for bigger problems. Once you get good at the small things, look for larger problems that your family or friends or neighbors or clients or customers are having and devise innovative solutions for solving those problem.&nbsp;Problem solving is an acquired and a perishable skill.&nbsp;Keep practicing and improving.<br><br>If you can consistently solve more problems than you create, you will never lack for employment, friends, love, and happiness.</p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>La versi&#243;n traducida se realiz&#243; usando Llama 3 y DeepL. Tambi&#233;n doy las gracias a Oscar Fernandez, por indicarme los errores en la traducci&#243;n.</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[Un programador extraviado]]></title><description><![CDATA[&#201;l ahora no quiere programar.]]></description><link>https://camilocs.substack.com/p/un-programador-extraviado</link><guid isPermaLink="false">https://camilocs.substack.com/p/un-programador-extraviado</guid><dc:creator><![CDATA[Camilo Chacón Sartori]]></dc:creator><pubDate>Wed, 01 May 2024 19:35:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!JLSC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F347253d7-926c-4f44-ae35-123466d366ee_4995x3330.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>&#201;l ahora no quiere programar. De hacer videos en la comodidad de su s&#243;tano, abrazado a una imbebible cerveza, su vida no ten&#237;a preocupaciones. As&#237; que se propuso ser escritor. Pero no un escritor de c&#243;digo, sino de palabras. De esas palabras que le son esquivas &#8212;no s&#233; si el c&#243;digo&#8212;. Y YouTube no era suficiente para &#233;l; quiz&#225; pens&#243;: &#8220;Se me da bien crear videos&#8221; y aqu&#237; su conclusi&#243;n, &#8220;escribir debe ser lo mismo&#8221;. Sin embargo, y aunque parezca sorprendente, s&#237;, lo logr&#243;. Aun cuando con resultados inesperados. En esta entrada analizo al &#8220;Programador Extraviado&#8221; junto a su nuevo libro. </p><p>El Programador Extraviado (desde ahora PE) public&#243; recientemente un libro de programaci&#243;n. Lo autoedit&#243;. Titulado: &#8220;Aprender a programar con X&#8221;, donde &#8220;X&#8221; es el nombre del un lenguaje de programaci&#243;n que us&#243; en los ejemplos. Hasta aqu&#237; todo bien. Si no fuera porque, repetidamente, como qui&#233;n ha sido atrapado robando y no puede admitir su delito, dice &#8220;Hey, pero es un libro de conceptos, no de un lenguaje de programaci&#243;n&#8221;. Aqu&#237; da inicio a su extrav&#237;o. Pues si a&#241;ade &#8220;X&#8221; al t&#237;tulo, y reclama que su libro no es de &#8220;X&#8221;. Algo confundido lo vemos, o al menos, no tiene la gentileza de evitarle confusiones a sus lectores.</p><p>Me arm&#233; de valor: iba a encontrar su libro aunque tuviera que buscar en el &#250;ltimo rinc&#243;n de la deep web (no iba a pagarlo, claro). No lo encontr&#233;. La vida me hac&#237;a un favor, quiz&#225;. </p><p>Hasta que lo vi en Amazon. As&#237; que me fui a Kindle, di clic en &#8220;leer muestra&#8221; del libro. Y mis dudas se despejaron. El extrav&#237;o era mayor de lo que esperaba. Su prosa era magistral en su pensamiento, parece. Porque yo no lo pod&#237;a detectar. Estaba tan mal escrito, con tantas faltas de ortograf&#237;a, que no tuvo ni la molestia de usar ChatGPT para evitarlas. Su explicaci&#243;n de conceptos era difusa. Era un cript&#243;grafo en ciernes. Es decir, &#161;era un libro de criptograf&#237;a sin &#233;l saberlo! No obstante, a medida que avanzaba en la lectura &#233;sta deca&#237;a. Menos &#233;l. Porque aparec&#237;a su nombre incluso en los ejemplos de c&#243;digo del libro &#8212;no podemos decir que tenga problemas de autoestima&#8212;. Una escritura desprolija, al igual que su pelo, que parec&#237;a haber ocurrido despu&#233;s del primer fin de semana de recibir su sueldo. En el peor bar de la ciudad, consumido por altas dosis de alcohol. Pero ah&#237; est&#225;. Ya es escritor.</p><p>La vida es generosa. PE lo sabe. Y quiere aprovechar el vuelo. Sus perfeccionistas feligreses a&#250;n no lo han detectado y le dan 5 estrellas en Amazon s&#243;lo porque no pueden darle 10. Excepto uno. En Goodreads, un sagaz lector lo atrap&#243; y le dio 1 estrella, y con una rese&#241;a que vuelve generosa esta entrada.</p><p>PE dice que va a continuar escribiendo &#8212;a nuestro pesar&#8212;. Pero no es extra&#241;o. Los escritores &#8212;me incluyo&#8212; tendemos a ser porfiados. No nos rendirnos ante la adversidad. La escritura no puede esperar. Escribir es un compromiso inquebrantable. </p><p>As&#237; pues, s&#243;lo nos queda esperar el nuevo libro de PE; eso s&#237;, recemos, para que esta vez lo escriba sobrio.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!JLSC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F347253d7-926c-4f44-ae35-123466d366ee_4995x3330.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!JLSC!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F347253d7-926c-4f44-ae35-123466d366ee_4995x3330.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!JLSC!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F347253d7-926c-4f44-ae35-123466d366ee_4995x3330.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!JLSC!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F347253d7-926c-4f44-ae35-123466d366ee_4995x3330.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!JLSC!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F347253d7-926c-4f44-ae35-123466d366ee_4995x3330.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!JLSC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F347253d7-926c-4f44-ae35-123466d366ee_4995x3330.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/347253d7-926c-4f44-ae35-123466d366ee_4995x3330.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3118825,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!JLSC!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F347253d7-926c-4f44-ae35-123466d366ee_4995x3330.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!JLSC!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F347253d7-926c-4f44-ae35-123466d366ee_4995x3330.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!JLSC!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F347253d7-926c-4f44-ae35-123466d366ee_4995x3330.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!JLSC!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F347253d7-926c-4f44-ae35-123466d366ee_4995x3330.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://camilocs.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscr&#237;bete ahora&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/camilocs.substack.com/subscribe"><span>Suscr&#237;bete ahora</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Un código siempre cuenta dos historias]]></title><description><![CDATA[El escritor argentino, Ricardo Piglia, ten&#237;a una m&#225;xima a la hora de escribir cuentos: &#171;El cuento siempre cuenta dos historias; el cuento es un relato que encierra un relato secreto, que es la clave de la historia&#187;.]]></description><link>https://camilocs.substack.com/p/un-codigo-siempre-cuenta-dos-historias</link><guid isPermaLink="false">https://camilocs.substack.com/p/un-codigo-siempre-cuenta-dos-historias</guid><dc:creator><![CDATA[Camilo Chacón Sartori]]></dc:creator><pubDate>Mon, 29 Apr 2024 18:18:11 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!LFET!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9bf8f96-f8d3-4fb8-8a5c-2804120ad98d_4000x2250.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>El escritor argentino, Ricardo Piglia, ten&#237;a una m&#225;xima a la hora de escribir cuentos: &#171;El cuento siempre cuenta dos historias; el cuento es un relato que encierra un relato secreto, que es la clave de la historia&#187;. Esto me hizo pensar en que la programaci&#243;n pasa similar, aunque sin el <em>glamour </em>de la literatura. Al programar, intentamos resolver problemas. Algunos tienen esa intenci&#243;n; otros s&#243;lo hacen lo que pueden, que rara vez, o casi nunca, coincide con ese objetivo. S&#233; que, al programar, se hace lo posible; y esa es la segunda historia. Pues la primera todos la conocemos.</p><p>El c&#243;digo encierra un relato secreto. Una historia. Que no es expl&#237;cita, y pocas veces conocida por su autor. Se descubre con las siguientes preguntas: &#191;Podr&#233; resolver el problema? &#191;He podido entender lo qu&#233; me piden? &#191;Tengo el conocimiento para resolverlo? Y, quiz&#225;, todav&#237;a m&#225;s importante: &#191;Tengo el conocimiento para resolverlo <em>bien</em>?</p><p>Por otro lado, la primera historia, tiende a tener un autoenga&#241;o dentro. Elegimos una tecnolog&#237;a, comenzamos a programar, con la esperanza de hacerlo lo m&#225;s r&#225;pido posible, pues se debe terminar, y en inform&#225;tica, siempre se debe ser &#225;gil. Perdemos. Siempre perdemos cuando vamos lento. Y si nos armamos de valor y decidimos ir lento, alguien de &#171;arriba&#187; ya nos har&#225; entrar en raz&#243;n, y volvemos a ir r&#225;pido. Una historia tan familiar.</p><p>Dudar. Criticar. Preguntar. Reflexionar. Son las palabras que tienen el ant&#237;doto a la segunda historia. El ant&#237;doto a <em>nuestras limitaciones</em>. &#201;ste es un problema <em>epist&#233;mico</em>, dir&#237;a un fil&#243;sofo de la computaci&#243;n. &#191;C&#243;mo s&#233; que s&#233;? El &#171;cielo digital&#187; se despeja con m&#225;s informaci&#243;n; eso s&#237;, con buena informaci&#243;n. Los problemas de este tipo se resuelven con informaci&#243;n que es tanto veraz como contrastable. Veraz significa quedarnos con lo que se sostiene por la evidencia; y, contrastable, que nosotros podemos verificar esa evidencia. En inform&#225;tica, la credulidad no es buena aliada. Y, me temo, que tampoco ayuda en ninguna &#225;rea del conocimiento.</p><p>Para descubrir la segunda historia debemos pensar en ella como un problema epist&#233;mico, que es el problema del conocimiento. Un problema que siempre est&#225; ah&#237;. Detr&#225;s de todo lo que programamos, independiente del lenguaje de programaci&#243;n. A veces nos damos cuenta de &#233;l; otras, simplemente no queremos mirarlo. &#191;Por qu&#233; preocuparme por lo que no s&#233; solucionar?</p><div><hr></div><p>A mi lado, mientras escribo en la cafeter&#237;a Sandwichez de la calle Bruc, una fuerte lluvia cae en Barcelona, algo poco com&#250;n en el Mediterr&#225;neo, sobre todo, a la entrada de mayo. Pero como soy chilote: elijo no preocuparme. Me cruzo de brazo y ya. Recordando el dicho, &#171;un chilote no le teme a la lluvia&#187;, pero yo ahora s&#237; le temo. La falta de pr&#225;ctica agota el valor. Adem&#225;s, con la lluvia nada se puede hacer. Uno termina conociendo a su enemigo. Pero esto no tiene nada que ver con la segunda historia. </p><p><em>Con el conocimiento siempre hay algo que hacer.</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!LFET!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9bf8f96-f8d3-4fb8-8a5c-2804120ad98d_4000x2250.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!LFET!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9bf8f96-f8d3-4fb8-8a5c-2804120ad98d_4000x2250.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!LFET!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9bf8f96-f8d3-4fb8-8a5c-2804120ad98d_4000x2250.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!LFET!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9bf8f96-f8d3-4fb8-8a5c-2804120ad98d_4000x2250.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!LFET!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9bf8f96-f8d3-4fb8-8a5c-2804120ad98d_4000x2250.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!LFET!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9bf8f96-f8d3-4fb8-8a5c-2804120ad98d_4000x2250.jpeg" width="1456" height="2588" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b9bf8f96-f8d3-4fb8-8a5c-2804120ad98d_4000x2250.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2588,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3786856,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!LFET!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9bf8f96-f8d3-4fb8-8a5c-2804120ad98d_4000x2250.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!LFET!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9bf8f96-f8d3-4fb8-8a5c-2804120ad98d_4000x2250.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!LFET!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9bf8f96-f8d3-4fb8-8a5c-2804120ad98d_4000x2250.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!LFET!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9bf8f96-f8d3-4fb8-8a5c-2804120ad98d_4000x2250.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://camilocs.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscr&#237;bete ahora&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/camilocs.substack.com/subscribe"><span>Suscr&#237;bete ahora</span></a></p>]]></content:encoded></item><item><title><![CDATA[¿Conciencia computacional?]]></title><description><![CDATA[&#191;Por qu&#233; es tan importante lograr emular la conciencia en un sistema inform&#225;tico?]]></description><link>https://camilocs.substack.com/p/conciencia-computacional</link><guid isPermaLink="false">https://camilocs.substack.com/p/conciencia-computacional</guid><dc:creator><![CDATA[Camilo Chacón Sartori]]></dc:creator><pubDate>Sun, 31 Mar 2024 20:26:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!K6Kr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba71561d-4c72-47c0-9f31-d308c08487da_3712x5568.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>&#191;Por qu&#233; es tan importante lograr emular la conciencia en un sistema inform&#225;tico? Es decir, &#191;Por qu&#233; es crucial alcanzar AGI (Inteligencia Artificial General)?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!K6Kr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba71561d-4c72-47c0-9f31-d308c08487da_3712x5568.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!K6Kr!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba71561d-4c72-47c0-9f31-d308c08487da_3712x5568.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!K6Kr!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba71561d-4c72-47c0-9f31-d308c08487da_3712x5568.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!K6Kr!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba71561d-4c72-47c0-9f31-d308c08487da_3712x5568.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!K6Kr!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba71561d-4c72-47c0-9f31-d308c08487da_3712x5568.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!K6Kr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba71561d-4c72-47c0-9f31-d308c08487da_3712x5568.jpeg" width="430" height="645" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ba71561d-4c72-47c0-9f31-d308c08487da_3712x5568.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2184,&quot;width&quot;:1456,&quot;resizeWidth&quot;:430,&quot;bytes&quot;:1244813,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!K6Kr!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba71561d-4c72-47c0-9f31-d308c08487da_3712x5568.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!K6Kr!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba71561d-4c72-47c0-9f31-d308c08487da_3712x5568.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!K6Kr!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba71561d-4c72-47c0-9f31-d308c08487da_3712x5568.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!K6Kr!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba71561d-4c72-47c0-9f31-d308c08487da_3712x5568.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A mediados del siglo XX comenz&#243; a estar de moda una corriente filos&#243;fica que, a trav&#233;s de la met&#225;fora computador-cerebro, ven&#237;a a decir que los procesos mentales, entre ellos, la conciencia, son meros procesos computacionales. A esto se le conoci&#243; como &#171;teor&#237;a computacional de la mente&#187; o llanamente <a href="https://es.wikipedia.org/wiki/Teor%C3%ADa_computacional_de_la_mente">computacionalismo</a>, una teor&#237;a funcionalista. Sin embargo, &#233;sta teor&#237;a fracas&#243; porque no logr&#243; capturar la complejidad del cerebro humano. Entre sus objeciones m&#225;s famosas se encuentra el experimento mental Habitaci&#243;n china de John Searle, que dice que un computador nunca podr&#225; lograr conciencia porque carece de sem&#225;ntica y un soporte biol&#243;gico, as&#237;, nada m&#225;s puede manipular s&#237;mbolos.<br><br>Pero, los seguidores de esta teor&#237;a a&#250;n siguen ah&#237;.<br><br>Quiz&#225; cabe explicar la conciencia antes. Cuando cada d&#237;a nos despertamos, ya sea con energ&#237;a o cansados, o cuando vemos a un amigo despu&#233;s de mucho tiempo, o cuando recibimos una mala noticia, o cuando nos enamoramos, estamos &#171;viviendo&#187; la conciencia. Como dir&#237;a el fil&#243;sofo de la mente, Gregory Miller, &#171;la conciencia es experiencia&#187;.<br><br>Por eso el experimento mental descrito por Robert Nozick de seres humanos que, luego de implantarles un chip bloqueaba cualquier informaci&#243;n de la conciencia, los trasformaba en &#171;zombies&#187;. Fue popular, pues vino a describir c&#243;mo ser&#237;a un mundo con seres carentes de emociones y de todo tipo de experiencia. Estos pod&#237;an comer, viajar, conversar, pero eran incapaces de sentir nada, porque no son conscientes. A nadie le gustar&#237;a vivir en un mundo as&#237;, espero.<br><br>De hecho, la conciencia se enlaza con valores &#233;ticos. Cuando creemos que un ser vivo no tiene conciencia, nuestro trato suele ser distinto si estamos seguro de que la tiene. &#191;Por qu&#233; nos parece que matar una hormiga no es lo mismo que matar a un perro? Porque sentimos que el perro tiene conciencia, puede alegrarse y sufrir como nosotros, es decir, tiene experiencia.<br><br>Esto se conecta con el antropomorfismo: la tendencia de atribuir caracter&#237;sticas humanas a seres no humanos. Todo en IA est&#225; impregnado con antropomorfismo, al igual que el computacionalismo y la idea que el cerebro es un computador. Las met&#225;foras nos permiten reducir la complejidad de las abstracciones para encontrar algo similar a nosotros. Caemos en el antropomorfismo porque no tenemos el conocimiento suficiente para establecer l&#237;mites claros. Un reciente art&#237;culo trata este tema en detalle: &#171;<a href="https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4738331">Anthropomorphising machines and computerising minds</a>&#187; .<br><br>En fin, quiz&#225; todos los avances de la IA actual (modelos generativos) nunca alcancen un tipo de conciencia humana, pues es una mala met&#225;fora; quiz&#225; y s&#243;lo quiz&#225;, alcance otra cosa, algo igualmente sorprendente, pero que tenga otro nombre: una suerte de &#171;conciencia computacional&#187;.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://camilocs.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscribirse&quot;,&quot;language&quot;:&quot;es&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">&#161;Gracias por leer &#201;rase una vez un algoritmo... ! Suscr&#237;bete gratis para recibir nuevas publicaciones y apoyar mi trabajo.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Escribe tu correo electr&#243;nico..." tabindex="-1"><input type="submit" class="button primary" value="Suscribirse"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Entrevista a Maarten van Steen]]></title><description><![CDATA[Investigador en sistemas distribuidos, y principal autor del libro Distributed Systems.]]></description><link>https://camilocs.substack.com/p/entrevista-a-maarten-van-steen</link><guid isPermaLink="false">https://camilocs.substack.com/p/entrevista-a-maarten-van-steen</guid><dc:creator><![CDATA[Camilo Chacón Sartori]]></dc:creator><pubDate>Mon, 04 Mar 2024 20:32:01 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!lD5n!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3da665a-a80a-4c21-9112-6cbfad5cd6bf_768x1026.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>Esta entrevista fue originalmente realizada en ingl&#233;s por email. Por tanto, primero se ofrece una traducci&#243;n al espa&#241;ol, y al final, se encuentra la versi&#243;n original.</p><p><em>This interview was originally conducted in English by email. The Spanish translation is provided first, followed by the original version.</em></p></blockquote><p><a href="https://www.distributed-systems.net/index.php/me/">Maarten van Steen</a> es un destacado acad&#233;mico y experto en inform&#225;tica, con una s&#243;lida formaci&#243;n en Matem&#225;ticas Aplicadas. Obtuvo su Maestr&#237;a en esta disciplina en 1983 en la Universidad de Twente, donde se destac&#243; por su estudio en optimizaci&#243;n combinatoria y teor&#237;a de grafos. Posteriormente, en 1988, complet&#243; su doctorado en inform&#225;tica en la Universidad de Leiden, centr&#225;ndose en la modelizaci&#243;n de sistemas operativos y realizando contribuciones significativas en esta &#225;rea. Despu&#233;s de su graduaci&#243;n, Maarten trabaj&#243; durante aproximadamente cinco a&#241;os en investigaciones para TNO antes de regresar al &#225;mbito acad&#233;mico en 1993, donde continu&#243; su carrera en instituciones como la Universidad Erasmus de Rotterdam y la Universidad VU de &#193;msterdam. En reconocimiento a sus logros acad&#233;micos, fue nombrado profesor titular en 2002 y jefe del departamento de Ciencias de la Computaci&#243;n en 2010. En 2015, Maarten se uni&#243; a la Universidad de Twente, donde contin&#250;a desempe&#241;ando un papel destacado en el campo de la inform&#225;tica.</p><p>Adem&#225;s, es autor de multiples libros, entre los cuales est&#225;n: </p><ul><li><p><a href="https://www.distributed-systems.net/index.php/books/computer-and-network-organization/">Computer and Network Organization</a> (1995).</p></li><li><p><a href="https://www.distributed-systems.net/index.php/books/gtcn/">Graph Theory and Complex Networks</a> (2010).</p></li><li><p>Y su libro m&#225;s popular: <a href="https://www.distributed-systems.net/index.php/books/ds4/">Distributed Systems</a> (2024, cuarta edici&#243;n, versi&#243;n 4.02). Este ha sido influyente en el campo de la inform&#225;tica y se ha utilizado como material educativo en todo el mundo.</p></li></ul><div><hr></div><p>Una de las cualidades de Maarten es su capacidad de explicar temas complejos de una manera clara, y sin evadir la rigurosidad. Adem&#225;s me gustar&#237;a destacar su gentileza para conmigo al aceptar esta entrevista.</p><p>&#161;Espero la disfruten!<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!lD5n!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3da665a-a80a-4c21-9112-6cbfad5cd6bf_768x1026.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!lD5n!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3da665a-a80a-4c21-9112-6cbfad5cd6bf_768x1026.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!lD5n!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3da665a-a80a-4c21-9112-6cbfad5cd6bf_768x1026.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!lD5n!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3da665a-a80a-4c21-9112-6cbfad5cd6bf_768x1026.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!lD5n!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3da665a-a80a-4c21-9112-6cbfad5cd6bf_768x1026.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!lD5n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3da665a-a80a-4c21-9112-6cbfad5cd6bf_768x1026.jpeg" width="570" height="761.484375" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d3da665a-a80a-4c21-9112-6cbfad5cd6bf_768x1026.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1026,&quot;width&quot;:768,&quot;resizeWidth&quot;:570,&quot;bytes&quot;:107153,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!lD5n!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3da665a-a80a-4c21-9112-6cbfad5cd6bf_768x1026.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!lD5n!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3da665a-a80a-4c21-9112-6cbfad5cd6bf_768x1026.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!lD5n!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3da665a-a80a-4c21-9112-6cbfad5cd6bf_768x1026.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!lD5n!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3da665a-a80a-4c21-9112-6cbfad5cd6bf_768x1026.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Imagen extra&#237;da de <a href="https://people.utwente.nl/m.r.vansteen">https://people.utwente.nl/m.r.vansteen</a>.</figcaption></figure></div><h2>Versi&#243;n traducida</h2><blockquote><p><strong>(1) Eres coautor del libro </strong><em><strong>Distributed Systems</strong></em><strong>, que ahora est&#225; en su cuarta edici&#243;n (2024). &#191;C&#243;mo surgi&#243; la idea de escribir este libro?</strong></p></blockquote><p>Hace unos a&#241;os, en 1995, me un&#237; al grupo de <a href="https://es.wikipedia.org/wiki/Andrew_S._Tanenbaum">Andy Tanenbaum</a> en la Vrije Universiteit de &#193;msterdam como profesor asistente. Un a&#241;o m&#225;s o menos despu&#233;s, comenc&#233; a ense&#241;ar sistemas distribuidos utilizando su libro <em>Distributed Operating Systems</em>. Aunque eso funcion&#243; bastante bien, despu&#233;s de un tiempo comenc&#233; a notar que los estudiantes ten&#237;an dificultades para ver el panorama general. Adem&#225;s, despu&#233;s de unos pocos a&#241;os, algunos temas estaban quedando obsoletos. Lo m&#225;s importante es que hab&#237;a demasiado &#233;nfasis en los sistemas operativos, mientras que los verdaderos desaf&#237;os radican en las cosas que eran independientes de los sistemas operativos. Decidimos escribir un nuevo libro enfocado &#250;nicamente en sistemas distribuidos. Para m&#237;, los sistemas distribuidos caen en la categor&#237;a de cosas complejas. Como siempre les explicaba a los estudiantes: si cambias algo, es posible que comience a afectar en alg&#250;n lugar donde no lo esperar&#237;as. Hay muchas interdependencias que deben considerarse. Entender esas interdependencias es, para m&#237;, realmente de qu&#233; se tratan los sistemas distribuidos. Esa es la raz&#243;n por la que elegimos tomar diferentes perspectivas: procesos, comunicaci&#243;n, coordinaci&#243;n, etc. El libro ha estado disponible en varias ediciones durante m&#225;s de 20 a&#241;os y a&#250;n se necesita. Es imposible explicar todo sobre sistemas distribuidos en un solo libro, pero ciertamente como introducci&#243;n, todav&#237;a creo que el libro llena un vac&#237;o importante. Hay otros buenos libros ah&#237; fuera, pero algunos de ellos realmente parecen una colecci&#243;n de temas aparentemente elegidos al azar. Eso no es bueno para un libro de texto, en mi opini&#243;n.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!3dFu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35181900-e0a1-4377-af7b-ba102113396b_540x666.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!3dFu!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35181900-e0a1-4377-af7b-ba102113396b_540x666.png 424w, /__u/substackcdn.com/image/fetch/$s_!3dFu!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35181900-e0a1-4377-af7b-ba102113396b_540x666.png 848w, /__u/substackcdn.com/image/fetch/$s_!3dFu!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35181900-e0a1-4377-af7b-ba102113396b_540x666.png 1272w, /__u/substackcdn.com/image/fetch/$s_!3dFu!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35181900-e0a1-4377-af7b-ba102113396b_540x666.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!3dFu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35181900-e0a1-4377-af7b-ba102113396b_540x666.png" width="346" height="426.73333333333335" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/35181900-e0a1-4377-af7b-ba102113396b_540x666.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:666,&quot;width&quot;:540,&quot;resizeWidth&quot;:346,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Distributed Systems 4th edition - DISTRIBUTED-SYSTEMS.NET&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Distributed Systems 4th edition - DISTRIBUTED-SYSTEMS.NET" title="Distributed Systems 4th edition - DISTRIBUTED-SYSTEMS.NET" srcset="/__u/substackcdn.com/image/fetch/$s_!3dFu!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35181900-e0a1-4377-af7b-ba102113396b_540x666.png 424w, /__u/substackcdn.com/image/fetch/$s_!3dFu!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35181900-e0a1-4377-af7b-ba102113396b_540x666.png 848w, /__u/substackcdn.com/image/fetch/$s_!3dFu!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35181900-e0a1-4377-af7b-ba102113396b_540x666.png 1272w, /__u/substackcdn.com/image/fetch/$s_!3dFu!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35181900-e0a1-4377-af7b-ba102113396b_540x666.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Una cosa con la que estamos satisfechos es hacer que el libro est&#233; disponible en l&#237;nea de forma <a href="https://www.distributed-systems.net/index.php/books/ds4/">gratuita</a>. Simplemente permite que las personas comiencen con un presupuesto bajo. Junto con un conjunto extenso de diapositivas que cualquier profesor puede modificar seg&#250;n sus propias necesidades, lo que queda es concentrarse principalmente en el contenido. Adem&#225;s, cualquier error se puede corregir f&#225;cilmente y poner a disposici&#243;n al instante. Tambi&#233;n lo vendemos a trav&#233;s de Amazon a un precio bajo, y con su sistema actual, incluso puedo actualizar las versiones f&#237;sicas, lo que me permite mantener la copia digital y f&#237;sica sincronizadas. Esta autoedici&#243;n realmente es &#250;til para que las cosas avancen.</p><blockquote><p><strong>(2) &#191;Cu&#225;les consideras que son los desaf&#237;os m&#225;s importantes en los sistemas distribuidos hoy y en el futuro? &#191;Hay alg&#250;n nuevo principio que pueda surgir?</strong></p></blockquote><p>Esa es una dif&#237;cil. Mi propia investigaci&#243;n siempre se ha concentrado en los problemas de escalabilidad. Dise&#241;ar para la escalabilidad no es f&#225;cil: parece que tenemos esta tendencia a complicar demasiado las cosas. Desde esta perspectiva, un gran desaf&#237;o real es mantener las cosas tan simples como sea posible (pero no demasiado simples). Creo firmemente que solo las cosas simples y basadas en principios pueden escalar. Esto tambi&#233;n significa que no soy un gran fan de las optimizaciones de rendimiento, o al menos no hasta que se haya implementado el dise&#241;o m&#225;s simple que funcione. Como se dijo, para muchos de nosotros, mantenernos alejados de las optimizaciones y reflexionar sobre c&#243;mo podemos simplificar a&#250;n m&#225;s los dise&#241;os es un desaf&#237;o. Puede ser el mayor desaf&#237;o para aquellos que desarrollan sistemas distribuidos.</p><p>Para dar un ejemplo. Hay mucho revuelo sobre la computaci&#243;n edge. La mayor parte de ese revuelo se trata de c&#243;mo podemos implementar mejor los sistemas edge. Esto a menudo se trata de optimizaci&#243;n. Sin embargo, cuando lo piensas, tambi&#233;n podemos preguntarnos qu&#233; problema realmente resuelve la computaci&#243;n edge. Muchas personas mencionan la privacidad, la eficiencia energ&#233;tica, el uso del ancho de banda y dem&#225;s. Sin embargo, yo dir&#237;a que la computaci&#243;n edge puede contribuir a mejorar estas cosas (aunque la eficiencia energ&#233;tica es discutible). Para m&#237;, el mejor argumento para la computaci&#243;n edge es que la necesitamos cuando es dif&#237;cil vencer a la Madre Naturaleza, y eso pr&#225;cticamente solo ocurre cuando hay problemas de latencia. Creo que es justo decir que los problemas de ancho de banda siempre son de naturaleza temporal; lo mismo ocurre con la conectividad (con notables excepciones, como en aplicaciones espaciales). Proteger la privacidad manteniendo las cosas locales no tiene sentido para m&#237; (aunque reconozco que su realizaci&#243;n puede ser algo m&#225;s simple). Entonces, &#191;por qu&#233; molestarse tanto con la computaci&#243;n edge? Desde la perspectiva de la computaci&#243;n en la nube, introducida ya en 2009, optimizar el edge no parece un tema de alta prioridad. Lo que s&#237; importa, y es un tema dif&#237;cil, es cruzar los l&#237;mites administrativos. Y s&#237;, esta es una de las cuestiones de escalabilidad ya mencionadas por <a href="https://viterbi.usc.edu/directory/faculty/Neuman/B">Clifford Neuman</a> en la d&#233;cada de 1990.</p><p>Una cosa que he estado considerando agregar como principio es el mantenimiento. Los sistemas distribuidos no se apagan (bueno, normalmente hablando). Siempre est&#225;n en funcionamiento, y mientras lo hacen, las cosas deben actualizarse, reemplazarse, lo que sea. Los componentes tambi&#233;n se rompen, y ser&#237;a conveniente si pudieras predecir d&#243;nde suceder&#237;a eso. A&#250;n no he desarrollado una imagen razonable para incluir esto en el libro como un principio separado. Pero quiz&#225;s en la 5&#170; edici&#243;n.</p><p>En resumen: dise&#241;ar para la simplicidad y con ella para la escalabilidad es y sigue siendo, para m&#237;, el mayor desaf&#237;o. Lo que ayuda a mantenerse en el camino correcto es preguntarnos cu&#225;l es el problema que estamos tratando de resolver. Intentemos evitar trabajar en tecnolog&#237;a por el bien de la tecnolog&#237;a, aunque sea tan divertido. En este sentido, puedes entender que no soy un gran fan de las blockchains.</p><blockquote><p><strong>(3) Con la popularidad de la IA y sus modelos generativos, &#191;cree que este campo podr&#237;a influir en la investigaci&#243;n en sistemas distribuidos, creando mecanismos para la adaptabilidad, la privacidad o los algoritmos distribuidos autogenerados?</strong></p></blockquote><p>Bueno, creo que acabas de dar una respuesta positiva a tu propia pregunta. Dicho esto, no me queda claro cu&#225;l es el verdadero poder de la IA (generativa), en el sentido de que a&#250;n tenemos que ver qu&#233; tan confiable es para generar soluciones que funcionen. A veces sospecho que una vez que superemos nuestro propio asombro, notaremos varias fallas profundas que son dif&#237;ciles de mitigar. La IA sigue siendo IA estrecha: buena para hacer una cosa. A menudo, todav&#237;a tenemos que descubrir qu&#233; tan robustos son los an&#225;lisis y las soluciones. Sin embargo, soy optimista, pero no me preguntes todav&#237;a c&#243;mo se utilizar&#225; la IA para los sistemas distribuidos. Como primer paso, veo mucha promesa en el mantenimiento predictivo basado en IA, un tema en el que <a href="https://en.wikipedia.org/wiki/%C3%96zalp_Babao%C4%9Flu">Ozalp Babaoglu</a> ha estado trabajando, como uno de los primeros, de hecho.</p><blockquote><p><strong>(4) Tienes un video titulado &#171;Dos perspectivas sobre el futuro de las ciencias de la computaci&#243;n&#187; (</strong><em><strong><a href="https://www.youtube.com/watch?v=EOuGmRXsb4g">Two perspectives on the future of computer sciences</a></strong></em><strong>) donde explicas una perspectiva integrada de la computaci&#243;n con otras &#225;reas del conocimiento. Ahora, con los avances en el campo de la IA, &#191;ha cambiado o se ha expandido de alguna manera tu perspectiva sobre el futuro de las ciencias de la computaci&#243;n?</strong></p></blockquote><p>Una cosa que mencion&#233; en ese video fue el cambio del n&#250;cleo de las ciencias de la computaci&#243;n desde los temas &#171;tradicionales&#187; de las ciencias de la computaci&#243;n (algoritmos, sistemas, lenguajes) hacia la IA. Ahora preveo que las ciencias de la computaci&#243;n tendr&#225;n que mirar mucho m&#225;s hacia los temas para hacer que las soluciones de IA funcionen. Por ejemplo, sospecho que necesitaremos alternativas para nuestras computadoras de Von Neumann, que actualmente nos permiten solo simular modelos de IA. &#191;Qu&#233; significar&#237;a esto para nuestras pr&#225;cticas de computaci&#243;n? &#191;Para nuestro desarrollo de sistemas?</p><p>Volviendo a los problemas de escalabilidad, tambi&#233;n creo que tendremos que enfocarnos m&#225;s en la naturaleza estoc&#225;stica y probabil&#237;stica de nuestros sistemas inform&#225;ticos muy grandes y complejos distribuidos, quiz&#225;s mucho m&#225;s a lo largo de los m&#233;todos que los f&#237;sicos intentan capturar las sutilezas del mundo que nos rodea: mediante el modelado y la adopci&#243;n gradual de esos modelos como la verdad. Sin embargo, un problema real radica en este campo vagamente definido llamado digitalizaci&#243;n, mediante el cual virtualmente todo est&#225; equipado con componentes y soluciones digitales. Muchos espectadores de ese video han pensado err&#243;neamente que propuse enfocarme mucho m&#225;s en la aplicaci&#243;n de las ciencias de la computaci&#243;n a otras disciplinas. En cambio, quise decir que nosotros, como cient&#237;ficos de la computaci&#243;n, debemos enfocarnos mucho m&#225;s en la integraci&#243;n con otras &#225;reas, si solo para prevenir errores causados por personas que no entienden la computaci&#243;n como nosotros.</p><p>Para dar un ejemplo, tengo colegas, principalmente de las ciencias sociales, que est&#225;n trabajando en un gran proyecto nacional sobre la sociedad algor&#237;tmica. Este es un tema extremadamente importante que puede dar forma al futuro para muchos de nosotros. Los cient&#237;ficos de la computaci&#243;n deber&#237;an estar (y en este ejemplo lo est&#225;n) a bordo, no para aplicar lo que ya saben, sino para codesarrollar soluciones que sabemos que pueden funcionar, tanto t&#233;cnicamente como socialmente. Esas soluciones a menudo a&#250;n no se conocen, ya que pueden necesitar cumplir con estrictas reglas de protecci&#243;n de la privacidad. Al mismo tiempo, la tecnolog&#237;a de las ciencias de la computaci&#243;n tambi&#233;n puede ayudar a comprender lo que significa realmente proteger la privacidad (en particular, es mucho m&#225;s que solo protecci&#243;n de datos).</p><p>Como otro ejemplo, considera el Reglamento General de Protecci&#243;n de Datos de la Uni&#243;n Europea (RGPD). Algo que ha sido establecido por expertos, pero sospecho que no por aquellos profundamente familiarizados con las Ciencias de la Computaci&#243;n. Si realmente podemos hacer cumplir el RGPD ya es un punto de discusi&#243;n, pero &#191;qu&#233; pasa con el an&#225;lisis y la aplicaci&#243;n autom&#225;ticos del RGPD? Esto es algo para los sistemas de ley computacional. Ser&#237;a interesante para m&#237; ver qu&#233; suceder&#237;a si cocre&#225;ramos el RGPD junto con el requisito de que debe ser completamente compatible con un sistema de ley computacional. No puedo imaginar que podr&#237;amos capturar todo (lo cual es una pregunta de investigaci&#243;n), pero nos permitir&#237;a separar las partes &#171;f&#225;ciles&#187; (aquellas que se pueden automatizar) de otras partes (y t&#237;picamente aquellas que requieren mucho pensamiento). El acto de IA europeo tambi&#233;n podr&#237;a haberse manejado a lo largo de estas l&#237;neas (y habr&#237;amos descubierto interesantes contradicciones integradas).</p><p>Estos son solo dos ejemplos, pero otros f&#225;cilmente vienen a la mente que ilustran que las ciencias de la computaci&#243;n no pueden y nunca ser&#225;n una disciplina aislada.</p><p>As&#237; que la respuesta simple a tu pregunta es &#171;no&#187;. Sin embargo, la urgencia de un enfoque integrado ha aumentado en mi opini&#243;n.</p><blockquote><p><strong>(5) Has escrito varios libros y ense&#241;ado varios cursos. &#191;Cu&#225;l es tu enfoque para hacer que los temas complejos sean accesibles y comprensibles?</strong></p></blockquote><p>La respuesta simple es preguntarme continuamente si me estoy enfocando lo suficiente en los aspectos esenciales. Si me pierdo en tecnicismos, probablemente signifique que no entend&#237; bien el tema para explicarlo claramente a otros. Como regla general, tomo el enfoque de que, si no entiendo lo que alguien me est&#225; diciendo, es probable que no sea mi culpa. Si comprendes bien un problema y su soluci&#243;n, las explicaciones se vuelven m&#225;s simples. Hay numerosos ejemplos en mis libros y cursos en los que queda claro que mi comprensi&#243;n del tema ha obstaculizado una explicaci&#243;n clara.</p><p>Adem&#225;s de este enfoque, y en l&#237;nea con lo que mencion&#233; antes, esforzarse por la simplicidad siempre debe ser lo primero. Realmente creo que la mayor&#237;a de nosotros, incluido yo mismo, estamos tentados demasiado r&#225;pido a optar por soluciones que pueden solucionar un problema, pero no nos hemos preguntado suficientemente si hemos entendido lo suficiente el problema, o incluso las fuentes de ese problema. Demasiadas veces he notado que tambi&#233;n mis propias soluciones podr&#237;an simplificarse incre&#237;blemente solo dando un paso atr&#225;s. Un ejemplo reciente es el c&#243;digo que escrib&#237; para el libro de Sistemas Distribuidos, que utiliza el sistema Redis. Admito que no entend&#237; completamente la sem&#225;ntica subyacente para la 3ra edici&#243;n, lo que llev&#243; a un c&#243;digo funcional, pero dif&#237;cil de comprender por completo. Para la 4ta edici&#243;n, creo que el c&#243;digo es mucho m&#225;s simple y f&#225;cil de entender. Ahora tambi&#233;n tengo m&#225;s confianza en que es correcto. Por cierto, me he mantenido alejado de las optimizaciones.</p><blockquote><p><strong>(6) &#191;Qu&#233; consejo le dar&#237;as a una persona joven interesada en ingresar a un campo tan vasto como los sistemas distribuidos?</strong></p></blockquote><p>Simplemente comienza. Aseg&#250;rate de entender la programaci&#243;n de redes, c&#243;mo manejar bloqueos y cosas as&#237;, y luego elige un problema. En este sentido, recomendar&#237;a el libro de <a href="https://martin.kleppmann.com">Martin Kleppmann</a> para obtener experiencia pr&#225;ctica. Es una excelente lectura y una vez que tengas una sensaci&#243;n intuitiva de c&#243;mo funcionan las cosas en la pr&#225;ctica, se vuelve m&#225;s f&#225;cil entender y apreciar tambi&#233;n el material m&#225;s te&#243;rico en nuestro libro.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!rBfQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94fee04d-c050-47b6-9b6c-04766d54e3af_360x472.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!rBfQ!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94fee04d-c050-47b6-9b6c-04766d54e3af_360x472.png 424w, /__u/substackcdn.com/image/fetch/$s_!rBfQ!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94fee04d-c050-47b6-9b6c-04766d54e3af_360x472.png 848w, /__u/substackcdn.com/image/fetch/$s_!rBfQ!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94fee04d-c050-47b6-9b6c-04766d54e3af_360x472.png 1272w, /__u/substackcdn.com/image/fetch/$s_!rBfQ!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94fee04d-c050-47b6-9b6c-04766d54e3af_360x472.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!rBfQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94fee04d-c050-47b6-9b6c-04766d54e3af_360x472.png" width="276" height="361.8666666666667" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/94fee04d-c050-47b6-9b6c-04766d54e3af_360x472.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:472,&quot;width&quot;:360,&quot;resizeWidth&quot;:276,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Designing Data-Intensive Applications&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Designing Data-Intensive Applications" title="Designing Data-Intensive Applications" srcset="/__u/substackcdn.com/image/fetch/$s_!rBfQ!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94fee04d-c050-47b6-9b6c-04766d54e3af_360x472.png 424w, /__u/substackcdn.com/image/fetch/$s_!rBfQ!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94fee04d-c050-47b6-9b6c-04766d54e3af_360x472.png 848w, /__u/substackcdn.com/image/fetch/$s_!rBfQ!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94fee04d-c050-47b6-9b6c-04766d54e3af_360x472.png 1272w, /__u/substackcdn.com/image/fetch/$s_!rBfQ!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94fee04d-c050-47b6-9b6c-04766d54e3af_360x472.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Tambi&#233;n ayuda: construir cosas. Construir puede ser programar, pero tambi&#233;n instalar software existente y unir cosas. Por ejemplo, todo el sitio web de distributed-systems.net se ejecuta en mis propios servidores, incluidas copias de seguridad calientes, copias de seguridad incrementales, r&#233;plicas independientes, servidores de correo, todo. En cierto punto, incluso ten&#237;a mi propio servidor DNS de segundo nivel en funcionamiento, pero es m&#225;s una molestia administrativa que otra cosa. Todav&#237;a planeo tener un intercambio (semi-) automatizado simple a un servidor ubicado en otra parte, pero eso requiere una excelente conexi&#243;n a Internet (y tiempo para una configuraci&#243;n adecuada). El punto es: los sistemas distribuidos se tratan mucho de hacer que las cosas se hagan de manera pr&#225;ctica, as&#237; que necesitas hacer m&#225;s que solo estudiar material de libros y art&#237;culos. Una vez que tienes un sistema b&#225;sico en su lugar, probar y agregar cosas se vuelve mucho m&#225;s f&#225;cil. Ayuda si realmente dependes de que ese sistema funcione: te mantiene alerta.</p><blockquote><p><strong>(7) Si tuvieras la oportunidad de viajar en el tiempo y darle consejos no t&#233;cnicos o no relacionados con la escritura a tu yo m&#225;s joven, &#191;qu&#233; ser&#237;a, y por qu&#233; lo consideras importante?</strong></p></blockquote><p>En este caso, solo puedo citar al Dr. Seuss: &#171;S&#233; quien eres y di lo que sientes, porque aquellos que les importa no importan y aquellos que importan no les importa&#187;. Esto tambi&#233;n significa, para m&#237;, que es importante escuchar lo que tienen que decir los dem&#225;s, independientemente del tema. La diversidad al m&#225;ximo generalmente ser&#225; beneficiosa para todos, sin importar lo dif&#237;cil que pueda ser a veces soportarlo. Las personas con ideas similares no te llevar&#225;n tan lejos como la gente con diferentes ideas, estilos y dem&#225;s.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://camilocs.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscr&#237;bete ahora&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/camilocs.substack.com/subscribe"><span>Suscr&#237;bete ahora</span></a></p><div><hr></div><h2>Original</h2><blockquote><p><strong>(1) You are a co-author of the book &#8220;Distributed Systems,&#8221; which is now in its fourth edition (2023). How did the idea to write this book come about?</strong></p></blockquote><p>Back in 1995, I joined Andy Tanenbaum's group at Vrije Universiteit in Amsterdam as an assistant professor. A year later or so, I started teaching distributed systems using his book "Distributed Operating Systems." Although that worked quite well, after a while I began to notice that students had trouble getting the bigger picture. Also, already after a few years, some topics were becoming outdated. The most important was that there was too much emphasis on operating systems, whereas the real challenges lie in the stuff that was independent of operating systems. We decided to write a new book focusing entirely on distributed systems. Distributed systems for me fall into the category of complex stuff. As I always explained to students: if you change something, it may easily start hurting some place where you wouldn't expect it. There are so many interdependencies that need to be considered. Understanding those interdependencies is, to me, really what distributed systems are all about. That's the reason why we chose to take different perspectives: processes, communication, coordination, etc. The book has now been around in various editions for over 20 years and still in need. It's impossible to explain everything about distributed systems in a single book, but certainly as an introduction, I still believe the book fills an important gap. There are other good books out there, but some of them really appear to me as a collection of seemingly randomly chosen topics. That's not good for a textbook, in my opinion.&nbsp;</p><p>One thing we're pleased with is making the book available online for free. It simply allows folks to get started on a low budget. Along with an extensive set of slides that any lecturer can modify to their own needs, what remains is to mainly concentrate on the content. Moreover, any mistakes can be easily corrected and made available instantly. We also sell it through Amazon for a low price, and with their current system, I can even update the hard-copy versions, allowing me to keep the digital and physical copy in sync. This self-publishing is really helpful in getting things going.</p><blockquote><p><strong>(2) What do you consider to be the most significant challenges in distributed systems today and in the future? Are there any new principles that could emerge?</strong></p></blockquote><p>That's a tough one. My own research has always concentrated on scalability problems. Designing for scalability is not easy: we seem to have this tendency to make things too complicated. From this perspective, a real big challenge is to keep things as simple as possible (but not too simple). I firmly believe that only principled, simple things can scale. This also means that I'm not a big fan of optimizations for performance, or at least not until the simplest working design has been implemented. As said, for many of us, staying away from optimizations and pondering on how we can further simplify designs is a challenge. It may be the biggest challenge for those developing distributed systems.</p><p>To give one example. There is a lot of buzz about edge computing. Most of that buzz is about how we can best deploy edge systems. This is often all about optimization. Yet, when you think about it, we can also ask ourselves which problem does edge computing really solve? Many folks mention privacy, energy efficiency, bandwidth usage, and so forth. However, I would say that edge computing may contribute to improving these things (although energy efficiency is disputable). To me, the best argument for edge computing is that we need it when beating Mother Nature is tough, and that's practically only when there are latency issues. I think it's fair to say that bandwidth issues are always of a temporary nature; the same holds for connectivity (with notable exceptions, such as in space applications). Protecting privacy by keeping things local doesn't make sense to me (although I acknowledge that its realization may be somewhat simpler). So, why bother so much about edge computing? From the perspective of sky computing, as introduced already in 2009, optimizing the edge doesn't seem like a high-priority topic. What does matter, and a subject that is tough, is crossing administrative boundaries. And yes, this is one of the scalability issues already mentioned by Clifford Neuman back in the 1990s.</p><p>One thing that I have been considering to add as a principle is maintenance. Distributed systems are not shut down (well, normally speaking). They are always up and running, and while doing so, things need to be upgraded, replaced, what have you. Components also break, and it would be convenient if you could predict where that would happen. I haven't developed a reasonable picture yet to bring this into the book as a separate principle. But perhaps in the 5th edition.</p><p>In summary: designing for simplicity and with it for scalability is and remains, to me, the greatest challenge. What helps in keeping on track is asking ourselves what the problem is that we're trying to solve. Let's try to avoid working on technology for the sake of technology, even it's so fun. In this respect, you may understand that I'm not a big fan of blockchains.</p><blockquote><p><strong>(3) With the popularity of AI and its generative models, do you think this field could influence research in distributed systems, creating mechanisms for adaptability, privacy, or self-generated distributed algorithms?</strong></p></blockquote><p>Well, I think you just gave a positive answer to your own question. Having said that, it is unclear to me what the real power of (generative) AI actually is, in the sense that we yet have to see how reliable it is for generating solutions that work. I sometimes suspect that once we are over our own amazement, we'll notice various deep flaws that are difficult to mitigate. AI is still narrow AI: good at doing one thing. Often, we still need to find out how robust the analyses and solutions are. Yet, I am optimistic, but don't ask me yet how AI will be put to good use for distributed systems. As a first step, I do see a lot of promise for AI-based predictive maintenance, a topic that Ozalp Babaoglu has been working on, as one of the first, actually.</p><blockquote><p><strong>(4) You have a video titled &#8220;Two perspectives on the future of computer sciences&#8221; where you explain an integrated perspective of computing with other areas of knowledge. Now, with advancements in the field of AI, has your perspective on the future of computer sciences changed or expanded in any way?</strong></p></blockquote><p>One thing that I mentioned in that video was the shift of the core of computer science from "traditional" computer science topics (algorithms, systems, languages), to AI. I now foresee that computer sciences will need to look much more into topics for making AI solutions work. For example, I suspect we'll need alternatives for our Von Neumann computers, which currently allow us to only simulate AI models. What would this mean for our computing practices? For our development of systems?&nbsp;</p><p>Coming back to scalability problems, I also think we'll have to focus more on the stochastic and probabilistic nature of our very large and complex distributed computer systems, perhaps much more along the ways that physicists try to capture the intricacies of the world around us: by modeling and gradually adopting those models as being the truth. Yet, a real problem lies in this vaguely defined field called digitalization, by which virtually everything is equipped with digital components and solutions. Many viewers of that video have wrongly thought that I proposed to focus much more on the application of computer science to other disciplines. Instead, I meant that we, as computer scientists, need to focus much more on the integration with other fields, if only to prevent mistakes caused by people who do not understand computing as we do.</p><p>To give an example, I have colleagues, primarily coming from the social sciences, who are working on a large national project about the algorithmic society. This is an extremely important subject that may well shape the future for many of us. Computer scientists should be (and in this example are) on board, not to apply what they already know, but to co-develop solutions that we know can work, technically as well socially. Those solutions are often not yet known, as they may need to meet tough privacy protection rules. At the same time, computer science technology may also help to understand what protecting privacy really means (in particular, it's much more than just data protection).&nbsp;</p><p>As another example, consider the European General Data Protection Regulation (GDPR). Something that has been set up by experts, but I suspect not ones deeply familiar with Computer Science. Whether we can actually enforce GDPR is already a point of discussion, but what about automatically analyzing and enforcing GDPR? This is something for computational law systems. To me, it would be interesting to see what would happen if we would co-create the GDPR along with the requirement that it should be fully supported by a computational law system. I can't imagine we would be able to capture everything (which is a research question), yet it would allow us to separate the "easy" parts (those that can be automated) from other parts (and typically those that require a lot of thinking). The European AI act could also have been handled along these lines (and we would have discovered interesting built-in contradictions).</p><p>These are just two examples, but others easily come to mind that illustrate that computer science cannot and never will be an isolated discipline.</p><p>So, the simple answer to your question is "no." The urgency for an integrated approach has, however, gone up in my opinion.</p><blockquote><p><strong>(5) You've written several books and taught various courses. What is your approach to making complex subjects accessible and understandable?</strong></p></blockquote><p>The simple answer is continuously asking myself if I'm focusing enough on the essentials. If I get lost in technicalities, that probably means I didn't understand the subject well enough to clearly explain it to others. As a general rule, I take the approach that if I don't understand what someone is telling me, it's most likely not my fault. If you understand a problem and its solution well, explanations become simpler. There are numerous examples from my books and courses where it is clear that my understanding of the topic has been hindering a clear explanation.&nbsp;&nbsp;</p><p>Besides this focus, and in line with what I mentioned before, striving for simplicity should always come first. I really think that most of us, including myself, are tempted too quickly to go for solutions that may fix a problem, but have not sufficiently asked ourselves whether we have understood the problem enough, or even the source(s) of that problem. Too often have I noticed that also my own solutions could be incredibly simplified by just taking a step back. A recent example is the code I wrote for the Distributed Systems book, which makes use of the Redis system. Admittedly, I did not fully understand the underlying semantics for the 3rd edition, which led to working code, yet difficult to fully comprehend. For the 4th edition, I believe the code is much simpler and easier to understand. I'm now also more confident that it is correct. By the way, I have consistently stayed away from optimizations.</p><blockquote><p><strong>(6) What advice would you give to a young person interested in entering such a vast field as distributed systems?</strong></p></blockquote><p>Just start. Make sure you understand network programming, how to handle locks and such, and then pick a problem. In this sense, I would advise Martin Kleppmann's book to get hands-on experience. It's a great read and once you have a gut feeling how things work in practice, it becomes easier to understand and appreciate also the more theoretical material in our book.&nbsp;</p><p>What also helps: build things. Building can be programming, but also installing existing software and tying things together. For example, the entire website for distributed-systems.net is running on my own servers, including hot backups, incremental backups, independent replicas, mail servers, the whole thing. At a certain point, I even had my own second-level DNS server running, but that is more of an administrative hassle than anything else. I still plan to have a simple (semi-) automated handoff to a server located elsewhere, but that requires an excellent Internet connection (and time for proper configuration). The point is: distributed systems are much about getting things practically done, so you need to do more than just study material from books and papers. Once you have a basic system in place, testing and adding stuff becomes much easier. It helps if you actually depend on that system to work: it keeps your alert. </p><blockquote><p><strong>(7) If you had the opportunity to travel back in time and give non-technical or non-writing related advice to your younger self, what would it be, and why do you consider it important?</strong></p></blockquote><p>In this case, I can only quote Dr. Seuss: "Be who you are and say what you feel, because those who mind don't matter and those who matter don't mind." This also means, to me, that it is important to get to hear what others have to say, regardless of the subject. Diversity to the max will generally be beneficial to everyone, no matter how difficult it can sometimes be to endure. Like-minded people will not get you as far as the folks with different ideas, styles, and what have you.</p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>La versi&#243;n traducida se realiz&#243; usando mistral-large-2402 (LLM), con algunas modificaciones de mi parte para mejorar la legibilidad.</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[Desagradecimientos]]></title><description><![CDATA[&#191;Por qu&#233; siempre los libros comienzan con agradecimientos?]]></description><link>https://camilocs.substack.com/p/desagradecimientos</link><guid isPermaLink="false">https://camilocs.substack.com/p/desagradecimientos</guid><dc:creator><![CDATA[Camilo Chacón Sartori]]></dc:creator><pubDate>Fri, 26 Jan 2024 19:45:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!b6i4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0bee501-1828-4471-ac71-83804a1ee0ea_4691x6926.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>&#191;Por qu&#233; siempre los libros comienzan con agradecimientos? &#171;A M., por estar a mi lado&#187;, &#171;A mi familia&#187;, &#171;A mis hijas J., H. y E.&#187;, yo tambi&#233;n he ca&#237;do en esa dudosa pr&#225;ctica, pero nadie sabe de d&#243;nde proviene. &#191;Acaso ser&#225; una forma de exorcizar alg&#250;n pecado? &#191;Una ausencia producto del acto de escribir? O, quiz&#225;, ser&#225; alg&#250;n atisbo del cristianismo, &#171;dad gracias en todo, porque esta es la voluntad de Dios para vosotros en Cristo Jes&#250;s&#187; alertaba la primera ep&#237;stola de Tesalonicenses escrita por Pablo de Tarso. No lo sabemos. Una mera suposici&#243;n ser&#237;a que es m&#225;s grato quedar bien que mal. Ya sabemos que soportar reclamos requiere una paciencia tan alta como el valor de comenzar con desagradecimientos.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!b6i4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0bee501-1828-4471-ac71-83804a1ee0ea_4691x6926.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!b6i4!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0bee501-1828-4471-ac71-83804a1ee0ea_4691x6926.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!b6i4!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0bee501-1828-4471-ac71-83804a1ee0ea_4691x6926.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!b6i4!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0bee501-1828-4471-ac71-83804a1ee0ea_4691x6926.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!b6i4!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0bee501-1828-4471-ac71-83804a1ee0ea_4691x6926.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!b6i4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0bee501-1828-4471-ac71-83804a1ee0ea_4691x6926.jpeg" width="512" height="756.0439560439561" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b0bee501-1828-4471-ac71-83804a1ee0ea_4691x6926.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2150,&quot;width&quot;:1456,&quot;resizeWidth&quot;:512,&quot;bytes&quot;:5853352,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!b6i4!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0bee501-1828-4471-ac71-83804a1ee0ea_4691x6926.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!b6i4!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0bee501-1828-4471-ac71-83804a1ee0ea_4691x6926.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!b6i4!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0bee501-1828-4471-ac71-83804a1ee0ea_4691x6926.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!b6i4!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0bee501-1828-4471-ac71-83804a1ee0ea_4691x6926.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Y es que, en la aventura de escribir, uno m&#225;s de una vez se cruza con canallas. Personajes disfrazados de buenas intenciones. Carentes de voluntad. Y guiados por su deseo de escuchar &#171;he abandonado el proyecto del libro&#187; ven frustrados sus esfuerzos, mientras, ellos, se envuelven de miradas rencorosas. A algunos conozco, a mi pesar son pocos, sino escribir&#237;a con m&#225;s frecuencia y motivaci&#243;n. </p><p>A&#250;n no tengo claro en que libro comenzar&#233; con <em>Desagradecimientos</em>. Solo s&#233; que ocurrir&#225;, seguro. Estoy esperando la oportunidad, como un lobo agazapado esperando a su presa. Y es que &#233;sta sensaci&#243;n amenazante refuerza una <em>negatividad</em>, que tiene algo esperanzador. Quiz&#225; sea uno de los que, como yo, a veces prefiere escuchar m&#250;sica triste para subirse el animo. Donde suenan los violines, pianos, violonchelos, contrabajos, incluso trompetas&#8230; cualquier instrumento sirve para sentirse mejor. O leer alg&#250;n existencialista para hacer las paces con la vida. Lo real, curiosamente, algunas veces est&#225; en la desolaci&#243;n. </p><div><hr></div><p>Hasta aqu&#237; estas amables digresiones. </p><p>Como peque&#241;o detalle adelanto uno de mis futuros desagradecimientos:<br></p><div class="pullquote"><p>A todos los que me han jodido. A todos los que me joden ahora y, sobre todo, a los que &#8212;de seguro&#8212; me joder&#225;n en el futuro [&#8230;]</p></div><p><em>Tan Motivador</em>.</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://camilocs.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscr&#237;bete ahora&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/camilocs.substack.com/subscribe"><span>Suscr&#237;bete ahora</span></a></p>]]></content:encoded></item><item><title><![CDATA[Reflexiones de un vil informático]]></title><description><![CDATA[La vileza disminuye la percepci&#243;n de la amabilidad.]]></description><link>https://camilocs.substack.com/p/reflexiones-de-un-vil-informatico</link><guid isPermaLink="false">https://camilocs.substack.com/p/reflexiones-de-un-vil-informatico</guid><dc:creator><![CDATA[Camilo Chacón Sartori]]></dc:creator><pubDate>Fri, 12 Jan 2024 16:46:36 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!TvQ6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5225a7-78e6-4591-985d-02ddec7b626f_6000x4000.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>La vileza disminuye la percepci&#243;n de la amabilidad. Uno no puede ser canalla y amable al mismo tiempo, supongo. Si me comporto de manera canalla, la gente solo recordar&#225; eso, olvidando las veces en que fui generoso. En cualquier caso, estoy jodido de todas formas. Por eso en este art&#237;culo elijo ser vil.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!TvQ6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5225a7-78e6-4591-985d-02ddec7b626f_6000x4000.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!TvQ6!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5225a7-78e6-4591-985d-02ddec7b626f_6000x4000.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!TvQ6!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5225a7-78e6-4591-985d-02ddec7b626f_6000x4000.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!TvQ6!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5225a7-78e6-4591-985d-02ddec7b626f_6000x4000.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!TvQ6!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5225a7-78e6-4591-985d-02ddec7b626f_6000x4000.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!TvQ6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5225a7-78e6-4591-985d-02ddec7b626f_6000x4000.jpeg" width="450" height="300.10302197802196" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3e5225a7-78e6-4591-985d-02ddec7b626f_6000x4000.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:450,&quot;bytes&quot;:3152927,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!TvQ6!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5225a7-78e6-4591-985d-02ddec7b626f_6000x4000.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!TvQ6!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5225a7-78e6-4591-985d-02ddec7b626f_6000x4000.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!TvQ6!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5225a7-78e6-4591-985d-02ddec7b626f_6000x4000.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!TvQ6!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5225a7-78e6-4591-985d-02ddec7b626f_6000x4000.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Hace unos d&#237;as regres&#233; a Barcelona desde Chile. Casi un mes fuera es suficiente para descargar energ&#237;a, porque para m&#237; viajar significa mantenerse m&#225;s activo que de costumbre. El viaje como b&#250;squeda, no como contemplaci&#243;n, en eso creo. Siendo sincero, encontrar tranquilidad al regresar a casa es reconfortante. Veo a mi alrededor y no hay nada, solo silencio, y una tenue luz solar me golpea mientras el calefactor hace su &#250;nico trabajo: el de evitar que tenga frio. As&#237; recargo energ&#237;as. </p><p>El d&#237;a de la presentaci&#243;n de mi libro (<em>Principios de Programaci&#243;n</em>), en Castro, en la biblioteca p&#250;blica, result&#243; bien. Fue bastante gente y m&#225;s de lo que esperaba para ser un libro t&#233;cnico, adem&#225;s, distintas generaciones se reunieron. Girar la cabeza y ver que por un lado hab&#237;a j&#243;venes, y por otro, mayores, me sorprendi&#243;. Nunca se espera eso. De hecho, nunca se espera nada. Porque escribir esperando alguna recompensa es tan tonto como esperar que tu c&#243;digo jam&#225;s tendr&#225; errores. M&#225;s tarde llegaron las solicitudes de fotos conmigo, me embriagu&#233; de fama durante diez, quiz&#225; veinte, o incluso treinta segundos; una suerte de rock-star-chilote, aunque sin escenario ni instrumentos. (A mi pesar no s&#233; tocar ning&#250;n instrumento.) Sin m&#225;s, uno se da cuenta de que la gente tiende a exagerar en sus halagos. O tal vez se deba al contexto: salir de una isla parece requerir m&#225;s esfuerzo (o suerte), especialmente si tu familia no es ni fue de plata. De todas formas, quiero creer que mis m&#237;nimos logros se deben a pura voluntad.</p><p>No tengo mucho que a&#241;adir sobre mi viaje a Chile, cuando las cosas salen bien, no hay nada que decir. Guardo silencio y sonr&#237;o. Porque los recuerdos son intransferibles, dicen. Nada m&#225;s he a&#241;adido gratas vivencias que las disfrutar&#233; en el futuro. Una posibilidad de felicidad futura. Un intento de resistir a los embates del olvido de las experiencias.</p><p>En algunas ocasiones ser <em>vil</em> conlleva el <em>silencio</em>. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://camilocs.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscribirse&quot;,&quot;language&quot;:&quot;es&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">&#161;Gracias por leer &#201;rase una vez un algoritmo... ! Suscr&#237;bete gratis para recibir nuevas publicaciones y apoyar mi trabajo.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Escribe tu correo electr&#243;nico..." tabindex="-1"><input type="submit" class="button primary" value="Suscribirse"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Entrevista a Valeria de Paiva]]></title><description><![CDATA[Destacada matem&#225;tica, l&#243;gica y cient&#237;fica de la computaci&#243;n]]></description><link>https://camilocs.substack.com/p/entrevista-a-valeria-de-paiva</link><guid isPermaLink="false">https://camilocs.substack.com/p/entrevista-a-valeria-de-paiva</guid><dc:creator><![CDATA[Camilo Chacón Sartori]]></dc:creator><pubDate>Fri, 10 Nov 2023 19:31:07 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!9qPp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe29388fa-fff0-43f3-97fa-72d557913dc7_1000x1000.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>Esta entrevista fue originalmente realizada en ingl&#233;s por email. Por tanto, primero se ofrece una traducci&#243;n al espa&#241;ol, y al final, se encuentra la versi&#243;n original.</p><p><em>This interview was originally conducted in English by email. The Spanish translation is provided first, followed by the original version.</em></p></blockquote><p><a href="https://vcvpaiva.github.io">Valeria de Paiva</a><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> es una matem&#225;tica e investigadora cient&#237;fica en inteligencia artificial de origen brasile&#241;o radicada en UK, interesada en procesamiento del lenguaje natural, inferencia l&#243;gica y todo tipo de sem&#225;ntica. Adem&#225;s, su &#225;reas de investigaci&#243;n incluyen la teor&#237;a de las categor&#237;as, la sem&#225;ntica del lenguaje natural y la programaci&#243;n funcional. En 1988, complet&#243; su doctorado bajo la direcci&#243;n de <a href="https://en.wikipedia.org/wiki/Martin_Hyland">Martin Hyland</a>, en la Universidad de Cambridge. Su tesis introdujo la <em>Dial&#233;ctica de espacios</em>, una manera <a href="https://es.wikipedia.org/wiki/Teor%C3%ADa_de_categor%C3%ADas">categ&#243;rica</a> de construir modelos de l&#243;gica lineal.</p><p>Adem&#225;s de su labor investigativa, se ha preocupado en el rol de las mujeres en sus vidas profesionales. Ayudando a mantener el sitio web <a href="https://www.womeninlogic.org">Women in Logic</a>, un grupo de Facebook Women in Logic, un <a href="https://blog.womeninlogic.org">blog </a>Women in Logic y ahora un sitio web de charlas Women in Logic seleccionadas. Es parte del Comit&#233; Directivo de Women in Logic. Tambi&#233;n colabora con el programa de becas ACM-W Scholarship. </p><div><hr></div><p>Algo curioso de De Paiva es su gran capacidad para adaptar temas de las matem&#225;ticas puras al entorno empresarial. Pues ha trabajado en Samsung, como investigadora principal; en Nuance Communications y Rearden Commerce, como investigadora senior; y actualmente se desempe&#241;a como investigadora principal en Topos Institute.</p><p>&#161;Espero disfruten de la entrevista !<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!9qPp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe29388fa-fff0-43f3-97fa-72d557913dc7_1000x1000.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!9qPp!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe29388fa-fff0-43f3-97fa-72d557913dc7_1000x1000.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!9qPp!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe29388fa-fff0-43f3-97fa-72d557913dc7_1000x1000.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!9qPp!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe29388fa-fff0-43f3-97fa-72d557913dc7_1000x1000.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!9qPp!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe29388fa-fff0-43f3-97fa-72d557913dc7_1000x1000.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!9qPp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe29388fa-fff0-43f3-97fa-72d557913dc7_1000x1000.jpeg" width="602" height="602" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e29388fa-fff0-43f3-97fa-72d557913dc7_1000x1000.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1000,&quot;width&quot;:1000,&quot;resizeWidth&quot;:602,&quot;bytes&quot;:66009,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!9qPp!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe29388fa-fff0-43f3-97fa-72d557913dc7_1000x1000.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!9qPp!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe29388fa-fff0-43f3-97fa-72d557913dc7_1000x1000.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!9qPp!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe29388fa-fff0-43f3-97fa-72d557913dc7_1000x1000.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!9qPp!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe29388fa-fff0-43f3-97fa-72d557913dc7_1000x1000.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Imagen extra&#237;da de <a href="https://nlp.ucsc.edu/people/industry-advisory-board/valeria-de-paiva/">https://nlp.ucsc.edu/people/industry-advisory-board/valeria-de-paiva/</a></figcaption></figure></div><h2>Versi&#243;n traducida</h2><blockquote><p><strong>(1) Un aspecto de tu trayectoria que despierta mi curiosidad es la combinaci&#243;n &#250;nica de tus experiencias tanto en la industria como en la academia, especialmente teniendo en cuenta tu enfoque acad&#233;mico en matem&#225;ticas puras. A primera vista, podr&#237;a parecer desafiante integrar temas abstractos como la teor&#237;a de categor&#237;as en un entorno empresarial. &#191;Podr&#237;as detallar los desaf&#237;os m&#225;s significativos que enfrentaste en la industria al aplicar estos conceptos abstractos?</strong></p></blockquote><p>Claro. En efecto, es una lucha cuesta arriba intentar &#171;vender&#187; conceptos abstractos a la industria, especialmente en un entorno donde los resultados deben verse en trimestres, en lugar de a&#241;os. Pero una estrategia antigua es resolver problemas utilizando matem&#225;ticas sofisticadas y explicar las soluciones con poca sofisticaci&#243;n. Pero para eso, necesitas gerentes de contrataci&#243;n que crean en el poder de las matem&#225;ticas. Algunos lo hacen, muchos otros no. </p><p>Creo que he tenido suerte.</p><blockquote><p><strong>(2) Continuando nuestra discusi&#243;n sobre teor&#237;as de categor&#237;as, el desarrollo de software contempor&#225;neo busca cada vez m&#225;s las abstracciones m&#225;s adecuadas para abordar problemas complejos. &#191;C&#243;mo visualizas el futuro de la teor&#237;a de categor&#237;as en el &#225;mbito del desarrollo de software? &#191;Crees que puede ofrecer beneficios pr&#225;cticos claros, como la reducci&#243;n de errores o la gesti&#243;n de la complejidad inherente de los sistemas de software?</strong></p></blockquote><p>Creo en el poder de la teor&#237;a de categor&#237;as para simplificar y organizar conceptos. Creo que la teor&#237;a de categor&#237;as ayuda a ver el desorden y a entender c&#243;mo eliminarlo, por lo que creo que deber&#237;a ser &#250;til para la ingenier&#237;a de software, pero tambi&#233;n en general para toda la ciencia de la computaci&#243;n te&#243;rica. En particular, creo que el principio proposici&#243;n-como-tipos conduce, como dice su nombre, a una programaci&#243;n basada en principios, que es menos propensa a errores y m&#225;s eficiente. </p><p>Por otro lado, tambi&#233;n creo que los &#171;hacks&#187; que son demasiado buenos para perderse son te&#243;ricamente importantes, simplemente no los hemos convertido en teor&#237;a todav&#237;a. Despu&#233;s de todo, la ciencia de la computaci&#243;n es para las matem&#225;ticas en el siglo XXI lo que la f&#237;sica fue en el siglo XX: un maravilloso patio de recreo lleno de problemas grandes y peque&#241;os por resolver.</p><blockquote><p><strong>(3) Con tu participaci&#243;n en diversos proyectos de investigaci&#243;n, &#191;podr&#237;as compartir cu&#225;l encontraste m&#225;s intelectualmente exigente y qu&#233; conocimientos o lecciones valiosas obtuviste de &#233;l?</strong></p></blockquote><p>Oohhh, esto es dif&#237;cil. Encuentro la mayor&#237;a de mis proyectos exigentes, tanto que realmente no puedo dejar esos proyectos en paz. Siento que quiero seguir trabajando en todos ellos. Y, por supuesto, no hay tiempo suficiente. Tuve esta conversaci&#243;n una vez con mi amigo Alan Jeffrey, a quien le pregunt&#233; sobre en qu&#233; estaba pensando en uno de sus proyectos antiguos, y &#233;l dijo que ya no pensaba en eso, estaba hecho, cerrado. Solo entonces me di cuenta de que no todos son como yo, siempre queriendo volver a las cosas que hice, mejorarlas, completarlas, conectarlas con otras cosas interesantes. </p><p>Quiero decir, me gustan los problemas dif&#237;ciles y no creo que los resuelvas completamente, haces un intento, resuelves el problema principal que ves, pero siempre puedes volver y mejorarlo. Ciertamente tengo varias situaciones en las que creo que fracas&#233; miserablemente en obtener una comprensi&#243;n real, la b&#250;squeda es una de estas. Trabaj&#233; para Cuil, un inicio de motor de b&#250;squeda en 2008-2010, y aprend&#237; mucho, pero no he podido utilizar mis herramientas categ&#243;ricas. As&#237; que siempre est&#225; ah&#237;, un picor sin rascar, que tal vez si hubiera intentado m&#225;s fuerte, podr&#237;a haber logrado algo.</p><blockquote><p><strong>(4) Dado tu trabajo en sem&#225;ntica del lenguaje natural, &#191;c&#243;mo percibes la extensa investigaci&#243;n en torno a los Modelos de Lenguaje Grandes (LLMs)? &#191;Crees que los m&#233;todos l&#243;gicos y simb&#243;licos pueden resurgir en un panorama dominado en gran medida por t&#233;cnicas probabil&#237;sticas, como el aprendizaje profundo?</strong></p></blockquote><p>Bueno, es asombroso lo que pueden hacer. Estoy impresionada, como todos los dem&#225;s. Pero, por supuesto, tambi&#233;n me preocupa mucho los varios hechos negativos que los rodean. El hecho de que no podemos explicar c&#243;mo funcionan, que no podemos garantizar la reproducibilidad, que no podemos confiar en los resultados de la IA generativa. Entonces, s&#237;, creo que necesitamos m&#233;todos neurales-simb&#243;licos que nos brinden tanto las incre&#237;bles capacidades como la robustez del aprendizaje profundo, pero que tambi&#233;n nos proporcionen la explicabilidad l&#243;gica y la garant&#237;a de verdad que conlleva.</p><blockquote><p><strong>(5) Has mostrado una gran preocupaci&#243;n por el papel de las mujeres en sus vidas profesionales, lo que se refleja en tu trabajo en Women in Logic. &#191;C&#243;mo ves la situaci&#243;n actual con respecto a estos problemas y qu&#233; necesita mejorarse?</strong></p></blockquote><p>Vaya, otra muy dif&#237;cil. Creo que la situaci&#243;n no est&#225; mejorando tan r&#225;pido como deber&#237;a. De todos los grandes problemas sociales, este deber&#237;a haber sido m&#225;s f&#225;cil. Me molesta enormemente ver que no parece que hagamos un progreso real, que el patriarcado, que deber&#237;a ser solo objeto de burla, est&#225; vivo y fuerte, y la gente no ve el absurdo nivel de desigualdad entre los g&#233;neros en nuestra vida diaria. </p><p>Seguimos luchando, pero a veces me desespero cuando veo a adultos altamente inteligentes que no logran comparar situaciones de manera justa. Me desespera cuando las personas muestran no solo sexismo, sino especialmente racismo en sus formas sist&#233;micas y variadas. Tambi&#233;n me desespero cuando veo a personas librando una guerra contra las personas pobres en lugar de luchar contra la pobreza misma. Me vuelve loco el mantra que veo que iguala tener dinero con ser una buena persona y ser pobre con no tener valor.</p><blockquote><p><strong>(6) Tu variada gama de intereses de investigaci&#243;n, que abarca m&#250;ltiples &#225;reas, es algo inusual para los investigadores. &#191;Qu&#233; consejo ofrecer&#237;as a las personas que comparten una multitud de intereses y aspiran a explorar diversos campos de investigaci&#243;n mientras posiblemente dudan en salir de sus zonas de confort?</strong></p></blockquote><p>Bueno, creo que no soy un buen modelo a seguir. Creo que algunas personas son m&#225;s organizadas y pueden tener muchos intereses de investigaci&#243;n diferentes y mantenerlos en paralelo. No soy tan organizada, as&#237; que perd&#237; y sigo perdiendo muchas oportunidades para tener un impacto mayor. Creo que las personas deber&#237;an leer &#171;<a href="https://d37ugbyn3rpeym.cloudfront.net/stripe-press/TAODSAE_zine_press.pdf">You and Your Research</a>&#187; de Hamming.</p><p>Ojal&#225; lo hubiera le&#237;do cuando estaba empezando. Algunas partes tratan sobre tener el &#171;coraje de tus convicciones&#187;, y yo podr&#237;a haberlo usado en alg&#250;n momento. Pero todo es interesante. Y, por supuesto, no queremos m&#225;s presumidos que saben todo en Academia, pero el punto es trazar un curso intermedio, creyendo en tus ideas lo suficiente como para darles la oportunidad de tener &#233;xito.</p><blockquote><p><strong>(7) Si tuvieras la oportunidad de viajar en el tiempo y proporcionar orientaci&#243;n no t&#233;cnica a tu yo m&#225;s joven, &#191;qu&#233; consejo dar&#237;as y por qu&#233; lo consideras importante?</strong></p></blockquote><p>&#161;Bien! &#161;Parece que ya respond&#237; esto en el n&#250;mero 6! Pero perm&#237;teme reiterar que creo que la curiosidad es fundamental y divertirse con tu investigaci&#243;n tambi&#233;n lo es. Si puedes combinar eso con organizaci&#243;n y planificaci&#243;n t&#225;ctica y estrat&#233;gica, te ir&#225; mucho mejor. Pero la planificaci&#243;n debe estar al servicio de divertirse, no al rev&#233;s. Porque Hamming tiene raz&#243;n, la investigaci&#243;n es divertida, pero la investigaci&#243;n impactante es lo real, la m&#225;xima diversi&#243;n. </p><p>Nada mejor que detenerte a la mitad de un c&#225;lculo o de la construcci&#243;n de un argumento y pensar para ti mismo: &#161;oh chico, funciona! (por supuesto, muchas veces no funciona. Es solo tu mente corriendo contra s&#237; misma y haciendo saltos no permitidos, pero est&#225; bien. Fue muy divertido y es tu trabajo, y ma&#241;ana llenar&#225;s los agujeros y funcionar&#225; y ser&#225; divertido de nuevo).</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://camilocs.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscr&#237;base ahora&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/camilocs.substack.com/subscribe"><span>Suscr&#237;base ahora</span></a></p><h2>Original</h2><blockquote><p><strong>(1) One aspect of your background that piques my curiosity is the unique blend of your experiences in both industry and academia, especially considering your academic focus on pure mathematics. At first glance, it might seem challenging to integrate abstract topics like category theory into a business environment. Could you elaborate on the most significant challenges you encountered in industry while applying such abstract concepts? </strong></p></blockquote><p>Sure. it's indeed an uphill struggle to try to "sell" abstract concepts to industry, especially one where results have to be seen in quarters, instead of years. But an old age strategy is to solve problems using sophisticated mathematics, and explain the solutions with little of that sophistication. but for that, you have to have hiring managers that believe in the power of mathematics. some do, many more do not. </p><p>I think I have been lucky. </p><blockquote><p><strong>(2) Continuing our discussion on category theories, contemporary software development is increasingly seeking the most suitable abstractions to tackle complex problems. How do you envision the future of category theory in the realm of software development? </strong></p></blockquote><p>Do you believe it can offer clear practical benefits, such as bug reduction or managing the inherent complexity of software systems? I believe in the power of CT to simplify and organize concepts. I think CT does help with seeing clutter and seeing how to remove it, so I reckon it ought to useful for software engineering, but also more generally for all theoretical computer science. In particular, I think that the proposition-as-types principle leads, the name says it, to principled programming, which is less buggy and more efficient. </p><p>On the other hand, I also believe that the "hacks" that are too good to miss, are actually theoretically important, it's just that we haven't made them into theory, yet. after all, CS is for mathematics in the 21st century what physics was in the 20th century: a wonderful playground full of big and small problems to solve. </p><blockquote><p><strong>(3) With your involvement in various research projects, could you share which project you found to be the most intellectually demanding, and what valuable insights or lessons did you gain from it? </strong></p></blockquote><p>Oohhh, this is hard. I find most of my projects demanding, so much so that I actually cannot leave those projects alone. I feel like carrying on working on them all. and of course there isn't enough time. I had this conversation once with my friend Alan Jeffrey, who I asked about what he was thinking about on one of his old projects and he said he didn't think about it anymore, it was done, closed. only then I realized not everyone is like me, always wanting to go back to the things I did, to improve them, to complete them, to connect them to other interesting things. </p><p>I mean, I like hard problems and I don't think you completely solve these problems, you take a pass, you solve the main issue you see, but you can always go back and make it better. I certainly have several situations where I think I failed miserably to get some real understanding, search is one of these. I worked for Cuil, a search engine start-up in 2008-2010 and I learned lots, but I haven't been able to use my categorical tools. so it's always there, an itch unscratched, that maybe if I had tried harder I could've gotten some purchase. </p><blockquote><p><strong>(4) Given your work in natural language semantics, how do you perceive the extensive research around Large Language Models (LLMs)? Do you believe that logical and symbolic methods can make a resurgence in a landscape largely dominated by probabilistic techniques, such as Deep Learning? </strong></p></blockquote><p>Well, it's quite fantastic what they can do. I am amazed, like everyone else. but of course, I'm also very concerned by the several bad facts surrounding them. the fact that we cannot explain how they work, that we cannot guarantee reproducibility, that we cannot trust the results of generative AI. so yes, I believe we need neural-symbolic methods that can give us both deep-learning's amazing capabilities and robustness, but also provide us with the logical explainability, and the truth assurance that it entails. </p><blockquote><p><strong>(5) You have shown a great concern for the role of women in their professional lives, which is reflected in your work in Women in Logic. How do you see the current situation regarding these issues and what needs to be improved? </strong></p></blockquote><p>Oh boy, another very hard one. I think the situation is not improving as fast as it should be. of all the big society problems, this ought to have been an easier one. it annoys me no end to see that we don't seem to make real progress, that the patriarchy, which ought to be just an object of ridicule, is instead, very alive and powerful, and people don't see the absurd level of inequality between the genders in our daily lives. </p><p>We keep the fight on, but sometimes I do despair, when I see highly intelligent adults failing to compare situations fairly. I despair when people display not only sexism, but especially racism in its systemic and myriad of forms. I also despair when I see people waging a war against poor people, instead of waging it against poverty itself: it drives me nuts the mantra I see equating having money as being a good person, being poor as being worthless. </p><blockquote><p><strong>(6) Your diverse array of research interests, which span across multiple areas, is somewhat unusual for researchers. What advice would you offer to individuals who share a multitude of interests and aspire to explore diverse research fields while possibly hesitating to step out of their comfort zones? </strong></p></blockquote><p>Well, I think I am not such a good role model. I think some people are more organized and they can have these many different research interests and keep them going in parallel. I'm not that organized, so I missed and continue to miss many opportunities to have more impact. I think people should read Hamming's "<a href="https://d37ugbyn3rpeym.cloudfront.net/stripe-press/TAODSAE_zine_press.pdf">You and Your Research</a>". </p><p>I wish I had read it when I was starting. Some of it is about having the 'courage of your convictions' and I could've done with that some way back. But all of it is interesting. And of course we don't want any more arrogant know-it-alls than we have already in Academia, but the point is to chart a middle course, believing on your ideas well enough to give them a chance to succeed. </p><blockquote><p><strong>(7) If you had the opportunity to travel back in time and provide non-technical guidance to your younger self, what advice would you give, and why do you consider it important? </strong></p></blockquote><p>Nice, it looks like I answered it in number 6! but let me reiterate that I think curiosity is fundamental and having fun with your research is too! if you can pair that with organization, and both tactical and strategical planning you'll do much better. but the planning should be in the service of having fun, not the other way round. because Hamming is right, research is fun, but impactful research is the real deal, the utmost fun. </p><p>Nothing better than stopping in the middle of a calculation or of the construction of an argument and thinking to yourself, oh boy, it works! (of course, many times, it doesn't. it's just your mind racing against itself and making non-allowed jumps, but this is alright. it was great fun and it's your job and tomorrow you'll fill up the holes and it will work and be fun again.)</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://camilocs.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscr&#237;base ahora&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/camilocs.substack.com/subscribe"><span>Suscr&#237;base ahora</span></a></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Twitter/X: <a href="https://twitter.com/valeriadepaiva">https://twitter.com/valeriadepaiva</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>La versi&#243;n traducida se realiz&#243; usando ChatGPT (GPT-3.5), con algunas modificaciones de mi parte para mejorar la legibilidad.</p></div></div>]]></content:encoded></item><item><title><![CDATA[Entrevista a Chris Lattner]]></title><description><![CDATA[Cocreador de LLVM, Clang, Swift y Mojo]]></description><link>https://camilocs.substack.com/p/entrevista-a-chris-lattner</link><guid isPermaLink="false">https://camilocs.substack.com/p/entrevista-a-chris-lattner</guid><dc:creator><![CDATA[Camilo Chacón Sartori]]></dc:creator><pubDate>Mon, 06 Nov 2023 09:38:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!IMfT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff06a1824-3c3a-4ca5-b4ae-ad485d6ffe54_945x1068.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>Esta entrevista fue originalmente realizada en ingl&#233;s por email. Por tanto, primero se ofrece una traducci&#243;n al espa&#241;ol, y al final, se encuentra la versi&#243;n original.</p><p><em>This interview was originally conducted in English by email. The Spanish translation is provided first, followed by the original version.</em></p></blockquote><p><a href="https://www.nondot.org/sabre/">Chris Lattner</a> naci&#243; el 30 de junio de 1978 en San Jos&#233;, California, Estados Unidos. Se gradu&#243; en la Universidad de Portland con una licenciatura en Inform&#225;tica y Matem&#225;ticas. Posteriormente, complet&#243; su maestr&#237;a y doctorado en Ciencias de la Computaci&#243;n en la Universidad de Illinois en Urbana-Champaign. </p><p>Lattner es un extraordinario ingeniero de software, y sus creaciones han tenido un impacto fundamental en el ecosistema de la programaci&#243;n y el desarrollo de lenguajes de programaci&#243;n. Es ampliamente reconocido por su contribuci&#243;n al desarrollo de <a href="https://llvm.org">LLVM</a> (<em>Low Level Virtual Machine</em>), un conjunto de tecnolog&#237;as de compilaci&#243;n que se ha convertido en un est&#225;ndar de la industria para la compilaci&#243;n de c&#243;digo abierto. Fue el creador original de LLVM y tambi&#233;n contribuy&#243; al dise&#241;o de su lenguaje de programaci&#243;n, LLVM IR (<em>Intermediate Representation</em>).</p><p>Adem&#225;s de su trabajo en LLVM, Lattner es conocido por su participaci&#243;n en el dise&#241;o y desarrollo de otros proyectos influyentes. Fue uno de los desarrolladores principales de <a href="https://clang.llvm.org">Clang</a>, un compilador de c&#243;digo abierto que se utiliza en conjunto con LLVM y que se ha convertido en una alternativa a GCC. Tambi&#233;n desempe&#241;&#243; un papel esencial en la creaci&#243;n del lenguaje de programaci&#243;n <a href="https://www.swift.org">Swift</a> en Apple, que se ha convertido en un lenguaje popular para el desarrollo de aplicaciones en la plataforma iOS.</p><p>Actualmente, su principal proyecto es <a href="https://www.modular.com/mojo">Mojo</a>, un lenguaje de programaci&#243;n que busca ser un aliado de Python.</p><div><hr></div><p>En esta entrevista, Chris Lattner, nos dir&#225; por qu&#233; Mojo es importante y cu&#225;l es el rol de &#233;ste en el ecosistema de Python. </p><p>Adem&#225;s me gustar&#237;a darle las gracias por su r&#225;pida respuesta a mis preguntas.</p><p>&#161;Espero la disfruten!<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!IMfT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff06a1824-3c3a-4ca5-b4ae-ad485d6ffe54_945x1068.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!IMfT!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff06a1824-3c3a-4ca5-b4ae-ad485d6ffe54_945x1068.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!IMfT!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff06a1824-3c3a-4ca5-b4ae-ad485d6ffe54_945x1068.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!IMfT!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff06a1824-3c3a-4ca5-b4ae-ad485d6ffe54_945x1068.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!IMfT!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff06a1824-3c3a-4ca5-b4ae-ad485d6ffe54_945x1068.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!IMfT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff06a1824-3c3a-4ca5-b4ae-ad485d6ffe54_945x1068.jpeg" width="945" height="1068" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f06a1824-3c3a-4ca5-b4ae-ad485d6ffe54_945x1068.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1068,&quot;width&quot;:945,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:132510,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!IMfT!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff06a1824-3c3a-4ca5-b4ae-ad485d6ffe54_945x1068.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!IMfT!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff06a1824-3c3a-4ca5-b4ae-ad485d6ffe54_945x1068.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!IMfT!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff06a1824-3c3a-4ca5-b4ae-ad485d6ffe54_945x1068.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!IMfT!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff06a1824-3c3a-4ca5-b4ae-ad485d6ffe54_945x1068.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Imagen extra&#237;da de <a href="https://www.modular.com/team/chris-lattner">https://www.modular.com/team/chris-lattner</a>.</figcaption></figure></div><h2>Versi&#243;n traducida</h2><blockquote><p><strong>(1) Has desempe&#241;ado un papel fundamental en el dise&#241;o de LLVM, Clang, Swift y MLIR, y m&#225;s recientemente Mojo, todos los cuales han tenido un profundo impacto en el campo de la programaci&#243;n. Con una amplia gama de &#225;reas de programaci&#243;n, &#191;c&#243;mo surgi&#243; tu inter&#233;s en el dise&#241;o e implementaci&#243;n de lenguajes de programaci&#243;n?</strong></p></blockquote><p>He hablado un poco sobre esto, por ejemplo, esta entrevista podr&#237;a ser de ayuda: </p><div id="youtube2-RDMrBYigqPc" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;RDMrBYigqPc&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/RDMrBYigqPc?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p><a href="https://nondot.org/sabre/2013-11-07-LLVMDevMtg-LLVMEarlyDays.pdf">https://nondot.org/sabre/2013-11-07-LLVMDevMtg-LLVMEarlyDays.pdf</a></p><p>Puedes ver muchas m&#225;s charlas aqu&#237;: <a href="https://nondot.org/sabre/Resume.html#talks">https://nondot.org/sabre/Resume.html#talks</a></p><blockquote><p><strong>(2) &#191;Cu&#225;les fueron las principales motivaciones detr&#225;s de la creaci&#243;n del lenguaje Swift y qu&#233; limitaciones esperabas abordar en comparaci&#243;n con Objective-C?</strong></p></blockquote><p>Por favor, consulta: </p><ul><li><p><a href="https://oleb.net/2019/chris-lattner-swift-origins/">https://oleb.net/2019/chris-lattner-swift-origins/</a></p></li><li><p><a href="https://atp.fm/205-chris-lattner-interview-transcript">https://atp.fm/205-chris-lattner-interview-transcript</a></p></li></ul><blockquote><p><strong>(3) LLVM ha dejado una huella sustancial en la industria de la compilaci&#243;n y optimizaci&#243;n de c&#243;digo. &#191;Cu&#225;les son tus reflexiones sobre el futuro de LLVM y su relevancia para el desarrollo de lenguajes de programaci&#243;n?</strong></p></blockquote><p>Creo que LLVM como proyecto tiene un largo camino por delante. El proyecto LLVM incluye una amplia gama de tecnolog&#237;as de herramientas, as&#237; como <a href="https://mlir.llvm.org">MLIR</a>, y subyace en muchos lenguajes de programaci&#243;n en la actualidad, incluyendo Clang/Rust/Swift/Julia, entre otros. Creo que LLVM como proyecto paraguas est&#225; prosperando, pero considero que LLVM IR est&#225; desactualizado y necesita una actualizaci&#243;n utilizando tecnolog&#237;as de MLIR.</p><blockquote><p><strong>(4) Tu proyecto m&#225;s reciente es <a href="https://www.modular.com/mojo">Mojo</a>, un esfuerzo por combinar la facilidad de uso de Python, utilizando su sintaxis, con un rendimiento superior. Hemos visto lenguajes como Julia intentando competir con Python en el &#225;mbito de los sistemas de inteligencia artificial. &#191;C&#243;mo se diferencia Mojo de estas otras iniciativas?</strong></p></blockquote><p>Existen diversas mejoras t&#233;cnicas (respondidas a continuaci&#243;n), pero la diferencia m&#225;s grande con respecto a cosas como Julia, Swift o Rust es que Mojo es un miembro del ecosistema de Python, no un nuevo lenguaje. Esto significa que est&#225; muy centrado en los usuarios existentes de Python, encontrando a las personas donde est&#225;n y potenci&#225;ndolas, en lugar de forzar a las personas a reaprender c&#243;mo escribir constructos b&#225;sicos para comenzar.</p><blockquote><p><strong>(5) Las pruebas de rendimiento muestran que Mojo tiene una ventaja significativa sobre Python. &#191;Qu&#233; subyace en la velocidad excepcional de Mojo?</strong></p></blockquote><p>Comparar Mojo con Python no es muy &#171;justo&#187; porque las tecnolog&#237;as son muy diferentes: Mojo es compilado, la implementaci&#243;n est&#225;ndar de Python (&#171;CPython&#187;) es interpretada. </p><p>Es mucho m&#225;s interesante comparar Mojo con cosas como Swift, Python o Julia. En este sentido, Mojo sobresale de varias maneras:</p><ol><li><p>Tiene un buen control a bajo nivel como Rust.</p></li><li><p>Tiene buena facilidad de uso como Swift o Python.</p></li><li><p>Tiene caracter&#237;sticas avanzadas como la sintonizaci&#243;n autom&#225;tica (<em>autotuning</em>) que ning&#250;n lenguaje ampliamente utilizado admite.</p></li><li><p>Puede admitir la generaci&#243;n de c&#243;digo para GPUs y otros aceleradores.</p></li><li><p>Est&#225; construido sobre una plataforma tecnol&#243;gica novedosa basada en MLIR, que es una primicia en la industria.</p></li></ol><p>Por supuesto, hay muchos detalles que entran en juego.</p><blockquote><p><strong>(6) &#191;Cu&#225;l consideras que es el principal desaf&#237;o para popularizar Mojo como un lenguaje de programaci&#243;n y c&#243;mo ves la relaci&#243;n entre Mojo y Python en el futuro?</strong></p></blockquote><p>La relaci&#243;n es sencilla, nos gustar&#237;a que Mojo crezca para ser un superconjunto de Python con el tiempo, de la misma manera en que C++ es un superconjunto de C. Esto no significa que los lenguajes sean exactamente iguales; C++ toma nuevas palabras clave que C te permite usar, por ejemplo. Dicho esto, C y C++ han logrado coevolucionar durante muchos a&#241;os, y creo que lo mismo suceder&#225; con Mojo y Python.</p><p>No preveo un desaf&#237;o significativo para popularizar Mojo, ya tenemos m&#225;s de 150,000 personas que han utilizado Mojo. El principal problema con Mojo en este momento es que todav&#237;a est&#225; en una etapa muy temprana y necesita madurar :-)</p><blockquote><p><strong>(7) Dado tu gran &#233;xito en estos proyectos, &#191;c&#243;mo gana popularidad un lenguaje de programaci&#243;n (o herramienta de compilaci&#243;n)? &#191;Es una combinaci&#243;n de experiencia t&#233;cnica junto con una comunidad de apoyo, o entran en juego otros factores?</strong></p></blockquote><p>Esto es diferente para cada sistema, por ejemplo, Swift claramente se benefici&#243; de que Apple posee el ecosistema de iOS. </p><p>En el caso de Mojo, realmente se reduce a brindar a los programadores de Python existentes superpoderes, desbloquear la innovaci&#243;n en una comunidad importante (desarrolladores de IA) y alinearse con los cambios en los hardware impulsados por el fin de la ley de Moore.</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://camilocs.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscr&#237;base ahora&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/camilocs.substack.com/subscribe"><span>Suscr&#237;base ahora</span></a></p><h2>Original</h2><blockquote><p><strong>(1) You've played a pivotal role in designing LLVM, Clang, Swift, and MLIR, and most recently Mojo, all of which have had a profound impact on the field of programming. With such a wide array of programming areas, how did your interest in programming language design and implementation come about?</strong></p></blockquote><p>I&#8217;ve spoken about this a bit, e.g. this interview might be helpful:</p><div id="youtube2-RDMrBYigqPc" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;RDMrBYigqPc&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/RDMrBYigqPc?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p><br><a href="https://nondot.org/sabre/2013-11-07-LLVMDevMtg-LLVMEarlyDays.pdf">https://nondot.org/sabre/2013-11-07-LLVMDevMtg-LLVMEarlyDays.pdf</a><br><br>(You can see many more talks here: <a href="https://nondot.org/sabre/Resume.html#talks">https://nondot.org/sabre/Resume.html#talks</a>)<br></p><blockquote><p><strong>(2) What were the primary motivations behind creating the Swift language, and what limitations were you aiming to address in comparison to Objective-C?</strong></p></blockquote><p>Please check out:</p><ul><li><p><a href="https://oleb.net/2019/chris-lattner-swift-origins/">https://oleb.net/2019/chris-lattner-swift-origins/</a></p></li><li><p><a href="https://atp.fm/205-chris-lattner-interview-transcript">https://atp.fm/205-chris-lattner-interview-transcript</a></p></li></ul><blockquote><p><strong>(3) LLVM has left a substantial mark on the compilation and code optimization industry. What are your thoughts on the future of LLVM and its relevance to the development of programming languages?</strong></p></blockquote><p>I think that LLVM as a project has a long life ahead of it.&nbsp;The LLVM project includes a wide range of toolchain technologies as well as MLIR, and underlies many programming languages today, including Clang/Rust/Swift/Julia/etc.&nbsp;I think that LLVM as an umbrella project is going strong, but I think that LLVM IR is dated and needs to be upgraded using MLIR technologies.</p><blockquote><p><strong>(4) Your latest endeavor is Mojo, an effort to blend the user-friendliness of Python, utilizing its syntax, with superior performance. We've seen languages like Julia attempting to compete with Python in the realm of AI systems. How does Mojo set itself apart from these other initiatives?</strong></p></blockquote><p>There are various technical improvements (answered below) but the biggest difference from things like Julia or Swift or Rust is that Mojo is a member of the Python ecosystem, not a new language.&nbsp;This means that it is very existing-Python user centric, meeting people where they are and lifting them, rather than forcing people to relearn how to write basic constructs to get going.</p><blockquote><p><strong>(5) Performance benchmarks show Mojo having a significant edge over Python. What underlies Mojo's exceptional speed?</strong></p></blockquote><p>Comparing Mojo to Python isn&#8217;t very &#8220;fair&#8221; because the technologies are so different: Mojo is compiled, Python&#8217;s standard implementation (&#8220;CPython&#8221;) is interpreted.<br><br>It is far more interesting to compare Mojo to things like Swift or Python or Julia.&nbsp; Here Mojo excels in a few ways:</p><ol><li><p>It has good low-level control like Rust.</p></li><li><p>It has good usability like Swift or Python.</p></li><li><p>It has advanced features like autotuning that no widely used language supports.</p></li><li><p>It can support code generation for GPUs and other accelerators.</p></li><li><p>It is built on a novel technology platform built on top of MLIR, which is an industry first.</p></li></ol><p>There are also many details that go into it of course.</p><blockquote><p><strong>(6) What do you consider the primary challenge in popularizing Mojo as a programming language, and how do you foresee the relationship between Mojo and Python in the future?</strong></p></blockquote><p>The relationship is straightforward, we&#8217;d like Mojo to grow to be a superset of Python over time, in the same way that C++ is a superset of C.&nbsp;This doesn&#8217;t mean that the language is exactly the same &#8212; C++ takes new keywords that C allows you to use, for example.&nbsp;That said, C and C++ have managed to co-evolve for many years, and I think the same will happen with Mojo and Python.<br><br>I don&#8217;t foresee a significant challenge popularizing Mojo we already have &gt;150K people who have used Mojo.&nbsp; The major problem with Mojo right now is that it is still very early and needs to grow up :-)</p><blockquote><p><strong>(7) Given your substantial success in these projects, how does a programming language (or compiler tool) gain popularity? Is it a blend of technical expertise along with a supportive community, or do other factors come into play?</strong></p></blockquote><p>This is different for every system, e.g. Swift clearly benefited from Apple owning the iOS ecosystem.<br><br>In the case of Mojo, it really comes down to giving existing Python programmers superpowers, unlocking innovation in an important community (AI Developers), and aligning with changes in hardware driven by the end of Moore&#8217;s law.</p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>La traducci&#243;n del ingl&#233;s al espa&#241;ol fue realizada usando ChatGPT (GPT-3.5).</p></div></div>]]></content:encoded></item><item><title><![CDATA[Entrevista a Gordana Dodig-Crnkovic]]></title><description><![CDATA[Investigadora en computaci&#243;n natural, morfol&#243;gica y cognitiva]]></description><link>https://camilocs.substack.com/p/entrevista-a-gordana-dodig-crnkovic</link><guid isPermaLink="false">https://camilocs.substack.com/p/entrevista-a-gordana-dodig-crnkovic</guid><dc:creator><![CDATA[Camilo Chacón Sartori]]></dc:creator><pubDate>Sun, 08 Oct 2023 11:00:20 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zdUE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cfcd666-04f4-4af1-a0ae-e89a8533807d_1804x2160.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>Esta entrevista fue originalmente realizada en ingl&#233;s por email. Por tanto, primero se ofrece una traducci&#243;n al espa&#241;ol, y al final, se encuentra la versi&#243;n original.</p><p><em>This interview was originally conducted in English by email. The Spanish translation is provided first, followed by the original version.</em></p></blockquote><p><a href="https://gordana.se">Gordana Dodig-Crnkovic</a> obtuvo su primer doctorado en F&#237;sica Te&#243;rica desde la Universidad de Zagreb, en 1988. Su carrera se divide en tres d&#233;cadas. La primera estuvo dedicada a la F&#237;sica, trabajando en el Instituto de Investigaci&#243;n Rudjer Boskovic en Zagreb. La siguiente d&#233;cada la pas&#243; en la industria, trabajando para la compa&#241;&#237;a sueca ABB como analista de seguridad cr&#237;tica para ABB Atom. Y en la &#250;ltima d&#233;cada, se traslad&#243; a la ciencia de la computaci&#243;n, obteniendo su segundo doctorado en Ciencias de la Computaci&#243;n en la Universidad de M&#228;lardalen en Suecia en 2006. </p><p>En la actualidad es profesora de Ciencias de la Computaci&#243;n en la Universidad de M&#228;lardalen y profesora de Dise&#241;o de Interacci&#243;n en la Universidad de Tecnolog&#237;a de Chalmers, ambas en Suecia. Su investigaci&#243;n actual se centra en dos &#225;reas principales. En primer lugar, estudia los mecanismos de la computaci&#243;n y la conexi&#243;n entre la computaci&#243;n natural/morfol&#243;gica, la informaci&#243;n y la cognici&#243;n. Su segundo enfoque se relaciona con la &#233;tica de la tecnolog&#237;a y el estudio del dise&#241;o computacional basado en valores. En esta entrevista nos centramos en la primera &#225;rea.</p><p>Dodig-Crnkovic es un ejemplo de la capacidad de conectar y darle coherencia a ideas provenientes de distintos campos de estudios, donde la computaci&#243;n tiene un papel principal, pero mirando siempre hacia la ciencia y la filosof&#237;a.</p><div><hr></div><p>Tuve la oportunidad de conocer a Gordana cuando le&#237; su art&#237;culo &#171;Significance of Models of Computation, from Turing Model to Natural Computation&#187;, que me provoc&#243; una grata impresi&#243;n. Y luego descubr&#237; muchos otros de sus art&#237;culos sobre temas similares que est&#225;n escritos con una bella claridad. </p><p>&#161;Espero disfruten la entrevista!<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!zdUE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cfcd666-04f4-4af1-a0ae-e89a8533807d_1804x2160.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!zdUE!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cfcd666-04f4-4af1-a0ae-e89a8533807d_1804x2160.png 424w, /__u/substackcdn.com/image/fetch/$s_!zdUE!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cfcd666-04f4-4af1-a0ae-e89a8533807d_1804x2160.png 848w, /__u/substackcdn.com/image/fetch/$s_!zdUE!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cfcd666-04f4-4af1-a0ae-e89a8533807d_1804x2160.png 1272w, /__u/substackcdn.com/image/fetch/$s_!zdUE!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cfcd666-04f4-4af1-a0ae-e89a8533807d_1804x2160.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!zdUE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cfcd666-04f4-4af1-a0ae-e89a8533807d_1804x2160.png" width="514" height="615.3173076923077" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9cfcd666-04f4-4af1-a0ae-e89a8533807d_1804x2160.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1743,&quot;width&quot;:1456,&quot;resizeWidth&quot;:514,&quot;bytes&quot;:3079122,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!zdUE!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cfcd666-04f4-4af1-a0ae-e89a8533807d_1804x2160.png 424w, /__u/substackcdn.com/image/fetch/$s_!zdUE!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cfcd666-04f4-4af1-a0ae-e89a8533807d_1804x2160.png 848w, /__u/substackcdn.com/image/fetch/$s_!zdUE!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cfcd666-04f4-4af1-a0ae-e89a8533807d_1804x2160.png 1272w, /__u/substackcdn.com/image/fetch/$s_!zdUE!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cfcd666-04f4-4af1-a0ae-e89a8533807d_1804x2160.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Imagen extra&#237;da de <a href="https://gordana.se">aqu&#237;</a>.</figcaption></figure></div><h2>Versi&#243;n traducida</h2><blockquote><p><strong>(1) Recientemente encontr&#233; tu art&#237;culo titulado &#171;Significance of Models of Computation, from Turing Model to Natural Computation&#187; (Importancia de los Modelos de Computaci&#243;n, desde el Modelo de Turing hasta la Computaci&#243;n Natural) y qued&#233; intrigado por el concepto de &#171;Computaci&#243;n natural&#187;. Dado que la mayor&#237;a de las personas que leen el newsletter son programadores, me gustar&#237;a indagar m&#225;s sobre este tema. &#191;Podr&#237;as brindar alguna perspectiva sobre este asunto?</strong></p></blockquote><p>Gracias, Camilo, por tu pregunta. En efecto, los enfoques computacionales naturales son modelos emergentes poderosos para comprender la naturaleza. El t&#233;rmino &#171;computaci&#243;n natural&#187; se refiere a procesos computacionales observados en la naturaleza, y la computaci&#243;n dise&#241;ada por humanos a menudo se inspira en la naturaleza, por lo que encontramos inspiraci&#243;n en la qu&#237;mica, la f&#237;sica, la biolog&#237;a y los procesos cognitivos de lo m&#225;s b&#225;sico (celular) hasta la cognici&#243;n humana. </p><p>Cuando se analizan fen&#243;menos naturales complejos en t&#233;rminos de procesos computacionales, se mejora nuestra comprensi&#243;n tanto de la naturaleza como de las posibilidades de la computaci&#243;n. Es un aprendizaje bidireccional, como argumentan Rozenberg y Kari en su art&#237;culo &#171;<a href="https://citeseerx.ist.psu.edu/document?repid=rep1&amp;type=pdf&amp;doi=062e1d8b6d4ffb46fd1f7fe0f9e9529418f54dfc">The Many Facets of Natural Computing</a>&#187;, describiendo nuevos posibles mecanismos que se pueden utilizar para computar, mejorar procesos computacionales, dise&#241;ar algoritmos o crear nuevos paradigmas de computaci&#243;n imitando a la naturaleza. Actualmente, dos dominios de la computaci&#243;n natural est&#225;n especialmente en foco: la computaci&#243;n cu&#225;ntica y la computaci&#243;n biol&#243;gica.</p><p>Aqu&#237; tienes una cita ilustrativa:</p><div class="pullquote"><p>La computaci&#243;n es un concepto &#250;til que va m&#225;s all&#225; de las fronteras disciplinarias de la ciencia de la computaci&#243;n. Quiz&#225;s la clase m&#225;s importante de computadoras naturales se encuentra en sistemas biol&#243;gicos que realizan computaci&#243;n en m&#250;ltiples niveles. Desde redes de procesamiento de informaci&#243;n moleculares y celulares hasta ecolog&#237;as, econom&#237;as y cerebros, la vida realiza c&#225;lculos. A pesar del acuerdo generalizado sobre este hecho, que se remonta a los aut&#243;matas de von Neumann y las redes neuronales de McCulloch-Pitts, a&#250;n carecemos de principios para comprender rigurosamente c&#243;mo se realiza la computaci&#243;n en la materia viva o activa. &#191;Cu&#225;l es la naturaleza &#250;ltima de la computaci&#243;n natural que ha evolucionado y c&#243;mo podemos utilizar estos principios para dise&#241;ar tecnolog&#237;as inteligentes y tejidos biol&#243;gicos?</p><p>Chu D, Prokopenko M, Ray JCJ. Computation by natural systems. Interface Focus. 2018 Dec 6;8(6):20180058. doi: 10.1098/rsfs.2018.0058.&nbsp;</p></div><p>Una obra de referencia cl&#225;sica es el &#171;Handbook of Natural Computing&#187;, editado por Grzegorz Rozenberg, Thomas B&#228;ck y Joost N. Kok. El manual abarca las principales ramas de la computaci&#243;n natural, que incluyen la Computaci&#243;n Cu&#225;ntica, la Computaci&#243;n Evolutiva, la Computaci&#243;n Neural, la Computaci&#243;n Molecular, la Computaci&#243;n de Membranas, la Inteligencia de Enjambre y los Sistemas Inmunitarios Artificiales. Curiosamente, no aborda la Computaci&#243;n Cognitiva, que es de gran inter&#233;s cient&#237;fico en nuestra era de la IA.</p><blockquote><p><strong>(2) En su opini&#243;n, &#191;qu&#233; importancia tiene el estudio de la filosof&#237;a para las personas que se dedican a la computaci&#243;n?</strong></p></blockquote><p>En esta etapa del desarrollo de la computaci&#243;n, y especialmente en la actual revoluci&#243;n de la inteligencia artificial, donde el conocimiento de todos los dem&#225;s campos est&#225; directamente relacionado con la computaci&#243;n, la divisi&#243;n existente en campos de conocimiento dispares con diferentes suposiciones, m&#233;todos, aplicaciones y prioridades es insostenible. </p><p>La filosof&#237;a proporciona un marco com&#250;n y unificador que establece conexiones entre campos de conocimiento dispares y nos ayuda a comprender y avanzar mejor. Esa fue la raz&#243;n por la cual organic&#233; un curso hace casi veinte a&#241;os, que comenz&#243; como Filosof&#237;a de la Ciencia de la Computaci&#243;n y se desarroll&#243; en Filosof&#237;a de la Computaci&#243;n. Entre las disciplinas filos&#243;ficas, veo la filosof&#237;a natural contempor&#225;nea como el campo capaz de ejercer una fuerza cohesiva entre varios programas de investigaci&#243;n.</p><p>Como observ&#243; acertadamente Stephen Wolfram:</p><div class="pullquote"><p>He notado una tendencia interesante. Elija cualquier campo X, desde arqueolog&#237;a hasta zoolog&#237;a. Existe ahora un &#171;X computacional&#187; o lo habr&#225; pronto. Y se ve ampliamente como el futuro del campo.</p></div><p>Efectivamente, tambi&#233;n existe la filosof&#237;a computacional, que utiliza t&#233;cnicas computacionales para respaldar la investigaci&#243;n filos&#243;fica.</p><p>En el mundo de los compartimentos estancos de conocimiento especializado, la computaci&#243;n y la informaci&#243;n son un lenguaje com&#250;n, la lengua franca de todos esos campos. Para conectarlos, necesitamos un contexto com&#250;n. El mejor que conozco es la filosof&#237;a natural computacional. Hay tres n&#250;meros especiales de la revista <em>Philosophies</em> dedicados a la Filosof&#237;a Natural Contempor&#225;nea que re&#250;nen investigaciones interdisciplinarias de diversas disciplinas. </p><p>Creo que el enorme desarrollo de la inteligencia artificial pone de manifiesto cuestiones filos&#243;ficas profundamente relevantes para todas las personas, especialmente para aquellos que desarrollan y aplican nuevas tecnolog&#237;as inform&#225;ticas.</p><blockquote><p><strong>(3) Ha trabajado extensamente con modelos info-computacionales. &#191;C&#243;mo se relacionan con los conceptos de emergencia, morfolog&#237;a y autorregulaci&#243;n?</strong></p></blockquote><p>En la base de todo est&#225; la idea de computar la naturaleza, que es el modelo de la naturaleza o el universo expresado en t&#233;rminos de estructuras informativas con din&#225;mica computacional. En este enfoque, cuyas ra&#237;ces hist&#243;ricamente se remontan a John Archibald Wheeler, la informaci&#243;n y su din&#225;mica son relativas al observador. Definitivamente no es &#171;inmaterial&#187;, como se puede encontrar en la web, sino relacional. La informaci&#243;n siempre se implementa en objetos f&#237;sicos, pero su significado se deriva de la relaci&#243;n con un observador. Por ejemplo, sabemos que diferentes seres vivos observan el mundo de diferentes maneras, seg&#250;n los tipos de sensores y actuadores que tienen. Algunos no pueden ver y otros ven en diferentes longitudes de onda. Un observador puede ser cualquier sistema que reciba informaci&#243;n y act&#250;e en funci&#243;n de ella. Puede ser un ser humano, pero tambi&#233;n una sola c&#233;lula, un robot o un sistema similar capaz de registrar y procesar informaci&#243;n. En este enfoque, el mundo se describe como una red de redes de agentes computacionales que intercambian informaci&#243;n en diferentes niveles de organizaci&#243;n, desde escalas microsc&#243;picas hasta macrosc&#243;picas. Es importante tener en cuenta que la informaci&#243;n es el resultado de la relaci&#243;n entre objetos f&#237;sicos incorporados y sus procesos.</p><p>Los procesos emergentes se explican mediante las interacciones entre las partes en un nivel de organizaci&#243;n de un sistema, que producen comportamientos que se encuentran un nivel por encima: los insectos crean enjambres, los peces forman bancos, las personas crean sociedades.</p><p>Estas interacciones entre los objetos en el universo, en una variedad de escalas, conducen a la complejizaci&#243;n de sus estructuras. En cuanto a la emergencia, Lee Smolin hizo una observaci&#243;n interesante:</p><div class="pullquote"><p>...el universo es un proceso para engendrar fen&#243;menos novedosos y estados de organizaci&#243;n, que se renovar&#225;n eternamente a medida que evolucione hacia estados de complejidad y organizaci&#243;n cada vez mayores.</p><p>Lee Smolin, &#171;Time Reborn&#187;, 2013.</p></div><p>El marco info-computacional se basa en la idea de la computaci&#243;n f&#237;sica/morfol&#243;gica/corporizada (<em>embodied</em>). Bas&#225;ndose en estructuras descritas como informaci&#243;n, los procesos en diferentes niveles de escala en la naturaleza pueden entenderse como computaciones intr&#237;nsecas y morfol&#243;gicas realizadas por la materia/energ&#237;a. Nuestra tecnolog&#237;a computacional dise&#241;ada es un subconjunto de las computaciones morfol&#243;gicas realizadas por sistemas naturales a los cuales se pueden delegar tareas computacionales, como en el caso del &#171;caminante pasivo&#187;, un robot simple cuya morfolog&#237;a le permite &#171;caminar&#187; por la pendiente sin necesidad de controles externos adicionales. Para obtener m&#225;s informaci&#243;n sobre los mecanismos computacionales subyacentes, se puede consultar el libro &#171;How the Body Shapes the Way We Think&#187; de Rolf Pfeifer y Josh Bongard, as&#237; como el art&#237;culo &#171;Morphological Computation: Connecting Body, Brain, and Environment&#187; de Rolf Pfeifer y Fumiya Iida.</p><blockquote><p><strong>(4) &#191;Qu&#233; investigaci&#243;n le ha apasionado m&#225;s y qu&#233; lecciones le dej&#243;?</strong></p></blockquote><p>Para m&#237;, la pregunta fundamental era c&#243;mo conectar los puntos del conocimiento fragmentario de diferentes disciplinas en un conjunto coherente. Esas disciplinas fueron las que encontr&#233; en mi desarrollo como investigador: f&#237;sica, computaci&#243;n, ciencia cognitiva, filosof&#237;a y recientemente biolog&#237;a, con la evoluci&#243;n de las especies naturales. Mi enfoque se basa en nociones fundamentales de informaci&#243;n y computaci&#243;n, que son mecanismos subyacentes de generaci&#243;n de conocimiento. Esto no significa que el mundo sea solo informaci&#243;n y computaci&#243;n, pero es una perspectiva muy &#250;til. </p><p>Aprend&#237; que la informaci&#243;n y el conocimiento son relativos al observador, como mencion&#233;. Esto no significa que sean subjetivos, sino que los observadores con una arquitectura cognitiva similar (sensores, procesamiento de informaci&#243;n y actuadores) tendr&#225;n una &#171;realidad&#187; similar. La realidad de un mosquito es bastante diferente de la realidad de un humano o del mundo de una ameba. Esto nos ense&#241;a a ser humildes con respecto a nuestras creencias sobre el mundo o el Universo y lo que es real. Ser&#225; interesante ver c&#243;mo ser&#225; el mundo para los agentes de inteligencia artificial que pueden dise&#241;arse de diferentes maneras y equiparse con muchos m&#225;s sensores y actuadores, m&#225;s potentes que los que tenemos nosotros como humanos.</p><blockquote><p><strong>(5)&nbsp;&#191;Qu&#233; piensa sobre el futuro de la computaci&#243;n en los pr&#243;ximos a&#241;os?</strong></p></blockquote><p>Estoy de acuerdo con Wolfram en que en las pr&#243;ximas d&#233;cadas veremos una proliferaci&#243;n de &#171;Computaci&#243;n X&#187; no solo en campos de investigaci&#243;n, sino tambi&#233;n en todos los dominios del conocimiento y la pr&#225;ctica, desde la academia hasta el gobierno, la atenci&#243;n m&#233;dica y las industrias, tanto en la cultura material como en la no material en su conjunto. En mi opini&#243;n, habr&#225; &#171;Inteligencia X&#187; en todas partes, que, por supuesto, ser&#225; computacional. El impresionante progreso reciente de la inteligencia artificial continuar&#225; y permear&#225; nuestra civilizaci&#243;n. </p><p>En este prometedor escenario futuro, sin embargo, tenemos muchos desaf&#237;os que resolver, y el principal es la sostenibilidad, tanto f&#237;sica (con recursos materiales y energ&#233;ticos limitados) como cultural y cognitiva. La participaci&#243;n inclusiva y democr&#225;tica de las partes interesadas es otro problema central. El desarrollo tecnol&#243;gico centrado en el ser humano es el imperativo fundamental que mantendr&#225; el desarrollo de la inteligencia artificial en beneficio de toda la humanidad.</p><blockquote><p><strong>(6)&nbsp;&#191;Cree que las funciones del cerebro se pueden simular y comprender mediante medios computacionales?</strong></p></blockquote><p>Sin duda, los comportamientos resultantes de la actividad cerebral ser&#225;n simulados cada vez m&#225;s computacionalmente. No hay nada m&#225;gico en c&#243;mo funcionan los sistemas vivos. Son parte de la naturaleza y, por lo tanto, fen&#243;menos naturales. Presentan formas evolucionadas de materia capaces de percibir, actuar, aprender y adaptarse. En un futuro no muy lejano, tendremos robots lo suficientemente inteligentes con funciones similares. A&#250;n no hemos llegado a ese punto, pero los robots conscientes, es decir, robots que se comportar&#225;n de manera que los humanos los percibir&#225;n como conscientes, no son imposibles. </p><p>Para obtener m&#225;s argumentos que respalden esta perspectiva, consulta el art&#237;culo recientemente publicado &#171;Consciousness in Artificial Intelligence: Insights from the Science of Consciousness&#187; de Patrick Butlin, Robert Long, Eric Elmoznino, Yoshua Bengio, entre otros.</p><blockquote><p><strong>(7) &#191;Qu&#233; consejo le dar&#237;as a alguien que quiera profundizar en estos temas?</strong></p></blockquote><p>Existen muchas formas de abordar este nuevo y emergente paradigma info-computacional para modelar, predecir, dise&#241;ar, gestionar y controlar sistemas. Depende completamente de tu sensibilidad y preferencias personales. Este campo es multidisciplinario, interdisciplinario y transdisciplinario. Para aquellos interesados en comprender c&#243;mo funcionan las cosas, aprender de la naturaleza es un enfoque valioso. Conectar la informaci&#243;n y la computaci&#243;n con la cognici&#243;n es una manera poderosa de estudiar la cognici&#243;n e inteligencia, lo cual es especialmente relevante hoy en d&#237;a y lo ser&#225; durante varias d&#233;cadas. Y como mencion&#233;, la Computaci&#243;n X abarcar&#225; todo tipo de dominios, incluyendo las artes, humanidades, aplicaciones pr&#225;cticas de todo tipo, puedes nombrarlo.</p><p>Personalmente, las preguntas relacionadas con la cognici&#243;n e inteligencia son las m&#225;s emocionantes en este momento. Una mejor comprensi&#243;n de la cognici&#243;n basal, la capacidad de todas las c&#233;lulas vivas para procesar informaci&#243;n, aprender y adaptarse, puede ayudarnos a desarrollar nuevos tipos de sistemas inteligentes dise&#241;ados, as&#237; como ayudarnos a controlar procesos de enfermedad y reparaci&#243;n de organismos vivos. Adem&#225;s, la abiog&#233;nesis, el proceso que lleva a la creaci&#243;n de organismos vivos a partir de la materia no viva, es muy importante de comprender. Si comenzara hoy como investigador, investigar&#237;a biolog&#237;a computacional y cognici&#243;n en el contexto de la filosof&#237;a natural computacional, centr&#225;ndome en sistemas vivos y buscando conexiones interdisciplinarias con campos de investigaci&#243;n adyacentes, as&#237; como enfoques filos&#243;ficos y metodol&#243;gicos. </p><p>Hay mucho que aprender de la naturaleza que nos ayudar&#225; a comprender c&#243;mo funcionan las cosas en realidad y c&#243;mo pueden funcionar y relacionarse entre s&#237;. Este proceso de aprendizaje es, al mismo tiempo, el proceso de liberaci&#243;n de los seres humanos y la toma de cada vez m&#225;s influencia en nuestras vidas.</p><p>El nuevo poder vendr&#225; con una nueva responsabilidad hacia la humanidad y el planeta. Se aplica el antiguo adagio: &#171;Con gran poder viene una gran responsabilidad&#187;.</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://camilocs.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscr&#237;base ahora&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/camilocs.substack.com/subscribe"><span>Suscr&#237;base ahora</span></a></p><p></p><div><hr></div><p><a href="https://gordana.se">Gordana Dodig-Crnkovic</a> earned her first doctorate in Theoretical Physics from the University of Zagreb in 1988. Her career spans three decades. The first was dedicated to Physics, working at the Rudjer Boskovic Research Institute in Zagreb. The following decade was spent in industry, working for the Swedish company ABB as a criticality safety analyst for ABB Atom. In the last decade, she transitioned to computer science, earning her second doctorate in Computer Science from M&#228;lardalen University in Sweden in 2006.</p><p>She currently holds positions as a Professor of Computer Science at M&#228;lardalen University and a Professor of Interaction Design at Chalmers University of Technology, both in Sweden. Her current research focuses on two main areas. First, she studies the mechanisms of computation and the connection between natural/morphological computation, information, and cognition. Her second focus relates to the ethics of technology and the study of value-based computational design. In this interview, we are primarily addressing the first area.</p><p>Dodig-Crnkovic is an example of the ability to connect and give coherence to ideas from various fields of study, where computing plays a central role, but always with an eye toward science and philosophy.</p><p>I had the opportunity to get to know Gordana when I read her article &#8220;Significance of Models of Computation, from Turing Model to Natural Computation,&#8221; which left a positive impression on me. Later, I discovered many of her other articles on similar topics, all written with beautiful clarity.</p><h2>Original</h2><blockquote><p><strong>(1) I recently came across your article titled &#8220;Significance of Models of Computation, from Turing Model to Natural Computation&#8221; and found myself intrigued by the concept of &#8220;Natural Computation.&#8221; As the majority of the readers of this newsletter are programmers, I would like to inquire further about this topic. Could you provide some insight into this subject matter?</strong></p></blockquote><p>Thank you, Camilo, for your question. Indeed, Natural computational approaches are powerful emerging models for understanding nature. &#8220;Natural computation&#8221; refers to computational processes observed in nature, and human-designed computing is often inspired by nature, so we find inspiration in nature on the level of chemistry, physics, biology, and cognitive processes from basal (cellular) to human cognition. </p><p>When complex natural phenomena are analyzed in terms of computational processes, our understanding of both nature and the possibility of computation is enhanced. It is a two-way learning as Rozenberg and Kari argue in their paper <a href="https://citeseerx.ist.psu.edu/document?repid=rep1&amp;type=pdf&amp;doi=062e1d8b6d4ffb46fd1f7fe0f9e9529418f54dfc">The Many Facets of Natural Computing</a>, describing new possible mechanisms that can be used to compute, improve computational processes, design algorithms, or create new paradigms of computing by mimicking nature. Currently, two domains of natural computing are especially in focus: quantum computing and biological computing. </p><p>Here is an illustrative quote:&nbsp;</p><div class="pullquote"><p><em>Computation is a useful concept far beyond the disciplinary boundaries of computer science. Perhaps the most important class of natural computers can be found in biological systems that perform computation on multiple levels. From molecular and cellular information processing networks to ecologies, economies, and brains, life computes. Despite ubiquitous agreement on this fact going back as far as von Neumann automata and McCulloch&#8211;Pitts neural nets, we so far lack principles to understand rigorously how computation is done in living, or active, matter. What is the ultimate nature of natural computation that has evolved, and how can we use these principles to engineer intelligent technologies and biological tissues?</em></p><p>Chu D, Prokopenko M, Ray JCJ. Computation by natural systems. Interface Focus. 2018 Dec 6;8(6):20180058. doi: 10.1098/rsfs.2018.0058.&nbsp;</p></div><p>Classic reference work is the &#8220;Handbook of Natural Computing&#8221;, edited by Grzegorz Rozenberg, Thomas B&#228;ck, and Joost N. Kok. The handbook spans the major branches of natural computing, including Quantum Computing, Evolutionary Computation, Neural Computation, Molecular Computing, Membrane Computing, Swarm Intelligence, and Artificial Immune Systems. Interestingly, it does not cover Cognitive Computing, which is of great scientific interest in our era of AI.</p><blockquote><p><strong>(2) In your opinion, how significant is the study of philosophy for individuals pursuing computation?</strong></p></blockquote><p>At this stage of the development of computing, and especially the ongoing AI revolution where knowledge of all other domains is directly connected to computing, the existing division into disparate knowledge fields with different assumptions, methods, applications, and priorities, is untenable. Philosophy provides a common, unifying overarching framework that brings connections between disparate knowledge fields and helps us better understand and move forward. That was the reason why I organized a course almost twenty years ago, that started as Philosophy of Computer Science and developed into <a href="http://www.gordana.se/PI_04/index.html">Philosophy of Computing</a>. Among philosophical disciplines, I see contemporary natural philosophy as the field capable of bringing a cohesive force among various research programs.&nbsp;</p><p>As Stephen Wolfram rightly observed:&nbsp;</p><div class="pullquote"><p>I&#8217;ve noticed an interesting trend. Pick any field X, from archeology to zoology. There either is now a &#8220;computational X&#8221; or there soon will be. And it&#8217;s widely viewed as the future of the field.</p></div><p>Sure enough, there is also Computational philosophy, that uses computational techniques to support philosophical research.&nbsp;</p><p>In the world of separated silos of specialized knowledge, computation and information are a common language, lingua franca of all those fields. To connect them, we need a common context. The best one I know of is Computational natural philosophy. There are three <a href="https://www.mdpi.com/journal/philosophies/special_issues/Philosophy_and_Philosophies3">special issues of the Journal Philosophies dedicated to Contemporary Natural Philosophy</a> bringing together interdisciplinary research from a variety of disciplines. I believe that the enormous development of AI brings to the fore philosophical issues deeply relevant for all people, particularly those who develop and apply new computing technologies.</p><blockquote><p><strong>(3) You have worked extensively with info-computational models. How do they relate to the concepts of emergence, morphology, and self-regulation?</strong></p></blockquote><p>At the bottom is the idea of computing nature, which is the model of nature or universe expressed in terms of informational structures with computational dynamics. In this approach whose roots historically can be traced back to John Archibald Wheeler, information and its dynamics are <em>observer-relative</em>. Definitely <em>not &#8220;immaterial&#8221;</em> as one may find on the web, but <em>relational</em>. Information is always implemented in physical objects, but its <em>meaning is given by the relation with an observer.</em> For example, we know that different living beings observe the world in different ways, depending on which kinds of sensors and actuators they have. Some cannot see, and some see in different wavelengths. An observer can be any system that receives information and acts upon it. It could be a human, but also a single cell, a robot, or a similar system capable of registering and processing information. The world in this approach is described as a network of networks of computational agents exchanging information at different levels of organization, from microscopic to macroscopic scales. Important to keep in mind is that information is the result of the relation between embodied physical objects and their processes.&nbsp;</p><p>Emergent processes are explained through the interactions between the parts on one level of organization of a system, producing behaviors that lie one level above: insects create swarms; fish form schools, people create societies.</p><p>Those interactions between the objects in the universe, on a variety of scales, lead to the complexification of its structures. Regarding emergence, Lee Smolin made an interesting observation:</p><div class="pullquote"><p><em>&#8230;the universe is a process for breeding novel phenomena and states of organization, which will forever renew itself as it evolves to states of ever higher complexity and organization.</em></p><p> Lee Smolin, Time Reborn, 2013.</p></div><p>The info-computational framework builds on the idea of physical/ morphological/ embodied computation. Based on structures described as information, processes at different levels of scale in nature can be understood as intrinsic, <em>morphological computations</em> performed by matter/energy. Our designed computational technology is a subset of morphological computations performed by natural systems to which computational tasks can be delegated, as in the case of the &#8220;<a href="https://www.youtube.com/watch?v=HwlKouopjqM">Passive walker</a>&#8221; a simple robot whose morphology makes it capable of &#8220;walking&#8221; down the slope without additional external controls. More about the underlying computational mechanisms can be found in the book &#8220;How the Body Shapes the Way We Think&#8221; by <a href="https://www.akademibokhandeln.se/sok?sokfraga=Rolf%20Pfeifer">Rolf Pfeifer</a> and <a href="https://www.akademibokhandeln.se/sok?sokfraga=%20Josh%20Bongard">Josh Bongard</a> and e.g., the article &#8220;Morphological Computation: Connecting Body, Brain, and Environment&#8221; by Rolf Pfeifer and Fumiya Iida.</p><blockquote><p><strong>(4) What research have you been most passionate about, and what lessons did it teach you?</strong></p></blockquote><p>For me, the fundamental question was how to connect the dots of fragmentary knowledge from different disciplines into a coherent whole. Those disciplines were the ones I encountered in my development as a researcher: physics, computing, cognitive science, philosophy, and recently biology, with the evolution of natural species. My approach is based on fundamental notions of information and computation, which are underlying mechanisms of knowledge generation. It does not mean that the world is only information and computation. But it is a very useful perspective. I learned that information and knowledge are observer-relative, as I mentioned. That was a very important insight for me. It does not mean they are <em>subjective</em>, but means that observers with similar cognitive architecture (sensors, information processing, and actuators) will have similar &#8217;reality&#8217;. A mosquito&#8217;s reality is rather different from a human&#8217;s reality or an amoeba&#8217;s world. This teaches us to be humble regarding our beliefs about the world or the Universe and what is real. It will be interesting to see what the world will be for AI agents that can be designed in different ways and equipped with many more and more powerful sensors and actuators compared to what we humans have.</p><blockquote><p><strong>(5)&nbsp;What are your thoughts on the future of computing in the years to come?</strong></p></blockquote><p>I agree with Wolfram that we in the coming decades will see a proliferation of &#8220;Computational X&#8221; through not only research fields but all knowledge and practical domains as well &#8212; from academia to government, healthcare, and industries; material and non-material culture as a whole. As I see it, there will be &#8220;Intelligent X&#8221; everywhere, which of course will be computational. Impressive recent progress of AI will continue and permeate our civilization. In this promising future scenario, we nevertheless have many challenges to solve and the main one is sustainability &#8212; physical (with limited material and energetic resources) but also cultural and cognitive. Inclusive and democratic stakeholder involvement is another central issue. Human-centric development of technology is the fundamental imperative that will keep AI development for the benefit of entire humanity.</p><blockquote><p><strong>(6)&nbsp;Do you believe that the functions of the brain can be simulated and comprehended through computational means?</strong></p></blockquote><p>No doubt, behaviors resulting from brain activity will be simulated computationally to an increasing degree. There is nothing magical in how living systems function. They are part of nature, and thus natural phenomena. They present evolved forms of matter, capable of sensing, acting, learning, and adaptation. We will in the not-too-distant future have intelligent enough robots with similar functions. We are not there yet, but conscious robots, that is robots that will behave so that humans will experience them as conscious, are not impossible. For more arguments for that view see the recently published article &#8220;<a href="https://doi.org/10.48550/arXiv.2308.08708">Consciousness in Artificial Intelligence: Insights from the Science of Consciousness</a>&#8221; by<strong> </strong>Patrick Butlin, Robert Long, Eric Elmoznino, Yoshua Bengio, et al.<strong>&nbsp;</strong></p><blockquote><p><strong>(7) What advice would you give to someone who wants to delve deeper into these topics?</strong></p></blockquote><p>There are many ways to approach this new emerging info-computational paradigm of modeling, predicting, designing, managing, and controlling systems. It depends entirely on your own sensibility and preferences. The field is multidisciplinary/ crossdisciplinarity/transdisciplinary. For those who are interested in understanding how things work, learning from nature is a good approach. Connecting information and computation with cognition is a powerful way to study cognition and intelligence which are especially important today and certainly for several decades to come. And as we mentioned, Computational X will cover all sorts of domains, including arts, humanities, practical applications of all sorts, you name it.</p><p>For me, questions related to cognition and intelligence are the most exciting right now. A better understanding of basal cognition &#8212; the ability of all living cells to process information, learn, and adapt can help us develop new types of intelligent engineered systems as well as help us control processes of disease and repair of living organisms. Also, abiogenesis, the process that leads to the creation of living organisms from non-living matter is very important to understand. If I started today as a researcher, I would research computational biology and cognition in the context of computational natural philosophy, focusing on living systems and searching the interdisciplinary connections to adjacent research fields as well as philosophical and methodological approaches. There is a lot to learn from nature that will help us understand how things actually work and may work and relate to each other. That process of learning is at the same time the process of liberation of humans and taking more and more influence over our lives. </p><p>The new power will come with a new responsibility towards humanity and the planet. The age-old adage applies: &#8220;With great power comes great responsibility.&#8221;</p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>La traducci&#243;n fue realizada usando ChatGPT (GPT-3.5) con peque&#241;as modificaciones de mi parte para que se entendiera mejor.</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[Entrevista a Simon Peyton Jones]]></title><description><![CDATA[Una de las mentes principales detr&#225;s de Haskell]]></description><link>https://camilocs.substack.com/p/entrevista-a-simon-peyton-jones</link><guid isPermaLink="false">https://camilocs.substack.com/p/entrevista-a-simon-peyton-jones</guid><dc:creator><![CDATA[Camilo Chacón Sartori]]></dc:creator><pubDate>Sat, 07 Oct 2023 16:32:17 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!kUUE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5de3e2b-6a1c-494a-a464-d69a1beda505_1100x800.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>Esta entrevista fue originalmente realizada en ingl&#233;s por email, y las respuestas fueron en audio. Por tanto, primero se ofrece una traducci&#243;n al espa&#241;ol desde la transcripci&#243;n, y al final, se encuentra la versi&#243;n transcrita original.</p><p><em>This interview was originally conducted in English by email, and the answers were in audio. Therefore, a translation into Spanish from the transcript is provided first, and at the end, you will find the original transcribed version.</em></p></blockquote><p><a href="https://es.wikipedia.org/wiki/Simon_Peyton_Jones">Simon Peyton Jones</a> es un destacado inform&#225;tico brit&#225;nico conocido por su influyente contribuci&#243;n al mundo de la inform&#225;tica y la programaci&#243;n funcional. Nacido en Sud&#225;frica en 1958, se gradu&#243; en la Universidad de Cambridge y complet&#243; su doctorado en el Trinity College de esa misma instituci&#243;n en 1980.</p><p>Peyton Jones es ampliamente reconocido por su papel en el desarrollo del lenguaje de programaci&#243;n Haskell, uno de los lenguajes funcionales m&#225;s influyentes y utilizados en la actualidad. Ha trabajado en la investigaci&#243;n y promoci&#243;n de la programaci&#243;n funcional y ha sido parte esencial en el desarrollo de la Glasgow Haskell Compiler (GHC), un compilador de referencia para Haskell.</p><p>Adem&#225;s de su trabajo en Haskell y la GHC, Simon Peyton Jones ha tenido una destacada carrera en Microsoft Research en Cambridge, donde ha investigado y contribuido en diversos campos de la inform&#225;tica y la tecnolog&#237;a, incluyendo la verificaci&#243;n de programas y la investigaci&#243;n sobre tipos de datos polim&#243;rficos.</p><p>Sus contribuciones al campo de la inform&#225;tica y su compromiso con la ense&#241;anza y la divulgaci&#243;n de la programaci&#243;n funcional han dejado una huella invaluable en la comunidad de entusiastas de la computaci&#243;n y, en particular, de Haskell.</p><div><hr></div><p>Como autor de un libro de programaci&#243;n funcional es para m&#237; un honor haber podido conversar con una las mentes principales detr&#225;s de Haskell. Adem&#225;s, y quiero dejar testimonio, Simon tiene una gentileza inusitada.</p><p>&#161;Espero disfruten la entrevista!<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!kUUE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5de3e2b-6a1c-494a-a464-d69a1beda505_1100x800.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!kUUE!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5de3e2b-6a1c-494a-a464-d69a1beda505_1100x800.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!kUUE!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5de3e2b-6a1c-494a-a464-d69a1beda505_1100x800.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!kUUE!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5de3e2b-6a1c-494a-a464-d69a1beda505_1100x800.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!kUUE!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5de3e2b-6a1c-494a-a464-d69a1beda505_1100x800.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!kUUE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5de3e2b-6a1c-494a-a464-d69a1beda505_1100x800.jpeg" width="1100" height="800" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c5de3e2b-6a1c-494a-a464-d69a1beda505_1100x800.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:800,&quot;width&quot;:1100,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:550820,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!kUUE!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5de3e2b-6a1c-494a-a464-d69a1beda505_1100x800.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!kUUE!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5de3e2b-6a1c-494a-a464-d69a1beda505_1100x800.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!kUUE!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5de3e2b-6a1c-494a-a464-d69a1beda505_1100x800.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!kUUE!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5de3e2b-6a1c-494a-a464-d69a1beda505_1100x800.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Imagen extra&#237;da de <a href="https://www.bcs.org/articles-opinion-and-research/computer-scientist-and-educationalist-prof-simon-peyton-jones-to-receive-obe/">aqu&#237;</a>.</figcaption></figure></div><h2>Versi&#243;n traducida</h2><blockquote><p><strong>(1) En los &#250;ltimos a&#241;os, muchos lenguajes de programaci&#243;n populares han empezado a incorporar t&#233;cnicas de lenguajes funcionales. Sin embargo, lenguajes como Haskell a&#250;n no han alcanzado una popularidad comparable. En su opini&#243;n, &#191;a qu&#233; se debe esta dicotom&#237;a?</strong></p></blockquote><p>Bueno, ocurren muchas cosas. Los lenguajes se adoptan no tanto por su excelencia t&#233;cnica, aunque eso influye, sino por su posicionamiento sociot&#233;cnico. Y eso tiene que ver con muchas cosas, como la disponibilidad percibida de programadores que puedan utilizar el lenguaje o su nivel percibido de familiaridad. En pocas palabras, &#191;utiliza llaves y, punto y coma? Haskell nunca ha buscado la popularidad o la adopci&#243;n como &#250;nico objetivo. Por supuesto, todo el mundo quiere que su lenguaje de programaci&#243;n sea adoptado y utilizado. De eso se trata. Pero siempre hemos querido que Haskell sea un lenguaje bonito, que tenga unos fundamentos intelectuales claros y que no los comprometa para, por as&#237; decirlo, buscar la popularidad.</p><p>Creo que inicialmente, tambi&#233;n en t&#233;rminos hist&#243;ricos, Haskell surgi&#243; de un grupo de grupos de investigaci&#243;n de laboratorio. No surgi&#243; de un grupo de usuarios corporativos. Y muchos de los lenguajes m&#225;s exitosos hoy en d&#237;a han surgido de laboratorios corporativos. Quiero decir, mira TypeScript. El &#233;xito arrollador de TypeScript, que surgi&#243; de Microsoft, y C# y Java. Todos estos lenguajes surgieron de entornos comerciales. Eso les dio mucho m&#225;s poder. Es genial que ese lenguaje se haya popularizado. Pero nosotros no. Creo que Haskell ha salido gradualmente del laboratorio y ha empezado a enfrentarse a todos los retos de la adopci&#243;n. </p><p>Ahora, los retos de la adopci&#243;n son cosas como que la gente no adopta tu lenguaje si sigues rompi&#233;ndolo en cada nueva versi&#243;n, si sigues cambi&#225;ndolo de forma que rompe sus programas. Hoy en d&#237;a prestamos cada vez m&#225;s atenci&#243;n a no hacer cambios que rompan o a proporcionar formas de mitigar esos cambios. Y esa es una tarea lenta, tortuosa y que lleva mucho tiempo. Es una especie de impuesto a la innovaci&#243;n. Al mismo tiempo, por supuesto, es un impuesto necesario si quieres que tu lenguaje sea adoptado.</p><p>Yo dir&#237;a que, con el tiempo, Haskell ha ido pasando gradualmente de tener en cuenta las preocupaciones de los adoptantes, de la gente que utiliza Haskell para temas cr&#237;ticos, a tener cada vez m&#225;s en cuenta sus preocupaciones. Pero creo que, por as&#237; decirlo, todav&#237;a estamos en ese camino. Y creo que no es sorprendente que otros lenguajes tengan tasas de adopci&#243;n mucho mayores. En cierto modo, est&#225; bien. Si Haskell se adopta, no es tanto por la gente que usa Haskell en s&#237;, sino por la gente que adopta las ideas de Haskell.</p><p>A menudo veo Haskell como un lenguaje que es un laboratorio para desarrollar ideas que luego se pueden adoptar y utilizar en otros lugares. Y creo que cosas como las m&#243;nadas y las clases de tipos han demostrado exactamente eso. Las m&#243;nadas y las clases de tipos aparecen ahora en todo tipo de lugares, no s&#243;lo en Haskell. As&#237; que yo dir&#237;a que es una especie de adopci&#243;n de Haskell, por as&#237; decirlo.</p><blockquote><p><strong>(2) Has desempe&#241;ado un papel importante en el desarrollo de GHC (Glasgow Haskell Compiler), que es el principal compilador de Haskell. &#191;Podr&#237;a explicarnos los retos t&#233;cnicos m&#225;s formidables a los que se ha enfrentado al dise&#241;ar y mejorar este compilador a lo largo de los a&#241;os?</strong></p></blockquote><p>Creo que GHC comenz&#243; alrededor de 1990, supongo, en la Universidad de Glasgow, cuando intent&#225;bamos construir uno de los primeros compiladores para Haskell. En ese momento, Lennart Augustsson tambi&#233;n estaba construyendo un compilador para Haskell llamado HBC. Y as&#237;, inicialmente, &#233;ramos bastante modestos, pero incluso por entonces, Haskell en ese momento inclu&#237;a clases de tipos. Y creo que el primer obst&#225;culo que tuvimos fue implementar clases de tipos tambi&#233;n. Y eso significaba el comprobador de tipos, significaba la implementaci&#243;n del an&#225;lisis del diccionario de las clases de tipos y hacerlo razonablemente eficiente. Porque nadie quiere ejecutar programas que son demasiado lentos. Y yo dir&#237;a que realmente nos tom&#243; mucho tiempo, ya sabes, varios a&#241;os para perfeccionar esa aplicaci&#243;n hasta el punto en que estaba haciendo un buen trabajo.</p><p>Creo que otro gran reto t&#233;cnico que resolvimos muy bien en su momento fue c&#243;mo mantener los tipos sanos en todo el compilador. Haskell es un lenguaje est&#225;ticamente tipado, pero los compiladores para lenguajes est&#225;ticamente tipados no tienen por qu&#233; serlo en todo su proceso de optimizaci&#243;n. Pero especialmente debido a las clases de tipos, quer&#237;amos mantener los tipos en nuestro programa. As&#237; que primero pensamos en decorar el &#225;rbol sint&#225;ctico de una forma bastante ad hoc. Despu&#233;s de desugar (<em>desugaring</em>), este es el &#225;rbol de sintaxis lambda, decor&#225;ndolo con informaci&#243;n de tipos. Pero es dif&#237;cil mantenerlo correcto, &#191;verdad? Si tienes una funci&#243;n polim&#243;rfica, como, no s&#233;, <code>map,</code> y la alineas (<em>inline</em>), entonces en la copia especializada que est&#225; alineada, las cosas que eran variables de tipo como <code>a</code> y <code>b</code> en maps el c&#243;digo original ahora se instancian a <code>int</code> y <code>bool</code> en la copia instanciada. As&#237; que de alguna manera inline significa especializaci&#243;n y especializaci&#243;n de tipos.</p><p>Tuvimos una serie de soluciones ad hoc antes de que Philip Wadler finalmente se&#241;alara, bueno, todo lo que necesitas hacer es simplemente implementar el system <code>F</code> que tiene grandes lambdas y la reducci&#243;n beta simplemente reemplaza sistem&#225;ticamente la gran lambda de <code>a.e</code> aplicada a un tipo <code>T</code>. Entonces s&#243;lo tienes que tomar <code>e</code> con <code>a</code> reemplazado por <code>T</code> en todas partes. Y result&#243; que esta era una manera incre&#237;blemente simple y directa de implementar un compilador con un fuerte sistema de tipos est&#225;ticos en todo el compilador que nadie hab&#237;a hecho realmente antes. </p><p>Creo que GHC sigue siendo uno de los pocos compiladores que est&#225; tipado est&#225;ticamente desde el principio hasta el final. Creo que es todo un logro. Y para m&#237;, es un logro de Jean-Yves Girard, que invent&#243; el system <code>F</code>. Result&#243; que el system <code>F</code> era realmente exactamente el adecuado para nosotros para soportar tipado est&#225;tico en presencia de optimizaciones de programa al por mayor, bastante radicales. Ese fue un gran desaf&#237;o t&#233;cnico en ese momento, pero uno que siento que resolvimos no por ser terriblemente inteligentes, sino simplemente por usar tecnolog&#237;a est&#225;ndar, reconociendo que pod&#237;amos usar tecnolog&#237;a est&#225;ndar para resolverlo.</p><p>Creo que otro gran reto con el paso del tiempo fue que el comprobador de tipos se complic&#243; cada vez m&#225;s. Tenemos clases de tipo multipar&#225;metro. Tenemos dependencias funcionales. Tenemos familias de tipos. Tenemos familias de tipos inyectivas. Tenemos nuevos tipos y nuevas coerciones de tipos. Hay mucho que hacer en el comprobador de tipos de GHC. Y gradualmente el verificador de tipos se volvi&#243; m&#225;s y m&#225;s dif&#237;cil de mantener. </p><p>Finalmente, me di cuenta de que pod&#237;amos coger de nuevo algo de tecnolog&#237;a de otros lugares, esta vez de Inria en Francia, Francois Poitier y Didier R&#233;my, que explicaron c&#243;mo implementar un lenguaje de programaci&#243;n tipado est&#225;ticamente en dos pasos. Uno recorriendo la sintaxis del programa original, que es muy grande. Es decir, como muchos casos. Se camina sobre ese &#225;rbol sint&#225;ctico, generando restricciones. El proceso de generaci&#243;n de restricciones es relativamente sencillo. Y luego, como un paso separado, caminas sobre la sintaxis de las restricciones que has generado. Y all&#237;, en una sintaxis muy peque&#241;a, recorres esta peque&#241;a sintaxis resolviendo las restricciones.</p><p>Ahora, la resoluci&#243;n es bastante complicada, realmente complicada. Ese es el solucionador de restricciones en GHC. Pero es completamente 100% separado del generador de restricciones, que camina sobre el gran &#225;rbol de sintaxis de los t&#233;rminos. Esta es una muy buena separaci&#243;n de preocupaciones. Ha funcionado muy bien para nosotros. Y una gran parte de lo que aprendimos de Francois y Didier no es s&#243;lo la idea, sino tambi&#233;n, estaba en su art&#237;culo, la idea de las restricciones de implicaci&#243;n, donde las restricciones no son s&#243;lo planas, pero podr&#237;an ser anidadas de una manera significativa. Y eso refleja exactamente lo que ocurre durante la inferencia de tipos y la comprobaci&#243;n de tipos. </p><p>Creo que ver&#225;s un patr&#243;n com&#250;n aqu&#237;, que es que hemos tenido importantes desaf&#237;os t&#233;cnicos, pero los hemos resuelto usando ideas intelectualmente profundas que tomamos de la literatura, en lugar de simplemente por un asalto frontal de resolverlo con sangre, sudor y l&#225;grimas.</p><blockquote><p><strong>(3) &#191;Existe alguna caracter&#237;stica emergente en Haskell o en otro lenguaje de programaci&#243;n funcional que, en su opini&#243;n, sea muy prometedora y pueda mejorar significativamente el trabajo de los programadores?</strong></p></blockquote><p>Creo que probablemente lo m&#225;s importante que podemos hacer para mejorar el trabajo de los programadores con Haskell hoy en d&#237;a es promover la estabilidad, la riqueza, la eficacia y la ausencia de fricci&#243;n de la cadena de herramientas. En otras palabras, creo que lo que m&#225;s ayudar&#225; a los programadores profesionales a usar Haskell no son las nuevas caracter&#237;sticas del lenguaje. Son que Cabal funcione perfectamente o que Hackage funcione perfectamente o que sus sistemas CI funcionen perfectamente. Para ellos es f&#225;cil adoptar nuevas versiones del compilador cuando salen. Esos son probablemente m&#225;s importantes. Quiero decir, hay algunas cosas grandes en proceso. Creo que hay un viaje muy lento pero definitivo hacia la adici&#243;n de m&#225;s caracter&#237;sticas de tipado dependiente.</p><p>A menudo se habla de Haskell dependiente como si fuera una cosa. Pero no es una cosa. Es una constelaci&#243;n de caracter&#237;sticas. Y, de hecho, la programaci&#243;n dependiente tipada no es en s&#237; misma una cosa. Pero Haskell est&#225; mejorando gradualmente en el manejo de modismos de programaci&#243;n tipada dependiente. Y creo que eso es interesante porque nos ayuda a explorar la frontera entre los sistemas de tipos est&#225;ticos y las pruebas. Es decir, resulta que algunos de los m&#225;s entusiastas adoptantes de tipos sofisticados no son personas en entornos universitarios. Son personas en entornos industriales. Y est&#225;n usando tipos est&#225;ticos complicados porque encuentran que les da una manera de tener m&#225;s confianza en la correcci&#243;n de su c&#243;digo. Y si est&#225;n escribiendo c&#243;digo, quieren que sea mantenible dentro de dos a&#241;os. En particular, quieren refactorizar de manera sustantiva donde la persona que hace la refactorizaci&#243;n no es la persona que escribi&#243; el c&#243;digo. Entonces los tipos est&#225;ticos son incre&#237;blemente &#250;tiles para hacer esto. Por lo tanto, tratan de hacer m&#225;s y m&#225;s.</p><p>&#191;Qu&#233; hace un tipo est&#225;tico? Explica algunas propiedades de la funci&#243;n, &#191;verdad? Una funci&#243;n de tipo <code>int</code> a <code>int</code> toma un entero y devuelve un entero. Estos son requisitos y garant&#237;as. Y tipos m&#225;s sofisticados te permiten decir cosas m&#225;s sofisticadas sobre los argumentos y los resultados. Y explicar invariantes en estructuras de datos. Creo que es un cambio continuo y gradual hacia tipos est&#225;ticos m&#225;s potentes. Creo que continuar&#225;. Hay otro gran experimento intelectual en marcha en forma de Haskell lineal. Creo que el jurado a&#250;n no ha decidido hasta qu&#233; punto funcionar&#225; bien. Pero me encanta que Haskell sea un laboratorio en el que podemos probarlo. </p><p>La gente est&#225; haciendo muchas otras cosas en Haskell. Pero yo no dir&#237;a que hay una gran innovaci&#243;n en el lenguaje que est&#225; en el horizonte. Una m&#225;s lejana. Podr&#237;as imaginar algo como tipos de fila. Los tipos de fila son una caracter&#237;stica de los sistemas de tipos que son realmente muy expresivos. Y Haskell no lo tiene todo por el momento. Y tal vez si lo tuviera, tal vez podr&#237;amos encontrar maneras de usarlos. Ciertamente conocemos algunas de ellas. &#191;Hay suficiente &#237;mpetu para implementar tipos de fila? No estoy seguro por el momento. Pero tal vez. Pero eso es un ejemplo de algo mucho m&#225;s lejano. Pero, aun as&#237;, tiene la idea de que me gustar&#237;a que GHC fuera un laboratorio en el que la gente pueda explorar ideas como esa.</p><blockquote><p><strong>(4) Adem&#225;s de tus contribuciones a Haskell, tambi&#233;n ha participado activamente en proyectos de investigaci&#243;n en Microsoft Research. &#191;C&#243;mo percibe la interacci&#243;n entre la investigaci&#243;n acad&#233;mica y la industria tecnol&#243;gica y cu&#225;l es, en su opini&#243;n, su influencia en la trayectoria evolutiva de los lenguajes de programaci&#243;n?</strong></p></blockquote><p>Bueno, hay muchas cosas en esa pregunta. Veamos, yo particip&#233; en varias cosas en Microsoft. Una muy destacada es que cuando llegu&#233; por primera vez a Microsoft, pensaba, &#191;cu&#225;l es la mejor manera de que un programador funcional se involucre en los productos de Microsoft? Pens&#233;, &#191;d&#243;nde estamos utilizando ya la programaci&#243;n funcional? Y me di cuenta de que uno de los mayores lugares es Excel. </p><p>Cada hoja de c&#225;lculo de Excel es un programa funcional. Todas esas f&#243;rmulas en una hoja de c&#225;lculo son peque&#241;os programas funcionales. Y una hoja de c&#225;lculo con miles de f&#243;rmulas es un programa funcional bastante grande. Pero Excel no es un lenguaje de programaci&#243;n funcional muy bueno. No es muy potente. En particular, no proporciona ninguna facilidad para la abstracci&#243;n, para definir nuevas funciones. As&#237; que durante dos d&#233;cadas enteras en Microsoft, formamos una asociaci&#243;n de investigaci&#243;n bastante productiva con el equipo de Excel. Y ahora me complace decir que Lambda, es decir, el c&#225;lculo Lambda completo, forma parte de Excel. Puedes escribir f&#243;rmulas Lambda. Dices igual a <code>LAMBDA(X, X + 1)</code>. Esa es la funci&#243;n de incremento. Puede ser el valor de una celda y entonces puedes aplicar el valor de esa celda. Es un valor perfectamente de primera clase. Puedes aplicarlo a otra celda. Estoy bastante orgulloso de eso.</p><p>Creo que eso significa que las ideas de la programaci&#243;n funcional, incluida la programaci&#243;n funcional de orden completamente superior del c&#225;lculo Lambda, est&#225;n ahora presentes en una herramienta de usuario final. Eso es bastante emocionante. Y creo que puede ser silencioso, es una especie de combusti&#243;n lenta, y puede resultar bastante influyente. Tambi&#233;n en Excel, tratando de hacer que las matrices se aniden correctamente para que pueda tener matrices de funciones y funciones que devuelven matrices y matrices que contienen matrices y as&#237; sucesivamente y celdas que contienen matrices, as&#237; como celdas que contienen funciones. Y todo eso est&#225; por venir. </p><p>Veamos, &#191;qu&#233; m&#225;s en Microsoft? Estuve bastante involucrado de manera perif&#233;rica en F#. Ese fue el proyecto de Don Syme, pero creo que estaba bastante inspirado en muchas de las cosas que est&#225;bamos haciendo en la escuela secundaria. Me involucr&#233; en un proyecto de aprendizaje autom&#225;tico (ML) que trataba de ver un compilador como algo que podr&#237;a ser el optimizador de un compilador, algo que podr&#237;a ser impulsado por ML. Y al final no se convirti&#243; en ning&#250;n tipo de producto. Pero la otra mitad de tu pregunta ten&#237;a que ver con, veamos, &#191;c&#243;mo influye la tecnolog&#237;a en los lenguajes de programaci&#243;n o en la industria tecnol&#243;gica? As&#237; que ahora creo que la influencia es muy clara, muchos lenguajes muy influyentes han surgido de laboratorios de investigaci&#243;n industrial o grupos industriales.</p><p>Antes he mencionado algunas de ellas. Supongo que Swift y Go son otros que tienen patrocinadores corporativos. Rust tambi&#233;n tiene un patrocinador corporativo en la forma de Mozilla. As&#237; que, en cierto modo, los lenguajes de programaci&#243;n m&#225;s utilizados han surgido casi todos, no del mundo acad&#233;mico, sino de la industria. Creo que es un cambio interesante. Tambi&#233;n refleja que la industria tiene ahora un mont&#243;n de gente trabajando en ella que han tenido una educaci&#243;n bastante seria de gente como t&#250;, tal vez, en la programaci&#243;n funcional y en lenguajes de programaci&#243;n en general. Y, por lo tanto, no son lenguajes de Mickey Mouse. Son piezas serias de dise&#241;o de lenguajes. Creo que es muy emocionante.  Creo que ha habido mucha influencia de la industria en el sector tecnol&#243;gico en la trayectoria evolutiva de los lenguajes de programaci&#243;n. </p><p>Ahora trabajo para Epic Games, donde estamos dise&#241;ando un lenguaje de l&#243;gica funcional destinado a ser utilizado como lenguaje de programaci&#243;n para el metaverso. Y tambi&#233;n es, bueno, es un entorno industrial, pero estamos desarrollando un lenguaje de programaci&#243;n bastante emocionante e innovador que, en realidad, antes podr&#237;a haberse considerado extremadamente acad&#233;mico.</p><blockquote><p><strong>(5) La inteligencia artificial y el aprendizaje autom&#225;tico representan &#225;mbitos en continua expansi&#243;n dentro de la inform&#225;tica. &#191;Puede identificar oportunidades para la aplicaci&#243;n de principios de programaci&#243;n funcional, como los que encarna Haskell, en estos campos? Adem&#225;s, &#191;c&#243;mo cree que estos principios pueden beneficiar a la IA y el ML?</strong></p></blockquote><p>Bueno, es dif&#237;cil de decir. En cierto modo, todas las redes neuronales son programas funcionales. As&#237; es. Una red neuronal no es m&#225;s que una pila de nodos de procesamiento de flujo de datos con datos fluyendo a trav&#233;s de ellos, y eso es expresable muy directamente como un programa funcional. Hay muy poco de, ya sabes, escribir en esa variable mutable y leer de ese disco en una red neuronal. Nada, excepto en los bordes. As&#237; que, en gran medida, ML son programas funcionales. Es muy influyente dentro de eso. Y tambi&#233;n necesitan ser ejecutados en un tipo de paralelismo de datos. Y creo que un mont&#243;n de t&#233;cnicas de la investigaci&#243;n en programaci&#243;n funcional se est&#225;n utilizando en estas configuraciones de ML a gran escala para ejecutar estos programas y datos en paralelo. </p><p>Me encantar&#237;a que Haskell fuera un lenguaje en el que se pudieran escribir programas de ML y luego diferenciarlos. Estoy trabajando en ello con algunos colegas. Pero, de todos modos, no creo que la influencia de Haskell sea muy directa en la esfera de ML por el momento. Supongo que la influencia de las t&#233;cnicas de programaci&#243;n funcional, bueno, aparte de esta general, creo que dir&#237;a que el marco, cualquiera que est&#233; haciendo ML est&#225; pensando funcionalmente todo el tiempo. Todo el tiempo.</p><blockquote><p><strong>(6) &#191;C&#243;mo ve el futuro de la ense&#241;anza de la inform&#225;tica en las escuelas con la llegada de los grandes modelos ling&#252;&#237;sticos (LLM)?</strong></p></blockquote><p>Acabamos de pasar la &#250;ltima d&#233;cada intentando integrar la programaci&#243;n en las escuelas como parte de la ense&#241;anza de la inform&#225;tica. Pero, &#191;necesitamos seguir ense&#241;ando programaci&#243;n en las escuelas si, bueno, los estudiantes pueden, en lugar de intentar escribir merge sort, pueden simplemente conjurarlo con un gran modelo de lenguaje diciendo, por favor, escr&#237;beme merge sort. Pero creo que la respuesta es definitivamente s&#237;. Despu&#233;s de todo, ense&#241;amos a los ni&#241;os mucho sobre aritm&#233;tica. Les damos a&#241;os de formaci&#243;n en aritm&#233;tica, a&#241;os en la escuela primaria. Y, sin embargo, todo lo que hacen se puede hacer mucho m&#225;s r&#225;pido con una calculadora de 5 d&#243;lares. &#191;Por qu&#233; dedicamos todo ese tiempo? Bueno, creo que es porque obtienes cierta comprensi&#243;n visceral de lo que son los n&#250;meros y obtienes cierta capacidad para estimar lo que deben ser los resultados sin usar una calculadora. Es dif&#237;cil de asimilar, pero en t&#233;rminos objetivos, los conocimientos num&#233;ricos est&#225;n estrechamente relacionados con los resultados en la vida. Las personas que no saben aritm&#233;tica suelen tener malos resultados en la vida. </p><p>Creo que hay fuertes razones para creer que aprender cosas fundamentales, aunque se pueda hacer m&#225;s r&#225;pido, m&#225;s r&#225;pido por un ordenador extremadamente barato, sigue valiendo la pena, no vale la pena hacerlo. Quiz&#225;s no todas las cosas, &#191;verdad? Entonces tienes que decir, bueno, &#191;qu&#233; cosas deber&#237;amos aprender? La aritm&#233;tica es una de ellas. Yo dir&#237;a definitivamente que la programaci&#243;n es parte de eso, que cada ni&#241;o debe aprender los elementos de programaci&#243;n para que tengan una visceral, en sus entra&#241;as, la comprensi&#243;n de c&#243;mo funcionan los ordenadores y sus fragilidades y su poder, tanto sus fragilidades y su poder. Entonces, &#191;necesitamos ense&#241;ar inform&#225;tica? S&#237;. Luego est&#225;, &#191;c&#243;mo podr&#237;amos ense&#241;ar inform&#225;tica o, de hecho, historia o ingl&#233;s? Y ah&#237;, creo, quiz&#225;s los LLMs jueguen un papel. Es decir, en educaci&#243;n, los profesores dedican mucho tiempo a cr&#237;ticas de nivel relativamente bajo de los ensayos de los estudiantes o de sus programas. Y tal vez parte de esta retroalimentaci&#243;n de nivel relativamente bajo podr&#237;a ser realizada por una especie de tutor de IA. Y creo que eso podr&#237;a ser &#250;til. Tal vez eso liberar&#237;a al profesor para dedicar m&#225;s tiempo a las cosas importantes que s&#243;lo &#233;l puede hacer en ese momento. </p><p>En cuanto a la inteligencia artificial como tecnolog&#237;a educativa, creo que el futuro est&#225; muy abierto. Hay muchas startups intentando hacer esto, y est&#225; lejos de estar probado, muy lejos de estar probado, dir&#237;a yo. Y, sin embargo, debe haber algo ah&#237;. Tiene que haber algo ah&#237;.</p><blockquote><p><strong>(7) &#191;Qu&#233; consejo, ya sea de car&#225;cter t&#233;cnico u orientado a la vida, ofrecer&#237;a a las personas que aspiran a dedicar su vida a la investigaci&#243;n en el campo de la inform&#225;tica?</strong></p></blockquote><p>Bueno, es una pregunta muy amplia y abierta, &#191;no? Bueno, lo primero, que es una observaci&#243;n com&#250;n y que mucha gente dice, pero que sin embargo sigue siendo cierto, es que sigas a tu coraz&#243;n, &#191;no? Si te apasiona estudiar inform&#225;tica, estudia inform&#225;tica. No te empe&#241;es en hacer otras cosas. Sigue las cosas que realmente quieres hacer. La gran ventaja de la inform&#225;tica como campo de estudio es que es comercialmente muy relevante. As&#237; que, aunque no te paguen como investigador inform&#225;tico en una universidad, por ejemplo, o en un laboratorio de investigaci&#243;n de una empresa, puedes conseguir un trabajo muy bien remunerado. </p><p>Tal vez, si eres lo suficientemente apasionado, trabajes dos d&#237;as y medio a la semana para una empresa, ganes mucho dinero y pases los otros dos d&#237;as y medio investigando. No es una ley de hierro que todo el mundo tenga que trabajar a tiempo completo, especialmente en inform&#225;tica, donde la gente est&#225; relativamente, en comparaci&#243;n con otros sectores, ya sabes, intenta ser un poeta medieval, relativamente bien pagado, bien recompensado. Creo que somos muy afortunados.</p><p>As&#237; que la otra sugerencia que yo har&#237;a es que no pases demasiado tiempo intentando pensar en c&#243;mo investigar en inform&#225;tica, sino que simplemente te pongas manos a la obra y hagas algo. Hay que sacar tiempo. Y es que, como digo, puede ser dif&#237;cil conseguir financiaci&#243;n para ese tiempo. Puede que acabes teniendo que financiarte t&#250; mismo. Pero entonces no seas demasiado ambicioso. Cuando empec&#233; mi vida como investigador, tuve, bastante notablemente, y fue una caracter&#237;stica de esa &#233;poca en particular a mediados de los 80, consegu&#237; un trabajo como profesor cuando ni siquiera ten&#237;a un doctorado en inform&#225;tica. No ten&#237;a ni idea de c&#243;mo investigar. Me sentaba en mi oficina y cuando no estaba ense&#241;ando, pensaba, bueno, ahora ser&#225; mejor que investigue. Me sentaba con un l&#225;piz afilado y una hoja de papel en blanco y pensaba, &#171;quiero grandes ideas&#187;. Pero, por supuesto, las grandes ideas no ca&#237;an del cielo. Pero al final, uno de mis colegas, un mentor muy simp&#225;tico y servicial, me dijo: Simon, empieza con cualquier cosa, incluso con algo bastante humilde, y a ver en qu&#233; se convierte. Haz algo humilde. Empec&#233; a escribir. Creo que era un generador de analizadores sint&#225;cticos que tomaba una gram&#225;tica BNF y generaba un analizador sint&#225;ctico en Sassel, que era el lenguaje funcional que yo estaba usando entonces. </p><p>Y eso, al final, para mi sorpresa, se convirti&#243; en un trabajo de investigaci&#243;n que fue publicado. Pero en cierto modo, lo m&#225;s importante era que estaba haciendo algo. Por lo tanto, yo sugerir&#237;a ponerse en marcha y hacer algo, probablemente construir algo. Y a medida que lo construyes, a medida que te encuentras con desaf&#237;os, lo maravilloso de la investigaci&#243;n es que, si est&#225;s tratando de construir algo y te encuentras con un desaf&#237;o, en lugar de tener que hackearlo de alguna manera para conseguir construirlo, que es lo que sucede si est&#225;s trabajando para una empresa que necesita esa cosa. Si eres un investigador, puedes decir, oh, eso es un problema muy interesante. Puedes girar 90 grados y empezar a estudiar ese problema. Pero est&#225;s estudiando ese problema, no en abstracto, sino porque es un problema que quieres resolver para conseguir otra cosa. As&#237; que tienes un motivo para hacerlo. Eso es muy &#250;til.</p><p>Lo otro es empezar a escribir pronto, escribir mucho. No hace falta que sean art&#237;culos que te publiquen, sino art&#237;culos de alg&#250;n tipo, porque una vez que tienes un art&#237;culo, algo escrito sobre lo que est&#225;s haciendo, puedes compartirlo con otras personas. Puedes iniciar un di&#225;logo. Personalmente soy alguien que investiga principalmente en di&#225;logo con otras personas. De hecho, soy casi incapaz de pensar por mi cuenta. </p><p>Es muy &#250;til dialogar con otros y hablar con otros. Es muy &#250;til tener algo escrito que compartir con ellos, que puedan leer y que tenga sentido. Y eso te ayudar&#225; a escribir. </p><p>&#191;Qu&#233; sugiero? Saca algo de tiempo para investigar, si es necesario, trabajando a tiempo parcial. Empieza a hacer algo, incluso algo que no parezca muy de investigaci&#243;n, s&#243;lo para ponerte en marcha en algo. Escribe pronto y a menudo sobre lo que est&#225;s haciendo e intenta encontrar a otras personas con las que puedas compartirlo y entablar conversaci&#243;n. &#201;sas ser&#237;an mis sugerencias iniciales, creo.</p><p>No creo que debas decir: &#171;No puedo empezar a menos que alguien me pague por hacer un doctorado o consiga un trabajo en Microsoft Research o algo as&#237;&#187;, porque entonces te est&#225;s abocando al fracaso. Si realmente quieres hacer un doctorado, quiz&#225; tengas que ahorrar algo de dinero para hacerlo. Probablemente consigas una plaza, pero es muy dif&#237;cil encontrar gente que te pague por investigar, &#191;verdad? Cuando todav&#237;a no tienes un historial para hacerlo. As&#237; que encuentras otra manera. Pero la otra cosa, por supuesto, es que incluso en tu trabajo diario como desarrollador de software, te encuentras todo el tiempo con problemas de investigaci&#243;n. </p><p>Y as&#237;, y muchas empresas, sobre todo en algunos aspectos, bueno, no s&#233;, tal vez no es una cuesti&#243;n de tama&#241;o. Es s&#243;lo que muchas empresas en realidad te dan un poco de holgura. Si dices, aqu&#237; hay un problema interesante, creo que podemos resolver este desaf&#237;o de una manera m&#225;s general o sustantiva que simplemente hackearlo. Muchas de ellas te dar&#225;n un poco de margen para intentarlo. Por lo tanto, casi se puede hacer un poco de investigaci&#243;n en el contexto de un entorno corporativo. A veces depende un poco de la empresa. Depende un poco de qu&#233; tipo de c&#243;digo est&#225;s escribiendo.</p><p>Estupendo. Bueno, espero que esto haya sido &#250;til. Gracias Camilo. Saludos.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://camilocs.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscr&#237;base ahora&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/camilocs.substack.com/subscribe"><span>Suscr&#237;base ahora</span></a></p><div><hr></div><h2>Original (transcripci&#243;n)</h2><blockquote><p><strong>(1) In recent years, many widely adopted programming languages have begun to incorporate functional language techniques. However, languages like Haskell have not yet achieved comparable popularity. What, in your estimation, accounts for this distinct dichotomy in adoption rates?</strong></p></blockquote><p>Well, there are lots of things going on. Languages are adopted not so much because of their technical excellence, though that plays a role, but because of their sort of socio-technical positioning. And that has to do with a lot of things like the perceived availability of programmers who can use the language or its perceived level of sort of familiarity. I mean, crudely put, does it use curly braces and semicolons? Haskell has never sought popularity or adoption as its only goal. Of course, everybody wants their programming language to be adopted and used. That's the point. But we've always primarily wanted Haskell to be a beautiful language, one that has clear intellectual foundations and that does not sort of compromise those in order to, as it were, pursue popularity. </p><p>I think initially also in historical terms, Haskell emerged from a bunch of laboratory research groups. It did not emerge from a group of corporate users. And many of the most successful languages these days have emerged from corporate labs. I mean, look at TypeScript. TypeScript's runaway success, which emerged from Microsoft and C# and Java. All of these languages emerged from commercial settings. And more power to them. It's great that language has become popular. But we haven't. I think Haskell has gradually, therefore, emerged from the lab and has started to grapple with all the challenges of adoption. </p><p>Now, the challenges of adoption are things like people don't adopt your language if you keep breaking it, if you keep changing it in a way that breaks their programs. We pay more and more attention these days to not making breaking changes or to providing ways to mitigate those changes. And that's a slow and quite torturous and time-consuming business. So, it's a sort of tax on innovation. At the same time, of course, it's a necessary tax if you want your language to be adopted.</p><p>I would say that over time, Haskell has gradually moved towards taking the concerns of adopters, people who are using Haskell for mission-critical purposes, to taking their concerns more and more seriously. But I think, as it were, we're still on that journey. And I think it's not surprising that other languages have got much wider adoption rates. In some ways, though, it's fine. If Haskell gets adopted, not so much by people using Haskell itself, but by people adopting the ideas in Haskell. </p><p>I often see Haskell as a language that's a laboratory for developing ideas that can then be adopted and used in other places. And I think things like monads and indeed type classes have proved exactly that. Monads and type classes show up in all sorts of places now, not just in Haskell. So, I would say that is a kind of Haskell adoption, if you like.</p><blockquote><p><strong>(2) You have played a significant role in the development of GHC (Glasgow Haskell Compiler), which stands as the primary compiler for Haskell. Could you elaborate on the most formidable technical challenges you encountered while designing and enhancing this compiler throughout the years?</strong></p></blockquote><p>I think GHC started back in about 1990, I suppose, at University of Glasgow, when we were trying to build one of the first compilers for Haskell. At the time, Lennart Augustsson was also building a compiler for Haskell called HBC. And so initially, we were pretty modest, but even by then, Haskell at that time included type classes. And I think the first obstacle we had was implementing type class as well. And that meant the type checker, it meant the dictionary parsing implementation of type classes and making it reasonably efficient. Because nobody wants to run programs that are too slow. And I would say that it really took us quite a long time, you know, several years to refine that implementation to the point where it was doing a good job. </p><p>I think another big technical challenge at the time that we solved really quite nicely was how do we keep types sane throughout the compiler? Haskell is a statically typed language, but compilers for statically typed languages don't have to be statically typed throughout their optimization pipeline. But especially because of type classes, we did want to keep types in our program throughout. And so first we thought of just decorating the syntax tree in a fairly ad hoc way. After desugaring, this is the lambda syntax tree, decorating it with type information. But it's difficult to keep correct, right? If you've got a polymorphic function, like, I don't know, <code>map</code>, and you inline it, then at the specialized copy that's inline, the things that were type variables like <code>a</code> and <code>b</code> in maps original code now become instantiated to <code>int</code> and <code>bool</code> in the instantiated copy. So somehow inlining means specialization and specialization of types. </p><p>We had a number of ad hoc solutions before Philip Wadler finally pointed out, well, all you need to do is to just implement system <code>F</code> that has big lambdas and beta reduction just systematically replaces the big lambda of <code>a.e</code> applied to a type <code>T</code>. Then you just take <code>e</code> with <code>a</code> replaced by <code>T </code>throughout. And it turned out this was an incredibly simple and direct way to implement a compiler with a strong static type system throughout the compiler that nobody had ever really done before. </p><p>I think that GHC perhaps remains one of the very few compilers that is statically typed all the way from the front to the back. I think that's quite an achievement. And for me, it's an achievement of Jean-Yves Girard, right, that he invented system <code>F</code>. It turned out the system <code>F</code> was really just about exactly right for us to support static typing in the presence of wholesale, quite radical program optimizations. That was a big technical challenge at the time, but one that I feel as if we solved not by being terribly clever, but by just using off the shelf technology, recognizing that we could use off the shelf technology to solve it. </p><p>Then I think another big challenge as time went on was the type checker went on getting more complicated. We got multi-parameter type classes. We got functional dependencies. We got type families. We got injective type families. We got new types and new type coercions. There's a lot going on in GHC's type checker. And gradually the type checker became more and more difficult to maintain. </p><p>Finally, I realized that we could again take some off the shelf technology, this time from Inria in France, Francois Poitier and Didier R&#233;my, who explained how to implement a statically typed programming language in two steps. One by walking over the syntax of the original program, which is very big. That is as many cases. You walk over that syntax tree, generating constraints. The process of generating constraints is relatively straightforward. And then as a separate step, you walk over the syntax of the constraints that you've generated. And there in a very small syntax, you walk over this small syntax solving the constraints. </p><p>Now, the solving is quite tricky, really quite tricky. That's the constraint solver in GHC. But it's completely 100% separated from the constraint generator, which walks over the big syntax tree of the terms. This is a very nice separation of concerns. It's worked really well for us. And a big part of what we learned from Francois and Didier is not just the idea, but also, was it in their paper, the idea of implication constraints, where constraints are not just flat, but could be nested in a significant way. And that exactly mirrors what happens during type inference and type checking. </p><p>I think you'll see a common pattern here, which is that we have had significant technical challenges, but we solved them by using intellectually deep ideas that we took from the literature, rather than just by a frontal assault of solving it with blood, sweat and tears.</p><blockquote><p><strong>(3) Are there any emerging features within Haskell or another functional programming language that you believe hold substantial promise and have the potential to enhance the work of programmers significantly?</strong></p></blockquote><p>I think probably the most significant thing that we can do to enhance the work of programmers with Haskell today is actually this promoting stability and the promoting the stability and richness and effectiveness, friction lessness of the toolchain. In other words, I think the primary things that will most help professional programmers use Haskell are not new language features, actually. They are that Cabal works flawlessly or Hackage works flawlessly or that their CI systems work flawlessly. And that we don't... It's easy for them to adopt new versions of the compiler when it comes out. Those are probably more important. I mean, there are some big things in process. I think there's a very slow but definite journey towards adding more dependently typed features. </p><p>People often talk about dependent Haskell as if it was a thing. But it's not one thing. It's a constellation of features. And indeed, dependently typed programming is itself not one thing. But Haskell is gradually getting better at handling dependently typed programming idioms. And I think that's interesting because it helps us to explore the boundary between static type systems and proof. By which I mean, it turns out that some of the most enthusiastic adopters of sophisticated types are not people in university settings. They are people in industrial settings. And they're using complicated static types because they find that it gives them a way to have more confidence in the correctness of their code. And if they're writing code, they want to be maintainable in two years' time. Particularly, they want to refactor in substantive ways where the person doing the refactoring is not the person who wrote the code. Then static types are incredibly helpful in doing this. So, they try to do more and more. </p><p>What does a static type do? It explains some properties of the function, right? A function of type <code>int</code> to <code>int</code> takes an integer and returns an integer. These are requirements and guarantees. And more sophisticated types let&#8217;s you say more sophisticated things about the arguments and results. And explain invariants on data structures. I think that is a continual, now quite gradual shift towards more powerful static types. I think that will continue. There's another big intellectual experiment going on in the form of linear Haskell. I think the jury's still out on how well that will play out. But I love that Haskell's a laboratory in which we can try it. </p><p>People are doing lots of other things in Haskell. But I wouldn't say there's some big language innovation that's sort of on the horizon. A more distant one. You might imagine something like row types. Row types are a sort of feature of type systems that are really quite expressive. And Haskell doesn't have it all at the moment. And maybe if it did have, maybe we could find ways to use them. We certainly know some of them. Is there enough impetus to implement row types? I'm not sure at the moment. But maybe. But that's an example of a much rather further off kind of thing. But still, it has the idea that I'd like GHC to be a laboratory in which people can explore ideas like that.</p><blockquote><p><strong>(4) Beyond your contributions to Haskell, you have also been actively engaged in research projects at Microsoft Research. How do you perceive the interplay between academic research and the technology industry, and what, in your view, is its influence on the evolutionary trajectory of programming languages?</strong></p></blockquote><p>Well, there are lots of things in that question. Let's see, I was involved in several things at Microsoft. One very prominent one is that when I first arrived at Microsoft, I was thinking, what is the best way for a functional programmer to get involved in Microsoft's products? I thought, where are we already using functional programming? And I realized that one of the biggest places is Excel. </p><p>Every Excel spreadsheet is a functional program. All those formulae in a spreadsheet are little functional programs. And a spreadsheet with thousands of formulae is quite a big functional program. But Excel is not a very good functional programming language. It's not very powerful. In particular, it doesn't provide any facilities for abstraction, for defining new functions. So over actually two whole decades at Microsoft, we formed quite a productive research partnership with the Excel team. And now I'm happy to say that Lambda, as in the full-on Lambda calculus, is part of Excel. You can write Lambda formulae. You say equals <code>LAMBDA(X, X + 1)</code>. That's the increment function. It can be the value of a cell and you can then apply the value of that cell. It's a perfectly first-class value. You can apply it to another cell. I'm quite proud of that. </p><p>I think that means that ideas from functional programming, including fully higher order Lambda calculus functional programming, are now present in an end-user tool. That's quite exciting. And I think it may be quiet, in a sort of slow burn kind of way, may prove quite influential. Also in Excel, trying to make arrays nest properly so that you can have arrays of functions and functions that return arrays and arrays that contain arrays and so forth and cells that contain arrays as well as cells that contain functions. And all that is sort of coming. </p><p>Let's see, what else at Microsoft? I was quite involved in a peripheral way in F#. That was Don Syme project, but I think it was quite inspired by quite a lot of the stuff that we were doing in high school. I became involved in a machine learning (ML) project that was trying to look at a compiler as something that could be a compiler's optimizer, something that could be powered by ML. And that didn't ultimately emerge as any kind of product. But the other half of your question was to do with, let's see, how does the technology influence programming languages or the technology industry? So now I think that the influence is very clear that lots of very influential languages have emerged from industrial research labs or industrial groups. </p><p>I mentioned some of them earlier. I guess Swift and Go are other ones that have corporate sponsors. Rust, too, has a corporate sponsor in the form of Mozilla. So, in some ways, the most widely used programming languages have almost all emerged, not from academia, but from industry. That's an interesting shift, I think. It also reflects that industry now has a lot of people working in it who have had pretty serious educations from people like you, perhaps, in functional programming and in programming languages generally. And so, they're not Mickey Mouse languages. These are serious, serious pieces of language design. I think that's quite exciting.  I think there's been a lot of influence of industry in the tech sector on the evolutionary trajectory of programming languages. </p><p>I'm now working for Epic Games, in which we're designing a functional logic language that is meant to be used as the programming language for the metaverse. And it, too, is, well, it's an industrial setting, but we are developing a pretty exciting and innovative programming language that's actually previously might have been thought of as being extremely academic.</p><blockquote><p><strong>(5) Artificial intelligence and machine learning represent continually expanding domains within computer science. Can you identify opportunities for the application of functional programming principles, such as those embodied by Haskell, in these fields? Furthermore, how do you envision these principles benefiting AI and ML?</strong></p></blockquote><p>Well, that's hard to say. I mean, at one level, all neural networks are just functional programs, really. Right. A neural network is just a stack of data flow processing nodes with data flowing through them, and that's expressible very directly as a functional program. There's very little of, you know, write to that mutable variable and read from that disk in a neural network. None, except at the edges. So, to a large extent, ML is, you know, just that ML programs are functional programs. It's very influential within that. And they also need to be executed in a very data parallelly kind of way. And I think loads of techniques from functional programming research is being used in these very large-scale mainstream ML setups to execute these programs and data parallel. </p><p>I'd love Haskell to be a language in which you could write ML programs and then differentiate them. And I'm working with a few colleagues on that at the moment. But I don't think that Haskell's influence is very direct in the ML sphere at the moment anyway. I suppose the influence of functional programming techniques, well, apart from this general one, I think I would say that the framework, anybody who's doing ML is thinking functionally all the time. All the time.</p><blockquote><p><strong>(6)&nbsp;How do you see the future of computer science education in schools with the advent of large language models (LLMs)?</strong></p></blockquote><p>We just spent the last decade trying to get programming embedded in schools as part of a computer science education. But do we anymore need to teach programming in schools if, well, students can, instead of trying to write merge sort, can just conjure it up with a large language model by saying, please write me merge sort. But I think the answer is definitely for me, it's yes. After all, we do teach children a lot about arithmetic. We give them years of training in numeracy, years at primary school. And yet, everything they are doing can be done much faster by a $5 calculator. Why do we spend all that time? Well, I think it's because you get some visceral understandings of what numbers are and you get some ability to estimate what outcomes must be without using a calculator. You get, and it's hard to internalize, but in objective terms, actually, numeracy turns out to be quite closely associated with life outcomes. Innumerate people generally have poor life outcomes. </p><p>I think there's strong reasons to believe that learning foundational stuff, even though it can be done faster, faster by an extremely cheap computer, is still worth it, not worth doing. Not perhaps all stuff, right? Then you've got to say, well, which stuff should we learn? Numeracy is one of it. I would definitely say that programming is part of that, that every child should learn the elements of programming so that they have a visceral, in their guts, understanding of how computers work and their frailties and their power, both their frailties and their power. So, then, so that's, do we need to teach computer science? Yes. Then there's, how might we teach computer science or indeed history or English? And there, I think, perhaps LLMs will play a role. That is to say, in education, teachers spend a lot of time on relatively low-level critiques of students' essays or of their programs. And perhaps some of this relatively low-level feedback could be done by a sort of AI tutor thing. And I think that could be helpful. Maybe that would free the teacher up to spend more of their time on the big picture stuff that only they can do at the moment. </p><p>So, for AI as a, what should we say, piece of educational technology, I think the future is wide open. There are lots of startups trying to do this stuff, and it's far from proven, far from proven, I would say. And yet, it must be something there. There's got to be something there.</p><blockquote><p><strong>(7) What counsel, be it of a technical or life-oriented nature, would you offer to individuals aspiring to devote their lives to research in the field of computer science?</strong></p></blockquote><p>Well, that's a very broad, open-ended kind of question, isn't it? Well, the first thing, which is a common observation and which lots of people say, but it nevertheless remains true, is follow your heart, right? If you are passionate about studying computer science, then study computer science. Don't sort of get too bent out of shape doing other things. Follow the things that you really want to do. The great advantage of computer science as a field of study is that it's commercially very relevant. So even if you can't get paid as a computer science researcher by a university, say, or by a company's research lab, you can get a job that's highly rewarded, highly paid. </p><p>Maybe if you're passionate enough, maybe you work two and a half days a week for a company, earn lots of money and spend the other two and a half days doing your research. It's not an iron law that everybody has to work full time, especially in computer science, where people are relatively, relatively, compared to other sectors, you know, try being a medieval poet, relatively well paid, well rewarded. I think we're very fortunate. </p><p>So, the other suggestion I would have been not to spend too long trying to think about how to do research in computer science, but just get on and do some. You need to make some time. And that's, as I say, that it might be difficult to get funded for that time. You might end up having to fund yourself. But then don't be too ambitious. When I started my life as a researcher, I did have, rather remarkably, and it was a feature of that particular time in the mid-1980s, I got a job as a lecturer when I didn't even have a PhD in computer science. I had no idea how to do research, really. I would sit in my office and when I wasn't teaching, I would be thinking, well, now I'd better do research. I would sit with a sharpened pencil and a blank sheet of paper and think, &#8220;let me have great ideas&#8221;. But of course, great ideas did not fall out of the sky. But eventually, one of my colleagues, very nice, helpful mentor that I had said, Simon, just start on anything, even something quite humble and see what it turns into. Just do something humble. I started writing. I think it was a parser generator that would take a BNF grammar and generate a parser in Sassel, which was the functional language that I was then using. </p><p>And that, in the end, to my surprise, did turn into a research paper that was published. But in a way, the most important thing was that I was doing something. So, I'd suggest get on and do something, probably build something. And as you build it, as you come across challenges, the wonderful thing about research is if you're trying to build something and you come across a challenge, instead of just having to sort of somehow hack around it to get the thing built, which is what happens if you're working for a company that needs that thing. If you're a researcher, you can say, oh, that's a very interesting problem. You can sort of turn right through 90 degrees and start studying that problem. But you're studying that problem, not in the abstract, but because it's a problem you want to solve to get something else done. So you've got a motive for getting it done. That's very helpful. </p><p>The other thing is then start to write early, write a lot. It doesn't need to be papers that you get published, but papers of some kind, because once you've got a paper, something written about what you're doing, you can share it with other people. You could start a dialogue. I personally am somebody who does research mainly in dialogue with other people. I'm almost incapable of thinking on my own, actually. </p><p>It's very helpful to talk to others and to talk to others. It's really helpful to have something written to share with them that they can read and make sense of. And it will help your writing skills to do that. </p><p>What am I suggesting here? Carve out some time to do research, if necessary, by working part-time. Start doing something, even something that doesn't feel very research, just to get going on something. Write early and often about what you're doing and try to find other people that you can share that with and get into conversation with. Those would be my initial suggestions, I think. </p><p>Do not, I think, say, &#8220;I can't really get started unless somebody pays me to do a PhD or I can get a job at Microsoft Research or something like that,&#8221; because then you're setting yourself up to fail. I mean, if you really want to do a PhD, then maybe you need to save up some money to do it. You probably get a place, but it's jolly hard finding people to pay you to do research, right? When you don't yet have a track record to do it. So, you find another way. But the other thing, of course, is that even in your day job as a software developer, you're all the time coming across research problems, really. </p><p>And so, and many companies, particularly in some ways, well, I don't know, maybe it's not a matter of size. It's just that many companies will actually give you some slack. If you say, here is an interesting problem, I think we can solve this challenge in a more general or substantive way than just hacking through it. Many of them will give you a bit of leeway to try that out. So, you can almost do a bit of research kind of stuff in the context of a corporate setting. Sometimes it depends a bit on the company. It depends a bit on what kind of code you're writing.</p><p>Great. Well, I hope this has been helpful. Thanks Camilo. Cheers.</p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>El audio fue transcrito usando <a href="https://replicate.com/openai/whisper">https://replicate.com/openai/whisper</a>. Solo elimin&#233; algunas palabras para evitar redundancia. La traducci&#243;n fue hecha con DeepL y con peque&#241;as modificaciones de mi parte para mejorar la claridad.</p></div></div>]]></content:encoded></item><item><title><![CDATA[Entrevista a Brian Kernighan]]></title><description><![CDATA[Cocreador de AWK y AMPL. Y coautor del libro &#171;The C Programming Language&#187; (K&R)]]></description><link>https://camilocs.substack.com/p/entrevista-a-brian-kernighan</link><guid isPermaLink="false">https://camilocs.substack.com/p/entrevista-a-brian-kernighan</guid><dc:creator><![CDATA[Camilo Chacón Sartori]]></dc:creator><pubDate>Tue, 26 Sep 2023 21:56:27 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!jpFO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e200118-1a83-4a02-a1d4-3e7ae46a89b6_1619x2024.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>Esta entrevista fue originalmente realizada en ingl&#233;s por email. Por tanto, primero se ofrece una traducci&#243;n al espa&#241;ol, y al final, se encuentra la versi&#243;n original.</p><p><em>This interview was originally conducted in English by email. The Spanish translation is provided first, followed by the original version.</em></p></blockquote><p><a href="https://es.wikipedia.org/wiki/Brian_Kernighan">Brian Kernighan</a>, naci&#243; en 1942 en Toronto, Canad&#225;. Es un influyente cient&#237;fico de la computaci&#243;n y autor destacado en el mundo de la inform&#225;tica. Obtuvo su doctorado en inform&#225;tica en la Universidad de Princeton y luego se uni&#243; a Bell Labs, donde desempe&#241;&#243; un papel crucial en el desarrollo del sistema operativo Unix junto con Dennis Ritchie y Ken Thompson.</p><p>Kernighan es conocido por su coautor&#237;a junto con Ritchie del libro &#171;The C Programming Language&#187;, que se convirti&#243; en un est&#225;ndar en la programaci&#243;n en C. Adem&#225;s, fue coautor de AWK, un lenguaje de programaci&#243;n ampliamente utilizado para el procesamiento de texto en sistemas Unix. Y de AMPL, un lenguaje de programaci&#243;n algebraica utilizado para problemas matem&#225;ticos, por ejemplo, de optimizaci&#243;n.</p><p>A lo largo de su carrera, Kernighan ha escrito una <em>impresionante</em> y <em>devastadora</em> variedad de libros de programaci&#243;n:</p><ul><li><p>&#171;The C Programming Language&#187; (1978). Coescrito con Dennis Ritchie.</p></li><li><p>&#171;The Unix Programming Environment&#187; (1984). Coescrito con Rob Pike.</p></li><li><p>&#171;The Practice of Programming&#187; (1999). Coescrito con Rob Pike.</p></li><li><p>&#171;AMPL: A Modeling Language for Mathematical Programming&#187; (1993). Coescrito con Robert Fourer y David Gay.</p></li><li><p>&#171;Go Programming Language&#187; (2015). Coescrito con Alan A. A. Donovan.</p></li><li><p>&#171;The AWK Programming Language&#187; (2023, segunda edici&#243;n). Coescrito con Alfred Aho<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> y Peter Weinberger.</p></li></ul><p>Brian Kernighan es una figura destacada en la historia de la inform&#225;tica y su trabajo ha dejado una huella indeleble en el campo de la programaci&#243;n y la computaci&#243;n. </p><div><hr></div><p>Brian Kernighan a lo largo de su vida a mencionado <a href="https://softwarequotes.com/author/brian-wilson-kernighan">frases geniales</a> que me gustar&#237;a mencionar:</p><ul><li><p>&#171;Controlar la complejidad es la esencia de la programaci&#243;n&#187;.</p></li><li><p>&#171;Cada nuevo usuario de un nuevo sistema descubre una nueva clase de errores&#187;.</p></li><li><p>&#171;No comentes c&#243;digo incorrecto: reescr&#237;belo&#187;.</p></li><li><p>&#171;El 90% de la funcionalidad entregada ahora es mejor que el 100% entregado nunca&#187;.</p></li><li><p>&#171;La herramienta de depuraci&#243;n m&#225;s eficaz sigue siendo una reflexi&#243;n cuidadosa, junto con declaraciones impresas (print) colocadas juiciosamente&#187;.</p></li></ul><div><hr></div><p>Como escritor de libros de programaci&#243;n que ha le&#237;do &#171;The C Programming Language&#187; y que le encanta usar AWK, no puedo m&#225;s que sentirme afortunado de que Brian haya contestado amablemente &#8212;y velozmente&#8212; a mis inquietudes. </p><p>&#161;Espero disfruten la entrevista!<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!jpFO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e200118-1a83-4a02-a1d4-3e7ae46a89b6_1619x2024.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!jpFO!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e200118-1a83-4a02-a1d4-3e7ae46a89b6_1619x2024.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!jpFO!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e200118-1a83-4a02-a1d4-3e7ae46a89b6_1619x2024.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!jpFO!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e200118-1a83-4a02-a1d4-3e7ae46a89b6_1619x2024.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!jpFO!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e200118-1a83-4a02-a1d4-3e7ae46a89b6_1619x2024.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!jpFO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e200118-1a83-4a02-a1d4-3e7ae46a89b6_1619x2024.jpeg" width="626" height="782.5" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3e200118-1a83-4a02-a1d4-3e7ae46a89b6_1619x2024.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:626,&quot;bytes&quot;:1039356,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!jpFO!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e200118-1a83-4a02-a1d4-3e7ae46a89b6_1619x2024.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!jpFO!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e200118-1a83-4a02-a1d4-3e7ae46a89b6_1619x2024.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!jpFO!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e200118-1a83-4a02-a1d4-3e7ae46a89b6_1619x2024.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!jpFO!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e200118-1a83-4a02-a1d4-3e7ae46a89b6_1619x2024.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Imagen extra&#237;da de <a href="https://www.facesofopensource.com/person/brian-kernighan/">aqu&#237;</a>.</figcaption></figure></div><h2>Versi&#243;n traducida</h2><blockquote><p><strong>(1) A lo largo de t&#250; carrera, has escrito numerosos libros que se han convertido en recursos de referencia para diversos lenguajes de programaci&#243;n, como C y Golang. Con la reciente publicaci&#243;n de una nueva edici&#243;n del libro AWK, &#191;qu&#233; elementos hacen que un libro sobre lenguajes de programaci&#243;n resulte atractivo y cautive a los lectores?</strong></p></blockquote><p>Creo que lo m&#225;s importante es tener una secuencia de ejemplos que puedan ser relevantes para los lectores, que sean realistas (no artificiales ni tontos) y que aparezcan justo en el momento en que el lector se est&#225; preguntando c&#243;mo hacer algo o pensando en el siguiente paso. Es dif&#237;cil hacerlo bien, y no voy a decir que lo haya conseguido en ninguno de mis libros, pero sin duda es el objetivo.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!IdVA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b4ac376-380c-4d9c-933e-d60d8c3adb7b_736x1000.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!IdVA!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b4ac376-380c-4d9c-933e-d60d8c3adb7b_736x1000.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!IdVA!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b4ac376-380c-4d9c-933e-d60d8c3adb7b_736x1000.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!IdVA!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b4ac376-380c-4d9c-933e-d60d8c3adb7b_736x1000.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!IdVA!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b4ac376-380c-4d9c-933e-d60d8c3adb7b_736x1000.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!IdVA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b4ac376-380c-4d9c-933e-d60d8c3adb7b_736x1000.jpeg" width="238" height="323.3695652173913" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2b4ac376-380c-4d9c-933e-d60d8c3adb7b_736x1000.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1000,&quot;width&quot;:736,&quot;resizeWidth&quot;:238,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;C Programming Language (Prentice Hall Software) : Brian, Kernighan, Dennis,  Ritchie: Amazon.es: Libros&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="C Programming Language (Prentice Hall Software) : Brian, Kernighan, Dennis,  Ritchie: Amazon.es: Libros" title="C Programming Language (Prentice Hall Software) : Brian, Kernighan, Dennis,  Ritchie: Amazon.es: Libros" srcset="/__u/substackcdn.com/image/fetch/$s_!IdVA!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b4ac376-380c-4d9c-933e-d60d8c3adb7b_736x1000.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!IdVA!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b4ac376-380c-4d9c-933e-d60d8c3adb7b_736x1000.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!IdVA!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b4ac376-380c-4d9c-933e-d60d8c3adb7b_736x1000.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!IdVA!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b4ac376-380c-4d9c-933e-d60d8c3adb7b_736x1000.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><blockquote><p><strong>(2) Has dise&#241;ado m&#250;ltiples lenguajes de programaci&#243;n, como AWK y AMPL. &#191;Qu&#233; dificultades encontr&#243; al crear estos lenguajes y cu&#225;les fueron las lecciones esenciales que aprendi&#243; de esas experiencias?</strong></p></blockquote><p>Mi forma de dise&#241;ar lenguajes es intentar encontrar formas naturales de expresar alg&#250;n tipo de c&#225;lculo, utilizando ejemplos b&#225;sicos. Quiero que sean f&#225;ciles y naturales. Para algunas situaciones, tambi&#233;n es de gran ayuda que la sintaxis del lenguaje sea al menos culturalmente compatible con otros lenguajes, si no la misma. As&#237; que en AWK, tomamos prestado mucho de C, como <code>if-else</code> y un tipo de bucle <code>for</code>. Pero hab&#237;a otros lugares en los que eso no funcionaba, como la inclusi&#243;n de expresiones regulares, as&#237; que hubo que inventarlas.</p><p>AMPL es lo bastante diferente como para que gran parte de la sintaxis fuera nueva, aunque intentamos que las entidades b&#225;sicas (conjuntos, par&#225;metros y expresiones de indexaci&#243;n) estuvieran claras. Pero en aquel momento no pensamos en utilizar AMPL como un verdadero lenguaje de programaci&#243;n; era puramente declarativo. Con el paso de los a&#241;os (obra de David Gay, no m&#237;a) a&#241;adimos condicionales, bucles, funciones, etc., b&#225;sicamente todos los dem&#225;s mecanismos de los lenguajes de programaci&#243;n convencionales. Pero la sintaxis es diferente, por lo que es un poco m&#225;s dif&#237;cil de aprender que si la hubi&#233;ramos tomado directamente de C o similares.</p><blockquote><p><strong>(3) &#191;Qu&#233; opina sobre el futuro de AWK? &#191;Qu&#233; funciones deber&#237;a tener en esta era de big data?</strong></p></blockquote><p>AWK sigue siendo un lenguaje realmente &#250;til para el an&#225;lisis exploratorio de datos o EDA (<em>Exploratory data analysis</em>). Cuando tienes que empezar a procesar un nuevo tipo de datos, AWK es genial para averiguar qu&#233; hay en los datos. &#191;Cu&#225;les son los rangos de valores de los datos en cada campo? &#191;Hay el mismo n&#250;mero de campos? &#191;Qu&#233; tipos de caracteres extra&#241;os aparecen? &#191;Cu&#225;les son los valores comunes y cu&#225;les los at&#237;picos? En general, &#191;son v&#225;lidos los datos o tienen errores potenciales? Un nuevo cap&#237;tulo en el nuevo libro de AWK habla de esto en profundidad, y tambi&#233;n hay un ensayo independiente sobre ello en <a href="http://www.awk.dev">www.awk.dev</a>, el sitio web del libro. Nada de esto requiere nuevas funciones, aunque hay caracter&#237;sticas que podr&#237;an mejorarlo. Por ejemplo, poder obtener datos de Internet ser&#237;a de gran ayuda. Eso est&#225; en la versi&#243;n GNU de AWK (Gawk), gracias a Arnold Robbins, pero no en mi versi&#243;n.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!UtEl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64e5c84e-1004-4e1e-8f4e-8233da11cd6b_597x753.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!UtEl!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64e5c84e-1004-4e1e-8f4e-8233da11cd6b_597x753.png 424w, /__u/substackcdn.com/image/fetch/$s_!UtEl!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64e5c84e-1004-4e1e-8f4e-8233da11cd6b_597x753.png 848w, /__u/substackcdn.com/image/fetch/$s_!UtEl!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64e5c84e-1004-4e1e-8f4e-8233da11cd6b_597x753.png 1272w, /__u/substackcdn.com/image/fetch/$s_!UtEl!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64e5c84e-1004-4e1e-8f4e-8233da11cd6b_597x753.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!UtEl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64e5c84e-1004-4e1e-8f4e-8233da11cd6b_597x753.png" width="257" height="324.15577889447235" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/64e5c84e-1004-4e1e-8f4e-8233da11cd6b_597x753.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:753,&quot;width&quot;:597,&quot;resizeWidth&quot;:257,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!UtEl!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64e5c84e-1004-4e1e-8f4e-8233da11cd6b_597x753.png 424w, /__u/substackcdn.com/image/fetch/$s_!UtEl!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64e5c84e-1004-4e1e-8f4e-8233da11cd6b_597x753.png 848w, /__u/substackcdn.com/image/fetch/$s_!UtEl!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64e5c84e-1004-4e1e-8f4e-8233da11cd6b_597x753.png 1272w, /__u/substackcdn.com/image/fetch/$s_!UtEl!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64e5c84e-1004-4e1e-8f4e-8233da11cd6b_597x753.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Segunda edici&#243;n, publicada este a&#241;o (2023).</figcaption></figure></div><blockquote><p><strong>(4) Tras una larga carrera en el desarrollo de software, &#191;cu&#225;l es el principal obst&#225;culo que impide a los programadores alcanzar una mayor pericia en un lenguaje de programaci&#243;n y en el desarrollo de software en general?</strong></p></blockquote><p>El volumen de material, el ritmo de cambio y la creciente complejidad; todo es demasiado. Simplemente hay demasiado que saber, y no es posible convertirse en experto m&#225;s que en una peque&#241;a parte. Y las cosas cambian tan deprisa que los conocimientos de cinco o diez a&#241;os antes pueden quedar obsoletos. Una de las razones por las que uso AWK, incluso para cosas en las que otra cosa ser&#237;a mejor opci&#243;n, es que realmente lo conozco bien y no tengo que andar buscando cosas. He abandonado el desarrollo web (no es que haya hecho mucho) porque se convirti&#243; en un mont&#243;n de trabajo y no muy gratificante. Las aplicaciones para tel&#233;fonos son peores.</p><blockquote><p><strong>(5) Eres coautor del libro &#171;The Practice of Programming&#187;. &#191;Existen nuevas pr&#225;cticas (o herramientas) que hayan surgido en los &#250;ltimos a&#241;os que beneficien a un mejor estilo de programaci&#243;n?</strong></p></blockquote><p>Sospecho que herramientas como Docker, Kubernetes, Travis y un sinf&#237;n m&#225;s ayudan a gestionar grandes proyectos de software, pero no las uso as&#237; que no tengo conocimiento de primera mano. Yo uso Git y GitHub, y definitivamente hacen la vida mejor, aunque conf&#237;o en amigos para consejos sobre m&#225;s que el uso b&#225;sico de Git. Pero estos son para bases de c&#243;digo m&#225;s grandes que cualquier cosa en la que trabajo regularmente.</p><blockquote><p><strong>(6) En 2019, publicaste el libro &#171;UNIX: A History and a Memoir&#187;. Me gustar&#237;a preguntarte sobre tus ideas y pensamientos con respecto al futuro de UNIX. &#191;Qu&#233; evoluci&#243;n prev&#233; para este sistema operativo?</strong></p></blockquote><p>Imagino que siempre habr&#225; sistemas llamados Unix o, como Linux, que sigan la misma estructura b&#225;sica. Supongo que Linux se convertir&#225; en el sistema operativo por defecto para todo, excepto para los port&#225;tiles de consumo, que seguir&#225;n utilizando Windows y macOS. Y macOS se parece lo suficiente a Unix / Linux que est&#225; bien para m&#237;; Yo uso rutinariamente ambos todo el tiempo.</p><blockquote><p><strong>(7) Ha impartido una perspicaz orientaci&#243;n en materia de programaci&#243;n y escritura t&#233;cnica a lo largo de su trayectoria profesional. Pero si tuvieras la oportunidad de viajar en el tiempo y dar un consejo no t&#233;cnico o no relacionado con la escritura a tu yo m&#225;s joven, &#191;cu&#225;l ser&#237;a y por qu&#233; lo consideras importante?</strong></p></blockquote><p>Es dif&#237;cil responder a esta pregunta sin recurrir a t&#243;picos y clich&#233;s. La mayor&#237;a de las veces he tenido suerte de estudiar o trabajar all&#237;, y sobre todo de la gente con la que he trabajado. Pero decirle a mi yo m&#225;s joven que &#171;tuviera suerte&#187; no me habr&#237;a servido de nada. Quiz&#225; el mejor consejo venga de Pasteur: &#171;El azar favorece a la mente preparada&#187;. As&#237; que cuanto m&#225;s hagas, cuanto m&#225;s explores, cuanta m&#225;s gente haya en tu vida, m&#225;s probabilidades tendr&#225;s de tener suerte.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://camilocs.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscr&#237;base ahora&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/camilocs.substack.com/subscribe"><span>Suscr&#237;base ahora</span></a></p><div><hr></div><h2>Original</h2><blockquote><p><strong>(1) Throughout your career, you have authored multiple books that have become the go-to resources for various programming languages, including C and Golang. With the recent release of a new edition of the AWK book, what elements make a programming language book engaging and captivating for readers?</strong></p></blockquote><p>I think the most important thing is to have a sequence of examples that are likely to be relevant to readers, that are realistic (not artificial or silly), and that appear at just the time when the reader is wondering about how to do something or thinking about the next step. It's hard to do this well, and I won't claim to have figured it out for any of my books, but it's definitely the goal.</p><blockquote><p><strong>(2) You have designed multiple programming languages, such as AWK and AMPL. What difficulties did you encounter while creating these languages, and what were the essential lessons you learned from those experiences?</strong></p></blockquote><p>The way I design languages is to try to figure out natural ways to express some computation, using basic examples. I want those to be easy and natural. For some situations, it's also a big help if the language syntax is at least culturally compatible with other languages, if not the same. So in Awk, we borrowed a lot from C, like if-else and one kind of for loop. But there were other places where that just didn't work, like including regular expresssions, so those had to be invented.</p><p>AMPL is different enough that a lot of the syntax was new, though we tried to make it so that the basic entities &#8212;sets, parameters and indexing expressions&#8212; were clear. But at the time we didn't give any thought to using AMPL as a real programming language; it was purely declarative. Over the years we (David Gay's work, not mine) added conditionals, loops, functions, and so on, basically all the other mechanisms of conventional programming languages. But the syntax is different, so it's a bit harder to pick up than if we had borrowed more directly from C or the like.</p><blockquote><p><strong>(3) What are your thoughts on the future of AWK? What functions should it have in this era of big data?</strong></p></blockquote><p>Awk is still a really useful language for exploratory data analysis or EDA. When you have to start processing some new kind of data, Awk is great for figuring out what's in the data. What are the ranges of data values in each field? Are there the same number of fields? What kinds of weird characters appear? What are the common values and what are the outliers? Generally, is the data valid or does it have potential errors. One new chapter in the new Awk book talks about this at length, and there's also an independent essay about it at <a href="http://www.awk.dev">www.awk.dev</a>, the web site for the book. None of this requires new functions, though there are features that might make it better. For example, being able to grab data from the Internet would be a help. That's in the GNU version of Awk (Gawk), thanks to Arnold Robbins, but not in my version.</p><blockquote><p><strong>(4) After a long career in software development, what is the main obstacle that prevents programmers from achieving greater expertise in a programming language and software development in general?</strong></p></blockquote><p>Volume of material, rate of change, and increasing complexity; all are way too big. There is simply too much to know, and it's not possible to become expert on more than a small part. And things change so rapidly that knowledge from five or ten years earlier may be obsolete. One of the reasons why I use Awk, even for things where something else would be a better choice, is that I really know it well and don't have to keep looking things up. I've given up on web development (not that I ever did a lot) because it became a lot of work and not very rewarding. Phone apps are worse.</p><blockquote><p><strong>(5) You are co-author of the book "The Practice of Programming." are there any new practices (or tools) that have emerged in recent years that would benefit a better programming style?</strong></p></blockquote><p>I suspect that tools like Docker, Kubernetes, Travis, and endless others all help in managing large software projects, but I don't use them so I don't have firsthand knowledge. I use Git and GitHub, and they definitely make life better, though I rely on friends for advice on more than basic use of Git. But these are for larger code bases than anything I work on regularly.</p><blockquote><p><strong>(6) In 2019, you published the book "UNIX: A History and a Memoir." I'd like to inquire about your insights and thoughts regarding the future of UNIX. What developments do you predict for this operating system?</strong></p></blockquote><p>I imagine that there will always be systems called Unix or, like Linux, that follow the same basic structure. I will guess that Linux will become the default operating system for everything except consumer laptops, which will continue to use Windows and macOS. And macOS looks enough like Unix / Linux that it's fine for me; I routinely use both all the time.</p><blockquote><p><strong>(7) You have imparted insightful programming and technical writing guidance during your professional journey. But if you had the chance to travel back in time and provide a piece of non-technical or non-writing related advice to your younger self, what would it be, and why do you deem it significant?</strong></p></blockquote><p>It's hard to answer this question without resorting to platitudes and cliches. Mostly I've just been lucky in where I happened to go to school or work, and especially in the people who I have worked with. But telling my younger self to "be lucky" would not have been helpful. Perhaps the best advice comes from Pasteur: "Chance favors the prepared mind." So the more than you do, the more you explore, the more people in your life, the more likely it is that you will be lucky.</p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Tambi&#233;n tuve la oportunidad de entrevistar a <a href="/__u/camilocs.substack.com/p/entrevista-a-alfred-aho-acm-turing">Alfred Aho</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>La traducci&#243;n fue realizada usando <a href="https://www.deepl.com/">DeepL</a>, con peque&#241;as modificaciones de mi parte para que se entendiera mejor.</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[Entrevista a Bjarne Stroustrup]]></title><description><![CDATA[El creador de C++]]></description><link>https://camilocs.substack.com/p/entrevista-a-bjarne-stroustrup</link><guid isPermaLink="false">https://camilocs.substack.com/p/entrevista-a-bjarne-stroustrup</guid><dc:creator><![CDATA[Camilo Chacón Sartori]]></dc:creator><pubDate>Fri, 22 Sep 2023 20:34:02 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!vE5Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe94165f-544d-4f44-9411-4bbd2b317254_588x800.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>Esta entrevista fue originalmente realizada en ingl&#233;s por email. Por tanto, primero se ofrece una traducci&#243;n al espa&#241;ol, y al final, se encuentra la versi&#243;n original.</p><p><em>This interview was originally conducted in English by email. The Spanish translation is provided first, followed by the original version.</em></p></blockquote><p><a href="https://stroustrup.com">Bjarne Stroustrup</a> es un destacado cient&#237;fico de la computaci&#243;n dan&#233;s, nacido en 1950 en Aarhus, Dinamarca. Es ampliamente conocido como el creador del lenguaje de programaci&#243;n C++, que revolucion&#243; la programaci&#243;n y la ingenier&#237;a de software.</p><p>Stroustrup obtuvo su doctorado en Ciencias de la Computaci&#243;n en la Universidad de Cambridge y posteriormente se uni&#243; a Bell Labs, donde desarroll&#243; el lenguaje C++. Su trabajo en C++ permiti&#243; la creaci&#243;n de sistemas m&#225;s eficientes y flexibles al combinar caracter&#237;sticas de programaci&#243;n orientada a objetos con la capacidad de bajo nivel del lenguaje C, adem&#225;s de incorporar muchas otras caracter&#237;sticas novedosas para su &#233;poca.</p><p>A lo largo de su carrera, Stroustrup ha recibido numerosos premios y reconocimientos, incluido el premio <em>Dr. Dobb's Excellence in Programming</em> en 2008 y ser nombrado <a href="https://www.uc3m.es/conocenos/honoris-causa/profesor-bjarne-stroustrup+">Doctor Honoris Causa por la Universidad Carlos III </a>(Espa&#241;a) en 2019. Ha sido profesor en diversas universidades, incluyendo la Universidad de Texas A&amp;M.</p><p>El legado de Bjarne Stroustrup en la inform&#225;tica es innegable, ya que su creaci&#243;n, el lenguaje C++, sigue siendo ampliamente utilizado en la industria del software y ha influido en numerosos lenguajes de programaci&#243;n modernos. </p><div><hr></div><p>Me gustar&#237;a destacar algunas de sus citas m&#225;s memorables &#8212;seg&#250;n mi opini&#243;n&#8212; que ha dicho Bjarne Stroustrup a lo largo de su vida y que paso a enlistar:<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p><ul><li><p>&#171;C hace que sea f&#225;cil dispararte en el pie; C++ lo hace m&#225;s dif&#237;cil, pero cuando lo haces te vuela toda la pierna&#187;.</p></li><li><p>&#171;Para utilizar bien C++, hay que entender las t&#233;cnicas de dise&#241;o y programaci&#243;n&#187;.</p></li><li><p>&#171;Si crees que es sencillo, entonces has entendido mal el problema&#187;.</p></li><li><p>&#171;Es f&#225;cil obtener el perd&#243;n por equivocarse; tener raz&#243;n es lo que te mete en verdaderos problemas&#187;.</p></li><li><p>&#171;El dise&#241;o y la programaci&#243;n son actividades humanas; olvida eso y todo estar&#225; perdido&#187;.</p></li></ul><div><hr></div><p>No saben la emoci&#243;n que tuve entrevistar a Stroustrup, porque C++ fue uno de mis primeros lenguajes de programaci&#243;n que aprend&#237;. Con C++ me entusiasm&#233; con la programaci&#243;n, me hizo entenderla bajo otros t&#233;rminos y, a su vez, pude enfrentarme a mis primeros retos t&#233;cnicos. En suma, C++ me dio las principales alegrias, y tambi&#233;n, los principales &#171;infiernos&#187;.</p><p>&#161;Espero disfruten la entrevista!<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!vE5Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe94165f-544d-4f44-9411-4bbd2b317254_588x800.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!vE5Y!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe94165f-544d-4f44-9411-4bbd2b317254_588x800.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!vE5Y!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe94165f-544d-4f44-9411-4bbd2b317254_588x800.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!vE5Y!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe94165f-544d-4f44-9411-4bbd2b317254_588x800.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!vE5Y!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_webp, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe94165f-544d-4f44-9411-4bbd2b317254_588x800.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!vE5Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe94165f-544d-4f44-9411-4bbd2b317254_588x800.jpeg" width="588" height="800" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/be94165f-544d-4f44-9411-4bbd2b317254_588x800.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:800,&quot;width&quot;:588,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:59506,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!vE5Y!, /__u/camilocs.substack.com/w_424, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe94165f-544d-4f44-9411-4bbd2b317254_588x800.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!vE5Y!, /__u/camilocs.substack.com/w_848, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe94165f-544d-4f44-9411-4bbd2b317254_588x800.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!vE5Y!, /__u/camilocs.substack.com/w_1272, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe94165f-544d-4f44-9411-4bbd2b317254_588x800.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!vE5Y!, /__u/camilocs.substack.com/w_1456, /__u/camilocs.substack.com/c_limit, /__u/camilocs.substack.com/f_auto, /__u/camilocs.substack.com/q_auto:good, /__u/camilocs.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe94165f-544d-4f44-9411-4bbd2b317254_588x800.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Imagen extra&#237;da de <a href="https://science.fas.columbia.edu/news/computer-science-professor-bjarne-stroustrup-wins-draper-prize-for-creating-programming-language/">aqu&#237;</a>.</figcaption></figure></div><h2>Versi&#243;n traducida</h2><blockquote><p><strong>(1) &#191;C&#243;mo surgi&#243; la idea de crear unas directrices b&#225;sicas (</strong><em><strong>Core Guidelines</strong></em><strong>) para C++ y qu&#233; espera del proyecto en el futuro? &#191;Es posible a&#241;adir &#171;asistentes inteligentes&#187; que puedan hacer sugerencias y revisar el c&#243;digo de acuerdo con las directrices b&#225;sicas? </strong></p></blockquote><p>Especialmente despu&#233;s de C++11, mucha gente expres&#243; su inter&#233;s por saber qu&#233; era el &#171;C++ moderno&#187;. Adem&#225;s, en mi trabajo en Morgan Stanley, necesitaba dar consejos para mejorar las bases de c&#243;digo. Obviamente, no era el &#250;nico que se agarraba a esa pregunta, as&#237; que pregunt&#233; por ah&#237; y varios de nosotros creamos el proyecto que se convirti&#243; en &#171;<a href="https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md">The C++ Core guidelines</a>&#187;.</p><p>Siempre fui de la opini&#243;n de que las normas por s&#237; solas son insuficientes. Quer&#237;a &#8212;y sigo queriendo&#8212; que el an&#225;lisis est&#225;tico detectara vulneraciones y remitiera a las directrices pertinentes que contienen sugerencias sobre lo que se podr&#237;a hacer mejor. Esto podr&#237;a convertirse en un &#171;asistente inteligente&#187;.</p><blockquote><p><strong>(2) &#191;Qu&#233; caracter&#237;sticas infrautilizadas del &#171;C++ moderno&#187; (es decir desde C++11 a C++20) podr&#237;an mejorar el c&#243;digo de un programador y evitar errores y a&#250;n no se utilizan ampliamente?</strong></p></blockquote><p>Cosas muy sencillas podr&#237;an ayudar, <a href="https://en.cppreference.com/w/cpp/container/span">span</a> para evitar las interfaces propensas a errores (<code>pointer</code>, <code>count</code>), vectores en lugar de arrays, punteros de gesti&#243;n de recursos (<code>unique_ptr</code> y <code>shared_ptr</code>) en lugar de punteros m&#225;s &#171;desnudos&#187; con <em>new/delete</em>. Uso de contenedores de rango comprobado y span.</p><p>Uso coherente de RAII y uso adecuado de excepciones.</p><p>Lo que importa no son las caracter&#237;sticas individuales, sino c&#243;mo se combinan para apoyar un dise&#241;o s&#243;lido. Uso coherente del sistema de tipos. Evitar macros, moldes (<em>casts</em>) y void*. Eche un vistazo a <a href="https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md">The C++ Core Guidelines</a> para obtener ideas.</p><blockquote><p><strong>(3) Desde C++11, se han incorporado m&#225;s caracter&#237;sticas de la programaci&#243;n funcional, como las expresiones lambda o std::function, que lo hacen m&#225;s declarativo. &#191;Hay planes para a&#241;adir m&#225;s caracter&#237;sticas declarativas a futuras versiones de C++?</strong></p></blockquote><p>Eso espero. Desde el d&#237;a #1, he trabajado para hacer que el c&#243;digo sea m&#225;s expl&#237;cito / declarativo. Algunos ejemplos son los pares constructor/destructor que conducen a la gesti&#243;n de recursos de estilo RAII y los conceptos que proporcionan una comprobaci&#243;n inicial del c&#243;digo gen&#233;rico a trav&#233;s de una especificaci&#243;n m&#225;s precisa. Me gustar&#237;a que la concordancia de patrones (<em>pattern matching</em>) al estilo funcional resolviera los problemas del c&#243;digo condicional y que los contratos hicieran expl&#237;citas las suposiciones. Por desgracia, no parece f&#225;cil que el comit&#233; apruebe versiones concretas de estas ideas.</p><blockquote><p><strong>(4) &#191;Cu&#225;l es la estrategia recomendada para migrar una base de c&#243;digo C++ escrita en &#171;C-Style&#187; a C++ moderno dentro de un proyecto?</strong></p></blockquote><p>Por desgracia, no es f&#225;cil. Es f&#225;cil estropear un buen dise&#241;o, pero es dif&#237;cil hacer que un c&#243;digo desordenado sea m&#225;s limpio y regular. La gente suele exigir compatibilidad de errores con c&#243;digo desordenado antiguo, y eso no se puede tener junto con un c&#243;digo m&#225;s limpio.</p><p>Lo primero que hay que limpiar son las interfaces. </p><p>Una vez que tengas una interfaz decente, puedes empezar a limpiar el c&#243;digo a cada lado de ella. Compara:</p><pre><code>using Cmp = int(const void*, const void*); 
void qsort(void *ptr, std::size_t count, std::size_t size, Cmp* comp); </code></pre><p>y </p><pre><code>template&lt;ranges::random_access_range R, class Comp = ranges::less&gt; sort(R&amp;&amp; r);</code></pre><p>Esta &#250;ltima es mucho m&#225;s f&#225;cil de usar y proporciona al optimizador m&#225;s informaci&#243;n para permitir un mejor rendimiento.</p><blockquote><p><strong>(5) Ha mencionado que C++ se dise&#241;&#243; para evolucionar desde el primer d&#237;a. Tras a&#241;os de experiencia, &#191;hay alguna caracter&#237;stica de C++ que le gustar&#237;a eliminar pero que ahora es inconcebible?</strong></p></blockquote><p>No hay ninguna caracter&#237;stica importante que me gustar&#237;a eliminar, pero no se me ocurre ninguna caracter&#237;stica importante que no pudiera hacer mejor con los conocimientos actuales. Por ejemplo, las plantillas (<code>templates</code>) habr&#237;an sido mejores y m&#225;s sencillas si hubieran tenido conceptos desde el primer d&#237;a. Lo sab&#237;a en aquel momento, pero no pude idear un dise&#241;o que ofreciera generalidad, rendimiento &#243;ptimo e interfaces bien especificadas. Pod&#237;a hacer dos de esas tres cosas, pero ni yo ni nadie con quien consultara pod&#237;amos averiguar c&#243;mo conseguir las tres.</p><p>La compatibilidad con versiones anteriores &#8212;estabilidad durante d&#233;cadas&#8212; es una caracter&#237;stica importante, as&#237; que desaconsejo meterse con peque&#241;os detalles aparentemente irrelevantes. Arreglarlos aportar&#237;a ventajas menores y probablemente molestar&#237;a a un n&#250;mero significativo de desarrolladores. Con millones de usuarios en todo el mundo, nunca se sabe qu&#233; se utiliza de forma cr&#237;tica en alg&#250;n lugar.</p><blockquote><p><strong>(6) Se habla mucho de lenguajes como Rust, Julia y Python. Sin embargo, t&#250; has mencionado anteriormente que estos lenguajes, en particular Python, se centran en un conjunto diferente de problemas. En 2023+, &#191;qu&#233; tipo de problemas requerir&#237;an que un programador utilizara C++? Lo pregunto porque puede ser un reto determinar qu&#233; herramienta es la m&#225;s adecuada para una situaci&#243;n concreta.</strong></p></blockquote><p>Problemas que requieren un uso eficiente del hardware y cierta abstracci&#243;n.</p><p>Algunos ejemplos son las principales bibliotecas utilizadas por lenguajes como Python, y sistemas como LLVM de los que dependen muchos lenguajes modernos. Sistemas embebidos complejos, como el software automovil&#237;stico y aeroespacial. Gr&#225;ficos y animaci&#243;n. Computaci&#243;n cient&#237;fica, donde la alternativa es Fortran.</p><p>No me gustan las exageraciones.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> Se interpone en la toma de decisiones t&#233;cnicas racionales y tranquilas.</p><blockquote><p><strong>(7) &#191;Hay alg&#250;n nuevo lenguaje o herramienta de programaci&#243;n que le haya sorprendido y contenga ideas que le gustar&#237;a aplicar a C++?</strong></p></blockquote><p>No tantas sorpresas, pero me encantar&#237;a contar con alg&#250;n gestor est&#225;ndar de paquetes y compilaci&#243;n para C++. Como siempre, el problema es que hay varios y es dif&#237;cil elegir. Adem&#225;s, necesitamos mejores herramientas de an&#225;lisis est&#225;tico.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://camilocs.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscr&#237;base ahora&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/camilocs.substack.com/subscribe"><span>Suscr&#237;base ahora</span></a></p><div><hr></div><h2>Original</h2><blockquote><p><strong>(1) How did you develop the idea of creating C++ Core Guidelines, and what do you expect from the project in the future? Is it possible to add "intelligent assistants" that can make suggestions and review the code according to the core guidelines?&nbsp;</strong></p></blockquote><p>Especially after C++11, many people expressed an interest in knowing what &#8220;Modern C++&#8221; was. Also, at my job in Morgan Stanley, I needed to give advice about improving code bases. Obviously, I wasn&#8217;t the only one grabbling with that question, so I asked around and several of us created the project that became &#8220;The C++ Core guidelines.&#8221;</p><p>I was always of the opinion that rules by themselves are insufficient. I wanted &#8211; and still want &#8211; static analysis to detect violations and point to the relevant guidelines that contain suggestions about what could be done better. This could develop into an &#8220;intelligent assistant.&#8221;</p><blockquote><p><strong>(2) What underutilized "modern C++" features (from C++11 to C++20) could improve a programmer's code and prevent errors and are not yet widely used?</strong></p></blockquote><p>Very simple things could help, <code>span</code> to avoid the error-prone (<code>pointer</code>, <code>count</code>) interfaces, vectors, rather than arrays, resource management pointers (<code>unique_ptr</code> and <code>shared_ptr</code>) rather than pointers plus &#8220;naked&#8221; new/delete. Use of range-checked containers and span.</p><p>Consistent use of RAII and appropriate use of exceptions.</p><p>What matters is not individual features but how they combine to support sound design. Consistent use of the type system. Avoidance of macros, casts, and void*.&nbsp; Have a look at <a href="https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md">The C++ Core Guidelines</a> for ideas.</p><blockquote><p><strong>(3) Since C++11, more functional language features, such as lambda expressions or std::function, have been incorporated, making it more declarative. Are there plans to add more declarative features to future versions of C++?</strong></p></blockquote><p>I hope so. From day #1, I have worked to make code more explicit/declarative. Examples are constructor/destructor pairs leading to RAII-style resource management and concepts providing up-front checking of generic code through more precise specification. I would like to see functional-style pattern matching to address problems with conditional code and contracts to make assumptions explicit. Unfortunately, it doesn&#8217;t seem easy to get concrete versions of such ideas through the committee.&nbsp;</p><blockquote><p><strong>(4) What is the recommended strategy for migrating a C++ codebase written in C-style to modern C++ within a project?</strong></p></blockquote><p>Unfortunately, that&#8217;s not easy. It is easy to mess up a good design, but hard to make messy code cleaner and more regular. People often demand bug-compatibility with older messy code, and you can&#8217;t have that together with cleaner code.</p><p>The first thing to clean up is interfaces.&nbsp;</p><p>Once you have a decent interface, you can start cleaning up code on each side of it. Compare:</p><pre><code>using Cmp&nbsp; = int(const void*, const void*);&nbsp;
void qsort(void *ptr, std::size_t count, std::size_t size,&nbsp; Cmp* comp);&nbsp;</code></pre><p>and&nbsp;</p><pre><code>template&lt;ranges::random_access_range R, class Comp = <a href="http://en.cppreference.com/w/cpp/utility/functional/ranges/less">ranges::less</a>&gt; sort(R&amp;&amp; r);</code></pre><p>The latter is far easier to use and gives the optimizer more information to allow better performance.</p><blockquote><p><strong>(5) You mentioned that C++ was designed to evolve from day one. After years of experience, are there any features of C++ that you would like to remove but are now inconceivable?</strong></p></blockquote><p>There is no major feature I&#8217;d like to remove, but I can&#8217;t think of any major feature that I couldn&#8217;t do better with today&#8217;s knowledge. For example, templates would have been better and simpler had they had concepts from day #1. I knew that at the time but couldn&#8217;t come up with a design that offered generality, optimal performance, and well-specified interfaces. I could do any two out of those three, but neither I nor anyone I consulted with could figure out how to get all three.</p><p>Backwards compatibility &#8211; stability over decades &#8211; is a major feature, so I discourage messing with apparently irrelevant small details. Fixing them would bring minor advantages and probably annoy a significant number of developers. With millions of users worldwide, you never know what is in critical use somewhere.</p><blockquote><p><strong>(6) There is a lot of hype around languages like Rust, Julia, and Python. However, you have previously mentioned that these languages, particularly Python, are focused on a different set of problems. In 2023+, what kind of problems would require a programmer to use C++? I ask because it can be a challenge to determine which tool is best suited for a particular situation.</strong></p></blockquote><p>Problems that require efficient use of hardware and some abstraction.</p><p>Examples are major libraries used by languages such as Python, and systems like LLVM that many modern languages depend on. Complex embedded systems, such as automobile and aerospace software. Graphics and animation. Scientific computation, where the alternative in Fortran.</p><p>I dislike hype. It gets in the way of calm rational technical decision making.</p><blockquote><p><strong>(7) Are there any new programming languages or tools that have surprised you and contain ideas you would like to apply to C++?</strong></p></blockquote><p>Not so many surprises, but I would dearly love some standard packaging and build systems for C++. As usual, the problem is that there are several and it&#8217;s hard to choose. Also, we need better static analysis tools.</p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Para entender el contexto de estas citas y conocer otras, puede remitirse a <a href="https://www.stroustrup.com/quotes.html">https://www.stroustrup.com/quotes.html</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>La traducci&#243;n fue realizada usando <a href="https://www.deepl.com">DeepL</a>, con peque&#241;as modificaciones de mi parte para que se entendiera mejor.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>La frase original es &#171;<em>I dislike hype</em>&#187;. No estoy seguro que &#171;exageraciones&#187; sea lo m&#225;s adecuado para &#171;hype&#187;.</p><p></p></div></div>]]></content:encoded></item></channel></rss>