SlideShare una empresa de Scribd logo
1 de 67
Descargar para leer sin conexión
¿Cómo elegir el lenguaje de
programación y el framework de tu
     próxima aplicación web?
           Antonio Ognio
        antonio@bitzeppelin.com




                        h"p://www.bitzeppelin.com	
  
¿Qué tipo de aplicación web?
¿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
ejemplo típico…
…aplicación web que es
producto principal de una
         startup
si quieres un blog típico
     listo mañana...
¿Cuáles son los criterios de
selección para un lenguaje de
        programación?
Criterios para elegir el lenguaje

•  Expresividad

•  Rendimiento

•  Soporte para hacer metaprogramación

•  Calidad de librerías disponibles

•  Nivel de la comunidad
¿Cuáles son los criterios de
selección para un framework
            web?
Criterios para elegir el framework

•  Expresividad

•  Rendimiento

•  Nivel de uso de metaprogramación

•  Calidad de componentes disponibles

•  Nivel de la comunidad
Expresividad
Hello World en Java


public	
  class	
  HelloWorld	
  {	
  
	
  
	
  	
  	
  	
  public	
  static	
  void	
  main(String[]	
  args)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  System.out.println("Hello,	
  World");	
  
	
  	
  	
  	
  }	
  
	
  
}	
  
Hello World en Ruby




puts	
  "Hello,	
  World”	
  
Hello World usando un Servlet
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 Sinatra



require	
  'sinatra'	
  
	
  
get	
  '/hi'	
  do	
  
	
  	
  "Hello	
  World!"	
  
end	
  
Hello World usando Sinatra

require	
  'sinatra'	
  
	
  
get	
  '/hi'	
  do	
  
	
  	
  "Hello	
  World!"	
  
end	
  
¿Todos los lenguajes de
    programación son
comparables y equivalentes?
¿Porqué existen tantos
lenguajes de programación?
¿Porqué se siguen creando
    nuevos lenguajes?
http://oreilly.com/news/graphics/prog_lang_poster.pdf
LISP (1958)

Smalltalk (1971)

   C (1972)
John McCarthy (MIT / Stanford)
Inteligencia artificial
Kernighan & Ritchie (Bell Labs)
Sistema operativo
simple y eficiente
Alan Kay (XEROX PARC)
Escritorio moderno

Ingeniería de software

Computación personal
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
Lenguage C

•  Imperativo y estructurado

•  Bajo nivel (cerca del hardware)

•  Gestión manual de la memoria

•  Orientado a maximizar el rendimiento
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
UNIX
C   SH    commands




    AWK
C   SH     AWK




    Perl
C         Smalltalk




    C++
C             Smalltalk




    Objective-C
C++          Smalltalk




      Java
Java   C++   Object Pascal




       C#
C   Perl   Java




    PHP
Smalltalk    ABC     LISP




            Python
Ejemplo de código de “ABC” (Holandés)


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	
  
Smalltalk   Perl   LISP




            Ruby
Ejemplo de código de Smalltalk


1	
  to:	
  10	
  do:	
  	
  
	
  	
  [:n	
  |	
  	
  
	
  
	
  	
  	
  	
  n	
  isOdd	
  
	
  
	
  	
  	
  	
  	
  	
  ifTrue:	
  [n	
  toStdout]	
  
	
  
	
  	
  	
  	
  	
  	
  ifFalse:	
  [n	
  toStderr]	
  
	
  
	
  	
  ]	
  
Scheme     Self
                      Java
 (LISP) (Smalltalk)




        Javascript
Prolog            LISP




         Erlang
ERICSSON AXD 301 MULTI SERVICE ATM SWITCH
99.9999999% de uptime




 ERICSSON AXD 301 MULTI SERVICE ATM SWITCH
LISP    Java     Erlang




       Clojure
Java   LISP    Erlang




       Scala
Si insisten en usar PHP…
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)
¿Cómo elegir el lenguaje de
programación y el framework de tu
     próxima aplicación web?
           Antonio Ognio
        antonio@bitzeppelin.com




                        h"p://www.bitzeppelin.com	
  

Más contenido relacionado

La actualidad más candente

Framework Laravel
Framework LaravelFramework Laravel
Framework LaravelRafael Lobo
 
