Bienvenida arrow Especiales arrow Apple y la incógnita LLVM. ¿Ataque a .NET?
Apple y la incógnita LLVM. ¿Ataque a .NET? PDF Imprimir E-Mail
Peskanov   
Tuesday, 20 de December de 2005
Una introducción a una tecnología de software abierto que rivaliza directamente con .NET de Microsoft, por Luis Pons

Desde hace algunas semanas se oye hablar de un proyecto financiado por Apple que podría tener gran trascendencia en todo el mundo de la informática y que sin embargo esta pasando completamente desapercibido: se trata del compilador LLVM y su posible integración con el importantísimo compilador GCC.

Algunas ideas iniciales

Para explicar que significa esta noticia tendré que explicar un poco algunos términos:

  • Compilador: es un programa que transforma otros programas (escritos en lenguajes de ALTO nivel como C, C++, PASCAL...) a codigo inteligible por un procesador. El programa de alto nivel es transformado en otro de bajo nivel, llamado código máquina que es directamente ejecutable por un procesador, puesto que estos en realidad solo entienden dicho lenguaje.
Cada procesador (o de manera mas precisa, cada arquitectura de procesador) entiende su propio lenguaje máquina. Por esta razón existen compiladores que convierte programas C a programas en código máquina ARM, otros que lo hacen para código máquina PowerPC, x86, etc...

  • GCC (también llamado GNU C): Es el compilador gratuito y de código abierto (licencia GNU) mas extendido y conocido en la actualidad.
Los compiladores siempre han sido programas caros de realizar y mantener, y por lo tanto estaban fuera del alcance de los programadores aficionados o independientes. Por ello la iniciativa de realizar un compilador gratuito (el GCC) que soportaba multitud de procesadores y lenguajes acabo generando una auténtica explosión de programas "hechos en casa".
Posiblemente el hijo mas conocido del compilador GCC es el Linux. Sin GCC el desarrollo de Linux no habría sido tan rápido y exitoso. Gracias a que cualquier persona disponía de un compilador gratuito, el desarrollo de herramientas, drivers, etc creció a una velocidad sorprendente.
Ambos desarrollos (GCC+Linux) se reforzaron mutuamente hasta adquirir un protagonismo en la industria de carácter revolucionario.
Hasta el punto que hoy se puede considerar al GCC como "el compilador estándar" y Linux ha desplazado a casi todos los sistemas operativos comerciales que existían en el mercado de los servidores.
Apple abrazó GCC como compilador oficial al comenzar el desarrollo de MacOSX.

  • Optimización del código. Los compiladores mas prestigiosos (y caros) son aquellos que crean un código máquina mas eficiente que sus competidores. Optimizar es el termino general que se usa cuando se habla de conseguir que el código máquina resultante sea mas rápido que antes.
Antes del auge del GNU C casi todos los compiladores competentes en el área de la optimización eran de pago. Hoy en día los compiladores comerciales que se apoyan en la optimización como argumento de venta suelen estar muy especializados. Por ejemplo, ARM vende el suyo exclusivamente para sus procesadores, IBM hace lo mismo con su XL para PPC, Intel también, etc...

  • .NET. El conocido software de Microsoft es un paquete compuesto por programas, librerías y un compilador de avanzadas prestaciones. Hablaremos del compilador que es la parte que tiene relación con el caso.

El compilador de .NET es especial en el sentido de que el código máquina que genera no es el de ningún procesador existente. Ninguna CPU podría ejecutar dicho programas, de ahí viene la expresión de que .NET compila para una máquina virtual. Es necesaria una segunda compilación (mucho mas sencilla) que transforme ese código de máquina virtual en el código máquina real.

Esta segunda compilación normalmente se realiza "al vuelo" en el momento en que queremos ejecutar un programa .NET. Algo muy similar a lo que ocurre con los programas Java que también viene compilados en un código de máquina virtual llamada JVM.

