This graph shows how many times the word ______ has been mentioned throughout the history of the program.
Vamos a hablar de lo primero, de lo más importante, lo que mucha gente se está preguntando
y es básicamente, ¿tú odias a JavaScript? ¿JavaScript te odia a ti? ¿Qué está pasando con JavaScript?
JavaScript odia a todos.
JavaScript nos odia a todos.
Lo que pasa, yo creo que tiene que ver con un poco el contexto de cuando yo comienzo a programar.
Yo soy de los programadores que comienzan en el 99.
Entonces, en ese entonces, JavaScript no era el único lenguaje de programación que competía en la web.
O sea, en lo que es frontend.
Había otra cosa que se llamaba Visual Basic Script.
Estaban otras cosas raras que se hacen Compare.
Estaba el ActiveX.
Es decir, había muchas cosas que competían con JavaScript, pero al final JavaScript fue el que ganó.
El problema radica que yo trabajé, yo comencé a programar con lenguajes de programación como Visual Basic 6.
Entonces, cuando yo me paso a JavaScript, JavaScript era como el extra que tenía la web
para efectos, para animaciones, para cosas dinámicas en el frontend, ¿no?
Y te estoy hablando antes de GQuery, o sea, antes de GQuery.
Y entonces nosotros tenemos esa noción de JavaScript que servía para ese tipo de cosas.
Y el frontend también en general, que era una pantalla y ya está.
Obviamente, con el tiempo el frontend se ha hecho más complejo, para bien y para mal.
Obviamente, ¿por qué para bien?
Porque en el frontend antes hacíamos páginas web.
Ahora, en el frontend, ¿qué no hacemos?
O sea, ya hacemos de todo.
Tenemos Photoshop web, tenemos Figma, tenemos Google Maps.
O sea, ese tipo de cosas en aquel entonces no se veían venir.
O sea, el frontend hacíamos sitios web.
¿Te acuerdas de que las páginas le poníamos en misión, visión y todo tiran página web?
Pero era simplemente HTML, con un poco de JavaScript para hacer algunos efectos.
Y yo creo que la noción de mi desagrado de JavaScript, y no digo que me desagrade completamente.
Más bien, hay ciertas cosas que yo le veo que le hacen falta para hacer un lenguaje de programación que te evita hacer cosas...
Sobre todo cuando estás haciendo sistemas escalables, necesitas instalar cosas para que JavaScript se comporte de una manera más estricta.
Y creo que muchos de mi generación que vienen de Java, de C Sharp, de lenguajes de programación, a lo mejor tipados fuertes,
tienen ese desagrado con JavaScript por no tener esas cualidades.
Pero yo las entiendo.
La web, el JavaScript nació con la web.
Es decir, el JavaScript nació con el frontend.
Entonces, necesitas ese dinamismo en el frontend, porque en ese entonces no se manejaba tanta tipo de datos, por ejemplo.
Manejábamos componentes.
Manejábamos el componente document.gat elementbyid.
Ibas por el componente, el tag, el componente de HTML que existía y ya podías manipular sus atributos.
Entonces, yo entiendo por esa parte ese dinamismo.
El problema es cuando llega JavaScript al backend y mucho programador se pasa al backend sin conocer ciertas nociones de arquitectura
o ciertas nociones de, más que nada, de escalabilidad de proyectos y comienza a haber mucho espagueti.
Y con lo que voy es que JavaScript lo que te permite ser flexible es magnífico.
El problema es cuando las personas no conocen cierta flexibilidad que están utilizando, puede llevar consecuencias.
Entonces, si tú conoces esas consecuencias, pues puedes programar en JavaScript bien.
Y no digo que utilices TypeScript, digo que en JavaScript tú utilizando ciertas bibliotecas puedes hacerlo de manera un poco más estricto y puedes hacer que un equipo de programadores no haga cochinadas.
A mí lo que a veces no me, o me causa conflicto es sobre todo ahorita el tema con la programación funcional.
En JavaScript obviamente siempre los famosos callbacks, ¿no? Los tenemos en GQuery por todos lados.
Los famosos callbacks es una función de primera clase que se manda a una función de orden superior y se ejecuta en algún punto y ya se trabaja internamente.
El punto es que estas funciones, el hecho de no permitir, no poderlas tipar, te permite mandar funciones que a lo mejor se salen del contexto de tu comportamiento.
Claro.
Y eso es lo que yo a veces me choca, sobre todo ahorita con la programación funcional, pero no necesariamente JavaScript lo odio completamente.
Completamente, me ha encantado ese, completamente.
Y a veces, a mí me gusta decir las cosas que no me gustan y las cosas que sí me gustan.
Por eso he hablado de JavaScript ciertas cosas que me gustan y las cosas que no me gustan, pues igual a mucha gente también le causa conflicto.
Pero ya estoy acostumbrado a la programación, ya sabemos que aquí en la programación si tú no eres, si no te etiquetas tú como otro,
esa persona no te va a considerar bueno.
Y eso es normal, ya estoy acostumbrado.
Sí, la verdad es que en eso es un rollo.
Lo que decías de las funciones, para que todo el mundo lo entienda, la gente que nos está viendo,
voy a poner un ejemplo rápido y furioso aquí en la pantalla,
pero básicamente esto sería una idea del problema que tendríamos, ¿no?
El parsing que parece que sería para parsear lo que está pasando.
Estamos mapeando cada uno de los números.
Aquí uno podría pensar que va a dar uno, dos y tres, porque el parsing...
Pero el problema que tenemos aquí es que en realidad aquí le están llegando dos,
o sea, el number y el index, y se le está pasando directamente así.
Y claro, si esto a lo mejor tuviese otra forma más estricta de funcionar, pues tendría más sentido y tal, ¿no?
Sí, algo que TypeScript sí te lo restringe, porque puedes tipar funciones,
aunque hay mucho cabezón que no las restringe.
O sea, usa TypeScript como si fuera JavaScript.
O sea, no tipa funciones.
Sí, sí.
Sobre esto, la verdad, a ver, tienes toda la razón lo que dices, ¿no?
Que yo también nací un poco en la programación con...
Yo empecé con .NET y con C Sharp.
No sé si lo sabías, pero hace mucho tiempo...
Yo pensé que era Java, por eso lo odiabas.
Sí, empecé con Java en la universidad y hice prácticas,
pero así, rollo laboral.
Lo primero que hice fue .NET y C Sharp.
Me acuerdo que tuve que hacer cosas de Link y me acuerdo que lo odié muy fuerte.
Sobre todo, te voy a explicar...
Sobre todo, ¿sabes lo que odiaba el momento?
Es que esto es de viejo, ¿eh?
Pero que había que hacer un checkout de los archivos y entonces se bloqueaba el archivo
y nadie más lo podía tocar.
¡Ostras!
Aquello...
Claro, amigos, cuando no existía Git o alternativas modernas,
.NET te ofrecía con Visual Studio,
tenías una forma de bloquear los archivos para poder editarlos tú y que nadie más los tocase.
Imagina trabajar en equipo así.
Era una salvajada.
Entonces tú veías en el editor de archivos
qué archivos se estaban modificando en ese momento para...
Como que estaban bloqueados y tenías que decirle
oye, desbloquealo o no sé qué, no sé cuánto.
Sí, y esto es de Team Foundation.
De hecho, cuando estabas utilizando el repositorio que es de Microsoft,
que hoy se llama Azure Team Foundation,
no sé cómo se llama ahora,
pero sí era una bronca y a veces tenías que instalarte unos paquetes
para que una persona con privilegios pudiera desbloquearlos.
El problema radicaba cuando una persona bloqueaba el archivo
y era una persona que se iba de la empresa
y se iba de la empresa con todo y la máquina, ¿no?
O sea, entonces tenía que...
Yo...
Sí me pasó que teníamos que desbloquear esos archivos
y acá la persona que administraba tuvo que instalar cierto paquete de Team Foundation
para desbloquearlo directamente,
pero eso, pues obviamente, es cuestión también de repositorios
y es una época de los repositorios antigua.
Ahora ya no pasa estas cosas.
Ya tenemos más libertad, ¿no?
De cierta manera.
Totalmente.
Y sobre este punto también lo que comentabas de JavaScript,
que es verdad, ¿no?
Que aparte de lo que dices,
de que hay mucha gente que viene de backend que está acostumbrado,
también lo que pasa a lo mejor es que
cuando hemos vivido los inicios de JavaScript
que eran muy duros y muy negros y muy oscuros,
era una cosa salvaje.
Lo que no podías hacer con JavaScript
era como que te daba ansiedad y todo,
pero ¿por qué JavaScript no puede hacer esto?
¿O necesitas una biblioteca que lo haga?
¿Y por qué tiene que ser tan complicado y rebuscado y tal, no?
Sí.
Pero es verdad que últimamente, no sé,
¿cómo ves tú la evolución de JavaScript?
O sea, ¿tú qué la has vivido toda, básicamente?
Sí, de hecho, yo recuerdo cuando se hacían las solicitudes AJAX, ¿no?
De antes, antes de jQuery.
Era trabajar con el objeto HTTP request
y hacer unas cosas ahí impresionantes.
O sea, era una función, te hacías tu función enorme.
Ya que en ese entonces empezaba a haber más internet,
o sea, era el internet más accesible para las personas,
pero en computadora, el celular, te olvídate.
O sea, en celulares no había que se conectaran a internet.
O si no sabía, no eran al público, ¿no?
A lo mejor sí.
Ahorita me sale un purista.
No, desde los años 80 había un celular.
Pero bueno, obviamente nosotros adoptamos jQuery
por ese tipo de cuestión.
La compatibilidad, ya va a escribir en los navegadores.
O sea, tú hacías algo en Internet Explorer
que no funcionaba en Escape Navigator.
¿Te acuerdas de ese navegador?
No funcionaba en el joven Firefox en aquel entonces
que nace Firefox y todo, o sea, el mejor navegador.
La mierda, ¿no?
Ahorita nadie se acuerda.
Pero me acuerdo que la bronca era eso,
que tú hacías algo en JavaScript,
vanilla JavaScript.
Sí.
Y no funcionaban ciertos navegadores.
Entonces, estar probando o obligabas a las personas.
Yo me tocaba trabajar en gobierno
y obligamos a las personas a utilizar Internet Explorer 6
en aquel entonces y después Internet Explorer 7.
Y no utilices otro porque en el otro no funciona.
O sea, no íbamos a estar evaluando todos los navegadores.
Y aquí jQuery lo adoptábamos por ese tipo de cosas.
Porque jQuery se encargaba de hacer la funcionalidad
que fuera apta para todos los navegadores.
Así es un método, simplemente selector.
Los selectores en ese entonces eran una maravilla, ¿no?
O sea, utilizabas nada nuevo.
Agarrabas lo de CSS y lo utilizaba jQuery
para seleccionar elementos y poderle ponerle eventos,
hacer cambios de atributos, propiedades,
crear elementos dinámicos de una manera muy simple
y sin preocuparte de que el navegador fuera compatible.
Entonces, en ese entonces,
JavaScript a mí lo veíamos así como de,
ah, la mierda, tengo que hacerlo con JavaScript puro
y a lo mejor no funciona acá.
Entonces, ese es el tipo de cosas
que a lo mejor nosotros, en mi caso,
yo lo que digo,
si sigo probando JavaScript hoy en día,
lo que traemos como acarreando, ¿no?
Frustraciones que vamos poco a poco liberando.
Nace, a mí me encantó JavaScript del 2015 para acá.
Cómo manda, de una manera,
agarra todas las cosas que le faltaban,
que se las mostró jQuery,
que jQuery no era lo único,
había otras bibliotecas como Prototype,
Mutual, etcétera,
pero agarra esas cuestiones y dice,
ok, esto me falta,
me falta un método simple para hacer solicitudes HTTP,
hagamos un método y tenemos las promesas
y el método fetch, ¿no?
Y las promesas también para mí fue una joya,
sobre todo la azúcar sintáctica
que se agregó con acing a wait.
Sí, sí, tremendo.
Y todo el manejo que tiene el event loop de JavaScript,
cómo lo trabajaron,
que también no es tan simple como muchos.
Ay, ¿por qué no ponen esto?
Sí, pero a ver, cabrón,
¿sabes qué es poner eso?
O sea, ¿sabes qué es modificar?
Que los navegadores también acepten eso.
Claro, es que eso es una cosa, Héctor,
que yo creo que nunca se le concede a JavaScript
y a mí me parece espectacular
el hecho de que creo que es el único lenguaje de programación
que tiene que ser retrocompatible hacia atrás,
infinito, infinito.
O sea, no, no,
los últimos 10 versiones, no, infinito,
porque no puede romper la web.
Y claro, es que mucha gente dice,
pero ¿por qué no arreglan esto?
Y dices, joder, es que si arreglan esto,
igual se cae la mitad de internet, ¿sabes?
Sí, es que es el problema
y aparte que los navegadores más utilizados
vayan siguiéndote, ¿no?
Por eso vemos,
esto ya lo acepta este navegador,
pero sí, ¿pero qué te sirve
si no lo aceptan los otros ocho, no?
O sea, no te sirve de mucho.
La cosa es que a mí,
ah, sí, tú adelante, sí.
No, perdona, ¿eh?
Pero es que antes habías comentado una cosa,
me ha hecho mucha gracia
y este código es más que nada
para recordar viejos tiempos.
Antes ha comentado Héctor
que un problema que teníamos
es que teníamos que detectar como,
para Internet Explorer
hay que hacerlo de una forma, ¿no?
Y a lo mejor aquí hacíamos el request,
new,
no, acuerdo ahora,
XMLHttpRequest.
No, y entonces así,
la request, punto,
y había que empezar a añadir cosas,
pero resulta que Mozilla
se hacía de otra forma
y a lo mejor en una versión en concreto,
y me acuerdo que tú
encontrabas estos códigos así,
porque digamos que las APIs,
tanto del DOM
como de la web y todo esto,
no estaban muy unificadas
y claro, esto que veis aquí,
claro, esto es lo que vino
jQuery a eliminar
para hacer así
y esto fue como,
¿cómo?
Sí, la magia.
¿Cómo que solo haciendo esto?
Claro, tú tenías estas cosas horribles
donde cada uno
tenías que hacer una forma
totalmente distinta
y de repente te viene jQuery
y te dice,
todo esto,
ahora es así.
Y tú,
¡ah!
Y hay otra de las cosas
que trajo JavaScript
muy interesantes,
pero también nadie le da
a su protagonismo,
que es el formato JSON.
Ah, claro.
El formato JSON escaló bastante
por el uso de jQuery.
Utilizabas tu función
Ajax, por ejemplo,
y mandabas con un JSON
las propiedades
y con el mismo JSON
podías meter también
funcionamiento.
Metías tus métodos,
no sé,
¿qué era el callback?
¿Qué querías que hiciera
a medias?
¿Qué querías que hiciera
si fallaba?
¿Qué querías que hiciera
al final?
Entonces,
eso te daba muchísimo dinamismo,
pero sobre todo
esa adopción de JSON
la vimos ya
no solamente,
de hecho,
JSON significa JavaScript,
¿no?
Tiene la J de JavaScript.
Sí, sí.
Y eso no lo limitó
a contextos, ¿no?
Ya lo utilizamos
en lenguajes de programación
sin importar
que venga de JavaScript.
Totalmente.
Y a veces no le damos
ese protagonismo de JavaScript
que JSON lo hizo
de una manera
que lo adoptáramos
como un formato
que ahorita
hay muchísimas variantes,
pero esa adopción
también se la debemos
a JavaScript.
Y a veces
no lo vemos.
Pues, bueno,
yo no veo mucha gente
que le dé ese protagonismo.
¡Gracias!