¡Muerte al JavaScript, larga vida al JavaScript!
@sanzante
¡Muerte al JavaScript, larga vida al JavaScript!
Ricardo Sanz
sanzante / tunic
Ricardo Sanz
Drupal Developer & DevOps
drupal.org/u/tunic
sanzante
JavaScript
Desarrollado por Brendan Eich para Netscape Communicator en 1995.
LLamado Mocha, luego LiveScript, finalmente JavaScript.
Prototipo desarrolado en pocas semanas.
Sintaxis parecida a Java pero núcleo muy diferente.
Inspirado por Scheme (funciones como objetos) y Self (herencia mediante prototipos).
Originalmente también pensado para el servidor.
Años oscuros: JScript.
JavaScript
Estandarizado por ECMA.
ECMAScript 1 (1995).
ECMAScript 2 (1998): Pequeñas mejoras.
ECMAScript 3 (1998): RegExp, excepciones, gestión de errores, mejora gestión de cadenas.
XHTMLRequest.
ECMAScript 4 (Abandonada): Grandes cambios y muchas funcionaliades nuevas.
ECMAScript 5 (3.1) (2009): modo strict, afinación general, soporte JSON, mejora reflexibidad.
ECMAScript 6 (2015)
Clases.
Iteradores.
Generadores.
Funciones flecha.
Promesas.
Otras mejoras.
Uso
JavaScript
Lenguaje multiparadigma (OOP clásico, prototipado, funcional).
Flexible.
Muy débilmente tipado, coerción agrevisa ("1,6" == [1,6]).
Flexible.
Tipado dinámico.
Muy flexible.
Funciones como objetos.
Extremadamente flexible.
¡Muerte al JavaScript!
Parece un lenguaje OOP clásico pero no lo es.
Difícil de entender completamente.
Depuración problemática según como se use.
La combinación de paradigmas puede dificultar el diseño una aplicación.
La combinación de paradigmas dificulta la comprensión del código.
Tan flexible que es fácil dispararse en un pie. Lint.
Difícil de mantener en proyectos medio-grandes.
ES6 trata de solventarlo, infructuosamente (¿Clases? No del todo.)
¿Muerte?
Por fin estandarizado y compatible en todos los navegadores.
Ejecutable en servidor.
Cumple la promesa:
Write once, run everywhere
.
Miriada de librerías y frameworks para casi cualquier cosa.
Ensamblador o
bytecode
de la web
Potente.
Flexible.
Ejecutar en cualquier parte.
Complejo para proyectos grandes.
Transpilación
Transpilación: convertir código de un lenguaje a otro.
Usar un lenguaje transpilable a JavaScript.
Obtenemos las ventajas de JavaScript junto a las ventajas del otro lenguaje.
TypeScript
Superconjunto de JavaScript.
Usado en Angular.
Fuertemente tipado.
Tipado estático.
Construcción de tipos.
Clases, interfaces, enumerados, etc.
Sistema de módulos..
Elm
Paradigma funcional (declarativa).
Impide errores de ejecución (null, undefined, etc).
Tipado estático.
Sistema de módulos.
Transpilable e interoperable con JavaScript.
Otros lenguajes
CoffeScript y loqueseaScript.
Dart.
Java.
Kotlin.
Scala.
Muchos otros
.
¡Larga vida al Javascript!
Aprovechar las ventajas de JavaScript sin sus problemas.
Proyectos pequeños: JavaScript.
Proyectos medio-grandes: Lenguaje transpilado.
Proyectos medio-grandes: Amplia cobertura de tests unitarios y de integración..
¿Preguntas?
¡Gracias!