DevOps & Infraestructura como código: Promesas Rotas
DevOps & Infraestructura como código: Promesas RotasDevOps & Infraestructura como código: Promesas Rotas
DevOps & Infraestructura como código: Promesas RotasRicard Clau
 
De escritorio a Javascript, nuestra experiencia desde las trincheras
De escritorio a Javascript, nuestra experiencia desde las trincherasDe escritorio a Javascript, nuestra experiencia desde las trincheras
De escritorio a Javascript, nuestra experiencia desde las trincherasRoberto Luis Bisbé
 
Lenguaje de programacion
Lenguaje de programacionLenguaje de programacion
Lenguaje de programacionOscar Sibaja
 
Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...
Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...
Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...Andrés Iturralde
 
Javascript vuela en primera clase con Firefox OS
Javascript vuela en primera clase con Firefox OSJavascript vuela en primera clase con Firefox OS
Javascript vuela en primera clase con Firefox OSRoberto Luis Bisbé
 
Pruebas Automatizadas y pruebas SOAP
Pruebas Automatizadas y pruebas SOAPPruebas Automatizadas y pruebas SOAP
Pruebas Automatizadas y pruebas SOAPIsamar Francisco
 
Node para Javeros: Conoce a tu enemigo
Node para Javeros: Conoce a tu enemigoNode para Javeros: Conoce a tu enemigo
Node para Javeros: Conoce a tu enemigoMicael Gallego
 
Java gabriela miralda
Java gabriela miraldaJava gabriela miralda
Java gabriela miraldaGabrielaM05
 
El proceso de desarrollo con herramientas Open Source
El proceso de desarrollo con herramientas Open SourceEl proceso de desarrollo con herramientas Open Source
El proceso de desarrollo con herramientas Open SourceJose Juan R. Zuñiga
 

La actualidad más candente (20)

Framework Laravel
Framework LaravelFramework Laravel
Framework Laravel
 
DevOps & Infraestructura como código: Promesas Rotas
DevOps & Infraestructura como código: Promesas RotasDevOps & Infraestructura como código: Promesas Rotas
DevOps & Infraestructura como código: Promesas Rotas
 
De escritorio a Javascript, nuestra experiencia desde las trincheras
De escritorio a Javascript, nuestra experiencia desde las trincherasDe escritorio a Javascript, nuestra experiencia desde las trincheras
De escritorio a Javascript, nuestra experiencia desde las trincheras
 
Lenguaje de programacion
Lenguaje de programacionLenguaje de programacion
Lenguaje de programacion
 
Clase 1 introd asp net
Clase 1  introd asp net Clase 1  introd asp net
Clase 1 introd asp net
 
.NET Core
.NET Core.NET Core
.NET Core
 
Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...
Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...
Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...
 
Scala en la Practica
Scala en la PracticaScala en la Practica
Scala en la Practica
 
Introducción a ASP.NET Web API
Introducción a ASP.NET Web APIIntroducción a ASP.NET Web API
Introducción a ASP.NET Web API
 
Javascript vuela en primera clase con Firefox OS
Javascript vuela en primera clase con Firefox OSJavascript vuela en primera clase con Firefox OS
Javascript vuela en primera clase con Firefox OS
 
Introducción al c#
Introducción al c#Introducción al c#
Introducción al c#
 
ASP.NET MVC Workshop Día 2
ASP.NET MVC Workshop Día 2ASP.NET MVC Workshop Día 2
ASP.NET MVC Workshop Día 2
 
Pruebas Automatizadas y pruebas SOAP
Pruebas Automatizadas y pruebas SOAPPruebas Automatizadas y pruebas SOAP
Pruebas Automatizadas y pruebas SOAP
 
Stack mean
Stack meanStack mean
Stack mean
 
Node para Javeros: Conoce a tu enemigo
Node para Javeros: Conoce a tu enemigoNode para Javeros: Conoce a tu enemigo
Node para Javeros: Conoce a tu enemigo
 
Java gabriela miralda
Java gabriela miraldaJava gabriela miralda
Java gabriela miralda
 
Laravel 4.2 pdf
Laravel 4.2 pdfLaravel 4.2 pdf
Laravel 4.2 pdf
 
