¿Cómo elegir el languaje y el framework de tu próxima aplicación web?
-
Upload
antonio-ognio -
Category
Technology
-
view
2.011 -
download
1
Transcript of ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?
![Page 1: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/1.jpg)
¿Cómo elegir el lenguaje de programación y el framework de tu
próxima aplicación web? Antonio Ognio
h"p://www.bitzeppelin.com
![Page 2: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/2.jpg)
¿Qué tipo de aplicación web?
![Page 3: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/3.jpg)
¿Qué tipo de aplicación web?
• Concepto nuevo / innovador
• Expectativa de vida de varios años
• Exploración / cambio de características
• Reto técnico / incertidumbre
![Page 4: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/4.jpg)
ejemplo típico…
![Page 5: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/5.jpg)
…aplicación web que es producto principal de una
startup
![Page 6: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/6.jpg)
si quieres un blog típico listo mañana...
![Page 7: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/7.jpg)
![Page 8: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/8.jpg)
¿Cuáles son los criterios de selección para un lenguaje de
programación?
![Page 9: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/9.jpg)
Criterios para elegir el lenguaje
• Expresividad
• Rendimiento
• Soporte para hacer metaprogramación
• Calidad de librerías disponibles
• Nivel de la comunidad
![Page 10: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/10.jpg)
¿Cuáles son los criterios de selección para un framework
web?
![Page 11: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/11.jpg)
Criterios para elegir el framework
• Expresividad
• Rendimiento
• Nivel de uso de metaprogramación
• Calidad de componentes disponibles
• Nivel de la comunidad
![Page 12: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/12.jpg)
Expresividad
![Page 13: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/13.jpg)
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World"); } }
Hello World en Java
![Page 14: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/14.jpg)
puts "Hello, World”
Hello World en Ruby
![Page 15: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/15.jpg)
package test; import java.io.*; import javax.servlet.http.*; import javax.servlet.*; public class HelloServlet extends HttpServlet { public void doGet (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { PrintWriter out = res.getWriter(); out.println("Hello, world!"); out.close(); } }
Hello World usando un Servlet
![Page 16: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/16.jpg)
require 'sinatra' get '/hi' do "Hello World!" end
Hello World usando Sinatra
![Page 17: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/17.jpg)
require 'sinatra' get '/hi' do "Hello World!" end
Hello World usando Sinatra
![Page 18: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/18.jpg)
¿Todos los lenguajes de programación son
comparables y equivalentes?
![Page 19: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/19.jpg)
¿Porqué existen tantos lenguajes de programación?
![Page 20: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/20.jpg)
¿Porqué se siguen creando nuevos lenguajes?
![Page 21: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/21.jpg)
![Page 22: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/22.jpg)
![Page 23: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/23.jpg)
![Page 24: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/24.jpg)
![Page 25: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/25.jpg)
http://oreilly.com/news/graphics/prog_lang_poster.pdf
![Page 26: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/26.jpg)
LISP (1958)
Smalltalk (1971)
C (1972)
![Page 27: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/27.jpg)
John McCarthy (MIT / Stanford)
![Page 28: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/28.jpg)
Inteligencia artificial
![Page 29: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/29.jpg)
Kernighan & Ritchie (Bell Labs)
![Page 30: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/30.jpg)
Sistema operativo simple y eficiente
![Page 31: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/31.jpg)
Alan Kay (XEROX PARC)
![Page 32: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/32.jpg)
Escritorio moderno
Ingeniería de software
Computación personal
![Page 33: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/33.jpg)
LISP (LISt Procesor)
• Bases matemáticas (Cálculo de Lambda)
• Extensible (se va construyendo a si mismo)
• Programación funcional
• Late binding / Metaprogramación
• Gestión automática de la memoria
![Page 34: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/34.jpg)
Lenguage C
• Imperativo y estructurado
• Bajo nivel (cerca del hardware)
• Gestión manual de la memoria
• Orientado a maximizar el rendimiento
![Page 35: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/35.jpg)
Smalltalk
• Orientado a objetos (bases en biología)
• Altamente reflexivo (todo es un objeto)
• Gestión automática de la memoria
• Orientado a maximizar productividad
![Page 36: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/36.jpg)
![Page 37: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/37.jpg)
![Page 38: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/38.jpg)
![Page 39: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/39.jpg)
![Page 40: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/40.jpg)
![Page 41: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/41.jpg)
![Page 42: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/42.jpg)
![Page 43: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/43.jpg)
![Page 44: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/44.jpg)
![Page 45: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/45.jpg)
AWK
C SH UNIX
commands
![Page 46: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/46.jpg)
Perl
C SH AWK
![Page 47: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/47.jpg)
C++
C Smalltalk
![Page 48: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/48.jpg)
Objective-C
C Smalltalk
![Page 49: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/49.jpg)
Java
C++ Smalltalk
![Page 50: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/50.jpg)
C#
Java C++ Object Pascal
![Page 51: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/51.jpg)
PHP
C Perl Java
![Page 52: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/52.jpg)
Python
Smalltalk ABC LISP
![Page 53: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/53.jpg)
HOW TO RETURN words document: PUT {} IN collection FOR line IN document: FOR word IN split line: IF word not.in collection: INSERT word IN collection RETURN collection
Ejemplo de código de “ABC” (Holandés)
![Page 54: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/54.jpg)
Ruby
Smalltalk Perl LISP
![Page 55: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/55.jpg)
1 to: 10 do: [:n | n isOdd ifTrue: [n toStdout] ifFalse: [n toStderr] ]
Ejemplo de código de Smalltalk
![Page 56: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/56.jpg)
Javascript
Scheme (LISP)
Self (Smalltalk) Java
![Page 57: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/57.jpg)
Erlang
Prolog LISP
![Page 58: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/58.jpg)
![Page 59: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/59.jpg)
ERICSSON AXD 301 MULTI SERVICE ATM SWITCH
![Page 60: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/60.jpg)
ERICSSON AXD 301 MULTI SERVICE ATM SWITCH
99.9999999% de uptime
![Page 61: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/61.jpg)
Clojure
LISP Java Erlang
![Page 62: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/62.jpg)
Scala
Java LISP Erlang
![Page 63: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/63.jpg)
![Page 64: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/64.jpg)
![Page 65: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/65.jpg)
Si insisten en usar PHP…
![Page 66: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/66.jpg)
Conclusiones
• Conviene usar un lenguaje moderno que se actualice frecuentemente
• Lenguaje dinámico o estático pero con sintaxis flexible y expresiva
• Soporte multiparadigma: OOP y funcional • Comunidad muy activa / opensource • Orientación a la concurrencia (modelo de
actor)
![Page 67: ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?](https://reader036.fdocumento.com/reader036/viewer/2022081401/557b99cdd8b42ac9248b47a7/html5/thumbnails/67.jpg)
¿Cómo elegir el lenguaje de programación y el framework de tu
próxima aplicación web? Antonio Ognio
h"p://www.bitzeppelin.com