Para que sirve este código intermedio? Pues el código máquina virtual sirve de "lingua franca", de manera que ordenadores con diferentes procesadores pueden usar pequeños compiladores que traduzcan los programas .NET a su procesador nativo. Es el sueño de "escribe el programa una sola vez y ejecútalo en todas las máquinas" que prometía Sun con su Java.

Al igual que Sun, Microsoft tampoco ha tenido demasiado éxito con la excepción de determinados mercados en los que compite directamente con Java. Los programas .NET solo se ejecutan en PCs comunes y en un numero bastante reducido de PDAs y móviles.
La máquina virtual presenta también una ventaja: cada ordenador puede optimizar el código para su propio procesador, en lugar de confiar en el compilador que ha usado el programador (que era el caso hasta ahora).

Con esta introducción ya podemos entender un poco que es el LLVM y porque podría tener tanto impacto en la industria de la informática gracias al respaldo de Apple.

Sobre el LLVM

El LLVM (Low Level Virtual Machine) es un compilador-optimizador open source muy avanzado capaz de compilar programas en varios lenguajes (como C y C++) a un código máquina existente o a uno virtual propio.

Destacan dos propiedades:

  • La máquina virtual, que permitiría correr los programas compilados en cualquier procesador mínimamente moderno y que ya ha sido probado en x86, Sparc, y PowerPC.

  • La avanzada tecnología de optimización. A diferencia de los compiladores comunes, un programa generado por LLVM se optimiza él mismo cada vez que es ejecutado.

Supongamos que tenemos un programa de edición 3D compilado con LLVM en el que podemos usar polígonos de 3 o 4 aristas, y nosotros (como usuarios) siempre estamos usando las variantes de 3 aristas (los triángulos). LLVM incluye rutinas en el programa compilado que sacan estadísticas del uso que le estamos dando; esto significa que el editor 3D crearía una pequeña base de datos sobre su propio uso, y al notar que usamos mas las rutinas de triángulos que las de cuadrados se centraría en optimizar las primeras a expensas de las segundas.

Estas estadísticas y reajustes se producen cada vez que ejecutamos el programa, de manera que si un día empezamos a usar cuadrados el programa se volverá a optimizar para adecuarse al nuevo uso!

La tecnología no solo es buena sino que empieza a estar madura, y en muchos benchmarks LLVM supera rutinariamente a sus rivales de forma considerable.

Aquí es donde entra Apple; interesada por el LLVM, Apple ha contratado a su principal programador y ha comenzado a presionar al comité del GNU C para que integre este compilador alternativo. Teniendo en cuenta el alcance del GCC, la integración del LLVM podría llevar de cabeza a plataformas como .NET o la misma JVM (Java Virtual Machine).

Hasta ahora las únicas máquinas virtuales con algo de resonancia eran comerciales, como JVM, .NET o TAO. Si Apple se sale con la suya todo el escenario podría cambiar, y lo mejor de todo es que seria con un estandar abierto y eficiente.

Estemos atentos al futuro del LLVM, y ojalá Apple triunfe donde otros están fracasando.

Luis Pons Alemán, 20/12/05.

Página oficial del LLVM:
http://llvm.cs.uiuc.edu/

Puedes discutir este artículo en los foros

Tags:
View blog reactions

 
< Anterior   Siguiente >

Colabora con Macuarium

  • Compra en nuestra apple store

    Apple Store

    Comprando desde nuestra Apple Store particular ayudas a mantener Macuarium.
    Ir a la tienda...
  • tarjeta macuarium

    Tarjeta Macuarium

    El principal medio que existe para colaborar en el mantenimiento de Macuarium.com
    Consiguela Ahora...
  • Vistete con macu

    Camisetas Macuarium

    Vistete a la moda, con nuestra selección de ropa y complementos de macuarium.
    Ir al probador...

Apadrina un servidor

Cantidad:
$