Lenguajes script
Lenguajes scriptLenguajes script
Lenguajes script
 
El proceso de desarrollo con herramientas Open Source
El proceso de desarrollo con herramientas Open SourceEl proceso de desarrollo con herramientas Open Source
El proceso de desarrollo con herramientas Open Source
 
Lenguaje script
Lenguaje scriptLenguaje script
Lenguaje script
 

Similar a ¿Cómo elegir el languaje y el framework de tu próxima aplicación web?

Presentación lenguajes de programación
Presentación lenguajes de programaciónPresentación lenguajes de programación
Presentación lenguajes de programaciónzanahoria2015
 
Presentación lenguajes de programación
Presentación lenguajes de programaciónPresentación lenguajes de programación
Presentación lenguajes de programaciónzanahoria2015
 
Presentación lenguajes de programación
Presentación lenguajes de programaciónPresentación lenguajes de programación
Presentación lenguajes de programaciónzanahoria2015
 
Webminar: Java como una plataforma Poliglota
Webminar: Java como una plataforma PoliglotaWebminar: Java como una plataforma Poliglota
Webminar: Java como una plataforma PoliglotaDomingo Suarez Torres
 
Lenguajes de programación para la web
Lenguajes de programación para la webLenguajes de programación para la web
Lenguajes de programación para la webOscar Luis Cdrc
 
Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++
Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++
Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++Daniel González Cerviño
 
Estructura sintactica de los lenguajes
Estructura sintactica de los lenguajesEstructura sintactica de los lenguajes
Estructura sintactica de los lenguajesEfrain Godoy
 
Clasen1java
Clasen1javaClasen1java
Clasen1javajbersosa
 
Lenguaje java
Lenguaje javaLenguaje java
Lenguaje javaEli Diaz
 

Similar a ¿Cómo elegir el languaje y el framework de tu próxima aplicación web? (20)

Presentación lenguajes de programación
Presentación lenguajes de programaciónPresentación lenguajes de programación
Presentación lenguajes de programación
 
Presentación lenguajes de programación
Presentación lenguajes de programaciónPresentación lenguajes de programación
Presentación lenguajes de programación
 
Presentación lenguajes de programación
Presentación lenguajes de programaciónPresentación lenguajes de programación
Presentación lenguajes de programación
 
Webminar: Java como una plataforma Poliglota
Webminar: Java como una plataforma PoliglotaWebminar: Java como una plataforma Poliglota
Webminar: Java como una plataforma Poliglota
 
Guiacursophp sql
Guiacursophp sqlGuiacursophp sql
Guiacursophp sql
 
Curso introduccionphp sql
Curso introduccionphp sqlCurso introduccionphp sql
Curso introduccionphp sql
 
Lenguajes de programación para la web
Lenguajes de programación para la webLenguajes de programación para la web
Lenguajes de programación para la web
 
Java poliglota
Java poliglotaJava poliglota
Java poliglota
 
Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++
Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++
Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++
 
sesion_01-JAVA.pdf
sesion_01-JAVA.pdfsesion_01-JAVA.pdf
sesion_01-JAVA.pdf
 
Charla introducción a processing - 2010/09
Charla introducción a processing - 2010/09Charla introducción a processing - 2010/09
Charla introducción a processing - 2010/09
 
C_Basico_Parte_I.pptx
C_Basico_Parte_I.pptxC_Basico_Parte_I.pptx
C_Basico_Parte_I.pptx
 
Programación con java en Eclipse
Programación con java en EclipseProgramación con java en Eclipse
Programación con java en Eclipse
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
Estructura sintactica de los lenguajes
Estructura sintactica de los lenguajesEstructura sintactica de los lenguajes
Estructura sintactica de los lenguajes
 
JRuby al Rescate de J2EE
JRuby al Rescate de J2EEJRuby al Rescate de J2EE
JRuby al Rescate de J2EE
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Clasen1java
Clasen1javaClasen1java
Clasen1java
 
Lenguaje java
Lenguaje javaLenguaje java
Lenguaje java
 
Clase 2 Lenguajes de Programación Web
Clase 2 Lenguajes de Programación WebClase 2 Lenguajes de Programación Web
Clase 2 Lenguajes de Programación Web
 

