Por qué odio Windows


Hay quien aún me tacha de radical. Y es cierto que cuando acabé la Universidad lo era en gran medida, pero ha llovido mucho desde entonces.

En estos tiempos que corren es difícil ser radical. Si se quiere avanzar, a veces es necesario trabajar con tecnologías que te desagradan. Todo forma parte del desarrollo.

He estado sin usar Windows durante años y ahora he tenido que volver. Al principio sentía curiosidad por ver cómo había progresado en todos estos años, sobre todo escuchando a amigos pro-windows.

Y éstas son mis conclusiones.

Razones para odiar Windows

Símbolo de escape como separador de directorios

Sin lugar a dudas, la razón más terrible para odiar Windows es el separador de directorios. No me estoy refiriendo a tener que cambiar la tecla a pulsar (aunque también), sino a todo lo que conlleva este pequeño cambio.

Lo primero es que no todos los programas están adecuados para usar la barra invertida en lugar de la barra de dividir. Por ejemplo, git, que te muestra algo en pantalla que no puedes copiar y pegar porque tienes que cambiar las barras de orientación.

Lo segundo y más importante, porque hace el código mucho menos legible y propenso a errores. Fijaos en la tontería:

path_1 = "/foo/bar"
path_2 = "\foo\bar"
path_3 = "\\foo\\bar"

El path_1 muestra una ruta en formato Unix. El path_2 es un error, ya que se está usando el símbolo de escape en lugar del separador de directorios, mostrando oar (\b borrará el caracter anterior y \f no se imprime). Es necesario usar el path_3 para que la ruta funcione como se espera.

Saltos de línea

Y siguiendo con este mismo tema están los saltos de línea. Ciertamente es más lógico dos caracteres (uno para salto de línea y otro para retorno de carro). De hecho, eso es así por motivos históricos (¿alguien recuerda las máquinas de escribir?). Sin embargo, si algo se ha transformado en un estándar de facto... ¿Por qué luchar contra ello? Es más cómodo y eficiente usar sólo el \n.

Símbolo del sistema

Aunque parezca increíble, después de 20 años la única ventana no redimensionable en Windows es el símbolo del sistema o terminal. Puedes cambiarle las dimensiones si buscas entre los menús, pero el botón de maximizar no funcionará como te esperas.

Además, está el odioso sistema para copiar texto de la terminal, ya que tienes que pulsar el botón derecho, seleccionar "marcar", marcar y volver a pulsar el botón del ratón. Si se lo proponen no consiguen algo más ineficiente (recordad que yo sólo uso el ratón para navegar).

Finalmente, no se copian lineas, sino bloques. Cuando estás en terminal, casi siempre te interesa desde un punto hasta el final, independientemente de los saltos de línea. Saltos de línea que, por cierto, también se copian, aunque no sea parte de la orden escrita.

PowerShell

En un intento por mejorar el símbolo del sistema, sacaron PowerShell, un sistema con una sintaxis insufrible y difícil de entender.

Alguien podría decir que en aquellos tiempos no había nada mejor... Pero es que la PowerShell es del 2006, época en la que ya existía Python (1991) o Ruby (1995). Claramente hubiera sido mejor proporcionar uno de éstos por defecto junto con unas librerías de ayuda.

Actualizaciones

Por defecto están activadas hasta en las versiones de servidor. No podéis ni imaginar mi odio cuando un servidor se reinicia sin razón aparente, para descubrir que ha decidido instalar una actualización.

Además, no hay forma de instalar actualizaciones sin reiniciar. Reiniciar un servidor en el siglo XXI. ¿Estamos locos? ¿Cómo pretenden gestionar Alta Disponibilidad si hay que reiniciar cada dos por tres?

Recursos

Un servidor no necesita interfaz gráfica, y cuando usas Windows no puedes quitarla. Eso significa necesitar gran parte de la memoria RAM y parte del procesador sólo para gestionar esta interfaz. Un servidor Linux necesita menos recursos y consume menos, por lo que termina saliendo bastante más barato.

Además, tiene procesos "de optimización" que pueden consumir el 100% de la CPU durante más de 30 minutos. En un servidor este tipo de acciones tienen que planificarse.

Herramientas

Bloc de notas

Es realmente increíble que en 20 años no hayan mejorado en absoluto el bloc de notas. Hoy en día resulta tremendamente fácil hacer algo así, ¿cómo no le añaden algunas características que lo hagan... usable?

Explorador

