<?xml version="1.0" encoding="UTF-8"?>
<rss  xmlns:atom="http://www.w3.org/2005/Atom" 
      xmlns:media="http://search.yahoo.com/mrss/" 
      xmlns:content="http://purl.org/rss/1.0/modules/content/" 
      xmlns:dc="http://purl.org/dc/elements/1.1/" 
      version="2.0">
<channel>
<title>Adatar</title>
<link>https://adatar.do/blog/programacion-literaria/index.html</link>
<atom:link href="https://adatar.do/blog/programacion-literaria/index.xml" rel="self" type="application/rss+xml"/>
<description></description>
<generator>quarto-1.3.361</generator>
<lastBuildDate>Wed, 31 Aug 2022 00:00:00 GMT</lastBuildDate>
<item>
  <title>Programación literaria</title>
  <dc:creator>Daniel E. de la Rosa</dc:creator>
  <link>https://adatar.do/blog/programacion-literaria/programacion-literaria-como-tenia-que-ser.html</link>
  <description><![CDATA[ 




<p><img src="https://adatar.do/blog/images/programacion-literaria.jpg" alt="Programación literaria" height="300"></p>
<p>Muchos dirían que la década de 1970 fue una gran época para la tipografía<sup>1</sup>. No así el caso del científico de la computación y matemático <a href="https://es.wikipedia.org/wiki/Donald_Knuth">Donald E. Knuth</a> quien en 1978 presentó TeX, un sistema tipográfico con el que esperaba terminar con la, en ese entonces y según el propio Knuth, cada vez menor calidad de la tipografía.</p>
<p>A mediados de los 80s, como parte de los trabajos de desarrollo de WEB<sup>2</sup>, Knuth introdujo el concepto de <strong>programación literaria</strong>.</p>
<p>Lo que Knuth propone con la programación literaria es un programa de computadora en el que se combina texto en lenguaje natural, con bloques de código incrustados que cuando se ejecutan generan otros elementos (textos, gráficos, tablas) que forman parte del documento final. Esto es, combina el código/cálculos y el texto en un mismo documento. De hecho, el propio nombre de programación literaria o programación letrada (como también se le conoce), es una critica que hace Knuth a los llamados sistema de programación estructurada que imperaban en la época<sup>3</sup>.</p>
<p>Esta idea comenzó a ganar adeptos rápidamente, al punto que entre 1989 y 1999, Norman Ramsey desarrolló una herramienta de programación literaria inspirada en WEB, denominada <a href="https://en.wikipedia.org/wiki/Noweb">noweb</a><sup>4</sup>. La principal característica de esta nueva implementación, radicaba en su independencia del lenguaje de programación, lo que permitiría el desarrollo de herramientas de programación literaria en lenguajes de programación distintos de C, en el que se basaba su predecesor.</p>
<p>De hecho, anclado en estos trabajos, Friedrich Leisch presentó en 2002 una herramienta de programación literaria propia del lenguaje de programación R llamada <a href="https://en.wikipedia.org/wiki/Sweave">Sweave</a>, que permitía combinar código R y texto en lenguaje natural para producir documentos LaTeX y LyX. Rápidamente, Sweave se convirtió en el estándar y prácticamente único mecanismo para le generación y presentación de la documentación de los paquetes de R, mejor conocidos como viñetas.</p>
<p>Una década después, en el año 2012, un equipo interno de RStudio presentó <a href="https://yihui.org/knitr/">Knitr</a>, una clase de superset de Sweave que además agregaba soporte para otros lenguajes de programación como Python, Julia, JavaScript, etc. Conjuntamente introdujeron <a href="https://en.wikipedia.org/wiki/RMarkdown">RMarkdwon</a> (.Rmd), un formato que permitía la generación de los documentos que posteriormente eran procesados por Knitr.</p>
<p>Con el paso de los años, RMarkdown y Knitr comenzaron a ganar popularidad, llegando a irrumpir no solo en la documentación de los paquetes R, sino también en la generación de documentos técnicos y científicos tanto en R como en los otros mas de 60 lenguajes de programación que estos llegaron a soportar.</p>
<p>En consecuencia, surgieron proyectos derivados que se especializaban en la generación de documentos más estructurados<sup>5</sup>: i) dashboards, ii) websites, iii) documentación HTML para paquetes R completos, iv) libros, v) tutoriales interactivos, entre otros.</p>
<p>Hasta este punto hemos centrado la atención en la evolución de la programación literaria en el ámbito de R. Pero, fuera de R, la programación literaria ha tenido muchas implementaciones igual o más exitosas que las de este último.</p>
<ul>
<li><strong><a href="https://en.wikipedia.org/wiki/Project_Jupyter#Jupyter_Notebook">Jupyter Notebooks (2015)</a></strong>: una implementación de la programación literaria con soporte para la ejecución de código en los entornos de <strong>Ju</strong>lia, <strong>Pyt</strong>on y <strong>R</strong>. Esta implementación es la favorita en el ambiente de la ciencia de datos, sobre todo entre los usuarios de Python.</li>
<li><strong><a href="https://github.blog/2020-11-20-nbdev-a-literate-programming-environment-that-democratizes-software-engineering-best-practices/">nbdev (2020)</a></strong>: basado en Jupyter Notebooks, propone una herramienta para la creación de paquetes Python utilizando la programación literaria.</li>
</ul>
<p>El éxito de esta idea en la comunidad científica se debe principalmente a que la programación literaria introduce múltiples ventajas al momento de crear un documento, entre las que podemos mencionar por lo menos dos:</p>
<ul>
<li><strong>Una única fuente de la verdad</strong>: esto combina las funciones de un editor de texto para la narrativa y una hoja de cálculo, por ejemplo, para el análisis y procesamiento de los datos, en un único documento.</li>
<li><strong>Cálculos reactivos</strong>: esto permite que los cálculos, gráficos, tablas y otros elementos del documento se actualicen automáticamente cada vez que se corre el programa, recogiendo cualquier cambio que los datos hayan sufrido desde la última ejecución.</li>
</ul>
<p>En la ilustración que se muestra a continuación, se presenta el concepto de la programación literaria de forma resumida y generalizada.</p>
<div class="columns">
<div class="column center" style="width:40%;">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="https://adatar.do/blog/images/qmd-file.png" class="img-fluid figure-img" style="width:40.0%"></p>
<figcaption class="figure-caption"></figcaption>
</figure>
</div>
</div><div class="column center" style="width:20%;">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="https://adatar.do/blog/images/knitr.png" class="img-fluid figure-img"></p>
<figcaption class="figure-caption">==============&gt;</figcaption>
</figure>
</div>
</div><div class="column center" style="width:40%;">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="https://adatar.do/blog/images/md-file.png" class="img-fluid figure-img" style="width:40.0%"></p>
<figcaption class="figure-caption"></figcaption>
</figure>
</div>
</div>
</div>
<p>El archivo de la izquierda, en formato <code>.qmd</code>, es un archivo de texto plano que permite insertar código en lenguaje natural con bloques de código que tienen como objetivo producir otros elementos que también formarán parte del documento final.</p>
<p>Mientras que el archivo de la derecha, en formato <code>.md</code>, es el archivo que resulta después que el archivo <code>.qmd</code> es procesado, en este caso por Knitr, reemplazando los bloques de código por los elementos que estos producen.</p>
<p>Este proceso, por lo general va acompañado de otras etapas donde este archivo es procesado y convertido en un documento final, con un formato de presentación más común, como por ejemplo, PDF, DOCX, HTML, etc.</p>
<blockquote class="blockquote">
<p>En definitiva, la programación literaria es una herramienta que permite la creación de documentos técnicos y científicos que combinan texto, código y resultados de forma interactiva.</p>
</blockquote>
<div class="callout callout-style-default callout-tip callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Ver a acontinuación
</div>
</div>
<div class="callout-body-container callout-body">
<ul>
<li><a href="./quarto-mas-que-rmarkdown-2.0.html">Quarto: más que RMarkdown 2.0</a></li>
</ul>
</div>
</div>