Más de Antonio Ognio

Organizando una Hackparty
Organizando una HackpartyOrganizando una Hackparty
Organizando una HackpartyAntonio Ognio
 
Redis: servidor de estructuras de datos
Redis: servidor de estructuras de datosRedis: servidor de estructuras de datos
Redis: servidor de estructuras de datosAntonio Ognio
 
Lenguajes y frameworks para desarrollo web
Lenguajes y frameworks para desarrollo webLenguajes y frameworks para desarrollo web
Lenguajes y frameworks para desarrollo webAntonio Ognio
 
Bases de datos NoSQL - Huancayo - 2010
Bases de datos NoSQL - Huancayo - 2010Bases de datos NoSQL - Huancayo - 2010
Bases de datos NoSQL - Huancayo - 2010Antonio Ognio
 
Desarrollando con PHP en Windows
Desarrollando con PHP en WindowsDesarrollando con PHP en Windows
Desarrollando con PHP en WindowsAntonio Ognio
 
Gestor de paquetes YUM
Gestor de paquetes YUMGestor de paquetes YUM
Gestor de paquetes YUMAntonio Ognio
 
Mejorando la seguridad del servicio SSH - Hardening
Mejorando la seguridad del servicio SSH - HardeningMejorando la seguridad del servicio SSH - Hardening
Mejorando la seguridad del servicio SSH - HardeningAntonio Ognio
 
Mini-tutorial de git
Mini-tutorial de gitMini-tutorial de git
Mini-tutorial de gitAntonio Ognio
 
¿Porqué Python? ...y Django
¿Porqué Python? ...y Django¿Porqué Python? ...y Django
¿Porqué Python? ...y DjangoAntonio Ognio
 
Ubuntu Server Edition 9.04 Jaunty Jackalope
Ubuntu Server Edition 9.04 Jaunty JackalopeUbuntu Server Edition 9.04 Jaunty Jackalope
Ubuntu Server Edition 9.04 Jaunty JackalopeAntonio Ognio
 
Consejos y trucos de supervivencia para nuevos usuarios de GNU/Linux
Consejos y trucos de supervivencia para nuevos usuarios de GNU/LinuxConsejos y trucos de supervivencia para nuevos usuarios de GNU/Linux
Consejos y trucos de supervivencia para nuevos usuarios de GNU/LinuxAntonio Ognio
 

Más de Antonio Ognio (15)

Organizando una Hackparty
Organizando una HackpartyOrganizando una Hackparty
Organizando una Hackparty
 
Lean Startups
Lean StartupsLean Startups
Lean Startups
 
Redis: servidor de estructuras de datos
Redis: servidor de estructuras de datosRedis: servidor de estructuras de datos
Redis: servidor de estructuras de datos
 
Lenguajes y frameworks para desarrollo web
Lenguajes y frameworks para desarrollo webLenguajes y frameworks para desarrollo web
Lenguajes y frameworks para desarrollo web
 
Bases de datos NoSQL - Huancayo - 2010
Bases de datos NoSQL - Huancayo - 2010Bases de datos NoSQL - Huancayo - 2010
Bases de datos NoSQL - Huancayo - 2010
 
Desarrollando con PHP en Windows
Desarrollando con PHP en WindowsDesarrollando con PHP en Windows
Desarrollando con PHP en Windows
 
Gestor de paquetes YUM
Gestor de paquetes YUMGestor de paquetes YUM
Gestor de paquetes YUM
 
Twixer (english)
Twixer (english)Twixer (english)
Twixer (english)
 
Twixer
TwixerTwixer
Twixer
 
Mejorando la seguridad del servicio SSH - Hardening
Mejorando la seguridad del servicio SSH - HardeningMejorando la seguridad del servicio SSH - Hardening
Mejorando la seguridad del servicio SSH - Hardening
 
Mini-tutorial de git
Mini-tutorial de gitMini-tutorial de git
Mini-tutorial de git
 
¿Porqué Python? ...y Django
¿Porqué Python? ...y Django¿Porqué Python? ...y Django
¿Porqué Python? ...y Django
 
