Ir al contenido principal

Webassembly: Hola, mundo en Python (con Pyodide)

Continuamos, después de un tiempo considerable, a hablar de Webassembly. Esta vez como lenguaje base usaremos Python.

Como herramienta extra usaremos Pyodide, una distribución de CPython compilada a WebAssembly (WASM) que permite ejecutar código Python directamente en el navegador web o en Node.js. No es necesaria su instalación, aunque existe la posibilidad de hacerlo.

Pyodide nos permite:

  • Ejecutar Python en el navegador sin instalación. 
  • Usar librerías científicas y de análisis de datos. 
  • Integrar Python con JavaScript y el DOM. 
  • Crear notebooks y aplicaciones web interactivas.

Programando en Python (y Pyodide)

Hagamos algunos ejercicios para comprobar el funcionamiento de esta herramienta.

Ejemplo 1. Escribir el clásico "Hola, mundo" en Python y Pyodide.

holamundo.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Hola Mundo con Pyodide</title>
    <script src="https://cdn.jsdelivr.net/pyodide/v0.24.1/full/pyodide.js"></script>
  </head>
  <body>
    <h1>Ejemplo Pyodide</h1>
    <pre id="output"></pre>

    <script>
      async function main() {
        let pyodide = await loadPyodide();

        let result = await pyodide.runPythonAsync(`
print("Este codigo Python se ejecuta desde código Javascript")
        `);

        document.getElementById("output").textContent = "Hola, mundo en Python con WebAssembly!!";
      }
      main();
    </script>
  </body>
</html>

Lo abriremos en el navegador:

Si abrimos la herramienta de desarrollador podemos observar el siguiente mensaje:

Como se puede ver solo bastó con agregar el archivo de pyodide desde la etiqueta de ``src`` de la página HTML.

<script src="https://cdn.jsdelivr.net/pyodide/v0.24.1/full/pyodide.js"></script>

Si tienes problemas con su visualización ejecuta esto:

$ python -m http.server 8000

Abre tu navegador en esta ruta: http://localhost:8000/holamundo.html

Ejemplo 2. Crear un sencillo conversor de grados celsius a grados fahrenheit.

conversor.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Conversor Celsius a Fahrenheit</title>
    <!-- Cargar Pyodide desde el CDN oficial -->
    <script src="https://cdn.jsdelivr.net/pyodide/v0.24.1/full/pyodide.js"></script>
  </head>
  <body>
    <h1>Conversor con Pyodide</h1>
    <label for="celsius">Grados Celsius:</label>
    <input type="number" id="celsius" value="0">
    <button onclick="convertir()">Convertir</button>

    <p id="resultado"></p>

    <script>
      let pyodide;

      async function main() {
        
        pyodide = await loadPyodide();
      }
      main();

      async function convertir() {
       
        let celsius = document.getElementById("celsius").value;

       
        let fahrenheit = await pyodide.runPythonAsync(`
c = ${celsius}
f = (c * 9/5) + 32
f
        `);

       
        document.getElementById("resultado").textContent =
          celsius + " °C = " + fahrenheit + " °F";
      }
    </script>
  </body>
</html>

Ejecutamos de nueva cuenta:

$ python -m http.server 8000

Abrimos el navegador en esta ruta: http://localhost:8000/conversor.html

Si todo va bien, veremos este formulario HTML donde introducimos los grados celsius y su conversión a grados fahrenheit:

Continuaremos con el tema de Webassembly, quizás hagamos un post sobre Webassembly con Go, Rut o hasta Java.

Enlaces:

https://pyodide.org/
https://webassembly.org/




Comentarios

Entradas populares de este blog

Odin language: el lenguaje de programación orientado a datos para un desarrollo de software sensato

En esta serie sobre lenguajes de programación hablamos de Odin , un lenguaje orientado a datos. Un nuevo lenguaje de programación que nos podrá recordar a lenguajes como C++, Python, Golang o hasta Rust. Instalación (Windows): 1 2 3 4 $ git clone https://github.com/odin-lang/Odin $ cd Odin $ git pull $ build.bat release Debemos asegurarnos de crear la variable de entorno: Nombre: ODIN_HOME Valor: C:\Users\HP\Documents\pruebasOdin\Odin Ejemplo 1. Como primer programa tendremos al clásico "Hola, mundo". holamundo.odin package holamundo import " core:fmt " main : : proc ( ) { fmt . println ( " ¡Hola, mundo desde Odin! " ) } Construimos: $ odin build holamundo . odin - file Ejecutamos: $ holamundo .exe Recordar que si usamos Visual Studio Code podemos instalar el plugin de Odin Language: https://marketplace.visualstudio.com/items?itemName=DanielGavin.ols Ejemplo 2. Programa que muestre las variables que pod...

Programación Windows Batch (CMD) parte 3

Crear ciclos para efectuar operaciones tediosas nos ahorrará tiempo para realizar otras tareas. En está ocasión veremos ciclos con FOR . ¿Cuál es la síntaxis de bucle FOR en Windows Batch? Si está dentro de un archivo *.bat : FOR %%variable IN (seq) DO operaciones Si lo ejecutamos en una terminal: FOR %variable IN (seq) DO operaciones Ejemplo 1 . Recorrer una secuencia de números del 0 al 5: recorrer.bat @ echo off FOR %%i in ( 0 1 2 3 4 5 ) DO echo Hola no. %%i pause Nos imprimirá en pantalla: Hola no. 0 Hola no. 1 Hola no. 2 Hola no. 3 Hola no. 4 Hola no. 5 ¿Puedo usar contadores? Si, se pueden usar. Ejemplo 2 . Uso de contadores: contador.bat @ echo off set numeros = 1 2 3 4 5 6 7 8 9 10 set cont = 0 for %%a in ( %numeros% ) do ( echo Hola no. %%a :: Contador set /a cont+ = 1 ) echo Total: %cont% Este código nos imprimirá, además de los mensajes Hola no. 0 ..., el total de valores conta...

z/OS, ¿Qué es? y ¿Cuáles son sus herramientas?

  En este post veremos las herramientas de z/OS de IBM. z/OS es un sistema operativo de mainframe desarrollado por IBM.  Es parte de la serie IBM z Systems (anteriormente conocida como System z), que se utiliza en los sistemas mainframe de IBM. z/OS es uno de los sistemas operativos más utilizados en el mundo empresarial para ejecutar aplicaciones críticas y procesar grandes volúmenes de datos. Características clave de z/OS: Escalabilidad : z/OS es conocido por su capacidad para manejar grandes cargas de trabajo y escalabilidad vertical, lo que permite agregar recursos de hardware para satisfacer las demandas de procesamiento. Confiabilidad y disponibilidad : z/OS está diseñado para ofrecer alta disponibilidad y confiabilidad. Incorpora características como redundancia y recuperación ante fallas para garantizar la continuidad de las operaciones. Seguridad : Proporciona una amplia gama de funciones de seguridad, como autenticación, autorización y auditoría, para proteger los...