Es tremendamente lento. Hace poco me instalé el Explorer++, una aplicación libre que ocupa unas 2Mb en un único fichero ejecutable y es mucho más rápido que el Explorador por defecto.

Internet Explorer

Deberían cambiarle el nombre por "Chrome Downloader" o "Firefox Downloader". En serio: ¿Por qué se empeñan en meter herramientas que no usa nadie?

Mirad datos de esta web, obtenidos de Google Analytics:

Sistema operativo y navegador usados para acceder a esta web durante el mes de septiembre de 2015

Sesiones de usuario

Todavía no entiendo eso de que cuando otro usuario entra en la máquina en la que estás te robe la sesión. Vengo de Linux, donde lo normal es que haya 4-5 personas conectadas al mismo servidor y ni te enteres.

Hace tiempo, el primer usuario que arrancaba una sesión ejecutaba los servicios del sistema. Eso hacía muy compleja la gestión de los mismos e imposible arrancar servicios antes de la sesión. La solución fue ejecutar los servicios en una sesión ajena a las sesiones de usuario. Así ya nadie tiene acceso a esa sesión, donde aún hay servicios que muestran mensajes del tipo "desea continuar" sin que nadie vea jamás el mensaje.

Permisos

Es increíble la cantidad de veces que he cambiado los permisos a una carpeta de forma recursiva para descubrir que Windows ha decidido ignorarme y dejarlos como estaban, sin un error ni nada parecido.

La gestión de permisos es muy compleja, dependiendo incluso de la gestión de usuarios y la herencia entre éstos. Por ejemplo, puedes dar acceso a todos si se lo das a "everyone", pero no todo todo el mundo es "everyone", ya que los usuarios por defecto que usa el IIS o el usuario "Network Service" no son "everyone". Toda una fiesta.

Logs

El sistema de logs es difícil de manejar y bastante lento. Cuando se tiene un problema cuesta mucho llegar hasta el log adecuado. Una vez se llega hasta éste, resulta difícil seguir la traza de un mensaje.

Las tablitas están bien, pero a veces un archivo de texto es más fácil de entender.

Visual Studio

La gente que usa .Net no hace más que hablar maravillas de .Net. Ciertamente es un lenguaje bastante potente y con una sintaxis bastante clara, aunque no tiene mucho que envidiar a Java.

Sin embargo, Java tiene varios IDEs tan buenos o más como Visual Studio: Eclipse, Netbeans, ... Y por supuesto está Intellij Idea, que le da cien mil vueltas a Visual Studio.

En muchas ocasiones me ha parecido que .Net es un clon de Java. Con sus mejoras, por supuesto, pero clon al fin y al cabo.

Pero Java tiene una ventaja sobre .Net: es multiplataforma. A esto podrán responder que:

  • "Microsoft va a sacar la versión para Linux". Ya, y Java va sacar una librería que implementa Skynet, no te jode. Cuando lo vea lo creeré.
  • "Está Mono". Sí, pero no tiene las mismas las características que el oficial de Microsoft. Ya se encarga Microsoft de ello.

Cosas buenas de windows

Pero Windows también tiene algunas cosas buenas:

Performance Counters

Debo decir que son magistrales. En Linux hay un montón de implementaciones de esto mismo, pero ninguna es estándar. Básicamente son programitas con una interfaz común que permiten preguntar al sistema por parámetros del sistema.

Chapó por los Performance Counters.

Chocolatey

En un intento por copiar cosas de Debian, alguien decidió implementar un clon de APT para Windows llamado Chocolatey.

No va mal, pero tampoco bien. Se parece al APT de los 90, cuando yo hacía mis primeros pinitos con Debian y todos los windowseros me criticaban por ello.

Conclusiones

Una anécdota: me hace mucha gracia cuando la gente me llama para preguntarme cosas de administración en Windows y yo les recomiendo usar Linux. Habitualmente su reacción es "Es que no sé Linux". Evidentemente tampoco saben Windows o no me estarían llamando.

En este artículo he tratado de contar las razones por las que odio Windows. Veréis que he tratado de ser claro y preciso en cada una de ellas, tratando de razonarlas. Podéis estar de acuerdo o no en que algo es un motivo para odiarlo, pero he buscado razones claras y precisas, desde un puto de vista todo lo objetivo que he podido.

Finalmente, que cada cual use lo que quiera en casa, pero en un servidor hay que ponerse serio. Windows no es un sistema serio para un servidor, tanto es así que hasta Microsoft decide usar Linux para cosas serias.


Comentarios

Comments powered by Disqus