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

Post on 13-Jun-2015

2.010 views 1 download

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

¿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

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

Hello World en Java

puts  "Hello,  World”  

Hello World en Ruby

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

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

Hello World usando Sinatra

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

Hello World usando Sinatra

¿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

AWK

C SH UNIX

commands

Perl

C SH AWK

C++

C Smalltalk

Objective-C

C Smalltalk

Java

C++ Smalltalk

C#

Java C++ Object Pascal

PHP

C Perl Java

Python

Smalltalk ABC LISP

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)

Ruby

Smalltalk Perl LISP

1  to:  10  do:        [:n  |              n  isOdd                ifTrue:  [n  toStdout]                ifFalse:  [n  toStderr]        ]  

Ejemplo de código de Smalltalk

Javascript

Scheme (LISP)

Self (Smalltalk) Java

Erlang

Prolog LISP

ERICSSON AXD 301 MULTI SERVICE ATM SWITCH

ERICSSON AXD 301 MULTI SERVICE ATM SWITCH

99.9999999% de uptime

Clojure

LISP Java Erlang

Scala

Java LISP Erlang

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