<rss version="2.0"
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:dc="http://purl.org/dc/elements/1.1/">
        <channel>
        <title>Magazine - compilador</title>
        <link>https://www.genbeta.com</link>
        <description>Publicación de noticias sobre gadgets y tecnología. Últimas tecnologías en electrónica de consumo y novedades tecnológicas en móviles, tablets, informática, etc</description>
        <pubDate>Tue, 09 Jun 2026 20:55:56 +0000</pubDate>
        <generator>https://www.genbeta.com</generator>
        <atom:link href="https://www.genbeta.com/tag/compilador/rss2.xml" rel="self" type="application/rss+xml" />
                                        <item>
                <title><![CDATA[Microsoft hizo algo inusual con MS-DOS por primera vez en 10 años. Y así ha reaccionado el creador del Administrador de Tareas ]]></title>
                <link>https://www.genbeta.com/sistemas-operativos/microsoft-hizo-algo-inusual-ms-dos-primera-vez-10-anos-asi-ha-reaccionado-creador-administrador-tareas</link>
                <guid>https://www.genbeta.com/sistemas-operativos/microsoft-hizo-algo-inusual-ms-dos-primera-vez-10-anos-asi-ha-reaccionado-creador-administrador-tareas</guid>
                <pubDate>Wed, 15 May 2024 13:30:49 +0000</pubDate>
                                         <dc:creator>Marcos Merino</dc:creator>
                                       <description>
                    <![CDATA[
                              <p>
      <img src="https://i.blogs.es/b011f1/ms-dos4/1024_2000.jpeg" alt="Microsoft&#x20;hizo&#x20;algo&#x20;inusual&#x20;con&#x20;MS-DOS&#x20;por&#x20;primera&#x20;vez&#x20;en&#x20;10&#x20;a&#x00F1;os.&#x20;Y&#x20;as&#x00ED;&#x20;ha&#x20;reaccionado&#x20;el&#x20;creador&#x20;del&#x20;Administrador&#x20;de&#x20;Tareas&#x20;">
    </p>
    <p>Hace <a class="text-outboundlink" href="https://www.genbeta.com/actualidad/puedes-husmear-codigo-ms-dos-4-0-microsoft-ha-liberado-unica-version-multitarea-este" data-vars-post-title="Microsoft acaba de hacer algo inusual (la última vez fue hace 10 años): liberar el código fuente de una versión de MS-DOS, la 4.0" data-vars-post-url="https://www.genbeta.com/actualidad/puedes-husmear-codigo-ms-dos-4-0-microsoft-ha-liberado-unica-version-multitarea-este">menos de un mes</a>, <strong>Microsoft liberó el código fuente (y la documentación oficial) de MS-DOS 4.0</strong>, una década después de haber liberado el de MS-DOS 2.0. Este sistema operativo, uno de los más relevantes del sector tecnológico durante los 80 y 90, deriva del QDOS adquirido por Microsoft en 1980 por 75.000 dólares.</p>
<!-- BREAK 1 --><p>Ahora, como software libre bajo la licencia MIT, <strong>cualquiera puede usar, modificar y distribuir esta versión de MS-DOS</strong>... lo que permitirá a los desarrolladores explorar las raíces de los sistemas operativos modernos, y refuerza el compromiso de Microsoft con la comunidad de código abierto.</p>
<h2>La relevancia de MS-DOS 4.0</h2>
<p>La versión 4.0, ahora liberada como código abierto, es una que, pese a su poco éxito comercial, supuso un intento pionero de Microsoft por introducir capacidades multitarea (podía gestionar varias aplicaciones al mismo tiempo) en un sistema operativo que tradicionalmente había sido monolítico y monotarea.</p>
<!-- BREAK 2 --><div class="article-asset article-asset-normal article-asset-center">
 <div class="desvio-container">
  <div class="desvio">
   <div class="desvio-figure js-desvio-figure">
    <a href="https://www.genbeta.com/sistemas-operativos/siempre-habiamos-oido-que-dos-era-sistema-operativo-monotarea-era-fake-news" class="pivot-outboundlink" data-vars-post-title="Siempre habíamos oído que DOS era un sistema operativo 'monotarea'. Pero era una 'fake news' ">
     <img alt="Siempre&#x20;hab&#x00ED;amos&#x20;o&#x00ED;do&#x20;que&#x20;DOS&#x20;era&#x20;un&#x20;sistema&#x20;operativo&#x20;&#x27;monotarea&#x27;.&#x20;Pero&#x20;era&#x20;una&#x20;&#x27;fake&#x20;news&#x27;&#x20;" width="375" height="142" src="https://i.blogs.es/022027/dos/375_142.webp" onerror='this.src="https://i.blogs.es/022027/dos/375_142.jpeg"'>
    </a>
   </div>
   <div class="desvio-summary">
    <div class="desvio-taxonomy js-desvio-taxonomy">
     <a href="https://www.genbeta.com/sistemas-operativos/siempre-habiamos-oido-que-dos-era-sistema-operativo-monotarea-era-fake-news" class="desvio-taxonomy-anchor pivot-outboundlink" data-vars-post-title="Siempre habíamos oído que DOS era un sistema operativo 'monotarea'. Pero era una 'fake news' ">En Genbeta</a>
    </div>
    <a href="https://www.genbeta.com/sistemas-operativos/siempre-habiamos-oido-que-dos-era-sistema-operativo-monotarea-era-fake-news" class="desvio-title js-desvio-title pivot-outboundlink" data-vars-post-title="Siempre habíamos oído que DOS era un sistema operativo 'monotarea'. Pero era una 'fake news' ">Siempre habíamos oído que DOS era un sistema operativo &#039;monotarea&#039;. Pero era una &#039;fake news&#039; </a>
   </div>
  </div>
 </div>
</div>
<p>Eso significa que, a diferencia de sus predecesores, MS-DOS 4.0 fue diseñado para <strong>permitir que múltiples procesos se ejecutaran simultáneamente</strong>, una característica ciertamente avanzada para su época.</p>
<!-- BREAK 3 --><p>La liberación de MS-DOS 4.0 como código abierto ofrece a los desarrolladores y entusiastas de la tecnología <strong>una oportunidad única para estudiar su arquitectura</strong>: al examinar el código fuente, se pueden apreciar las técnicas y enfoques utilizados por los ingenieros de Microsoft para manejar los recursos del sistema y coordinar múltiples procesos.</p>
<h2>Compilando un sistema operativo</h2><div class="article-asset-video article-asset-normal">
 <div class="asset-content">
  <div class="base-asset-video">
   <iframe width="650" height="366" src="//www.youtube.com/embed/BR6F0EdyulA" allowfullscreen></iframe>
  </div>
 </div>
</div>
<p>Ahora, Dave Plummer (ingeniero de Microsoft ahora retirado, desarrollador original del Administrador de Tareas de Windows) ha protagonizado un vídeo en su canal en el que aprovecha esta liberación del código para <strong>reconstruir el proceso de compilación</strong> del primer sistema operativo desarrollado por Microsoft.</p>
<!-- BREAK 4 --><p>En su vídeo, Plummer describe el proceso detallado de compilación del código fuente de MS-DOS 4.0, empezando por su descarga desde el repositorio de GitHub, y la posterior instalación de un entorno de desarrollo basado en el ensamblador <strong>MASM 2</strong> (Microsoft Macro Assembler) y el compilador <strong>C 5.1</strong>.</p>
<p>Estas herramientas eran las utilizadas en aquella época para compilar MS-DOS, lo que garantiza que <strong>los binarios generados sean lo más fieles posible al original</strong>.</p>
<!-- BREAK 5 --><div class="article-asset article-asset-normal article-asset-center">
 <div class="desvio-container">
  <div class="desvio">
   <div class="desvio-figure js-desvio-figure">
    <a href="https://www.genbeta.com/a-fondo/esta-diferencia-terminal-consola-shell-linea-comandos-despejamos-dudas-habituales-torno-al-modo-texto" class="pivot-outboundlink" data-vars-post-title="Esta es la diferencia entre terminal, consola, shell y línea de comandos. Despejamos dudas habituales en torno al 'modo texto'">
     <img alt="Esta&#x20;es&#x20;la&#x20;diferencia&#x20;entre&#x20;terminal,&#x20;consola,&#x20;shell&#x20;y&#x20;l&#x00ED;nea&#x20;de&#x20;comandos.&#x20;Despejamos&#x20;dudas&#x20;habituales&#x20;en&#x20;torno&#x20;al&#x20;&#x27;modo&#x20;texto&#x27;" width="375" height="142" src="https://i.blogs.es/30fe9b/cli/375_142.webp" onerror='this.src="https://i.blogs.es/30fe9b/cli/375_142.jpg"'>
    </a>
   </div>
   <div class="desvio-summary">
    <div class="desvio-taxonomy js-desvio-taxonomy">
     <a href="https://www.genbeta.com/a-fondo/esta-diferencia-terminal-consola-shell-linea-comandos-despejamos-dudas-habituales-torno-al-modo-texto" class="desvio-taxonomy-anchor pivot-outboundlink" data-vars-post-title="Esta es la diferencia entre terminal, consola, shell y línea de comandos. Despejamos dudas habituales en torno al 'modo texto'">En Genbeta</a>
    </div>
    <a href="https://www.genbeta.com/a-fondo/esta-diferencia-terminal-consola-shell-linea-comandos-despejamos-dudas-habituales-torno-al-modo-texto" class="desvio-title js-desvio-title pivot-outboundlink" data-vars-post-title="Esta es la diferencia entre terminal, consola, shell y línea de comandos. Despejamos dudas habituales en torno al 'modo texto'">Esta es la diferencia entre terminal, consola, shell y línea de comandos. Despejamos dudas habituales en torno al &#039;modo texto&#039;</a>
   </div>
  </div>
 </div>
</div>
<p>Para recrear dicho entorno de desarrollo original, Plummer utiliza una máquina moderna, pero <a class="text-outboundlink" href="https://www.genbeta.com/windows/asi-puedes-ejecutar-exito-tu-windows-10-programas-antiguos-windows-ms-dos" data-vars-post-title="Así puedes ejecutar con éxito en tu Windows 10 programas antiguos de Windows y MS-DOS" data-vars-post-url="https://www.genbeta.com/windows/asi-puedes-ejecutar-exito-tu-windows-10-programas-antiguos-windows-ms-dos">recurre a DOSBox</a>, un emulador que permite ejecutar software antiguo de DOS en sistemas operativos actuales.</p>
<!-- BREAK 6 --><p>Plummer menciona que, en su momento, el proceso de compilación podía tardar hasta dos horas en una máquina 386; sin embargo, en su moderno Mac Pro, aunque limitado por la emulación de un solo hilo de DOSBox, <strong>el tiempo dedicado a compilar se reduce a unos cinco minutos</strong>.</p>
<p>Una vez compilado el código, <strong>el siguiente paso es crear una imagen de disco que pueda ser utilizada para arrancar</strong> una máquina real. Plummer utiliza un dispositivo USB llamado 'Grease Weasel' para escribir la imagen de disco en un disquete de 5 1/4 pulgadas, el medio de almacenamiento común en la época de MS-DOS.</p>
<!-- BREAK 7 --><p>En su vídeo, Plummer pone a prueba el SO recién compilado en un IBM PC XT original, iniciando el sistema desde el disquete creado y verificando que el código de MS-DOS 4.0 funciona correctamente.</p>
<p>Imagen | Marcos Merino mediante IA</p>
<p>En Genbeta | <a class="text-outboundlink" href="https://www.genbeta.com/sistemas-operativos/freedos-clon-ms-dos-que-preinstalan-pcs-sistema-operativo-lanza-su-nueva-version-1-3-live-cd-incluido" data-vars-post-title="FreeDOS, el clon de MS-DOS que preinstalan en los PCs &quot;sin sistema operativo&quot;, lanza su nueva versión 1.3 (con live-CD incluido)" data-vars-post-url="https://www.genbeta.com/sistemas-operativos/freedos-clon-ms-dos-que-preinstalan-pcs-sistema-operativo-lanza-su-nueva-version-1-3-live-cd-incluido">FreeDOS, el clon de MS-DOS que preinstalan en los PCs "sin sistema operativo", lanza su nueva versión 1.3 (con live-CD incluido)</a></p>
<script>
 (function() {
  window._JS_MODULES = window._JS_MODULES || {};
  var headElement = document.getElementsByTagName('head')[0];
  if (_JS_MODULES.instagram) {
   var instagramScript = document.createElement('script');
   instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js';
   instagramScript.async = true;
   instagramScript.defer = true;
   headElement.appendChild(instagramScript);
  }
 })();
</script>

                    ]]>
                </description>
            </item>
                                <item>
                <title><![CDATA[Cómo empezar a programar con Solidity, el lenguaje preferido para crear los cada vez más demandados 'smart contracts']]></title>
                <link>https://www.genbeta.com/a-fondo/como-empezar-a-programar-solidity-lenguaje-preferido-para-crear-cada-vez-demandados-smart-contracts</link>
                <guid>https://www.genbeta.com/a-fondo/como-empezar-a-programar-solidity-lenguaje-preferido-para-crear-cada-vez-demandados-smart-contracts</guid>
                <pubDate>Sat, 09 Apr 2022 17:27:57 +0000</pubDate>
                                         <dc:creator>Marcos Merino</dc:creator>
                                       <description>
                    <![CDATA[
                              <p>
      <img src="https://i.blogs.es/2f6e68/solidity/1024_2000.jpg" alt="C&#x00F3;mo&#x20;empezar&#x20;a&#x20;programar&#x20;con&#x20;Solidity,&#x20;el&#x20;lenguaje&#x20;preferido&#x20;para&#x20;crear&#x20;los&#x20;cada&#x20;vez&#x20;m&#x00E1;s&#x20;demandados&#x20;&#x27;smart&#x20;contracts&#x27;">
    </p>
    <p><strong>Los 'smart contracts' o 'contratos inteligentes'</strong> fueron un concepto a debate (y un sueño, en el mundo de los negocios) varios años antes de que existiera la tecnología necesaria para respaldarlos. De hecho, el abogado y criptógrafo <strong>Nick Szabo ya los definió en 1998</strong>, una década antes de que Satoshi Nakamoto creara el Bitcoin…</p>
<!-- BREAK 1 -->
<p>…y, con él, <strong>la blockchain que ahora nos permite disponer de estos contratos autoejecutables</strong>, automatizando así relaciones contractuales que no requieren de la intervención de un intermediario de confianza. <strong>Pero, ¿cómo se crean estos contratos?</strong></p>
<!-- BREAK 2 --><!--more--><h2>Programador, te presento a Solidity. Solidity, aquí el programador</h2>

<p>Pues bien: <a rel="noopener, noreferrer" href="https://solidity-es.readthedocs.io/es/latest/">Solidity</a> es <strong>el lenguaje más usado para escribir contratos inteligentes para la cadena de bloques Ethereum</strong>. Es, de hecho, un lenguaje enfocado específicamente a esta tarea, desarrollado desde 2014 por diversos colaboradores del Proyecto Ethereum (su creador, Gavin Wood, es también co-creador de dicha criptodivisa).</p>
<!-- BREAK 3 -->
<p><strong>Solidity fue creado con el objetivo de ejecutarse en la Ethereum Virtual Machine (EVM</strong>) que funciona sobre la blockchain de Ethereum. Sin embargo, la similitud entre esta cadena de bloques, y otras similares (como Polygon o Binance) permite implementar Solidity en otras redes y que su funcionamiento siga siendo predecible.</p>
<!-- BREAK 4 -->
<p>Es un lenguaje de alto nivel y orientado a objetos <strong>cuya sintaxis se basa en ECMAScript</strong> (al igual que JavaScript), con la principal diferencia de implementar <strong>un tipado fuerte</strong> a la hora de declarar el tipo de variables y argumentos. El objetivo de esto es <strong>garantizar el rigor del contrato</strong>: el compilador analizará nuestro código en tiempo de ejecución para verificar que intentamos realizar la operación adecuada con el tipo de valor adecuado.</p>
<!-- BREAK 5 --><div class="article-asset article-asset-normal article-asset-center">
 <div class="desvio-container">
  <div class="desvio">
   <div class="desvio-figure js-desvio-figure">
    <a href="https://www.xataka.com/empresas-y-economia/por-que-los-programadores-amamos-ethereum" class="pivot-outboundlink" target="_blank" data-vars-post-title="Por qué los programadores amamos Ethereum">
     <img alt="Por&#x20;qu&#x00E9;&#x20;los&#x20;programadores&#x20;amamos&#x20;Ethereum" width="375" height="142" src="https://i.blogs.es/f8aedc/programar-ethereum/375_142.webp" onerror='this.src="https://i.blogs.es/f8aedc/programar-ethereum/375_142.jpg"'>
    </a>
   </div>
   <div class="desvio-summary">
    <div class="desvio-taxonomy js-desvio-taxonomy">
     <a href="https://www.xataka.com/empresas-y-economia/por-que-los-programadores-amamos-ethereum" class="desvio-taxonomy-anchor pivot-outboundlink m-crosspost" target="_blank" data-vars-post-title="Por qué los programadores amamos Ethereum">En Xataka</a>
    </div>
    <a href="https://www.xataka.com/empresas-y-economia/por-que-los-programadores-amamos-ethereum" class="desvio-title js-desvio-title pivot-outboundlink" target="_blank" data-vars-post-title="Por qué los programadores amamos Ethereum">Por qué los programadores amamos Ethereum</a>
   </div>
  </div>
 </div>
</div>
<h2>Primer vistazo a Remix IDE</h2>

<p>Para tu primera vez programando en Solidity, usaremos <a rel="noopener, noreferrer" href="https://remix.ethereum.org/">Remix IDE</a>, un entorno de desarrollo basado en navegador desde el que podremos escribir, compilar e implementar 'smart contracts', además de —por ejemplo— almacenar archivos persistentes. <strong>Hemos elegido esta herramienta porque es gratis, sencilla de usar, y no requiere descargas ni registros</strong>.</p>
<!-- BREAK 6 -->
<p>Una vez entremos en la web, el aspecto de Remix IDE será algo bastante parecido a la siguiente imagen:</p>
<div class="article-asset-image article-asset-large article-asset-center">
 <div class="asset-content">
                   <img class="centro_sinmarco" height=720 width=1660 loading="lazy" decoding="async" sizes="100vw" fetchpriority="high" srcset="https://i.blogs.es/71ef16/remix_ide/450_1000.webp 450w, https://i.blogs.es/71ef16/remix_ide/650_1200.webp 681w,https://i.blogs.es/71ef16/remix_ide/1024_2000.webp 1024w, https://i.blogs.es/71ef16/remix_ide/1366_2000.webp 1366w" src="https://i.blogs.es/71ef16/remix_ide/450_1000.webp" alt="Remix Ide" onerror="this.src='https://i.blogs.es/71ef16/remix_ide/450_1000.jpg';this.srcset='https://i.blogs.es/71ef16/remix_ide/450_1000.jpg 450w, https://i.blogs.es/71ef16/remix_ide/650_1200.jpg 681w,https://i.blogs.es/71ef16/remix_ide/1024_2000.jpg 1024w, https://i.blogs.es/71ef16/remix_ide/1366_2000.jpg 1366w';return false;">
   <img alt="Remix Ide" class="centro_sinmarco" src="https://i.blogs.es/71ef16/remix_ide/450_1000.webp">
   
      </div>
</div>
<p>Deberemos <strong>desplegar la carpeta 'contracts' dentro del explorador de archivos</strong> del espacio de trabajo por defecto, y abrir uno de los ficheros .sol. Como están numerados, abriremos el primero, <em>1_Storage.sol</em>, que presentará este aspecto:</p>
<!-- BREAK 7 --><div class="article-asset-image article-asset-large article-asset-center">
 <div class="asset-content">
                   <img class="centro_sinmarco" height=618 width=1037 loading="lazy" decoding="async" sizes="100vw" fetchpriority="high" srcset="https://i.blogs.es/fc6aae/remix1/450_1000.webp 450w, https://i.blogs.es/fc6aae/remix1/650_1200.webp 681w,https://i.blogs.es/fc6aae/remix1/1024_2000.webp 1024w, https://i.blogs.es/fc6aae/remix1/1366_2000.webp 1366w" src="https://i.blogs.es/fc6aae/remix1/450_1000.webp" alt="Remix1" onerror="this.src='https://i.blogs.es/fc6aae/remix1/450_1000.jpg';this.srcset='https://i.blogs.es/fc6aae/remix1/450_1000.jpg 450w, https://i.blogs.es/fc6aae/remix1/650_1200.jpg 681w,https://i.blogs.es/fc6aae/remix1/1024_2000.jpg 1024w, https://i.blogs.es/fc6aae/remix1/1366_2000.jpg 1366w';return false;">
   <img alt="Remix1" class="centro_sinmarco" src="https://i.blogs.es/fc6aae/remix1/450_1000.webp">
   
      </div>
</div>
<p>El código muestra dos elementos principales:</p>

<ul>
<li><p>En primer lugar, el <strong>'pragma', donde especificamos qué versiones de Solidity podrán usarse para compilar</strong> nuestro smart contract, un aspecto muy relevante a tenor de la rápida evolución del lenguaje.</p>
</li>
<li><p>En segundo lugar, <strong>el 'contract', equivalente al concepto de clase ('class')</strong> presente en la mayoría de los lenguajes de programación modernos. Dentro de la clase nos encontramos con dos funciones predefinidas.</p>
</li>
</ul>

<p>Sabiendo eso, ahora podemos crear <strong>nuestro propio fichero desde cero</strong>, y proceder a compilarlo y ejecutarlo. </p>

<h2>Hola, Mundo</h2>

<p>Hacemos clic en el icono de 'New file' (Nuevo archivo), justo encima del árbol de directorios, y creamos <strong>un fichero 'HolaMundo.sol'</strong> en la carpeta 'contracts'.</p>
<!-- BREAK 8 --><div class="article-asset-image article-asset-large article-asset-center">
 <div class="asset-content">
                   <img class="centro_sinmarco" height=441 width=1139 loading="lazy" decoding="async" sizes="100vw" fetchpriority="high" srcset="https://i.blogs.es/f2c246/crear/450_1000.webp 450w, https://i.blogs.es/f2c246/crear/650_1200.webp 681w,https://i.blogs.es/f2c246/crear/1024_2000.webp 1024w, https://i.blogs.es/f2c246/crear/1366_2000.webp 1366w" src="https://i.blogs.es/f2c246/crear/450_1000.webp" alt="Crear" onerror="this.src='https://i.blogs.es/f2c246/crear/450_1000.jpg';this.srcset='https://i.blogs.es/f2c246/crear/450_1000.jpg 450w, https://i.blogs.es/f2c246/crear/650_1200.jpg 681w,https://i.blogs.es/f2c246/crear/1024_2000.jpg 1024w, https://i.blogs.es/f2c246/crear/1366_2000.jpg 1366w';return false;">
   <img alt="Crear" class="centro_sinmarco" src="https://i.blogs.es/f2c246/crear/450_1000.webp">
   
      </div>
</div>
<p>Copiamos el siguiente código:</p>

<blockquote>
  <p>// Mi primer contrato inteligente</p>
  
  <p>pragma solidity >=0.5.0 &lt;0.7.0;</p>
  
  <p>contract HelloWorld {</p>
  
  <p>function get()public pure returns (string memory){</p>

<pre><code>   return 'Hola, parte contratante de la primera parte';
</code></pre>
  
  <p>}</p>
  
  <p>}</p>
</blockquote>

<p>Una vez hecho esto, hacemos clic en el tercer icono de la barra lateral, en el compilador de Solidity, tal como se muestra a continuación y, <strong>asegurándonos de seleccionar una versión compatible del compilador, compilamos</strong> sin tocar ningún otro aspecto de la configuración por defecto:</p>
<!-- BREAK 9 --><div class="article-asset-image article-asset-large article-asset-center">
 <div class="asset-content">
                   <img class="centro_sinmarco" height=512 width=956 loading="lazy" decoding="async" sizes="100vw" fetchpriority="high" srcset="https://i.blogs.es/0f11f4/compilar/450_1000.webp 450w, https://i.blogs.es/0f11f4/compilar/650_1200.webp 681w,https://i.blogs.es/0f11f4/compilar/1024_2000.webp 1024w, https://i.blogs.es/0f11f4/compilar/1366_2000.webp 1366w" src="https://i.blogs.es/0f11f4/compilar/450_1000.webp" alt="Compilar" onerror="this.src='https://i.blogs.es/0f11f4/compilar/450_1000.jpg';this.srcset='https://i.blogs.es/0f11f4/compilar/450_1000.jpg 450w, https://i.blogs.es/0f11f4/compilar/650_1200.jpg 681w,https://i.blogs.es/0f11f4/compilar/1024_2000.jpg 1024w, https://i.blogs.es/0f11f4/compilar/1366_2000.jpg 1366w';return false;">
   <img alt="Compilar" class="centro_sinmarco" src="https://i.blogs.es/0f11f4/compilar/450_1000.webp">
   
      </div>
</div>
<p>Una vez finalizado con éxito este paso, hacemos clic en el siguiente icono de la barra lateral. Pulsamos en el botón <strong>'Deploy'</strong>, y, una vez implementado el smart contract, aparecerá un botón con la leyenda 'Get', correspondiente a la única función de nuestro contrato inteligente. Haciendo clic, <strong>veremos cómo nos devuelve la cadena de texto especificada en el código</strong>:</p>
<!-- BREAK 10 --><div class="article-asset-image article-asset-large article-asset-center">
 <div class="asset-content">
                   <img class="centro_sinmarco" height=743 width=989 loading="lazy" decoding="async" sizes="100vw" fetchpriority="high" srcset="https://i.blogs.es/9cdbf8/desplegar/450_1000.webp 450w, https://i.blogs.es/9cdbf8/desplegar/650_1200.webp 681w,https://i.blogs.es/9cdbf8/desplegar/1024_2000.webp 1024w, https://i.blogs.es/9cdbf8/desplegar/1366_2000.webp 1366w" src="https://i.blogs.es/9cdbf8/desplegar/450_1000.webp" alt="Desplegar" onerror="this.src='https://i.blogs.es/9cdbf8/desplegar/450_1000.jpg';this.srcset='https://i.blogs.es/9cdbf8/desplegar/450_1000.jpg 450w, https://i.blogs.es/9cdbf8/desplegar/650_1200.jpg 681w,https://i.blogs.es/9cdbf8/desplegar/1024_2000.jpg 1024w, https://i.blogs.es/9cdbf8/desplegar/1366_2000.jpg 1366w';return false;">
   <img alt="Desplegar" class="centro_sinmarco" src="https://i.blogs.es/9cdbf8/desplegar/450_1000.webp">
   
      </div>
</div>
<h2>¿Y ahora?</h2>

<p>Ya has creado y ejecutado tu primer contrato inteligente, enhorabuena. Ahora que tienes unas nociones básicas sobre Solidity, <strong>ha llegado el momento de empezar a formarte por tu cuenta</strong> sobre este lenguaje. Te recomendamos algunos recursos online:</p>
<!-- BREAK 11 -->
<ul>
<li>Un vídeocurso de 3:20 h. en español, '<strong>Curso Solidity desde Cero</strong>', disponible en YouTube.</li>
</ul>
<div class="article-asset-video article-asset-large">
 <div class="asset-content">
  <div class="base-asset-video">
   <iframe width="1000" height="563" src="//www.youtube.com/embed/QsQ2Tk0bYEo" allowfullscreen></iframe>
  </div>
 </div>
</div>
<ul>
<li><p>Si te atreves con el inglés, <a rel="noopener, noreferrer" href="https://www.youtube.com/watch?v=ipwxYa-F1uY">este otro vídeo</a> del canal <strong>freeCodeCamp.org</strong> puede ser también de ayuda.</p>
</li>
<li><p>Un curso gratuito, <a rel="noopener, noreferrer" href="https://docs.microsoft.com/es-es/learn/modules/blockchain-learning-solidity/">'Uso de Solidity'</a>, disponible gratuitamente <strong>en español en la plataforma Microsoft Learn</strong>. O, si quieres empezar por el principio, puedes hacer toda la ruta de aprendizaje de <a rel="noopener, noreferrer" href="https://docs.microsoft.com/es-es/learn/paths/ethereum-blockchain-development/">'Introducción al desarrollo de cadenas de bloques'</a>, que incluye el contenido anterior.</p>
</li>
<li><p><strong>La documentación oficial y actualizada de Solidity</strong>, en inglés y <a rel="noopener, noreferrer" href="https://buildmedia.readthedocs.org/media/pdf/solidity/develop/solidity.pdf">en PDF</a>, creada por el proyecto Ethereum.</p>
</li>
</ul>
<script>
 (function() {
  window._JS_MODULES = window._JS_MODULES || {};
  var headElement = document.getElementsByTagName('head')[0];
  if (_JS_MODULES.instagram) {
   var instagramScript = document.createElement('script');
   instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js';
   instagramScript.async = true;
   instagramScript.defer = true;
   headElement.appendChild(instagramScript);
  }
 })();
</script>

                    ]]>
                </description>
            </item>
                                <item>
                <title><![CDATA[Ya está disponible PHP 8.0, con compilador JIT y numerosas novedades en su sintaxis]]></title>
                <link>https://www.genbeta.com/desarrollo/esta-disponible-php-8-0-compilador-jit-numerosas-novedades-su-sintaxis</link>
                <guid>https://www.genbeta.com/desarrollo/esta-disponible-php-8-0-compilador-jit-numerosas-novedades-su-sintaxis</guid>
                <pubDate>Thu, 26 Nov 2020 18:36:34 +0000</pubDate>
                                         <dc:creator>Marcos Merino</dc:creator>
                                       <description>
                    <![CDATA[
                              <p>
      <img src="https://i.blogs.es/f9c932/php_8_0/1024_2000.jpg" alt="Ya&#x20;est&#x00E1;&#x20;disponible&#x20;PHP&#x20;8.0,&#x20;con&#x20;compilador&#x20;JIT&#x20;y&#x20;numerosas&#x20;novedades&#x20;en&#x20;su&#x20;sintaxis">
    </p>
    <p>Pocos meses después de que <strong>PHP</strong> cumpliera 25 años, <strong>acaba de lanzarse su versión 8.0</strong>. PHP sigue siendo el lenguaje de programación más usado en Internet a la hora de generar páginas web dinámicas (<a rel="noopener, noreferrer" href="https://w3techs.com/technologies/details/pl-php">está detrás del 79% de las mismas</a>), pese a la pujanza de tecnologías como Node.js o ASP.NET.</p>
<!-- BREAK 1 -->
<p>La anterior versión de PHP, la 7.4 (que seguirá recibiendo soporte hasta el 6 de diciembre de 2021) aportó notables <strong>mejoras de rendimiento</strong>, un apartado en el que también destacará la 8.0. Pero esta viene acompañada de muchas más novedades:</p>
<!-- BREAK 2 --><!--more--><h2>Compilador JIT</h2>

<p>Sin ninguna duda, la principal novedad de PHP 8 es la introducción del <strong>compilador JIT (<em>Just in Time</em>)</strong>, que permitirá compilar ciertas partes del código sobre la marcha, en tiempo de ejecución.</p>
<!-- BREAK 3 -->
<p>Esta funcionalidad, que estuvo a punto de ser incluida en la versión 7.4, lleva años siendo desarrollada y supone <strong>un gran cambio para el ecosistema PHP</strong>.</p>
<!-- BREAK 4 -->
<p>Cuando actualices tu actual instalación PHP, el compilador JIT <strong>aparecerá deshabilitado por defecto</strong>, pero podrá habilitarse desde el archivo <em>php.ini</em>, permitirá almacenar el código nativo de los archivos PHP en una región adicional de la memoria compartida OPcache.</p>
<!-- BREAK 5 --><div class="article-asset article-asset-normal article-asset-center">
 <div class="desvio-container">
  <div class="desvio">
   <div class="desvio-figure js-desvio-figure">
    <a href="https://www.xataka.com/especiales/16-desarrolladores-nos-cuentan-que-lenguaje-programacion-elegirian-para-empezar-cero-que" class="pivot-outboundlink" target="_blank" data-vars-post-title="17 desarrolladores nos cuentan qué lenguaje de programación elegirían para empezar desde cero y por qué">
     <img alt="17&#x20;desarrolladores&#x20;nos&#x20;cuentan&#x20;qu&#x00E9;&#x20;lenguaje&#x20;de&#x20;programaci&#x00F3;n&#x20;elegir&#x00ED;an&#x20;para&#x20;empezar&#x20;desde&#x20;cero&#x20;y&#x20;por&#x20;qu&#x00E9;" width="375" height="142" src="https://i.blogs.es/016f69/developers/375_142.webp" onerror='this.src="https://i.blogs.es/016f69/developers/375_142.jpg"'>
    </a>
   </div>
   <div class="desvio-summary">
    <div class="desvio-taxonomy js-desvio-taxonomy">
     <a href="https://www.xataka.com/especiales/16-desarrolladores-nos-cuentan-que-lenguaje-programacion-elegirian-para-empezar-cero-que" class="desvio-taxonomy-anchor pivot-outboundlink m-crosspost" target="_blank" data-vars-post-title="17 desarrolladores nos cuentan qué lenguaje de programación elegirían para empezar desde cero y por qué">En Xataka</a>
    </div>
    <a href="https://www.xataka.com/especiales/16-desarrolladores-nos-cuentan-que-lenguaje-programacion-elegirian-para-empezar-cero-que" class="desvio-title js-desvio-title pivot-outboundlink" target="_blank" data-vars-post-title="17 desarrolladores nos cuentan qué lenguaje de programación elegirían para empezar desde cero y por qué">17 desarrolladores nos cuentan qué lenguaje de programación elegirían para empezar desde cero y por qué</a>
   </div>
  </div>
 </div>
</div>
<p>Las pruebas preliminares confirmaron que la activación del compilador JIT permite <strong>multiplicar por cuatro el rendimiento de algunos tipos de tareas</strong>, especialmente aquellas que exigen muchos recursos de la CPU.</p>
<!-- BREAK 6 -->
<p>Lo cierto es que de esto, más que beneficiar a las clases de aplicaciones webs típicamente vinculadas a PHP (como podría ser, por ejemplo, Wordpress), lo que hace es sobre todo abrir <strong>nuevas posibilidades a PHP como lenguaje de programación de uso general</strong>, permitiendo darle uso en campos como el <a class="text-outboundlink" href="https://www.xataka.com/robotica-e-ia/machine-learning-y-deep-learning-como-entender-las-claves-del-presente-y-futuro-de-la-inteligencia-artificial" data-vars-post-title="Machine Learning y Deep Learning: cómo entender las claves del presente y futuro de la inteligencia artificial" data-vars-post-url="https://www.xataka.com/robotica-e-ia/machine-learning-y-deep-learning-como-entender-las-claves-del-presente-y-futuro-de-la-inteligencia-artificial">machine learning</a>.</p>
<!-- BREAK 7 -->
<h2>Otros cambios</h2>

<p>PHP 8 incorpora también diversos cambios a nivel sintáctico, pequeños pero relevantes, como:</p>

<ul>
<li><p>La introducción de <strong>argumentos con nombre</strong>, que nos liberan de hacer coincidir el orden de los parámetros con la lista de parámetros de los métodos usados.</p>
</li>
<li><p><strong>Propagación de propiedades automática</strong>: Actualmente, cuando queremos definir una propiedad en PHP estamos obligados a repetirla hasta en tres ocasiones antes de empezar a usarla. Pero esta nueva característica nos permite reducir significativamente la cantidad de código usada:</p>
</li>
</ul>
<div class="article-asset-image article-asset-normal article-asset-center">
 <div class="asset-content">
     <div class="caption-img ">
                   <img class="centro_sinmarco" height=586 width=1402 loading="lazy" decoding="async" sizes="100vw" fetchpriority="high" srcset="https://i.blogs.es/f49cd8/screenshot_24/450_1000.webp 450w, https://i.blogs.es/f49cd8/screenshot_24/650_1200.webp 681w,https://i.blogs.es/f49cd8/screenshot_24/1024_2000.webp 1024w, https://i.blogs.es/f49cd8/screenshot_24/1366_2000.webp 1366w" src="https://i.blogs.es/f49cd8/screenshot_24/450_1000.webp" alt="Screenshot 24" onerror="this.src='https://i.blogs.es/f49cd8/screenshot_24/450_1000.jpg';this.srcset='https://i.blogs.es/f49cd8/screenshot_24/450_1000.jpg 450w, https://i.blogs.es/f49cd8/screenshot_24/650_1200.jpg 681w,https://i.blogs.es/f49cd8/screenshot_24/1024_2000.jpg 1024w, https://i.blogs.es/f49cd8/screenshot_24/1366_2000.jpg 1366w';return false;">
   <img alt="Screenshot 24" class="centro_sinmarco" src="https://i.blogs.es/f49cd8/screenshot_24/450_1000.webp">
   
        <span>Antes y después.</span>
   </div>
   </div>
</div>
<ul>
<li><p><strong>Soporte para <em>union types</em></strong>: antes de PHP 8, sólo podíamos especificar tipos de unión mediante anotaciones PHPdoc, pero la nueva versión incorporará soporte para los tipos de unión en las firmas de las funciones, ahorrándonos así, de nuevo, bastante código.</p>
</li>
<li><p><strong><em>Match expression</em></strong>: PHP incorpora una nueva expresión de coincidencia similar a switch, pero dotada de una semántica más segura, así como de la capacidad de devolver valores.</p>
</li>
<li><p><strong>Nuevo operador <em>nullsafe</em></strong>: Actualmente, cuando queríamos comprobar en PHP que un <em>getter</em> no devolvía <em>null</em>, estábamos obligados a anidar sucesivos <em>ifs</em>. Pero, a partir de ahora, el primer <em>getter</em> que devuelva <em>null</em> anulará la ejecución de toda la cadena:</p>
</li>
</ul>
<div class="article-asset-image article-asset-normal article-asset-center">
 <div class="asset-content">
     <div class="caption-img ">
                   <img class="centro_sinmarco" height=532 width=1401 loading="lazy" decoding="async" sizes="100vw" fetchpriority="high" srcset="https://i.blogs.es/c41cc6/screenshot_25/450_1000.webp 450w, https://i.blogs.es/c41cc6/screenshot_25/650_1200.webp 681w,https://i.blogs.es/c41cc6/screenshot_25/1024_2000.webp 1024w, https://i.blogs.es/c41cc6/screenshot_25/1366_2000.webp 1366w" src="https://i.blogs.es/c41cc6/screenshot_25/450_1000.webp" alt="Screenshot 25" onerror="this.src='https://i.blogs.es/c41cc6/screenshot_25/450_1000.jpg';this.srcset='https://i.blogs.es/c41cc6/screenshot_25/450_1000.jpg 450w, https://i.blogs.es/c41cc6/screenshot_25/650_1200.jpg 681w,https://i.blogs.es/c41cc6/screenshot_25/1024_2000.jpg 1024w, https://i.blogs.es/c41cc6/screenshot_25/1366_2000.jpg 1366w';return false;">
   <img alt="Screenshot 25" class="centro_sinmarco" src="https://i.blogs.es/c41cc6/screenshot_25/450_1000.webp">
   
        <span>Antes y después.</span>
   </div>
   </div>
</div>
<ul>
<li><strong>Expresión <em>throw</em></strong>: Hasta ahora, en PHP <em>throw</em> era una declaración, por lo que no resultaba posible usarla en lugares donde sólo se permitiese el uso de una expresión. A partir de ahora, sin embargo, se considerará una expresión.</li>
</ul>

<p>Vía | <a rel="noopener, noreferrer" href="https://www.php.net/archive/2020.php#2020-11-26-3">PHP.net</a></p>
<script>
 (function() {
  window._JS_MODULES = window._JS_MODULES || {};
  var headElement = document.getElementsByTagName('head')[0];
  if (_JS_MODULES.instagram) {
   var instagramScript = document.createElement('script');
   instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js';
   instagramScript.async = true;
   instagramScript.defer = true;
   headElement.appendChild(instagramScript);
  }
 })();
</script>

                    ]]>
                </description>
            </item>
                                <item>
                <title><![CDATA[Chrome para Windows ahora tiene algo muy importante en común con las versiones de macOS y Linux]]></title>
                <link>https://www.genbeta.com/navegadores/chrome-para-windows-ahora-tiene-algo-muy-importante-en-comun-con-las-versiones-de-macos-y-linux</link>
                <guid>https://www.genbeta.com/navegadores/chrome-para-windows-ahora-tiene-algo-muy-importante-en-comun-con-las-versiones-de-macos-y-linux</guid>
                <pubDate>Tue, 06 Mar 2018 13:18:26 +0000</pubDate>
                                         <dc:creator>Gabriela González</dc:creator>
                                       <description>
                    <![CDATA[
                              <p>
      <img src="https://i.blogs.es/99d139/chrome-para-windows/1024_2000.jpg" alt="Chrome&#x20;para&#x20;Windows&#x20;ahora&#x20;tiene&#x20;algo&#x20;muy&#x20;importante&#x20;en&#x20;com&#x00FA;n&#x20;con&#x20;las&#x20;versiones&#x20;de&#x20;macOS&#x20;y&#x20;Linux">
    </p>
    <p>Luego de cinco años de trabajo, Google ha logrado construir Chrome para Windows <strong>usando el mismo compilador que usan las versiones para macOS, Linux y Android</strong>, y en el proceso ha hecho que su navegador sea el primer programa importante en utilizar el compilador <a rel="noopener, noreferrer" href="https://clang.llvm.org/">Clang</a> dentro de Windows. </p>
<!-- BREAK 1 -->
<p>Chrome para Windows usaba el compilador Microsoft C++, el más usado y con mejor soporte para el sistema operativo de las ventanas. Clang por su parte, es un <strong>compilador open source ampliamente usado en Linux y la primera elección en macOS</strong>. </p>
<!-- BREAK 2 --><!--more--><p>El compilador es ese software que transforma el código escrito en un lenguaje de programación al lenguaje de la máquina, <strong>es como un traductor entre el código fuente y por ejemplo, un sistema operativo en particular</strong>, y que además optimiza el código. </p>
<!-- BREAK 3 --><div class="article-asset-image article-asset-normal article-asset-center">
 <div class="asset-content">
                   <img class="centro_sinmarco" height=602 width=800 loading="lazy" decoding="async" sizes="100vw" fetchpriority="high" srcset="https://i.blogs.es/e148e0/llvm_logo/450_1000.webp 450w, https://i.blogs.es/e148e0/llvm_logo/650_1200.webp 681w,https://i.blogs.es/e148e0/llvm_logo/1024_2000.webp 1024w, https://i.blogs.es/e148e0/llvm_logo/1366_2000.webp 1366w" src="https://i.blogs.es/e148e0/llvm_logo/450_1000.webp" alt="Llvm Logo" onerror="this.src='https://i.blogs.es/e148e0/llvm_logo/450_1000.png';this.srcset='https://i.blogs.es/e148e0/llvm_logo/450_1000.png 450w, https://i.blogs.es/e148e0/llvm_logo/650_1200.png 681w,https://i.blogs.es/e148e0/llvm_logo/1024_2000.png 1024w, https://i.blogs.es/e148e0/llvm_logo/1366_2000.png 1366w';return false;">
   <img alt="Llvm Logo" class="centro_sinmarco" src="https://i.blogs.es/e148e0/llvm_logo/450_1000.webp">
   
      </div>
</div>
<p>Desde hace mucho tiempo Clang es el compilador de elección de Chrome en Mac y Linux, y en 2013 Google decidió que quería usar Clang en todos lados para <strong>hacer el desarrollo del navegador mucho más fácil</strong>. </p>
<!-- BREAK 4 --><div class="article-asset-summary article-asset-normal"><div class="asset-content"><div class="sumario">Usar el mismo compilador hace que tengas que lidiar con el mismo grupo de bugs en todas las plataformas</div></div></div><p>Esto es importante para Google porque trabajar solo con un compilador para todas las versiones del navegador hace que tengas que lidiar solo con el mismo  grupo de bugs en todas las plataformas. </p>
<!-- BREAK 5 -->
<p>El problema por el que esto tardó en hacerse realidad por casi cinco años es que Clang no tenía casi soporte en Windows, así que Google primero se tomó la tareas de darle soporte de primera al compilador en la plataforma de Microsoft, y <strong>aunque Google levanto la mayoría del peso, Microsoft también puso de su parte para poder completar el trabajo necesario</strong>. </p>
<!-- BREAK 6 -->
<p>Con el lanzamiento de la versión estable de Chrome 64, el navegador hará el cambio oficial a Clang. </p>

<p>Más información | <a rel="noopener, noreferrer" href="http://blog.llvm.org/2018/03/clang-is-now-used-to-build-chrome-for.html">LLVM</a><br />
Vía | <a rel="noopener, noreferrer" href="https://arstechnica.com/gadgets/2018/03/chrome-on-windows-ditches-microsofts-compiler-now-uses-clang/">Ars Technica</a><br />
En Genbeta | <a class="text-outboundlink" href="https://www.genbeta.com/paso-a-paso/como-funciona-y-para-que-sirve-la-recarga-forzada-de-paginas-en-chrome" data-vars-post-title="Cómo funciona y para qué sirve la recarga forzada de páginas en Chrome" data-vars-post-url="https://www.genbeta.com/paso-a-paso/como-funciona-y-para-que-sirve-la-recarga-forzada-de-paginas-en-chrome">Cómo funciona y para qué sirve la recarga forzada de páginas en Chrome</a></p>
<script>
 (function() {
  window._JS_MODULES = window._JS_MODULES || {};
  var headElement = document.getElementsByTagName('head')[0];
  if (_JS_MODULES.instagram) {
   var instagramScript = document.createElement('script');
   instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js';
   instagramScript.async = true;
   instagramScript.defer = true;
   headElement.appendChild(instagramScript);
  }
 })();
</script>

                    ]]>
                </description>
            </item>
                                <item>
                <title><![CDATA[Firefox 58 promete ser aún más rápido que Quantum]]></title>
                <link>https://www.genbeta.com/navegadores/firefox-58-promete-ser-aun-mas-rapido-que-quantum</link>
                <guid>https://www.genbeta.com/navegadores/firefox-58-promete-ser-aun-mas-rapido-que-quantum</guid>
                <pubDate>Thu, 18 Jan 2018 09:53:59 +0000</pubDate>
                                         <dc:creator>Toni Castillo</dc:creator>
                                       <description>
                    <![CDATA[
                              <p>
      <img src="https://i.blogs.es/a9efa9/firefox-quantum-promo/1024_2000.jpg" alt="Firefox&#x20;58&#x20;promete&#x20;ser&#x20;a&#x00FA;n&#x20;m&#x00E1;s&#x20;r&#x00E1;pido&#x20;que&#x20;Quantum">
    </p>
    <p><a class="text-outboundlink" href="https://www.genbeta.com/a-fondo/firefox-quantum-analisis-un-nuevo-navegador-mas-rapido-y-ligero-que-lo-tiene-todo-para-superar-a-chrome" data-vars-post-title="Firefox Quantum, análisis: un nuevo navegador más rápido y ligero que lo tiene todo para superar a Chrome" data-vars-post-url="https://www.genbeta.com/a-fondo/firefox-quantum-analisis-un-nuevo-navegador-mas-rapido-y-ligero-que-lo-tiene-todo-para-superar-a-chrome">Firefox Quantum</a> llegó a nuestros equipos prometiendo más ligereza y más rapidez. Y, en efecto, era la versión más rápida del navegador del zorro de fuego. No tanto respecto a navegadores como Opera y Edge, <a class="text-outboundlink" href="https://www.genbeta.com/a-fondo/firefox-quantum-vs-chrome-vs-opera-vs-edge-cual-es-mas-rapido-y-cual-consume-menos-memoria" data-vars-post-title="Firefox Quantum vs Chrome vs Opera vs Edge: ¿Cuál es más rápido y cuál consume menos memoria?" data-vars-post-url="https://www.genbeta.com/a-fondo/firefox-quantum-vs-chrome-vs-opera-vs-edge-cual-es-mas-rapido-y-cual-consume-menos-memoria">como comprobamos</a>, pero sí batía a Chrome en la cacareada velocidad y en rendimiento. Ahora, tres meses después de su puesta de largo, desde Mozilla <strong>nos prometen que Firefox 58 va a ser todavía más rápido</strong>. Bastante más.</p>
<!-- BREAK 1 -->
<p>WebAssembly, abreviado frecuentemente como wasm, es un nuevo tipo de código binario que se ejecuta en navegadores webs modernos desde hace un tiempo. Mozilla <a rel="noopener, noreferrer" href="https://developer.mozilla.org/en-US/docs/WebAssembly">lo define</a> como un lenguaje binario de bajo nivel con un rendimiento casi nativo. Gracias a él ya es posible ejecutar código más rápidamente y, en el futuro, las aceleraciones continuarán. Una de ellas la incorporará Firefox 58: la capacidad de <strong>compilar código WebAssembly más velozmente de lo que la red es capaz de entregar los paquetes</strong>. <a rel="noopener, noreferrer" href="https://hacks.mozilla.org/2018/01/making-webassembly-even-faster-firefoxs-new-streaming-and-tiering-compiler/">Es la promesa</a>.</p>
<!-- BREAK 2 --><!--more--><h2>Así compilan más rápido de lo que la red entrega los paquetes</h2>

<p>Firefox 58, que vendrá con otras características muy interesantes bajo el brazo, como <a class="text-outboundlink" href="https://www.genbeta.com/navegadores/firefox-toma-prestada-una-gran-funcion-de-tor-browser-para-proteger-tu-privacidad" data-vars-post-title="Firefox toma prestada una gran función de Tor Browser para proteger tu privacidad" data-vars-post-url="https://www.genbeta.com/navegadores/firefox-toma-prestada-una-gran-funcion-de-tor-browser-para-proteger-tu-privacidad">la función que ha tomado prestada de Tor</a>, <strong>compilará en tiempo real</strong>, compilando el código mientras este aún se está descargando.</p>
<!-- BREAK 3 -->
<p><strong>"Esto era solamente una posible aceleración futura"</strong>, comenta la ingeniera <a rel="noopener, noreferrer" href="http://lin-clark.com/">Lin Clark</a>, que ahora "se convierte en realidad".</p>

<p>La nueva versión del navegador de Mozilla también incorporará un nuevo compilador de dos niveles, un nuevo <em>baseline compiler</em> que compila código entre 10 y 15 veces más rápido que el compilador optimizador.</p>
<!-- BREAK 4 --><div class="article-asset-embed-giphy article-asset-normal article-asset-center">
 <div class="article-asset-video">
  <div class="asset-content">
   <div id="_giphy_l0HUpqycogToy5LHy" class="base-asset-video">
     <iframe src="https://giphy.com/embed/l0HUpqycogToy5LHy" style="position:absolute" class="giphy-embed" allowFullScreen></iframe>
   </div>
  </div>
 </div>
</div>
<p>La combinación de estos dos cambios, asegura la responsable del anuncio, "significan que compilamos código más rápido de lo que viene de la red". Según sus cálculos, en escritorio <strong>se compilarán entre 30 y 60 megabytes de código WebAssembly por segundo</strong>. En móvil, "incluso en un dispositivo bastante medio", dicen que pueden compilar a 8 megabytes por segundo, que es una velocidad mayor de la velocidad media de descarga para prácticamente cualquier red móvil.</p>
<!-- BREAK 5 -->
<p>Esto significa, aseguran, que el código se ejecuta casi tan pronto como termina la descarga. Un significativo avance.</p>

<blockquote>
  <p>Si empiezas a compilar el código antes, terminarás de compilarlo antes. Eso es lo que hace la compilación de 'streaming'... permite empezar a compilar el archivo wasm lo antes posible.</p>
  
  <p>Cuando descargas un archivo, no baja de una sola pieza. En su lugar, viene en una serie de paquetes. Antes, como cada paquete en el archivo wasm estaba siendo descargado, la capa de red del navegador lo ponía en un ArrayBuffer. Entonces, una vez hecho esto, movería ese ArrayBuffer al Web VM (también conocido como el motor JS). Ahí es cuando el compilador de WebAssembly comenzaría a compilar.</p>
  
  <p>Pero no existe ninguna buena razón para hacer esperar al compilador. Técnicamente es posible compilar WebAssembly línea por línea. Esto significa que debes ser capaz de comenzar tan pronto como llega el primer fragmento. Eso es lo que hace nuestro nuevo compilador. Aprovecha la API de 'streaming' de WebAssembly.</p>
</blockquote>

<p>Si usamos <strong>Firefox Nightly o Beta</strong>, es posible probar en nuestros propios dispositivos las virtudes con las que llegará Firefox 58. Solamente debemos hacer <a rel="noopener, noreferrer" href="https://lukewagner.github.io/test-tanks-compile-time/">clic aquí</a> y ver los resultados para sacar nuestras propias conclusiones.</p>
<!-- BREAK 6 -->
<p>Imágenes | <a rel="noopener, noreferrer" href="https://hacks.mozilla.org/2018/01/making-webassembly-even-faster-firefoxs-new-streaming-and-tiering-compiler/">Mozilla CC BY-SA 3.0</a></br>
En Genbeta | <a class="text-outboundlink" href="https://www.genbeta.com/navegadores/firefox-quiere-llevar-mas-alla-el-uso-de-https-forzando-a-los-desarrolladores-a-asegurarlo-todo" data-vars-post-title="Firefox quiere llevar más allá el uso de HTTPS forzando a los desarrolladores a asegurarlo todo" data-vars-post-url="https://www.genbeta.com/navegadores/firefox-quiere-llevar-mas-alla-el-uso-de-https-forzando-a-los-desarrolladores-a-asegurarlo-todo">Firefox quiere llevar más allá el uso de HTTPS forzando a los desarrolladores a asegurarlo todo
</a></p>
<script>
 (function() {
  window._JS_MODULES = window._JS_MODULES || {};
  var headElement = document.getElementsByTagName('head')[0];
  if (_JS_MODULES.instagram) {
   var instagramScript = document.createElement('script');
   instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js';
   instagramScript.async = true;
   instagramScript.defer = true;
   headElement.appendChild(instagramScript);
  }
 })();
</script>

                    ]]>
                </description>
            </item>
                                <item>
                <title><![CDATA[EkoPath4 liberado: Linux y sus aplicaciones serán muchísimo más rápidos]]></title>
                <link>https://www.genbeta.com/linux/ekopath4-liberado-linux-y-sus-aplicaciones-seran-muchisimo-mas-rapidos</link>
                <guid>https://www.genbeta.com/linux/ekopath4-liberado-linux-y-sus-aplicaciones-seran-muchisimo-mas-rapidos</guid>
                <pubDate>Tue, 14 Jun 2011 10:10:02 +0000</pubDate>
                                         <dc:creator>Guillermo Julián</dc:creator>
                                       <description>
                    <![CDATA[
                              <p>
      <img src="https://i.blogs.es/fcc082/ekopath/1024_2000.png" alt="EkoPath4&#x20;liberado&#x3A;&#x20;Linux&#x20;y&#x20;sus&#x20;aplicaciones&#x20;ser&#x00E1;n&#x20;much&#x00ED;simo&#x20;m&#x00E1;s&#x20;r&#x00E1;pidos">
    </p>
    <p></p>
<p></p>

<p>Phoronix ya abrió la puerta a las especulaciones publicando unos tests, en los que un producto llamado &#8220;Dirndl&#8221; <strong>doblaba la capacidad de cálculo de Ubuntu 11.04</strong>. Hoy nos han desvelado lo que provoca ese aumento de velocidad: un compilador.</p>
<!-- BREAK 1 -->
<p>Alguno conocerá <strong>EkoPath</strong>, un compilador de alto rendimiento para Intel/<span class="caps">AMD</span> de 64 bits, y que se suele usar en superordenadores. Pues bien, este es el compilador que ha sido liberado bajo una <strong>licencia GPL</strong>. Es decir, que a partir de ahora cualquiera lo puede usar.</p>
<!-- BREAK 2 -->
<p>¿Qué beneficios traerá esto? Bueno, además de tiempos menores de compilación (hasta un 80% menos que <span class="caps">GCC</span>), que eso a los usuarios no nos importa demasiado, las aplicaciones que se compilen con EkoPath4 tendrán un rendimiento muchísimo mejor. Y no creo que sean mejoras de milisegundos, sino <strong>mejoras drásticas de rendimiento</strong>.</p>
<!-- BREAK 3 -->
<p>De momento, el compilador no está disponible. En cuanto esté, seguramente empecemos a ver algún kernel compilado con EkoPath (si tenéis ganas, podríais hacerlo hasta vosotros) y podremos ver los resultados con nuestros propios ojos. Estoy seguro de que <strong>no quedaremos decepcionados</strong>.</p>
<!-- BREAK 4 -->
<p><em>¡Gracias a Jorge y a Hector Macías Ayala por los avisos!</em></p>

<p>Vía | <a rel="noopener, noreferrer" href="http://www.phoronix.com/scan.php?page=article&item=pathscale_ekopath4_open&num=1">Phoronix</a><br />
Más información | <a hreF="http://www.pathscale.com/ekopath4-open-source-announcement">Nota de prensa oficial</a></p>
<script>
 (function() {
  window._JS_MODULES = window._JS_MODULES || {};
  var headElement = document.getElementsByTagName('head')[0];
  if (_JS_MODULES.instagram) {
   var instagramScript = document.createElement('script');
   instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js';
   instagramScript.async = true;
   instagramScript.defer = true;
   headElement.appendChild(instagramScript);
  }
 })();
</script>

                    ]]>
                </description>
            </item>
                                <item>
                <title><![CDATA[Adobe reactivará el desarrollo de su compilador de aplicaciones para el iOS]]></title>
                <link>https://www.genbeta.com/default/adobe-reactivara-el-desarrollo-de-su-compilador-de-aplicaciones-para-el-ios</link>
                <guid>https://www.genbeta.com/default/adobe-reactivara-el-desarrollo-de-su-compilador-de-aplicaciones-para-el-ios</guid>
                <pubDate>Fri, 10 Sep 2010 16:57:44 +0000</pubDate>
                                         <dc:creator>Miguel López</dc:creator>
                                       <description>
                    <![CDATA[
                              <p>
      <img src="https://i.blogs.es/a657f4/adobe/1024_2000.jpg" alt="Adobe&#x20;reactivar&#x00E1;&#x20;el&#x20;desarrollo&#x20;de&#x20;su&#x20;compilador&#x20;de&#x20;aplicaciones&#x20;para&#x20;el&#x20;iOS">
    </p>
    <p></p>
<p></p>

<p>Llegan las primeras consecuencias de la decisión que <a class="text-outboundlink" href="https://www.genbeta.com/actualidad/apple-relaja-las-condiciones-de-su-app-store-y-se-vuelve-mas-transparente" data-vars-post-title="Apple relaja las condiciones de su App Store y se vuelve más transparente" data-vars-post-url="https://www.genbeta.com/actualidad/apple-relaja-las-condiciones-de-su-app-store-y-se-vuelve-mas-transparente">tomó ayer Apple</a> al hacer públicas sus guías de revisión de aplicaciones y eliminar algunas de las barreras para aceptar <em>frameworks</em> de terceros desarrolladores en su tienda. Adobe ha dado un paso adelante y ha anunciado que <strong>retomará el desarrollo</strong> de una de las principales <a class="text-outboundlink" href="https://www.genbeta.com/multimedia/probamos-adobe-flash-cs5-interfaz-mas-sencilla-y-caracteristicas-clave-que-no-se-podran-usar" data-vars-post-title="Probamos Adobe Flash CS5: Interfaz más sencilla y características clave que no se podrán usar" data-vars-post-url="https://www.genbeta.com/multimedia/probamos-adobe-flash-cs5-interfaz-mas-sencilla-y-caracteristicas-clave-que-no-se-podran-usar">novedades que introdujo Flash CS5</a>: la posibilidad de <strong>exportar el contenido creado en forma de aplicación para el iOS</strong>.</p>
<!-- BREAK 1 -->
<p>Los motivos son claros: <strong>Adobe dejó de dedicar tiempo y esfuerzo a esta funcionalidad</strong> en cuanto Apple prohibió usarla con <a class="text-outboundlink" href="https://www.genbeta.com/multimedia/adobe-responde-de-forma-contundente-a-apple" data-vars-post-title="Adobe responde de forma contundente a Apple" data-vars-post-url="https://www.genbeta.com/multimedia/adobe-responde-de-forma-contundente-a-apple">todo el entuerto</a> que <a class="text-outboundlink" href="https://www.genbeta.com/actualidad/steve-jobs-opina-publicamente-acerca-de-flash-adobe-responde-y-microsoft-opina" data-vars-post-title="Steve Jobs opina publicamente acerca de Flash: Adobe responde y Microsoft opina" data-vars-post-url="https://www.genbeta.com/actualidad/steve-jobs-opina-publicamente-acerca-de-flash-adobe-responde-y-microsoft-opina">se armó</a> hace no tanto tiempo. Pero ahora que en Cupertino han decidido aflojar las cuerdas, Adobe ha decidido poner de su parte y seguir mejorando el componente al poder usarse de forma legal.</p>
<!-- BREAK 2 -->
<p>De hecho, parece que Apple está empezando ya a aprobar algunas aplicaciones hechas con el compilador de Flash en la App Store, así que ahora simplemente hay que esperar y ver si éstas están al nivel de las desarrolladas con las herramientas oficiales de Apple. Sea como sea, son buenas noticias.</p>
<!-- BREAK 3 -->
<p>Vía | <a rel="noopener, noreferrer" href="http://www.macrumors.com/2010/09/09/adobe-to-resume-work-on-flash-to-iphone-compiler/">MacRumors</a><br />
Imagen | <a rel="noopener, noreferrer" href="http://www.flickr.com/photos/midiman/193513407/">midiman</a></p>
<script>
 (function() {
  window._JS_MODULES = window._JS_MODULES || {};
  var headElement = document.getElementsByTagName('head')[0];
  if (_JS_MODULES.instagram) {
   var instagramScript = document.createElement('script');
   instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js';
   instagramScript.async = true;
   instagramScript.defer = true;
   headElement.appendChild(instagramScript);
  }
 })();
</script>

                    ]]>
                </description>
            </item>
                                <item>
                <title><![CDATA[Intel, requerido a ofrecer un compilador que no juegue sucio contra AMD]]></title>
                <link>https://www.genbeta.com/actualidad/intel-requerido-a-ofrecer-un-compilador-que-no-juegue-sucio-contra-amd</link>
                <guid>https://www.genbeta.com/actualidad/intel-requerido-a-ofrecer-un-compilador-que-no-juegue-sucio-contra-amd</guid>
                <pubDate>Mon, 04 Jan 2010 22:22:18 +0000</pubDate>
                                         <dc:creator>Alkar</dc:creator>
                                       <description>
                    <![CDATA[
                              <p>
      <img src="https://i.blogs.es/5a97df/cheater-inside/1024_2000.jpg" alt="Intel,&#x20;requerido&#x20;a&#x20;ofrecer&#x20;un&#x20;compilador&#x20;que&#x20;no&#x20;juegue&#x20;sucio&#x20;contra&#x20;AMD">
    </p>
    <p>Muchos programadores consideran que <strong>el compilador de Intel</strong> como el mejor del mercado en cuanto a optimización, por lo que suele ser el utilizado en las aplicaciones más críticas. De hecho, si excluimos GNU GCC, hay pocas alternativas que estén a la altura. Y para algunas aplicaciones matemáticas, técnicas y científicas, las librerías de Intel están tan optimizadas, que a efectos prácticos no hay opción a usar otro compilador.</p>
<!-- BREAK 1 -->
<p>El compilador de Intel, sin embargo, está diseñado específicamente para <strong>generar código no eficiente en procesadores AMD o VIA</strong>. Es capaz de generar múltiples versiones de un código, cada una optimizada para un procesador y juego de instrucciones determinado, e incluye una función (CPU dispatcher) que detecta el procesador sobre el que se ejecuta la aplicación, y así seleccionar la versión del código compilado a utilizar.</p>
<!-- BREAK 2 -->
<p>Sin embargo, si el procesador no es un "GenuineIntel", el compilador utiliza en la mayor parte de los casos la versión más lenta del código, incluso si la CPU es capaz de soportar las versiones más optimizadas del código. Pero <strong>esta táctica de dudosa ética se le va a acabar a Intel</strong>.</p>
<!-- BREAK 3 --><!--more--><p>El pasado mes de Noviembre, Intel y AMD llegaban a un acuerdo extrajudicial para acabar con todas sus disputas por causas anti-monopolísticas. <strong>Intel abonó 1250 millones de dólares a AMD</strong>, para compensar los años en los que se aprovechó de su posición dominante para perjudicar a su competidor.</p>
<!-- BREAK 4 -->
<p>Pero la <strong>FTC</strong> (Federal Trade Commission) también lleva su propia investigación sobre el asunto, ya que hay otras compañías, como VIA, que no están compensadas por ese acuerdo. Así que la FTC ha solicitado a Intel a que <strong>"repare su compilador defectuoso"</strong>:</p>
<!-- BREAK 5 -->
<blockquote>Se requiere que, con respecto a los clientes de Intel que adquirieron de Intel un compilador software que tuvo o tiene el diseño o efecto de afectar al rendimiento real o aparente de microprocesadores no fabricados por Inter ("Compilador Defectuoso"), tal y como se describe en la Demanda:

Intel les proporcionará, sin coste adicional, un compilador sustituto que no sea un Compilador Defectuoso;
Intel compensará el coste de recompilar el software que hayan compilado con el Compilador Defectuoso y de sustituir, y distribuir a sus propios clientes, el software recompilado para el software compilado con un Compilador Defectuoso; e
Intel deberá informar públicamente y avisar, de manera que sean informadas las personas que hayan adquirido software compilado con Compiladores Defectuosos adquiridos a Intel, de la posible necesidad de reemplazar ese software.</blockquote>

<p>Me resulta curioso que la FTC hable tan claro, y llame "defectuoso" al compilador de Intel, que de cumplirse lo requerido por la FTC le tocará soltar más pasta en concepto de indemnizaciones a programadores, empresas y clientes. Recordemos que en mayo de 2009, la Unión Europea ya le había encasquetado una <a class="text-outboundlink" href="https://www.xataka.com/otros/intel-se-lleva-una-multa-de-la-ue-por-monopolio" data-vars-post-title="Intel se lleva una multa de la UE por monopolio" data-vars-post-url="https://www.xataka.com/otros/intel-se-lleva-una-multa-de-la-ue-por-monopolio">multa de 1000 millones de euros a Intel</a> por prácticas monopolísticas.</p>
<!-- BREAK 6 -->
<p>Vía | <a rel="noopener, noreferrer" href="http://www.downloadsquad.com/2010/01/04/intel-forced-to-provide-a-compiler-that-isnt-crippled-for-amd-processors/">Download Squad</a>
Más información | <a rel="noopener, noreferrer" href="http://www.engadget.com/2009/11/12/intel-shells-out-1-25-billion-to-settle-all-amd-litigation/">Engadget</a> (sobre el acuerdo Intel-AMD), <a rel="noopener, noreferrer" href="http://www.osnews.com/story/22683/Intel_Forced_to_Remove_quot_Cripple_AMD_quot_Function_from_Compiler_">OS News</a>, <a rel="noopener, noreferrer" href="http://www.agner.org/optimize/blog/read.php?i=49">Agner Fog</a></p>
<script>
 (function() {
  window._JS_MODULES = window._JS_MODULES || {};
  var headElement = document.getElementsByTagName('head')[0];
  if (_JS_MODULES.instagram) {
   var instagramScript = document.createElement('script');
   instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js';
   instagramScript.async = true;
   instagramScript.defer = true;
   headElement.appendChild(instagramScript);
  }
 })();
</script>

                    ]]>
                </description>
            </item>
            </channel>
</rss>
