Cosas que odio de los lenguajes de programación

Nota: Llevo casi un año escribiendo de a poquito el articulo por el móvil y tal. Le he metido un empujón para que salga antes de terminar el año.

Ya son muchos años, soy un perro viejo en esto de picar código, posiblemente…tu lector puede que seas un tierno cachorrito lleno de ilusión…pero bueno ya te irás siendo un perro apaleado.

Dicen que “no hay bala de plata” a la hora de resolver un problema de programación, que cada lenguaje es bueno para una cosa, y creo que desde mis años perrunos opino que es cierto.

También dicen “cuando tienes un martillo entre manos, todo son clavos”, y eso veo que le pasa a los cachorritos, por ejemplo ahora (cuando estoy escribiendo estas líneas) esta de moda el rollo de node Js y javascript, y los cachorritos lo quieren usar para todo.

Pero bueno viendo algunos lenguajes, os voy a relatar mis odios mas ocultos…o no tan ocultos:

  • Perl: lo odio casi completamente, aunque si tuviera que odiar algo particularmente, es los sigils, que son esos pequeños simbolitos que acompañan a las variables para diferenciarlas de palabras reservadas y tal, que en lenguajes como PHP son muy útiles, básicamente porque solo hay el $ y resalta visualmente donde están las variables y te la libertad de usar $return sin problemas por ejemplo. Pero Perl es un infierno de simbolitos, que unos hacen que la variable sea un puntero o un array o un hash. ¿Alguien tiene una chuleta o cheatsheet con lo que hace cada uno y como se puede volver atrás….porque pasa como con los punteros en C que se te pierde la variable…pero mas raro?
  • Javascript: todo lo he escrito en el futuro pasado en Sigo pensando que javascript apesta, resumen no hay sleep, y es multihilo pero no te deja manejarlos. Añado que se esta llenando de capas y capas de abstracción en plan como java.
  • PHP: lo quiero es un fiel compañero que me ha dado de comer muchos años, pero como buen amigo tiene sus pequeñas manías que le respetas pero están ahí. A ver no nos llevemos las manos a la cabeza, pero PHP fue un lenguaje de programación inventado a caballo que refleja un poco los problemas del caos ordenado de la gestión de proyectos de software libre, y no es un lenguaje muy estandarizado su idioma, como el español con los verbos irregulares que sabiamente los niños regularizan pero los castran para que siga siendo así el español. Hay un documento o paper (como dicen los modernitos) muy famoso sobre el caos ordenado que es,  PHP: a fractal of bad design. Quizá lo que a mi me molesta es que no tenga hilos (pero por lo menos no los tiene de verdad, no como javascript que te los niega),  que sea de tipado dinámico las variables que te da problemillas (que han resuelto en el 7 pero que lo están volviendo un poco C). Bueno si hay una cosa si que odio es la lista de parámetros por defecto en las funciones te vuelve loco cuando solo tienes que meter el último y tienes que mirar el código fuente la función para poner a mano los anteriores, python lo arreglo esto bastante bien.
  • Java: la eterna promesa, es como medio novia que te traiciona una y otra vez pero vuelves a sus brazos, mi ultima vez fue cuando comenzó Android, creía que esta vez si…pero no otra vez la traición…sigue siendo un lenguaje que primero tienen sobrecargado el operador + para strings pero tu no puedes, con capas de capas de abstracción para causar erecciones poderosas en teóricos de la programación pero que no se manchan las manos a diario. Es un cristo programar en Android y encima parece que programas como el viejo asqueroso m$-visual basic te salen la aplicación visualmente fea y cuadriculada con miles de lineas y cosas complejas como que no puedes acceder al valor seleccionado de una lista o combobox sino que necesitas otro objeto iterador. He visto lineas de 300 y pico caracteres para abrir una base de datos y no se perderán como lagrimas en la lluvia porque las cárnicas (consultoras) que venden carne de informático al peso siguen con proyectos de mierda en java con miles de capas.
  • Python: que no tenga un switch (perl tampoco lo tiene) y te hace llenar el código lineas y lineas de if – else – elif …hay gente lo pregunta en stackoverflow Replacements for switch statement in Python?, por lo demás mas o menos no tiene mucho problemas, salvo el tema de los tipos mutables y no mutables que es un poco lio pero no mucho. Y bueno que tampoco hay manera de definir variables estáticas dentro de una función…que también lo comentan por stackoverflow What is the Python equivalent of static variables inside a function? . Parece que este lenguaje de programación ha sido tocado por el dedo de dios, me tengo que poner seriamente con django porque puede ser una alternativa a mi querido PHP.
  • C#: otro que odio del todo porque es un producto comercial de micro$oft que lo venden como un lenguaje de programación y es un feto mal parido hijo de m$ visual basic (si lo has sufrido veras que tiene mucha mierda parecida). Pero por desgracia se esta poniendo de moda gracias a Unity3D y parece que la siguiente versión de Godot va a incluirlo en su hermano gemelo libre Mono así que habrá que empezar a aceptarlo.
  • Resto: o ya no se usan o son tan producto comerciales que no merece gastar caracteres en este texto. Y C, ASM es como las matemáticas hay que aprenderlo y respetarlo por ser old school…C++ pues tampoco me pegado mucho para odiarlo.

