Pues esto pasó con Java. La implementación original del lenguaje es de Sun Microsystems, hoy parte de Oracle. Microsoft creó una máquina virtual (intérprete) de Java, la MSJVM. Como pasó con el HTML, soportaba mal ciertas cosas y añadía extras. Como Microsoft lo pone por defecto aprovechando su monopolio en SO, los desarrolladores escriben código para la MSJVM: evitan lo que no soporta y usan las extensiones.
Pues Sun denunció, y Microsoft se vio obligado a dejarlo. Pero ya que tenían una máquina virtual de un lenguaje, decidieron acabarlo. Aunque ese lenguaje no tiene que ver más con C/C++ que JavaScript o Perl, lo llamaron C# (superponiendo dos "++"). Alredor de C# (y del Visual Basic) desarrollaron un conjunto de bibliotecas.
En C y C++, cuando escribes código raramente podrás simplemente "tirar de API". Eso significa que el programa debe llevar todo el código que necesites. Por ejemplo, para un simple "hola mundo" tendrás que llevar toda la biblioteca
iostream.h. Si quieres que el ejecutable sea más ligero, tendrás que usar bibliotecas de enlace dinámico (dll/so), para que el ejecutable las pida según las necesite. Esto proporciona un arranque rápido y mayor tolerancia a fallos.En cambio, en C# las bibliotecas las lleva el que las ejecuta, y no el ejecutable. Es decir, en vez de cargar código en el instalador (o cabeceras en el tarball) llevas instaladas ya la mayoría de las bibliotecas. Estas bibliotecas componen el .NET Framework.
El problema es que Microsoft puso patentes de por medio. Afortunadamente, publicó las especificaciones, ECMA estandarizó parte y Microsoft quitó las patentes de la parte estandarizada. El problema (de nuevo) es que buena parte del lenguaje no está estandarizado, y sigue con las patentes. Siin embargo, tenemos siempre alternativas libres. Por ejemplo, si System.Windows.Forms (lo que se usa para la interfaz gráfica) tiene partes patentadas, tenemos Gtk# (de los mismos de Gtk+, el de la GUI de Pidgin y Gimp). Y sí, Gtk# también está disponible para GNU/Linux, y viene de serie con Mono (versión libre del .NET).
Y sí, estoy aprendiendo C# y me gusta bastante.


0 comentarios:
Publicar un comentario en la entrada
Nota: solo los miembros de este blog pueden publicar comentarios.