Siempre que un proyecto de software comienza, se empiezan a tomar decisiones sobre que tecnología debería utilizarse, lo más común es  que se pretenda hacerlo con lo que se conoce o domina.  Diría yo que, para escoger una tecnología depende el proyecto.

Si nos dedicamos a la disciplina del software hay algunos conceptos que nunca debemos olvidar, y son estos:

  • Código compilado Vs Código interpretado

El  código compilado es aquel, que resulta de la conversión de código de un determinado lenguaje de programación a lenguaje máquina, para sistema operativo Windows se genera un archivo con extensión “.exe”.

El código interpretado es aquel que resulta de la lectura de código de un determinado lenguaje de programación a su ejecución. No son programas independientes, necesitan de su interprete para que puedan cumplir su función, un buen ejemplo de esto es Python.

  • Código administrado Vs Código no administrado

El código administrado es aquel que, para su ejecución, tiene que pasar por una capa intermedia (CLR para .Net) antes de que el CPU lo procese, esta le asigna recursos, seguridad y administración de memoria. No tenemos tanta libertad para controlar los recursos de hardware. Ejemplos de esto son: .Net Framework o JRE de Java.

El código no administrado es aquel que para su ejecución, no necesita de intermediarios, puesto que sus instrucciones son completamente entendibles por el CPU. Tenemos amplia libertad para controlar los recursos de hardware. El resultado de la compilación de código escrito en lenguaje C++ es por excelencia lo más nativo que el CPU puede entender, y por lo tanto más eficiente que el código administrado.

No puedo dejar de mencionar que cuando escribimos código C# también podemos combinarlo con código no administrado.

yes managed na managed

Algunas conclusiones:

  • Código administrado
    • Independiente del sistema operativo y del procesador.
    • Proporciona seguridad en el desarrollo, ya que todo se ejecuta bajo un ambiente controlado.
    • Mayor productividad al momento de construir software gracias a las librerías incluidas.
  • Código no administrado
    • Amplio control sobre los recursos de hardware.
    • Performance mucho mayor que el conseguido en aplicaciones administradas.

Aquí expongo algunas ideas que pueden ser útiles al momento de tomar decisiones:

Proyecto Tecnología
Software de uso diario (para oficina) .Net (C#, VB => WinForms, WPF)
Portal web (comida a domicilio) .Net (C#, VB => ASP.NET, MVC)
Múltiples tareas (scripting) Python
GPU y controladores de gráficos C++

¿Que es .Net Native?

.Net Native puede ser definido como un compilador que permite tomar código administrado y producir un binario máquina como si fuese escrito en C++.

Hasta el momento .Net Native trabaja solo para aplicaciones universales de Windows, todo software que resulte de esta compilación tienen las siguientes características:

  • 60% de inicio más rápido.
  • Entre 15% y 20% de ahorro en memoria RAM.
  • No tienen dependencia del .Net Framework para correr.

Para que nuestras aplicaciones puedan ser compiladas con .Net Native, haciendo uso de Visual Studio 2015 tendremos que irnos a las propiedas del proyecto y elegir la opción de compilación correspondiente.

sini

Como podemos notar, con .Net Native conseguimos la funcionalidad y experiencia de desarrollo de código administrado así como el rendimiento de una aplicación escrita con C++.

.Net Native sigue en desarrollo ¿Será que en algún momento el performance de código administrado sea igual que el no administrado?… Yo creo que si, pero falta camino por recorrer.


Sigueme en Twitter @vmorenoz

¿Te gustó este artículo? Únete a Facebook en MicrosoftLand

Deja un comentario