<div id="quarto-appendix" class="default"><section id="footnotes" class="footnotes footnotes-end-of-document"><h2 class="anchored quarto-appendix-heading">Notas</h2>

<ol>
<li id="fn1"><p>Véase <span class="citation" data-cites="2010Tipografia:e183">@2010Tipografia:e183</span>↩︎</p></li>
<li id="fn2"><p>El sistema de programación computacional propio de TeX, y que estaba formado por dos componentes: 1) <strong>TANGLE</strong>: que produce código Pascal compilable a partir de los textos fuente y 2) <strong>WEAVE</strong>: que produce documentación imprimible con un buen formato utilizando TeX. Vea <span class="citation" data-cites="web-tex">@web-tex</span>↩︎</p></li>
<li id="fn3"><p>Vea <a href="https://es.wikipedia.org/wiki/Programaci%C3%B3n_literaria">https://es.wikipedia.org/wiki/Programaci%C3%B3n_literaria</a>↩︎</p></li>
<li id="fn4"><p>Con sus correspondientes dos componentes: 1) notangle y 2) noweave↩︎</p></li>
<li id="fn5"><p>Vea <span class="citation" data-cites="Xie2022R:62fa">@Xie2022R:62fa</span>↩︎</p></li>
</ol>
</section><section class="quarto-appendix-contents"><h2 class="anchored quarto-appendix-heading">Reutilización</h2><div id="quarto-reuse" class="quarto-appendix-contents"><div><a rel="license" href="https://creativecommons.org/licenses/by/4.0/deed.es">https://creativecommons.org/licenses/by/4.0/deed.es</a></div></div></section><section class="quarto-appendix-contents"><h2 class="anchored quarto-appendix-heading">Cómo citar</h2><div><div class="quarto-appendix-secondary-label">BibTeX</div><pre class="sourceCode code-with-copy quarto-appendix-bibtex"><code class="sourceCode bibtex">@online{e. de la rosa2022,
  author = {E. de la Rosa, Daniel},
  title = {Programación literaria},
  date = {2022-08-31},
  url = {https://adatar.do/blog/programacion-literaria/programacion-literaria-como-tenia-que-ser.html},
  langid = {es}
}
</code></pre><div class="quarto-appendix-secondary-label">Por favor, cita este trabajo como:</div><div id="ref-e. de la rosa2022" class="csl-entry quarto-appendix-citeas">
E. de la Rosa, Daniel. 2022. <span>“Programación literaria.”</span>
August 31, 2022. <a href="https://adatar.do/blog/programacion-literaria/programacion-literaria-como-tenia-que-ser.html">https://adatar.do/blog/programacion-literaria/programacion-literaria-como-tenia-que-ser.html</a>.
</div></div></section></div> ]]></description>
  <category>Programación literaria</category>
  <guid>https://adatar.do/blog/programacion-literaria/programacion-literaria-como-tenia-que-ser.html</guid>
  <pubDate>Wed, 31 Aug 2022 00:00:00 GMT</pubDate>
  <media:content url="https://adatar.do/blog/images/programacion-literaria.jpg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>Quarto: más que RMarkdown 2.0</title>
  <dc:creator>Daniel E. de la Rosa</dc:creator>
  <link>https://adatar.do/blog/programacion-literaria/quarto-mas-que-rmarkdown-2.0.html</link>
  <description><![CDATA[ 




<p><img src="https://adatar.do/blog/images/quarto.png" class="img-fluid"></p>
<p>Hace ya más de una década desde que un equipo interno de RStudio<sup>1</sup> presentara <strong>Knitr</strong>, una nueva implementación de la Programación literaria en R, y <strong>RMarkdown</strong>, un sistema y formato de documentos que permite la integración de código en documentos de texto plano.</p>
<div class="callout callout-style-default callout-caution callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Lectura recomendada
</div>
</div>
<div class="callout-body-container callout-body">
<ul>
<li><a href="./programacion-literaria-como-tenia-que-ser.html">Programación literaria: Como tenía que ser</a></li>
</ul>
</div>
</div>
<p>El éxito de Knitr fue tal que en poco tiempo prácticamente reemplazó a Sweave, el sistema de programación literaria que se utilizaba para la generación de la documentación de los paquetes de R, mejor conocidos como viñetas.</p>
<p>Aún más, el crecimiento del sistema fue tal que en los más de 10 años de desarrollo, este ha agregado soporte para poco más de 60 lenguajes de programación, incluyendo Python, Julia, SQL y muchos más. Del mismo modo, RMarkdown ha evolucionado y derivado en un conjunto de herramientas que permiten la creación de libros, presentaciones, sitios web, y mucho más.</p>
<blockquote class="blockquote">
<p>Todo esto llevó a que RMarkdown se convertiera en uno de los productos estrella de RStudio.</p>
</blockquote>
<p>Sin embargo, con el paso de los años, la compañía que había nacido puramente como una empresa de software para R, comenzó a expandir sus horizontes y a desarrollar herramientas para otros lenguajes de programación.</p>
<p>Para ese entonces Python ya se había convertido en uno de los lenguajes de programación más populares del mundo, y prácticamente el lenguaje de facto para los científicos de datos. Al tiempo que Julia, un lenguaje de programación relativamente nuevo, también comenzaba a ganar popularidad entre los usuarios de R. Por lo que no era de extrañar que RStudio mostrara interés en estos lenguajes.</p>
<p>De hecho, en 2015 había sido publicado el proyecto <a href="https://jupyter.org/">Jupyter</a>, un sistema que permitía la creación de documentos interactivos que combinaban texto, código y visualizaciones, es decir, una implementación de la programación literaria. Pero, que era particularmente popular entre los usuarios de Python y Julia. Aunque este también tenía soporte para R. De ahí el nombre de Jupyter, que es una abreviación de Julia, Python y R.</p>
<blockquote class="blockquote">
<p>Así estaban las cosas: <strong>RMarkdown</strong> en una esquina y <strong>Jupyter Notebook</strong> en la otra.</p>
</blockquote>
<p>Pero RStudio ya venía tomando medidas. Poco a poco la compañía fue ampliando sus horizontes y desarrollando herramientas para otros lenguajes de programación, hasta el punto que en 2022 la compañía incluso realiza un rebranding y pasa a llamarse <a href="https://posit.co/">Posit</a>, intentando así dejar atrás su pasado como una empresa de software para R, cosa que se veía reflejado en el propio nombre de la compañía.</p>
<p>Una de las primeras apuestas de Posit fue el desarrollo de <strong>Quarto</strong>, un sistema que permite la creación de documentos interactivos que combinan texto, código y visualizaciones, es decir, otra implementación de la programación literaria. Pero, que prometía ser mucho más que eso, y en definitiva lo es.</p>
<p>Quarto toma lo mejor de más de 10 años de RMarkdown y Jupyter Notebook, y lo integra en un solo sistema, que además es multiplataforma y compatible con una gran cantidad de lenguajes de programación, entre los que destacan R, Python, Julia y JavaScript.</p>
<p>Mientras que RMarkdown depende de R para correr código Python, Jupyter NB depende de Python para correr código R. Sin embargo, Quarto elimina esta dependencia cruzada entre los dos lenguajes, aún cuando te sigue permitiendo utilizar ambos dentro de un mismo proyecto.</p>
<p>Otra ventaja para unos –o desventaja para otros– de Quarto es que además de combinar las funcionalidades de todos los paquetes del ecosistema RMarkdown en un solo sistema, este agrega funcionalidades extras, como una mayor integración con el sistema de filtros de PANDOC, lo que abre un abanico enorme de posibilidades para la personalización de los documentos creados con la herramienta.</p>
<p>También, el propio Posit desarrolló una extensión del popular editor de texto <a href="https://code.visualstudio.com/">Visual Studio Code</a>, llamada <a href="https://marketplace.visualstudio.com/items?itemName=quarto.quarto">Quarto for VS Code</a>, que permite la edición de documentos Quarto directamente desde el editor de texto, y que además incluye un sistema de autocompletado para los lenguajes de programación soportados por Quarto, eliminando así la dependencia de RStudio IDE.</p>
<p>Por supuesto no todo es color de rosa. Como ya hemos mencionada varias veces, Quarto es un sistema relativamente nuevo, por lo que aún no cuenta con la misma cantidad de documentación y recursos que RMarkdown y Jupyter NB. La comunidad de Quarto está creciendo rápidamente, y cada vez hay más recursos disponibles para aprender a utilizar la herramienta. Sin embargo, muchos de los proyectos más populares basados en RMarkdown y Jupyter NB son mantenidos por la comunidad, por lo que no hay garantías de que los mismos migren a Quarto, o por lo menos no en un futuro cercano.</p>
<p>Habría que esperar un poco más para ver si Quarto se convierte en el nuevo estándar de la programación literaria, o si por el contrario, RMarkdown y Jupyter NB siguen siendo los reyes del juego.</p>
<div class="callout callout-style-default callout-important callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Heil RMarkdown
</div>
</div>
<div class="callout-body-container callout-body">
<p>Hay poco que Posit pueda hacer del lado de Jupyter y en cierta forma el futuro de este dependerá de la acogida que tenga Quarto entre los usuarios de Python y Julia, principalmente.</p>
<p>Sin embargo, tal como mencionara el propio <span class="citation" data-cites="xie2022Quarto:cb26">@xie2022Quarto:cb26</span>, autor principal de RMarkdwon y Knitr, RMarkdown relentizará su desarrollo, pero no dejará de terner soporte, ya que de hecho la mayoría de los documentos rmd pueden ser ejecutados por Quarto sin necesidad del más mínimo cambio. <!-- 
De heho, en Adatar hay algunos proyectos basados en RMarkdown, algunos de los cuales pudieran ser suspendidos, pero otros definitivamente seguirán siendo útiles.

Menciar algunos de los proyectos. --></p>
</div>
</div>
<p>Aunque pudiéramos seguir hablando de la programación literaria, Quarto y como este se compara con RMarkdown y Jupyter NB, la verdad es que lo ideal sería probar cada uno de ellos para ver cual se adapta mejor a las necesidades del proyecto.</p>
<!-- 
:::{.callout-tip}
# Ver a acontinuación

- <a href="./quarto/primeros-pasos-documentos.html">Primeros pasos con Quarto: Documentos</a>
- <a href="./quarto/primeros-pasos-documentos.html">Primeros pasos con Quarto: Documentos</a>
- <a href="./quarto/primeros-pasos-documentos.html">Primeros pasos con Quarto: Documentos</a>
- <a href="./quarto/primeros-pasos-documentos.html">Primeros pasos con Quarto: Documentos</a>
::: -->
<section id="referencias" class="level1 unnumbered">
<h1 class="unnumbered">Referencias</h1>


</section>


<div id="quarto-appendix" class="default"><section id="footnotes" class="footnotes footnotes-end-of-document"><h2 class="anchored quarto-appendix-heading">Notas</h2>

<ol>
<li id="fn1"><p>Actualmente <a href="https://posit.co/">Posit</a>↩︎</p></li>
</ol>
</section><section class="quarto-appendix-contents"><h2 class="anchored quarto-appendix-heading">Reutilización</h2><div id="quarto-reuse" class="quarto-appendix-contents"><div><a rel="license" href="https://creativecommons.org/licenses/by/4.0/deed.es">https://creativecommons.org/licenses/by/4.0/deed.es</a></div></div></section><section class="quarto-appendix-contents"><h2 class="anchored quarto-appendix-heading">Cómo citar</h2><div><div class="quarto-appendix-secondary-label">BibTeX</div><pre class="sourceCode code-with-copy quarto-appendix-bibtex"><code class="sourceCode bibtex">@online{e. de la rosa2022,
  author = {E. de la Rosa, Daniel},
  title = {Quarto: más que RMarkdown 2.0},
  date = {2022-08-31},
  url = {https://adatar.do/blog/programacion-literaria/quarto-mas-que-rmarkdown-2.0.html},
  langid = {es}
}
</code></pre><div class="quarto-appendix-secondary-label">Por favor, cita este trabajo como:</div><div id="ref-e. de la rosa2022" class="csl-entry quarto-appendix-citeas">
E. de la Rosa, Daniel. 2022. <span>“Quarto: más que RMarkdown
2.0.”</span> August 31, 2022. <a href="https://adatar.do/blog/programacion-literaria/quarto-mas-que-rmarkdown-2.0.html">https://adatar.do/blog/programacion-literaria/quarto-mas-que-rmarkdown-2.0.html</a>.
</div></div></section></div> ]]></description>
  <category>Programación literaria</category>
  <category>Quarto</category>
  <category>R</category>
  <category>Python</category>
  <guid>https://adatar.do/blog/programacion-literaria/quarto-mas-que-rmarkdown-2.0.html</guid>
  <pubDate>Wed, 31 Aug 2022 00:00:00 GMT</pubDate>
  <media:content url="https://adatar.do/blog/images/quarto.png" medium="image" type="image/png" height="35" width="144"/>
</item>
</channel>
</rss>
