Muchos de vosotros veréis este lenguaje como una creación de Microsoft que nada tiene que ver con el Software Libre. Sin embargo, aunque sí es cierto que su creación dependió directamente de la empresa de Redmond y es el lenguaje estrella a día de hoy para desarrollar con la plataforma .NET, el genial Miguel de Icaza supo crear una alternativa libre compatible con esta nueva tecnología.
El nombre de este proyecto es Mono y esta será la herramienta que utilizaremos a lo largo de una serie de entradas en las que os daré las nociones básicas para usar C#.
Preparación e instalación
Para instalar Mono deberemos instalar el paquete del mismo nombre en nuestro sistema, con nuestro gestor de paquetes favorito. Además de Mono utilizaremos MonoDevelop como entorno integrado de desarrollo, para facilitarnos el proceso de compilación y despreocuparnos de los diferentes compiladores para C# en función de la versión. El paquete de MonoDevelop tendrá ese mismo nombre.
Si usáis Ubuntu podréis hacer directamente: sudo apt-get install mono monodevelop y se instalarán sus dependencias.
¡Hola Mundo!
Comenzamos:
Podéis ver el código a continuación:
using System; namespace holaMundo { class MainClass { public static void Main (string[] args) { Console.WriteLine ("¡Hola Mundo!"); } } }
Explicación
Vayamos por partes.
A lo largo de esta serie de entradas iremos profundizando un poco más en Mono y C#.
https://www.youtube.com/embed/z-xGk9c_eOw Guionista y locutor: Manuel Ignacio López Quintero.Fecha de publicación: 31 de diciembre de 2024.
Ver comentarios
Me alegro que empeceis con estas entradas sobre mono.
@jesus: Trabajo a diario con .NET en mi trabajo y en casa siempre me gusta tocar la alternativa libre.
Por cierto, es la mejor forma de compatibilizar desarrollos .NET con equipos Mac OS X y Linux en un centro donde casi todos los sistemas de usuario final son Microsoft.
El framework .NET se liberó, y gracias a ello esta plataforma es tan popular y tiene tanta penetración en el mundo del software. El entorno de desarrollo Visual Studio, se diga lo que se diga, es el mejor y más productivo. Además, podemos desarrollar en otros lenguajes que al final generen código final en .NET, como, por ejemplo, Python (IronPython).
Creo que Mono es una buena opción a la hora de desarrollar todo tipo de aplicaciones, y que además sean multiplataforma.
Me gustaria que alguien pudiera comentar si el C# tiene alguna ventaja real sobre el Java o C++, pues creo que al margen de diferencias minimas las capacidades de los 3 estarían casi al mismo nivel, o el mismo nivel.
Favor de considerar que la capacidad del programador no es relevante
@Felipe R.: Java y C#, se compilan para luego ejecutarse no a nivel de máquina, sino en máquinas virtuales, Java en sus JVM y C# en su respectivo CLR (Mono provee de un CLR). Estos son los encargados de hacer que el código se ejecute a nivel de máquina. Es decir, el código primero se compila y luego se interpreta.
C++ es un lenguaje que se compila y por lo tanto a priori, será mucho más eficaz.
Aparte, C++ tiene un nivel de abstracción menor y aunque soporta orientación a objetos, Java y C# lo hacen de forma más "natural".
Si quieres saber más diferencias comenta y te responderemos.
Gracias, por la respuesta
Entonces, segun mi planteamiento, en que me beneficiaría cambiar a Java (por ejemplo) por C# con mono; es decir, si asumimos que hacen lo mismo.
Si fuera equivalente: Lo que sucede es que sabiendo que Oracle adquirió a Java "a la fuerza", entonces, sería bueno contar con alternativas, y mejor si son libres. Ahora C# mono, será apoyado por alguna institución?, lo digo por el tema de su continuidad y continuo mejoramiento.
Si fuera mejor: Mono entonces es un fork de C# de MS?, que me aseguraría la compatibilidad a futuro?, vuelvo a poner como ejemplo a Java, es para bien o para mal, un estándar bastante extendido.
Son 2 casos que se me ocurren, porque hasta esta el momento y para ser casi justo, no he encontrado algun lenguaje que pueda suplir lo que ha ganado Java o C++ en lo q se refiere a sus características.
En conclusión, agradezco por el artículo y el tiempo, pero creo que los desarrolladores debemos conocer varios lenguajes que al menos tengan un nivel de envergadura similar al "mejor del mercado" para solo efectuar un recambio en caso sea necesario.
Saludos
@Felipe R.: Te comento por partes.
Cambiar a C# desde Java
Lo de "hacen lo mismo" hay que puntualizarlo. Son dos lenguajes que se parecen mucho, son de alto nivel y tratan la mayor parte de los situaciones de orientación a objetos y lo que supone de forma similar. Sin embargo, las tecnologías que se soportan en ellos son verdaderamente diferentes.
Apoyo a Mono
Hasta lo que yo sé, a Mono lo apoya Novell y poco más. Desde este punto de vista Java tiene mucha más fuerza. Tras la compra de Sun por parte de Oracle hay que tener cuidado, pero lo que sí es cierto, es que Mono siempre tendrá detrás los problemas que pueda buscarle Microsoft por patentes o similares.
Fork de MS C#
No a ver, Mono es una plataforma que permite ejecutar código MSIL (el código "máquina" de .NET, como el bytecode de Java). No es un fork sino una implementación de unas especificaciones que Microsoft liberó en su día.
Es decir, Microsoft no ha liberado .NET como tal pero sí que es cierto que desde el comienzo, dotó a la plataforma de una estandarización y una especificación suficiente que permitió a Icaza y compañía la creación de esta tecnología.
Compatibilidad a futuro
Mono es un proyecto muy vivo y conforme salen nuevas versiones de la plataforma .NET en cualquiera de sus vertientes, el proyecto las sigue (aunque con algo de retraso como siempre pasa en estas cosas).
Espero haberte ayudado y si tienes más dudas, no dudes (valga la redundancia) en volver a preguntar.
Imagino que donde se indicar que debemos abrir "Abrimos SharpDevelop" querrá decir "Abrimos MonoDevelop".
Un saludo.
@miguel: sí que tienes razón. SharpDevelop es la herramienta que uso para desarrollar con .NET en entornos Windows y se me cruzan los cables... por cierto, también es libre y es primo-hermano de MonoDevelop.
¿Qué ventajas tiene Mono/C# frente a Python?
Siempre he utilizado Python para hacer mis programas usando PyQT y he tenido buenos resultados.