En este post vamos a hablar sobre una de las desinformaciones que circulan por internet.
Hoy vamos a ver si se puede programar C# en Mac, y cuál es mi opinión y experiencia después de haber estado utilizando un Mac como mi equipo principal por varios meses.
Índice
1 - Está .NET soportado en Mac?
Primero de todo vamos a hablar sobre si podemos instalar o no .net en nuestra máquina, e igual que vimos en el post sobre programar .NET en Linux, Si, programar en Mac es totalmente posible, siempre y cuando no trabajes en .NET Framework. Desde la llegada de .NET Core podemos ejecutar código C# y F# en Mac.
No me voy a enrollar mas en el tema, si quieres instalar .NET en mac, en la pagina oficial de microsoft tienes el instalador.
Y ni que decir tiene que el resto de aplicaciones que normalmente utilizamos para programar, como docker, git, etc, funcionan sin problemas.
1.1 - Apple silicon vs Intel
Un punto que quiero destacar es la diferencia que tenemos entre los procesadores Apple silicon tanto los M1 como los M2 y los procesadores intel.
La gran mayoría de librerías de C# han sido programadas en ordenadores con Windows, o macs con versiones anteriores a 2021, lo cual quiere decir que llevan procesadores x64 (o x86) ya bien sean de Intel o AMD. En el caso, lo importante aquí es tener en cuenta que son diferentes arquitecturas y que algunas librerías puede ser que no tengan soporte para Apple silicon. Hoy en día en 2023, ya no es tan común, pero personalmente tuve este problema con un par de librerías cuando trabajaba en ruby.
2 - Desarrollar aplicaciones C# en Mac
En este punto podríamos incluir F#, pero personalmente no trabajo con él, y como ya sabéis yo hablo solo desde lo que he experimentado, así que en mi caso C#.
Decir que de primeras no he tenido ningún problema, ni con la CLI ni corriendo el IDE, de hecho, no solo eso, todo el contenido de mi canal de youtube de los últimos dos meses ha sido creado en el mac. Tanto el código, como la grabación o la edición de video.
En este post no voy a ponerme a explicar como crear una aplicación con mac, porque como digo es igual que en windows y para eso hay otros cursos. Lo que si que voy a hacer es hablar de los diferentes IDEs que tenemos en mac para programar con .NET.
2.1 - Visual Studio en mac
Primero de todo, veamos de la versión oficial de visual studio para mac de microsoft.
La verdad es que funciona, pero es feo de narices, y si, que tampoco es super importante que sea bonito o no, pero que tenga un mínimo de calidad, en verdad no entiendo cómo alguien puede programar aquí, pero bueno.
Luego, le faltan muchas funcionalidades que si tiene Visual Studio para windows. Ya no quiero hablar de los plugins, porque no hay ninguno, ni siquiera Copilot, que Microsoft le ha dado mucha caña.
Pero es que hay otras cosas más básicas que tampoco están. Por ejemplo cuando ejecutas un test, y pasa o falla, en visual studio en windows tenemos un tick verde o una X roja junto al test, en VS para mac no tenemos nada, únicamente si abrimos la -también muy fea- pestaña de los tests.
Otro detalle, no muy importante pero que está ahí, como puedes observar todos proyectos tienen el mismo icono, y es que no es capaz de diferenciar cada tipo. Por ejemplo, no da opción a correr los tests haciendo botón secundario del ratón en el proyecto de tests.
Que cada uno haga lo que quiera luego, pero yo no recomiendo programar en visual studio para mac ni un minuto.
2.2 - Programar C# con Visual Studio Code para mac
Desde que empecé a trabajar con el Mac como mi portátil del día a día hasta ahora, únicamente han pasado dos meses. y en estos dos meses han pasado cositas en visual studio code. (Tanto para mac como para windows);
Hace dos meses hubiera dicho que imposible hacer nada con visual studio code, y no es que fuera imposible, pero era un poco amargura, las cosas como son. Hoy en día, todo es muy diferente, me explico.
Hasta ahora teníamos una extensión de C# de microsoft:
Y con esta extensión podemos simplemente abrir un proyecto como si fuera una carpeta y trabajar en él.
Esta extensión nos da Intellisense (autocompletado y sugestiones), permite ejecutar tests, etc, no es tan completo como visual studio, porque tienes que tirar mucho de la CLI para tareas como correr la build, pero funciona.
Lo que ha pasado recientemente (Junio 2023) es que tenemos otra extensión: C# dev kit, la verdad podría hacer un post hablando únicamente de esta extension.
- Nota: Se nos instala también intellicode, el cual podemos eliminar manualmente, pero esta bueno tenerlo.
Y con esta extensión, visual studio code puede abrir el proyecto como un proyecto de .NET dentro del propio IDE, y visual studio nos lo estructura como si fuera el IDE, con los proyectos.
Y aquí tenemos control total con el botón secundario, eso quiere decir que lo entiende como un proyecto, podemos hacer build, clean, añadir proyectos, etc
Sigue teniendo cosillas que faltan, como por ejemplo lo que he mencionado de detectar que tipo de proyecto es cuando haces botón secundario (para correr todos los tests), pero trae un test explorer que está bastante bien, y ahora sí nos marca en el propio IDE que el test ha pasado:
La versión actual es una preview, y que para cuando saquen la versión 1.0 oficial, estoy convencido de que será mucho mejor que visual studio para mac. De hecho, para mí, ya lo es, y con lo que he probado, estoy muy contento, la verdad.
Como nota final, C# dev kit, tiene la misma licencia que Visual Studio, así que si eres estudiante, profesor o haces open source no necesitas pagar, pero si eres parte de una empresa y sacar beneficio con el, si.
2.3 - Programar con Rider en mac
Finalmente el último IDE que tenemos disponible para programar c# en mac. Jetbrains Rider, personalmente es mi IDE favorito, y antes de que algún tonto me diga que esto esta patrocinado la realidad es que no, ya quisiera yo.
Llevo años utilizándolo no sólo en los vídeos de youtube sino también en el trabajo y en mi opinión es el único IDE real en mac, en windows podríamos discutir si las nuevas versiones de visual studio pueden competir con Rider, pero en mac no hay discusión.
Es un IDE completo, al que no le falta nada, de hecho es tan completo o más, además es más barato que la versión enterprise de visual studio, por ejemplo la versión pro de visual studio no trae code coverage, asi que para tener todas las funcionalidades de Rider en VS tienes que pagar enterprise.
Pero bueno, tampoco es esto un post para comparar Rider con Visual Studio Code, ya que a día de hoy, siguen a diferentes niveles.
3 - Mi Experiencia utilizando mac como daily driver en C#
Ahora ya entramos en el terreno donde simplemente doy mi opinión. Y voy a decir dos cosas que se van a contradecir una con la otra.
La realidad es la siguiente, me ha encantado trabajar con el mac, cuando salí de la startup me dieron el mac con el que había estado trabajando, un Macbook pro M1 16” de 2021, la verdad es que es una muy buena máquina:
Pero vuelvo a windows, y los motivos son 2: El primero, es que en el trabajo uso windows, y si bien es cierto que no comparto archivos ni nada entre los dispositivos, al final trabajo en remoto y tengo un teclado y un ratón para dos máquinas, el teclado de mac funciona, ligeramente diferente al de windows, por ejemplo el control, o los acentos, lo cual se me hace muy tedioso algunas veces.
Segundo, mi idea es vender este portátil, que como digo, va como un tiro e invertir lo generado en una una torre con un trillón de gigas de ram y un procesador nuevo. Además, sigo teniendo el Razer Blade 2019, que es el portátil que usaba antes del Mac.
Finalmente diré que esta es la segunda vez que tengo un mac, la otra fue de 2011 a 2019 (cuando compré el razer) y aquel lo vendí por 500€, al final son máquinas muy buenas y que duran mucho.
Podría enrollarme más para hablar de lo que me ha gustado más y menos del Mac, por ejemplo MacOS sigue siendo basura y la batería del Mac es alucinante, a mi me dura más de 8 horas con Rider y docker funcionado. Pero este post no va de eso, y creo que os hagáis una idea de lo que es trabajar en mac con todo lo que he mencionado.
Así que si, se puede programar, y muy bien, aplicaciones C# en un Mac.