Desarrollado por Microsoft, C# se ha convertido en uno de los lenguajes de programación más utilizados en todo el mundo, y desde su estandarización por ECMA en 2006 y la apertura de la plataforma .NET a código abierto, ha ganado un impulso mayor que lo coloca como una de las mejores opciones para cualquier programador.
Para programar con C# en Windows podemos encontrar Visual Studio, el IDE de C# por excelencia, desarrollado por Microsoft y equipado con todo lo necesario para crear nuestros programas, sin embargo, las versiones más completas de este software (Que incluyen el entorno de desarrollo para C#) sólo estan disponibles en Windows. ¿Quiere decir esto que sólo puedes programar en C# usando Windows? En absoluto, ya que gracias a la fundación GNOME podemos encontrar Mono, un proyecto abierto basado en la arquitectura .NET de Microsoft y multiplataforma que trae este marco de trabajo a las distribuciones GNU/Linux.
¿Quieres saber como instalar Mono en Linux para programar con C#? Te lo muestro a continuación
Como programar con C# en Linux
Como ya mencioné, para programar con C# y .NET Framework en Linux necesitaremos de Mono, el proyecto que implementa esta plataforma en GNU/Linux, y además, necesitaremos de un IDE, en este caso, MonoDevelop, el entorno de desarrollo oficial del proyecto. Su instalación es muy sencilla y puedes realizarla desde la mayoría de las distribuciones Linux.
Instalación de Mono y Monodevelop en Linux
Mono
Instalar Mono en tu distribución es algo muy sencillo que puedes realizar introduciendo los comandos correspondientes a tu distribución en la terminal:
Debian, Ubuntu y derivados:
sudo apt install mono-complete
Este comando instalará la última versión disponible en repositorios de Mono, lo que no necesariamente quiere decir que es la última versión del programa, de hecho, al momento de escribir esto, la versión disponible en los repositorios de Ubuntu es la 4.2.1, mientras que la versión más reciente de Mono es la 4.6.2.
Lo anterior puede afectarte o no, dependiendo de tu perfil, como un estudiante o alguien que comienza con .NET no deberías notar ningun problema, sin embargo, si buscas características especificas sólo disponibles en los paquetes más recientes de Mono, puedes agregar los repositorios de Xamarin escribiendo:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list
sudo apt-get update
Para después utilizar el comando:
sudo apt install mono-complete
CentOS y Fedora:
yum install yum-utils
rpm --import "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF"
yum-config-manager --add-repo http://download.mono-project.com/repo/centos/
yum install mono-complete
openSUSE y SUSE:
Puedes instalar Mono en estas distribuciones por medio de los archivos que provee la web oficial del proyecto.
Más información en Mono-project.com.
MonoDevelop
Instalar Mono no basta para comenzar a programar con .NET en Linux, para esto necesitaremos de MonoDevelop, instalandolo en nuestra distribución con el comando correspondiente:
Debian, Ubuntu y derivados:
sudo apt install monodevelop
CentOS y Fedora
yum install monodevelop
OpenSUSE y SUSE
Puedes encontrar los enlaces de descargar para OpenSUSE y SUSE desde el sitio oficial de MonoDevelop.
De igual manera que con Mono, puede que los paquetes disponibles en repositorios no sean los más actualizados, por lo que en el sitio oficial de Monodevelop puedes encontrar el código fuente de la aplicación, así como paquetes para cada distribución Linux, y un Flatpak universal.
Una vez instalado Monodevelop en tu sistema, ya podrás comenzar a crear aplicaciones con C#.
Omnisharp
Paralelamente a Mono, existe Omnisharp, un conjunto de proyectos Open Sorce destinado a llevar .NET Framework e Intellisense a cualquier Sistema Operativo, incluido Linux.
Omnisharp funciona con una buena cantidad de editores de texto, incluyendo Atom, Sublime Text, Brackets y Visual Studio Code. El proceso de instalación no podría ser más sencillo, aunque al ser especifico de cada editor de texto, creo que es mejor que lo revises en el sitio web oficial, haciendo click en el logotipo del editor de tu preferencia.
Puedes consultar el código y contribuir desde el perfil de Omnisharp en Github.
Diferencias entre .NET Framework y Mono
Pese a que Mono y Monodevelop nos permiten implementar .NET Framework en Linux, y aunque se han hecho muchos esfuerzos y aportes que han puesto a Mono a la altura de .NET en la mayoría de los aspectos, no son equivalentes en otros, te lo cuento a continuación.
Para empezar, el desarrollo de Mono comenzó cuando .NET Framework era una plataforma totalmente cerrada, con sólo los documentos que especifican su arquitectura para poder trabajar. De esta forma, Mono siempre fue algo por detras de .NET Framework de Microsoft. Al pasar el tiempo Mono ganó el apoyo de Microsoft, y más recientemente, una gran parte de .NET Framework pasó a ser código abierto, lo que ha beneficiado al proyecto Mono y lo ha convertido en la mejor alternativa para programar con .NET en multiplataforma.
Ahora bien, eso no quita que existan diferencias importantes entre ambos proyectos. Como ya mencioné, parte de .NET Framework pasó a ser código abierto, sin embargo, la mayoría de los componentes que se mantuvieron cerrados son los relativos a las Interfaces Gráficas, es decir, aunque las aplicaciones orientadas a servidores son 100% compatibles entre plataformas, aquellas para escritorio que requieran de una interfaz gráfica, es complicado que tengan tan buenos resultados como podrían tenerlo en Windows con Visual Studio.
Además de eso, como explica uno de los desarrolladores de Mono en Reddit, existen pequeñas diferencias entre ambos al momento de programar relativas al Sistema Operativo que deben ser consideradas para evitar errores en nuestros proyectos multiplataforma:
- Linux distingue mayusculas y minusculas, Windows no, por lo que al trabajar con archivos INI o XML, deberás asegurarte que los nombres de estos son correctos en la versión de Linux.
- La estructura de los directorios son diferentes, mientras Windows asigna letras a cada unidad (C:, D:, Etc.), el arbol de directorios de Linux no, deberás programar teniendo esto en cuenta.
- Los entornos de seguridad son diferentes en Windows y Linux, y pueden impactar en la aplicación final.
- Algunas configuraciones de XML necesitan ser probadas en ambas plataformas para asegurar compatibilidad.
- Es recomendable realizar pruebas de cada función para comprobar que funcione correctamente.
Conclusión
Desde su aparición C# se convirtió rápidamente en un lenguaje muy popular y en el protagonista del framework .NET, además, la presencia de Mono y la reciente liberación de gran parte del código de .NET han terminado por impulsar su popularidad y convertirlo en el 4to lenguaje de programación más popular según la firma especializada TIOBE.
Por tal razón C# se ha convertido en un lenguaje totalmente viable en Linux, contando con IDE y herramientas para poder trabajar productivamente con este sin requerir de Visual Studio; sin embargo, a pesar de su cresciente presencia, es importante no olvidar que siguen existiendo diferencias entre su uso en Linux y Windows, siendo la mayor de todas las limitadas herramientas para crear interfaces gráficas disponibles en Linux.
En resumen, C# y .NET Framework multiplataforma son una realidad, con algunos matices, pero no dejan de ser grandes opciones para programar en la actualidad, especialmente para servidores.
Products from Amazon.com.mx
- Programación en C#. Piensa en C# Price: Check on Amazon
- -20% C# 6.0 in a Nutshell Price: MXN 989.63 Was: MXN 1.237.04
- Starting Out with Visual C# 2012, Global Edition Price: Check on Amazon
- C# 2010 for Programmers (Deitel Developer Series) Price: Check on Amazon
- -47% Microsoft Visual C# Step by Step Price: MXN 592.12 Was: MXN 1.119.77
- Creating Mobile Apps with Xamarin.Forms Preview Edition 2 (Developer Reference) Price: Check on Amazon