Ubuntu Server Edition 9.04 Jaunty Jackalope
Ubuntu Server Edition 9.04 Jaunty JackalopeUbuntu Server Edition 9.04 Jaunty Jackalope
Ubuntu Server Edition 9.04 Jaunty Jackalope
 
Consejos y trucos de supervivencia para nuevos usuarios de GNU/Linux
Consejos y trucos de supervivencia para nuevos usuarios de GNU/LinuxConsejos y trucos de supervivencia para nuevos usuarios de GNU/Linux
Consejos y trucos de supervivencia para nuevos usuarios de GNU/Linux
 
REPLs
REPLsREPLs
REPLs
 

Último

Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfvladimiroflores1
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 

Último (11)

Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 

¿Cómo elegir el languaje y el framework de tu próxima aplicación web?

  • 1. ¿Cómo elegir el lenguaje de programación y el framework de tu próxima aplicación web? Antonio Ognio antonio@bitzeppelin.com h"p://www.bitzeppelin.com  
  • 2. ¿Qué tipo de aplicación web?
  • 3. ¿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
  • 5. …aplicación web que es producto principal de una startup
  • 6. si quieres un blog típico listo mañana...
  • 7.
  • 8. ¿Cuáles son los criterios de selección para un lenguaje de programación?
  • 9. Criterios para elegir el lenguaje •  Expresividad •  Rendimiento •  Soporte para hacer metaprogramación •  Calidad de librerías disponibles •  Nivel de la comunidad
  • 10. ¿Cuáles son los criterios de selección para un framework web?
  • 11. Criterios para elegir el framework •  Expresividad •  Rendimiento •  Nivel de uso de metaprogramación •  Calidad de componentes disponibles •  Nivel de la comunidad
  • 13. Hello World en Java public  class  HelloWorld  {            public  static  void  main(String[]  args)  {                  System.out.println("Hello,  World");          }     }  
  • 14. Hello World en Ruby puts  "Hello,  World”  
  • 15. Hello World usando un Servlet 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();      }   }  
  • 16. Hello World usando Sinatra require  'sinatra'     get  '/hi'  do      "Hello  World!"   end  
  • 17. Hello World usando Sinatra require  'sinatra'     get  '/hi'  do      "Hello  World!"   end  
  • 18. ¿Todos los lenguajes de programación son comparables y equivalentes?
  • 20. ¿Porqué se siguen creando nuevos lenguajes?
  • 21.
  • 22.
  • 23.
  • 24.
  • 27. John McCarthy (MIT / Stanford)
  • 29. Kernighan & Ritchie (Bell Labs)
  • 32. Escritorio moderno Ingeniería de software Computación personal
  • 33. 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
  • 34. Lenguage C •  Imperativo y estructurado •  Bajo nivel (cerca del hardware) •  Gestión manual de la memoria •  Orientado a maximizar el rendimiento
  • 35. 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
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45. UNIX C SH commands AWK
  • 46. C SH AWK Perl
  • 47. C Smalltalk C++
  • 48. C Smalltalk Objective-C
  • 49. C++ Smalltalk Java
  • 50. Java C++ Object Pascal C#
  • 51. C Perl Java PHP
  • 52. Smalltalk ABC LISP Python
  • 53. Ejemplo de código de “ABC” (Holandés) 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  
  • 54. Smalltalk Perl LISP Ruby
  • 55. Ejemplo de código de Smalltalk 1  to:  10  do:        [:n  |              n  isOdd                ifTrue:  [n  toStdout]                ifFalse:  [n  toStderr]        ]  
  • 56. Scheme Self Java (LISP) (Smalltalk) Javascript
  • 57. Prolog LISP Erlang
  • 58.
  • 59. ERICSSON AXD 301 MULTI SERVICE ATM SWITCH
  • 60. 99.9999999% de uptime ERICSSON AXD 301 MULTI SERVICE ATM SWITCH
  • 61. LISP Java Erlang Clojure
  • 62. Java LISP Erlang Scala
  • 63.
  • 64.
  • 65. Si insisten en usar PHP…
  • 66. 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)
  • 67. ¿Cómo elegir el lenguaje de programación y el framework de tu próxima aplicación web? Antonio Ognio antonio@bitzeppelin.com h"p://www.bitzeppelin.com