<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Programación on kenji.blog</title><link>http://kenji.blog/es/tags/programaci%C3%B3n/</link><description>Recent content in Programación on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>es</language><copyright>kenjinote</copyright><lastBuildDate>Tue, 15 Jul 2025 18:03:03 +0900</lastBuildDate><atom:link href="http://kenji.blog/es/tags/programaci%C3%B3n/index.xml" rel="self" type="application/rss+xml"/><item><title>La conjetura de Collatz</title><link>http://kenji.blog/es/p/%E3%82%B3%E3%83%A9%E3%83%83%E3%83%84%E4%BA%88%E6%83%B3/</link><pubDate>Tue, 15 Jul 2025 18:03:03 +0900</pubDate><guid>http://kenji.blog/es/p/%E3%82%B3%E3%83%A9%E3%83%83%E3%83%84%E4%BA%88%E6%83%B3/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%B3%E3%83%A9%E3%83%83%E3%83%84%E4%BA%88%E6%83%B3/img.png" alt="Featured image of post La conjetura de Collatz" />&lt;h1 id="es-cierto-que-cualquier-número-termina-en-1--jugando-con-la-conjetura-de-collatz">¿Es cierto que &amp;ldquo;cualquier número termina en 1&amp;rdquo;? ── Jugando con la Conjetura de Collatz
&lt;/h1>&lt;p>¡Hola! Soy kenji.&lt;/p>
&lt;p>De repente, si escuchas sobre &amp;ldquo;una regla donde cualquier número termina finalmente en 1&amp;rdquo;,
¿no te parece un poco extraño?&lt;/p>
&lt;blockquote>
&lt;p>Por ejemplo, el 19, el 87 o incluso el 1000000.
Si sigues una regla simple y manipulas el número, por alguna razón siempre converge a &amp;ldquo;1&amp;rdquo; al final.&lt;/p>
&lt;/blockquote>
&lt;p>Esta historia que parece un sueño es la &lt;strong>Conjetura de Collatz (Collatz Conjecture)&lt;/strong>.&lt;/p>
&lt;hr>
&lt;h2 id="para-empezar-qué-es-la-conjetura-de-collatz">Para empezar, ¿qué es la Conjetura de Collatz?
&lt;/h2>&lt;p>Primero, presentaré la regla.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Inicio: Elige cualquier &lt;strong>entero positivo&lt;/strong>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Operación:&lt;/p>
&lt;ul>
&lt;li>Si es par → divídelo a la mitad (n → n / 2)&lt;/li>
&lt;li>Si es impar → multiplícalo por 3 y suma 1 (n → 3n + 1)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>Si repites esto una y otra vez, la conjetura es que &lt;strong>cualquier número finalmente llegará a 1&lt;/strong>.&lt;/p>
&lt;p>Por ejemplo, si empezamos con el &lt;code>6&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Efectivamente llegó a &amp;ldquo;1&amp;rdquo;. ¡Bienvenido de vuelta!&lt;/p>
&lt;hr>
&lt;h2 id="hagámoslo-con-código-collatz-en-python">Hagámoslo con código: Collatz en Python
&lt;/h2>&lt;p>Bueno, en estos casos ¡es más rápido probar con código!
Imprimamos la &amp;ldquo;secuencia de Collatz&amp;rdquo; en Python.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">collatz&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">steps&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">while&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">!=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="mi">2&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">n&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">//&lt;/span> &lt;span class="mi">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">n&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">3&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">steps&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">append&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">steps&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Ejemplo: empezando con 19&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">collatz&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">19&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Al ejecutarlo:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">[19, 58, 29, 88, 44, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Llega perfectamente al 1.
Da bastantes rodeos, pero al final ¡alcanza la meta!&lt;/p>
&lt;p>Por cierto, incluso si empiezas con 29, también llegará a 1 de la misma manera.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">pythonprint(collatz(29))
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Al ejecutarlo:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">[27, 82, 41, 124, 62, 31, 94, 47, 142, 71, 214, 107, 322, 161, 484, 242,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">121, 364, 182, 91, 274, 137, 412, 206, 103, 310, 155, 466, 233, 700, 350,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">175, 526, 263, 790, 395, 1186, 593, 1780, 890, 445, 1336, 668, 334, 167,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">502, 251, 754, 377, 1132, 566, 283, 850, 425, 1276, 638, 319, 958, 479,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">1438, 719, 2158, 1079, 3238, 1619, 4858, 2429, 7288, 3644, 1822, 911,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2734, 1367, 4102, 2051, 6154, 3077, 9232, 4616, 2308, 1154, 577, 1732,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">866, 433, 1300, 650, 325, 976, 488, 244, 122, 61, 184, 92, 46, 23, 70, 35,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>¡Vaya, toma 111 pasos!&lt;/p>
&lt;p>Y además, hay momentos en los que se infla por encima de 9000.
Es un patrón que da muchísimas vueltas antes de llegar a la meta.&lt;/p>
&lt;hr>
&lt;h2 id="y-al-final-qué-tiene-de-increíble">Y, al final, ¿qué tiene de increíble?
&lt;/h2>&lt;p>Lo increíble de esta conjetura es,&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Aunque no está comprobada, parece que funciona con cualquier número y termina en 1&lt;/strong>&lt;/p>
&lt;/blockquote>
&lt;p>Es justo eso.&lt;/p>
&lt;p>¿Eh? Entonces, ¿qué pasa con 1 billón, o 1 trillón&amp;hellip;?&lt;/p>
&lt;p>Si pensaste eso, eres muy perspicaz.
De hecho, usando computadoras se ha verificado hasta aproximadamente &amp;ldquo;2 elevado a 68&amp;rdquo;,
y &lt;strong>todos llegan a 1&lt;/strong>. Increíble&amp;hellip;&lt;/p>
&lt;p>Pero, &lt;strong>no se ha demostrado teóricamente que &amp;ldquo;todos lo hagan&amp;rdquo;&lt;/strong>.
Esto es lo que en el mundo de las matemáticas se llama un &amp;ldquo;problema no resuelto&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="quién-es-el-sr-collatz">¿Quién es el Sr. Collatz?
&lt;/h2>&lt;p>Y, al leer hasta aquí, seguro piensas &amp;ldquo;¿y quién es Collatz?&amp;rdquo;.
¡Lo presentaré adecuadamente!&lt;/p>
&lt;ul>
&lt;li>Nombre: &lt;strong>Lothar Collatz&lt;/strong>&lt;/li>
&lt;li>Nacionalidad: Alemán&lt;/li>
&lt;li>Nacimiento: 1910 - 1990&lt;/li>
&lt;li>Profesión: Matemático (destacado en análisis funcional y teoría de números)&lt;/li>
&lt;/ul>
&lt;p>Propuso esta conjetura en 1937, y
después de eso, durante más de 80 años &lt;strong>nadie ha podido demostrarla ni refutarla&lt;/strong>.&lt;/p>
&lt;p>Por cierto, este problema es tan simple pero tan profundo,
que incluso el famoso Paul Erdős (un matemático súper famoso) dijo:&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;Las matemáticas aún no están listas para la conjetura de Collatz&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;p>En otras palabras, la teoría es que las matemáticas de la humanidad aún no han alcanzado este misterio&amp;hellip;&lt;/p>
&lt;hr>
&lt;h2 id="no-se-necesitan-fórmulas-matemáticas-difíciles">No se necesitan &amp;ldquo;fórmulas matemáticas difíciles&amp;rdquo;
&lt;/h2>&lt;p>Lo bueno de la conjetura de Collatz es que &lt;strong>cualquiera puede jugar&lt;/strong>.&lt;/p>
&lt;p>Puedes hacerlo si tienes papel y bolígrafo.
Si escribes el código en Python, puedes probarlo automáticamente.
Y aun así, &lt;strong>los matemáticos más avanzados lo están intentando en serio&lt;/strong>.&lt;/p>
&lt;p>No sé, ¿no te emociona?&lt;/p>
&lt;hr>
&lt;h2 id="bonus-código-para-probar-de-una-vez">Bonus: Código para probar de una vez
&lt;/h2>&lt;p>También dejaré un código para probar varios números a la vez.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">for&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">21&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">steps&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">collatz&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">steps&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2"> (pasos: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="nb">len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">steps&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">)&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Esto imprimirá la secuencia de Collatz del &amp;ldquo;1 al 20&amp;rdquo; de una vez.&lt;/p>
&lt;hr>
&lt;h2 id="conclusión-este-mundo-al-final-es-misterioso">Conclusión: Este mundo, al final, es misterioso
&lt;/h2>&lt;p>Así que, la conjetura de Collatz.&lt;/p>
&lt;ul>
&lt;li>Aunque es súper simple&lt;/li>
&lt;li>Nadie puede probarlo&lt;/li>
&lt;li>Es un gran problema en el mundo de las matemáticas&lt;/li>
&lt;/ul>
&lt;p>Es como una masa de misterio.&lt;/p>
&lt;p>¡Incluso los principiantes en programación pueden probarlo, así que anímate a jugar!&lt;/p>
&lt;hr>
&lt;h2 id="enlaces-recomendados-para-interesados">Enlaces recomendados (para interesados)
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://es.wikipedia.org/wiki/Conjetura_de_Collatz" target="_blank" rel="noopener"
>Wikipedia: Conjetura de Collatz&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://arxiv.org/abs/1909.03562" target="_blank" rel="noopener"
>Artículo de Terence Tao (en inglés)&lt;/a>&lt;/li>
&lt;li>¡También es divertido crear una versión visual en Python! (Lo haré si hay peticiones)&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>Si quieres conocer más de este tipo de temas &amp;ldquo;Matemáticas misteriosas × Programación&amp;rdquo;,
no dudes en pedirme &amp;ldquo;cuéntame más&amp;rdquo;.
¡Pronto te presentaré la Hipótesis de Riemann, historias sobre números primos y muchas cosas más!&lt;/p>
&lt;hr>
&lt;p>📮 ¡Fin!&lt;/p>
&lt;hr></description></item><item><title>Ventajas y desventajas de crear programas con Win32API + C++</title><link>http://kenji.blog/es/p/win32api-c-%E3%81%A7%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%82%92%E4%BD%9C%E3%82%8B%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88%E3%81%A8%E3%83%87%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88/</link><pubDate>Sat, 12 Jul 2025 12:30:35 +0900</pubDate><guid>http://kenji.blog/es/p/win32api-c-%E3%81%A7%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%82%92%E4%BD%9C%E3%82%8B%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88%E3%81%A8%E3%83%87%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88/</guid><description>&lt;img src="http://kenji.blog/p/win32api-c-%E3%81%A7%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%82%92%E4%BD%9C%E3%82%8B%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88%E3%81%A8%E3%83%87%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88/img_1.png" alt="Featured image of post Ventajas y desventajas de crear programas con Win32API + C++" />&lt;h1 id="atractivo-y-desafíos-de-desarrollar-con-win32api--c">Atractivo y desafíos de desarrollar con Win32API + C++
&lt;/h1>&lt;p>Para aquellos que quieren profundizar en el desarrollo de aplicaciones para Windows, &lt;strong>Win32API + C++&lt;/strong> sigue siendo una opción poderosa.
Esta combinación, que permite interactuar con el sistema operativo desde la distancia más corta, combina alta velocidad y flexibilidad.&lt;/p>
&lt;p>Por otro lado, difiere enormemente de los estilos de desarrollo modernos, por lo que su aprendizaje requiere determinación.&lt;/p>
&lt;p>En esta página, explicaremos las ventajas y desventajas de forma sencilla desde &lt;strong>la perspectiva de un desarrollador activo de aplicaciones para Windows&lt;/strong>.&lt;/p>
&lt;hr>
&lt;h2 id="ventajas">Ventajas
&lt;/h2>&lt;h3 id="ejecución-nativa-ultrarrápida">Ejecución nativa ultrarrápida
&lt;/h3>&lt;p>Dado que C++ y Win32API funcionan en la capa más cercana al sistema operativo, casi no hay sobrecarga innecesaria.
La eficiencia en el uso de CPU y memoria es muy alta, presumiendo de una &lt;strong>velocidad de ejecución abrumadora&lt;/strong>.&lt;/p>
&lt;h3 id="alta-flexibilidad-y-libertad">Alta flexibilidad y libertad
&lt;/h3>&lt;p>Puede &lt;strong>controlar de forma precisa y por sí mismo&lt;/strong> todos los comportamientos de la aplicación, como el control de ventanas, el procesamiento asíncrono, la integración COM y la gestión de procesos.
También es posible crear herramientas especializadas para un propósito o su propio marco de trabajo personalizado.&lt;/p>
&lt;h3 id="fácil-de-distribuir-sin-necesidad-de-tiempo-de-ejecución">Fácil de distribuir sin necesidad de tiempo de ejecución
&lt;/h3>&lt;p>Dado que no se requieren tiempos de ejecución externos como .NET o Java, &lt;strong>se puede distribuir solo con un archivo ejecutable&lt;/strong>.
Es menos propenso a problemas durante la redistribución y es atractivo porque es fácil de ejecutar incluso sin un instalador.&lt;/p>
&lt;h3 id="se-pueden-crear-aplicaciones-ligeras">Se pueden crear aplicaciones ligeras
&lt;/h3>&lt;p>Dado que solo requiere la configuración mínima necesaria, se caracteriza por &lt;strong>una huella de memoria muy pequeña&lt;/strong>.
Funciona de manera fluida incluso en PC con bajas especificaciones o entornos de máquinas virtuales.&lt;/p>
&lt;h3 id="control-avanzado-a-nivel-de-sistema-operativo-posible">Control avanzado a nivel de sistema operativo posible
&lt;/h3>&lt;p>Puede realizar &lt;strong>controles que son difíciles con lenguajes y bibliotecas normales&lt;/strong>, como el hook global del ratón/teclado, el ajuste fino del estilo de la ventana y la manipulación del menú del sistema.&lt;/p>
&lt;hr>
&lt;h2 id="desventajas">Desventajas
&lt;/h2>&lt;h3 id="baja-eficiencia-de-desarrollo">Baja eficiencia de desarrollo
&lt;/h3>&lt;p>La construcción de la GUI también debe hacerse completamente mediante código, y a veces se necesitan &lt;strong>decenas de líneas de código solo para crear un botón&lt;/strong>.
Las modificaciones por cambios de diseño también son engorrosas, y la productividad es más baja en comparación con el desarrollo utilizando un marco de trabajo de UI.&lt;/p>
&lt;h3 id="la-mantenibilidad-tiende-a-disminuir">La mantenibilidad tiende a disminuir
&lt;/h3>&lt;p>Hay mucho &lt;strong>código de estructura especial&lt;/strong>, como bucles de mensajes y procedimientos de ventana, lo que dificulta la legibilidad y la reutilización.
También tiene aspectos que lo hacen inadecuado para el desarrollo en equipo y el mantenimiento a largo plazo.&lt;/p>
&lt;h3 id="el-soporte-para-ui-moderna-es-tedioso">El soporte para UI moderna es tedioso
&lt;/h3>&lt;p>Es &lt;strong>difícil soportar la UX requerida en los últimos años&lt;/strong>, como soporte de alto DPI, interfaz táctil, accesibilidad y modo oscuro.
Se necesita tiempo y esfuerzo porque requiere hacerlo manualmente uno por uno.&lt;/p>
&lt;h3 id="no-soporta-multiplataforma">No soporta multiplataforma
&lt;/h3>&lt;p>Como es una API completamente exclusiva de Windows, &lt;strong>no se puede portar a macOS o Linux&lt;/strong>.
Si asume la implementación en múltiples plataformas, necesitará seleccionar otras tecnologías.&lt;/p>
&lt;h3 id="el-costo-de-aprendizaje-es-extremadamente-alto">El costo de aprendizaje es extremadamente alto
&lt;/h3>&lt;p>Debe comprender &lt;strong>conceptos y mecanismos que rara vez se usan en la actualidad&lt;/strong>, como manejadores (handles), GDI, COM y OLE.
Mucha de la documentación es antigua, y el aprendizaje requiere tiempo y perseverancia.&lt;/p>
&lt;hr>
&lt;h2 id="usos-adecuados">Usos adecuados
&lt;/h2>&lt;ul>
&lt;li>&lt;strong>Herramientas ligeras&lt;/strong> como lanzadores de archivos y asistencia de teclas de acceso rápido&lt;/li>
&lt;li>&lt;strong>Utilidades del sistema&lt;/strong> como operaciones del portapapeles y control IME&lt;/li>
&lt;li>&lt;strong>Aplicaciones de tipo control nativo&lt;/strong> como hooks globales y captura de ventanas&lt;/li>
&lt;li>&lt;strong>Herramientas de asistencia de controladores&lt;/strong> que están estrechamente vinculadas al hardware&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="usos-no-adecuados">Usos no adecuados
&lt;/h2>&lt;ul>
&lt;li>&lt;strong>Aplicaciones dirigidas a consumidores generales&lt;/strong> donde se enfatiza la UI/UX moderna&lt;/li>
&lt;li>&lt;strong>Prototipado y desarrollo MVP&lt;/strong> que prioriza la velocidad&lt;/li>
&lt;li>&lt;strong>Proyectos a gran escala&lt;/strong> que asumen operaciones a largo plazo y desarrollo en equipo&lt;/li>
&lt;li>&lt;strong>Productos multiplataforma&lt;/strong> que necesitan soportar múltiples sistemas operativos&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="resumen-de-evaluación">Resumen de evaluación
&lt;/h2>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Punto de vista&lt;/th>
&lt;th>Evaluación&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Velocidad de ejecución&lt;/td>
&lt;td>◎ Muy rápida&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Eficiencia de memoria&lt;/td>
&lt;td>◎ Excelente&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Velocidad de desarrollo&lt;/td>
&lt;td>× Lenta&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Mantenibilidad&lt;/td>
&lt;td>× Baja&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Soporte multiplataforma&lt;/td>
&lt;td>× No soportado&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Soporte UI moderna&lt;/td>
&lt;td>× Débil&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Grado de libertad de control del SO&lt;/td>
&lt;td>◎ Abrumadoramente alto&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h2 id="conclusión">Conclusión
&lt;/h2>&lt;p>&lt;strong>Win32API + C++ es una herramienta adecuada para desarrolladores que &amp;ldquo;quieren manejar todo el sistema operativo por sí mismos&amp;rdquo;.&lt;/strong>
Si bien su poder es muy grande, el aprendizaje y la operación requieren la correspondiente determinación.&lt;/p>
&lt;blockquote>
&lt;p>Si vale la pena &amp;ldquo;elegirlo a propósito&amp;rdquo; depende de la naturaleza de la aplicación a la que apunte.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;p>Sumergirse en el mundo de &lt;code>#include &amp;lt;windows.h&amp;gt;&lt;/code> sin depender de marcos de trabajo GUI o lenguajes modernos&amp;hellip;
Esa elección sigue siendo significativa hoy en día.&lt;/p></description></item><item><title>Colección de fuentes para usar en programación</title><link>http://kenji.blog/es/p/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%A7%E4%BD%BF%E3%81%88%E3%82%8B%E3%83%95%E3%82%A9%E3%83%B3%E3%83%88%E9%9B%86/</link><pubDate>Sat, 30 Mar 2024 02:21:31 +0900</pubDate><guid>http://kenji.blog/es/p/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%A7%E4%BD%BF%E3%81%88%E3%82%8B%E3%83%95%E3%82%A9%E3%83%B3%E3%83%88%E9%9B%86/</guid><description>&lt;img src="http://kenji.blog/p/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%A7%E4%BD%BF%E3%81%88%E3%82%8B%E3%83%95%E3%82%A9%E3%83%B3%E3%83%88%E9%9B%86/img.png" alt="Featured image of post Colección de fuentes para usar en programación" />&lt;h2 id="jetbrains-mono">JetBrains Mono
&lt;/h2>&lt;p>Es una fuente de programación de código abierto proporcionada por JetBrains.&lt;/p>
&lt;p>Descarga: &lt;a class="link" href="https://www.jetbrains.com/ja-jp/lp/mono/" target="_blank" rel="noopener"
>https://www.jetbrains.com/ja-jp/lp/mono/&lt;/a>&lt;/p>
&lt;h2 id="hackgen">HackGen
&lt;/h2>&lt;p>Hakugen (HackGen) es una fuente de programación que sintetiza la fuente en inglés para programación Hack, y la fuente derivada Genjyuu Gothic de Source Han Sans (Gen no Kaku Gothic).&lt;/p>
&lt;p>Descarga: &lt;a class="link" href="https://github.com/yuru7/HackGen/releases" target="_blank" rel="noopener"
>https://github.com/yuru7/HackGen/releases&lt;/a>&lt;/p>
&lt;h2 id="ricty-diminished">Ricty Diminished
&lt;/h2>&lt;p>&lt;code>Ricty Diminished&lt;/code> es una fuente hermana de &lt;code>Ricty&lt;/code>, y es una fuente sintetizada a partir de &lt;code>Inconsolata&lt;/code> y &lt;code>Circle M+ 1m&lt;/code> usando el script generador de &lt;code>Ricty&lt;/code>, en lugar de &lt;code>Inconsolata&lt;/code> y &lt;code>Migu 1M&lt;/code>. Como no incluye los glifos de IPA Gothic, el número de glifos de kanji utilizables es menor, pero a cambio, puede ser distribuida bajo la &lt;code>SIL Open Font License&lt;/code>.&lt;/p>
&lt;p>Descarga: &lt;a class="link" href="https://rictyfonts.github.io/diminished" target="_blank" rel="noopener"
>https://rictyfonts.github.io/diminished&lt;/a>&lt;/p>
&lt;h2 id="cica">Cica
&lt;/h2>&lt;p>Es una fuente de programación que usa &lt;code>Hack&lt;/code> + &lt;code>DejaVu Sans Mono&lt;/code> para caracteres alfanuméricos y símbolos.
Y &lt;code>Rounded Mgen+&lt;/code> para los demás caracteres.&lt;/p>
&lt;p>Descarga: &lt;a class="link" href="https://github.com/miiton/Cica/releases" target="_blank" rel="noopener"
>https://github.com/miiton/Cica/releases&lt;/a>&lt;/p>
&lt;p>Referencia:&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://sourcefoundry.org/hack/" target="_blank" rel="noopener"
>Hack&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://dejavu-fonts.github.io/" target="_blank" rel="noopener"
>DejaVu Sans Mono&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="http://jikasei.me/font/rounded-mgenplus/" target="_blank" rel="noopener"
>Rounded Mgen+&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="migu">Migu
&lt;/h2>&lt;p>Es una fuente sintetizada de M+ e IPA.&lt;/p>
&lt;p>Descarga: &lt;a class="link" href="https://itouhiro.github.io/mixfont-mplus-ipa/migu/" target="_blank" rel="noopener"
>https://itouhiro.github.io/mixfont-mplus-ipa/migu/&lt;/a>&lt;/p>
&lt;h2 id="osaka">Osaka
&lt;/h2>&lt;p>Es una fuente que permite usar la fuente estándar de Mac OS &lt;code>Osaka&lt;/code> en Windows.&lt;/p>
&lt;p>Descarga: &lt;a class="link" href="http://ifs.nog.cc/osakattf.hp.infoseek.co.jp/" target="_blank" rel="noopener"
>http://ifs.nog.cc/osakattf.hp.infoseek.co.jp/&lt;/a>&lt;/p>
&lt;h2 id="plemoljp">PlemolJP
&lt;/h2>&lt;p>Es una fuente de programación que combina la fuente japonesa de código abierto &lt;code>IBM Plex Sans JP&lt;/code> lanzada por IBM y &lt;code>IBM Plex Mono&lt;/code> de la serie Plex de IBM.&lt;/p>
&lt;p>Descarga: &lt;a class="link" href="https://github.com/yuru7/PlemolJP/releases" target="_blank" rel="noopener"
>https://github.com/yuru7/PlemolJP/releases&lt;/a>&lt;/p></description></item><item><title>'【Por idioma】Resumen de entornos de ejecución de código en línea'</title><link>http://kenji.blog/es/p/%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E5%AE%9F%E8%A1%8C%E7%92%B0%E5%A2%83%E3%81%BE%E3%81%A8%E3%82%81/</link><pubDate>Sun, 09 Apr 2023 14:01:00 +0900</pubDate><guid>http://kenji.blog/es/p/%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E5%AE%9F%E8%A1%8C%E7%92%B0%E5%A2%83%E3%81%BE%E3%81%A8%E3%82%81/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E5%AE%9F%E8%A1%8C%E7%92%B0%E5%A2%83%E3%81%BE%E3%81%A8%E3%82%81/img.png" alt="Featured image of post '【Por idioma】Resumen de entornos de ejecución de código en línea'" />&lt;h2 id="python">Python
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://colab.research.google.com/#create=true" target="_blank" rel="noopener"
>Google Colaboratory&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Google Colaboratory es un entorno de ejecución de Python en línea.&lt;/p>
&lt;ul>
&lt;li>Permite el uso de GPU.&lt;/li>
&lt;li>Los cuadernos de Colab permiten combinar código ejecutable y texto enriquecido (incluyendo imágenes, HTML, LaTeX, etc.) en un solo documento.&lt;/li>
&lt;/ul>
&lt;p>Está basado en Jupyter Notebook.&lt;/p>
&lt;h2 id="rust">Rust
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://play.rust-lang.org/?version=stable&amp;amp;mode=debug&amp;amp;edition=2021" target="_blank" rel="noopener"
>Rust Playground&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="javascript">JavaScript
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://playcode.io/" target="_blank" rel="noopener"
>Javascript Playground&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="java">Java
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://paiza.io/ja/projects/new?language=java" target="_blank" rel="noopener"
>paiza.IO Online Java compiler&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="haskell">Haskell
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://play.haskell.org/" target="_blank" rel="noopener"
>Haskell Playground&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="swift">Swift
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://online.swiftplayground.run/" target="_blank" rel="noopener"
>Online Swift Playground&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="c">C++
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://www.onlinegdb.com/online_c&amp;#43;&amp;#43;_compiler" target="_blank" rel="noopener"
>C++ 14&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="otros">Otros
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://aws.amazon.com/jp/cloud9/" target="_blank" rel="noopener"
>AWS Cloud9&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Entorno de desarrollo integrado en línea proporcionado por Amazon AWS. Viene preempaquetado con herramientas para más de 40 lenguajes de programación, como Node.js, JavaScript, Python, PHP, Ruby, Go y C++.&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://vscode.dev/" target="_blank" rel="noopener"
>Visual Studio Code for the Web&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Entorno de desarrollo en línea proporcionado por Microsoft. Sin embargo, no se puede ejecutar ni depurar código en lenguajes que requieren compilación.&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://paiza.io/projects/CGAcQLfW-IOXYy8Dq2OHBw?locale=ja-jp" target="_blank" rel="noopener"
>paiza.IO&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Entorno de ejecución en línea compatible con 24 lenguajes principales, como C, C++, Java, Ruby, Python, PHP y Perl.&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://codepen.io/" target="_blank" rel="noopener"
>CodePen&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Entorno de ejecución en línea para HTML, CSS y JavaScript.&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://codeanywhere.com/" target="_blank" rel="noopener"
>codeanywhere&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>IDE en línea. Permite compartir código y chatear.&lt;/p></description></item></channel></rss>