El origen de C#

Microsoft built C# and the CLR runtime after losing a legal battle with Sun over Java. Anders Hejlsberg, who created Delphi, led the effort. The open CLR spec let Miguel de Icaza's Mono project build a free version, which Unity adopted to run games across platforms.
Chapters
Unity saltó a primera página de muchas publicaciones recientemente por modificar las condiciones de su motor para crear videojuegos.
¿No podrían los creadores de videojuegos cambiar a otros motores como Unreal Engine, CryEngine, Godot Engine o cualquier otra cosa terminada en engine?
No es tan fácil. Los motores de videojuegos no son compatibles entre sí y su manejo es muy diferente de uno a otro. Requerirían mucho tiempo de adaptación y uno de los problemas principales para muchos de los programadores es también el lenguaje de programación.
¿Cada motor usa un lenguaje de programación diferente?
Hay un consenso y la mayoría emplean C++, pero por ejemplo Godot emplea un lenguaje propio llamado GDScript, y en Unity, aunque se puede emplear C++, la mayoría de programadores prefiere usar C#.
¿C# no es propiedad de Microsoft? ¿No haría esto que los juegos estuviesen disponibles solo para los productos de Microsoft como Xbox o Windows?
Unity usa la versión de código abierto de la plataforma .NET, por lo tanto puede ejecutar sus juegos en diferentes plataformas. Pero, ¿sabes de dónde viene la plataforma .NET y el lenguaje C#?
Antes de continuar, un inciso. ¿Te gustaría apoyar a nuestro canal? No olvides que puedes suscribirte y activar la campanita para no perderte futuro contenido. También se agradecen me gustas, y además, si nos prefieres en formato podcast, Podemos acompañarte desde Spotify. Ahora sí, continúa.
Vamos a remontarnos a un evento que tuvo lugar en los 90. Una demanda entre Microsoft y Sun Microsystems. Microsoft en los 90 se convirtió en una gran empresa, una de las más grandes, y luchaba por mantener su hegemonía en el desarrollo y venta de software.
¿Y Sun Microsystems eran competidores? Pero, ¿quiénes eran? No me suenan de nada.
Los creadores de Java. Ya comentamos en el vídeo en el que hablamos de WhatsApp y Erlang que Java había logrado su hegemonía en el desarrollo de software de los 90.
¿Java no fue creado por Oracle?
No, su creadora original fue Sun Microsystems y es una historia interesante. La contaremos en un siguiente capítulo. Ahora estábamos en el juicio entre los creadores de Java, Sun Microsystems y Microsoft.
¿Sun copió alguna patente de Microsoft?
No, en verdad fue al contrario. Como decíamos, en los 90 Java se encabezó como lenguaje para el desarrollo de aplicaciones y gran parte de su éxito vino determinada por su ubicuidad. Estaba en todas partes. Sun dejó abierta la especificación para la implementación de una máquina virtual de Java, llamada normalmente JVM, y Microsoft quiso dotar a Windows de una JVM nativa, una MSJVM.
No entiendo. Si Sun dejó abierta la especificación y Microsoft la usó, ¿dónde está el problema?
El problema surgió por los requisitos impuestos en el uso de la especificación que exigía Sun para poder implementar su JVM. Para tener el nombre Java debía ser 100% compatible.
¿La MS JVM no era compatible?
El problema real no es que no fuese compatible en sí, el problema es que cualquier aplicación compilada en Windows solo servía para Windows. Porque Microsoft hacía uso nativo de su infraestructura y no implementó al 100% de lo que proveía JVM. Era más potente para Windows pero sin posibilidad de ser copiado y ejecutado a ningún otro sistema operativo, por lo que consiguió enfadar a Sun por cargarse su eslogan de Write Once, Run Everywhere, escrito una vez, corre en cualquier lugar.
¿Había un entorno de desarrollo para Java en Windows por parte de Microsoft?
Sí, este fue Visual J++ y tenía como principal misión traer a tantos programadores de Java como pudiese para tomar esa parte del mercado, más o menos como hacía con Visual C++ o Visual Basic.
Ya veo por qué Sun los denunció, supongo que ganarían.
Sí, fue un golpe muy duro para Microsoft que tuvo que abandonar el producto Visual J++, pero no completamente. Microsoft no quería dar la guerra por perdida y aunque perdió las primeras batallas, solo había sido el comienzo. Esta vez, en lugar de intentar ganar a Java en su terreno, Microsoft decidió tomar una ruta diferente: crear un lenguaje competidor para Java.
¿El trabajo de Anders Hejlsberg en Visual J++ se tiró completamente a la basura y comenzaron de nuevo?
En parte sí. No podían seguir empleando J++, pero se les ocurrió la idea de implementar una máquina virtual completamente desde cero, con ideas traídas de la compra de una empresa llamada Colusa Software, que había desarrollado una máquina virtual llamada OmniVM y ejecutaba Visual Basic y C y C++, y prometían que podrían ejecutar también Java.
Pero si construían algo diferente con el nombre Java, Sun no se enfadaría de nuevo.
Esta vez no hicieron tal cosa. Implementaron desde cero una máquina virtual llamada Common Language Runtime , algo así como ejecutar un lenguaje común, pero curiosamente su proyección estuvo pensada para ejecutar diferentes lenguajes pensando en C++, Java, Delphi o Smalltalk.
Vale, quisieron hacer una nueva máquina virtual, pero no un nuevo lenguaje. ¿Cómo iban a competir con Java?
Anders Hejlsberg, quien estuvo al cargo anteriormente de Visual J++, estuvo también al cargo del nuevo proyecto.
Anders estuvo anteriormente en Borland, ¿cierto?
Exactamente. Anders es un ingeniero de software danés que escribía programas para su computadora NASCOM II. Programas como un compilador de Pascal.
¡Vaya! Mientras otros hacen el Hola Mundo, Anders se hace un compilador. Imagino que por eso lo contrataron en Borland.
Sí, de hecho su compilador de Pascal sería uno de los productos estrella de Borland convirtiéndose en Turbo Pascal.
Borland, Pascal... ¿No tendrían nada que ver después con Delphi?
Sí, de hecho Anders estuvo en el equipo de dirección del lenguaje Delphi.
Por eso estaba a la cabeza del desarrollo. ¿Hubo entonces nuevo lenguaje?
Por supuesto, aunque James Gosling, el creador de Java, tildó este lenguaje como una imitación de Java. Para no tener problemas y dejar clara su postura de que el origen del lenguaje era C++, Eligieron el nombre Cool. ¿Cool?
¿En serio? Es decir, no es que no sea bueno, es que no parece serio.
Realmente, aunque muchos desarrolladores implicados en el desarrollo filtraron este nombre, Microsoft siempre ha desmentido que se llamase así en algún momento.
¿Y qué nombre le pusieron a la criatura?
Ya sabes que una de las mayores dificultades para los programadores es proporcionar nombres a sus creaciones. Algún día tenemos que hacer algún top con nombres de lenguajes de programación.
Vale, pero centrémonos. ¿El nombre?
Perdón, sí, el nombre era C#, inspirado por la nota musical en notación anglosajona equivalente a do sostenido.
¿Do sostenido? ¿C#? Suena a César pronunciado en inglés.
Sí, es una continuación del juego hecho entre C y C++, ya que el símbolo++ en el lenguaje C significa que incrementa a C. En este caso, C# usa la notación musical donde el sostenido aumenta el tono de C un semitono.
Demasiado rebuscado para mi gusto, pero vale. Entonces ya tenemos C#, y según James Gosling fue una imitación de Java. Que por cierto, Java tiene su mascota, el Duke. ¿C# tiene una?
Pues la tuvo. Parece que inicialmente quisieron hacer un guiño a su creador y le homenajearon con una mascota llamada Andy. Algo extraña pero curiosa. No obstante, decidieron dejar de usarlo en 2004.
Entonces ya no guarda tantas similitudes con Java. ¿En el lenguaje pasa igual?
Sí, en principio tuvo sus similitudes, después se fue diferenciando porque su crecimiento fue muy rápido. Microsoft creó J# para ayudar a los programadores de Visual C++ y Java para hacer una migración sencilla a C#. El lenguaje J# Era una transición simple, compatible con Java y permitía una conversión de código a C#. Aunque estuvo poco tiempo disponible.
¿Tuvo tracción?
Sí, la CLR gustó mucho tanto dentro de Microsoft como a otros programadores y pronto comenzó a extenderse su uso y adopción.
Pero supongo que tan solo dentro de Windows, siendo Microsoft. Los usuarios de sistemas operativos de Apple, GNU/Linux o BSD No podrían beneficiarse de CLR ni del lenguaje C#, ¿no es así?
Ciertamente. No obstante, para eso está el mono.
¿Qué? ¿El mono? ¿Qué mono?
Uno de los problemas de Microsoft en la década de 1990 y 2000 es que rara vez publicaban sus desarrollos para plataformas que no fuesen Windows. Hubo alguna colaboración para proveer Microsoft Office para Apple Pero no mucho más. Aunque siempre ha habido desarrolladores independientes, empresas o grupos de usuarios que se han volcado en proporcionar una solución para plataformas de software libre.
¿Tuvieron que hacer ingeniería inversa para poder proporcionar una versión de CLR para GNU/Linux?
No exactamente. La especificación de CLR fue liberada incluso antes de estar disponible la primera versión de C#. Miguel de Icaza, junto con unos compañeros de Shimian, decidieron crear una implementación libre de CLR llamada Mono. ¡Ah!
Ahí está el mono.
Parece que Miguel tiene fijación por ese tipo de animales, igual que Linus Torvalds lo tiene con los pingüinos. No obstante, Miguel y su empresa comenzaron el desarrollo y llegaron a un punto en el que proporcionaron para otras plataformas una versión compatible de C#.
¿Tuvo entonces buena acogida esta versión de C#?
Esta es la versión que empleó Unity para integrar en su motor de videojuegos, de hecho.
Ya entiendo, pero has dicho antes que la pasión por C# y CLR fue fuerte tanto dentro como fuera de Microsoft. Hemos visto que a través de Mono y Unity el lenguaje llegó fuera, pero ¿qué hicieron en Microsoft con C# y CLR?
Realmente es una historia de terror en sus inicios. ¿Recuerdas Windows Vista? Los programadores toman cada nueva tecnología como un juguete y como niños jugando con su nuevo juguete quieren que este esté presente en todo lo que hacen. Todo. Así que crearon el .NET Framework sobre CLR.
Pero CLR es una buena plataforma. Si antes desarrollaban todo con C++ y este lenguaje era muy complejo y tenía muchas dificultades, quizás no sería tan mala idea emplear en su lugar C#, ¿no?
A cierto nivel no está mal, pero el problema, como decía, es que el programador quiere que su juguete nuevo esté en todo. Eso incluye las partes del sistema operativo no solo a alto nivel, sino también a bajo nivel.
El .NET Framework estaba optimizado, tan malo no sería en base a rendimiento, ¿no?
La crítica destrozó a Windows Vista a su salida por la cantidad de recursos que necesitaba para poder ejecutarse, así como la baja compatibilidad con el hardware. Además, la actualización de software era inestable y problemática, ya que no tenían bien pensado cómo realizar las actualizaciones.
¿No pudieron arreglarlo?
El problema es que había una gran cantidad de código nuevo alrededor de todas las APIs del sistema operativo y miles de desarrolladores creando código. Cada cambio suponía una incompatibilidad con algo creado y la necesidad de propagar las actualizaciones a todas las aplicaciones dependientes.
O sea, entonces todo software en Windows Vista se ejecutaba sobre .NET Framework, ¿no?
No todo. Había una retrocompatibilidad con Windows XP para permitir ejecutar aplicaciones realizadas en plataformas antiguas. Microsoft llamó a su campaña de presentación de Vista el Wow comienza ahora, entendiendo que Windows Vista dejaría sin palabras a quien lo usara.
Bueno, parece que así fue, aunque no de la forma que esperaban. ¿Había mejoras para el usuario que justificara el wow y el cambio desde Windows XP?
En realidad no hubo cambios significativos para el usuario final. El mayor cambio fue interno para emplear la nueva tecnología, por lo que a nivel de características también fue una decepción que hizo aumentar el descontento general.
Aunque las últimas palabras no han sido muy favorables, el impacto de C# y CLR ha sido muy positivo tanto en Windows como en otras plataformas gracias a los esfuerzos de Unity y otros muchos. El lenguaje C# se ha situado como el lenguaje de primera elección para el desarrollo de aplicaciones en entornos de Microsoft Windows y sigue evolucionando a buen ritmo, incrementando el número de programadores que lo usan y disfrutan a lo largo y ancho del mundo.
¿Superó a Java en su competición? Eso lo programaremos para otra historia. Pero antes de que os vayáis, tareas para casa: ¿Habéis usado Windows Vista? ¿Ya sabíais que Unity usa C#? ¿Java o C#? Déjanos tu comentario.
More from Manuel

Historia de los Lenguajes de Programación: años 1960-1969 #basic #apl #simula #lisp #logo

¿Compilador o intérprete? La historia de una rivalidad que comenzó en los años 40