Hay un wiki que también trata nuestros odios en los lenguajes de programación: YourLanguageSucks

Y vuestros odios sobre lenguajes de programación cuales son…comentad…confesar…calmad vuestra alma.

10 pensamientos sobre “Cosas que odio de los lenguajes de programación”

  1. C: ni el estandar, ni las librerias son especificas, por ejemplo las funciones en string.h devuelven 0 para error o cualquier cosa distinta a cero… acaso generan un valor aleatorio?. El nuevo estandar en lugar de corregir estos detalles parchea inconvenientes agregando mas librerias, solucionar declaraciones como signed long int por int64 es bueno, claro, si no te obligara a incluir una libreria de pormedio.

    Lisp: Declarar variables es mas feo que apalear focas, orejeras () por todos lados

    Bash/Make: solo tocar en caso de emergencia

    C++: lo olvide

    Go: aun estoy verde para odiarlo

        1. Pues siento ser una voz discordante, pero que “te obligue a identar el código en bloques” python es una ventaja para tener un código fuente limpio y claro….el problema es que la gente disfruta de ametrallar con espacios las lineas para identar…con lo bonito que son los tabuladores…aunque haya tenido mi epifanía con ellos….

          1. que no se mal entienda, estoy a fabor de la diversidad y la indetacion, solo que con llaves el editor sabe lo debe hacer, a la forma python, el alcance debe señalarse a mano pelada, tab a tab a tab

    1. Bash el problema que tira de los comandos de sistema, hay gente que estandariza (que no usa comandos que no vengan de serie en cualquier GNU/Linux…no recuerdo como se llama cuando un bash esta estandarizado) los scripts y quedan chulos. Makefile tanto de lo mismo.

      Cierto es que el manejo de las cadenas de texto en bash es un dolor de cabeza, y el rollo de tener que definir el token para romper una lista a iterar con IFS.

      Lips me tengo que poner con el, por cierto muy gracioso lo de las orejeras y las focas apaleadas.

      1. bash/make, ademas utilizan signos “extraños” que no le ayudan a ser legible para los no iniciados (y los que no estan a diario en ello). eso sin mencionar la falta de otros tipos de variable a demas de texto y enteros (de texto)

        los lispers (seguidores de lisp) supuestamente les llaman orejeras (earmuffs).

        en lisp TODO alcance es explicitamente indicado mediante (), en python con \t, en go te obligan a seguir un estilo de indentacion a 4 espacios con separacion de un espacio entre palabras clave a exepcion del inicio y cierre de parentesis y en C confian en el buen gusto del programador, el contexto (if, for, while, do-while) y {}. un tema complejo a la par de los sistemas de documentacion.

        1. Si cierto, ahora que me acuerdo lo de if [ $? -eq 0 ] …respetando espacios da su jaqueca a parte de los inventos que hay para manejar cadenas ${texto:7:3} y seguro que hay mas…

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *