Este documento discute los lenguajes y frameworks necesarios para desarrollar aplicaciones web. Recomienda aprender al menos HTML, CSS y JavaScript, pero idealmente todos los que se puedan. Luego describe los principales lenguajes y frameworks usados en las aplicaciones web a través de las décadas, incluyendo Perl y PHP en los 90, Java alrededor del 2000, Ruby on Rails alrededor de 2005, Python desde el 2008 y más recientemente Clojure. Finalmente, destaca herramientas indispensables como el control de versiones, almacenamiento no relacional y gest
8. Principales aportes:
● CGI al alcance de las masas
● Navaja suiza para procesar texto
● Scripts para gestionar infraestructura
● CPAN, enorme librería de módulos
9.
10. Principales aportes:
● Muy baja barrera de entrada
● Ha hecho posible un gran número de sitios web
● Disponible en casi todas las plataformas
● Rendimiento aceptable en general
● Gran cantidad de proyectos opensource
13. Principales aportes:
● Una plataforma unificada: JVM independiente el
HW y el sistema operativo
● Herramientas de corte corporativo con enfoque
en la escabalabilidad y la mantenibilidad de la
infraestructura
● Gran laboratorio de frameworks usando distintos
patrones de diseño
● Gran ecosistema de productos y herramientas
tanto comerciales como opensource
14.
15. Principales aportes:
● Hizo popular el uso de web services (SOAP)
● Simplificó la librería de clases de un framework
corporativo significativamente
● Popularizó el concepto de poder usar distintos
lenguajes y librerías de clase sobre una sola máquina
virtual
● Pionero en soportar lenguajes dinámicos y
lenguajes funcionales a nivel de la máquina virtual
18. Principales aportes:
● Demostró que se puede tener alta productividad
escribiendo poco código y conservando la cordura
● Demostró que el código de las aplicaciones web
puede ser fácil de leer y mantener
● Revalorizó y popularizó el concepto de DSL o
lenguajes de dominio específico
● Posiblemente la herramienta más integrada con la
corriente “Web 2.0” a todo nivel
● Ayudó a popularizar temas como testing, control de
código, RESTful webservices, etc
19.
20.
21.
22.
23. Principales aportes:
● Popularizó el concepto de “aplicaciones
reutilizables” fáciles de “enchufar” en cualquier
proyecto
● Alternativa a Ruby/Rails para los que prefieren un
enfoque de programación dinámica pero menos
“magia”
● Ayudó a popularizar el uso de Python en
aplicaciones web ya que anteriormente el espacio
estaba demasiado fraccionado
26. Principales aportes:
● Está ayudando a popularizar la programación de
servicios de red orientados a eventos
● Un solo lenguaje de programación en el lado del
cliente y del servidor
● No solo web: también correo, DNS, proxy,
balanceo de carga, protocolos a la medida
● Construcción de componentes de red
especializados hechos a la medida de la aplicación
29. Principales aportes:
● Lenguajes diseñados para escalar hacia arriba y hacia
abajo sobre plataformas populares: JVM y CLR
● Excelente rendimiento ahora que las máquinas
virtuales tiene casi 20 años de optimizaciones
● Permiten capitalizar herramientas del presente (OOP)
e ir construyendo herramientas del futuro
(Programación Funcional)
● Diseñados para facilitar enormemente el diseño e
implementación de aplicaciones distribuídas que saquen
provecho del procesamiento paralelo
31. ¿Porqué no seguir con PHP ó Java?
● Ambos son lenguajes menos expresivos que otras
alternativas como Python, Ruby ó Scala
● Contienen un gran número de pequeños errores de
diseño e implementación que se van sumando
● La cantidad y la calidad de las librerías modernas y
bien mantenidos para ambos lenguajes ha venido
decayendo en los últimos años
● El mercado de programadores de ambos lenguajes
lamentablemente está plagado de gente con poca
experiencia o que no está dispuesta a estar
actualizando conocimientos permanentemente
37. Principales aportes:
● Control del código fuente de las aplicaciones y de la
infraestructura
● Servicios de almacenamiento de datos no-relacionales
y altamente escalables
● Integración contínua para la detección temprana y
automática de fallos
● Gestión de la infraestructura virtual como si se
tratara de software (Chef)
● Procesamiento de enormes volúmenes de datos