Archivo de la etiqueta: javascript

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.

Sigo pensando que javascript apesta

He vuelto a programar efusivamente en javascript y vuelvo a ver que hay unos errores de diseño muy gordos que dan problemas. Que si, que PHP apesta mas y tal estarás diciendo, o dirás «anda con el señorito seguro que piensa que Python es un regalo de los dioses» …pero estamos hablado de Javascript ahora.

¿Hay hilos en javascript? Si, si los hay pero no son accesibles desde el propio lenguaje.

Entonces hay hilos,  Error no hay acceso a hilos.

Y añado ¿Porque no hay un simple mutex / semáforo? Hubieran ahorrado toda esa mierda que tiene nueva de webworkes y flautas dulces, un semáforo para gobernarlos a todos…y después si tu ego te incita a crear meta-mierdas para vender libros de portadas animales grises pues bien para ti y bien para tus mojados canzoncillos.

Vale…no hay semáforos…pero ¿Porqué no hay un sleep? Maravillosa instrucción para no quemar CPU mientras espero una ejecución por otro hilo (de los que son como paranormales, no existen pero existen en javascript) y con un apaño guarro de un semáforo con una variable global. Y si yo hago mal en javascript y se queda ahí clavado, es mi culpa un lenguaje no tiene que estar diseñado para cuidarme como un tontito que no se hacer nada, si soy un manazas y un bruto me jodo y hago bien las cosas.

Lo del sleep es un error gordo pero gordo gordo, y no lo digo yo solo, si no gente tan potente como los de emscripten (un traspilador de C a javascript muy famoso) https://github.com/kripken/emscripten/wiki/Asyncify.

Y para finalizar el famoso living standard de javascript que se ha puesto de moda, que significa nuevas versiones de diseño del lenguaje no chocan con los navegadores que soportan versiones viejas porque en tiempo de ejecución (o previo por el rollo de los headers http) le manda código parcheado y librerías para que use las nuevas cosas en el navegador con la versión vieja….¿Pinta bien?…claro que si, pero tienes que meterte en la secta de node.js y todo eso, te ofrecen el caramelo y después ¡¡zasca!! ya estas enmarronado usando miles de frameworks y tonterias de hipsters con pegatina del gatopulpo en su blaquito mac.

turd-146305_960_720