Erlang/OTP: Un Mundo Concurrente, charla dada el 19 de octubre de 2013 a las 15:15h en el Track Programming de CodeMotion 2013 de Madrid. La charla hace un repaso de la base del Lenguaje Erlang, el framework OTP y las ventajas que ofrece su plataforma.
http://altenwald.org/2013/10/21/codemotion-2013/
2. ¿Quién soy?
○
Programador desde los 12 años... unos 20 años programando en: Perl,
Python, Ruby, PHP, Java, C/C++, JavaScript, Pascal, Modula-2, Basic y
Erlang.
○
Administrador de sistemas desde los 22 años... unos 10 años administrando
Windows, GNU/Linux y BSD.
○
En definitiva... DevOps.
○
Fundador de Altenwald y Freelance.
○
Contacto:
○
Blog: http://bosqueviejo.net
○
Twitter: @MRonErlang
4. ¿Qué es Erlang?
○
Nació en 1986 como una extensión de Prolog en los laboratorios Ericsson.
○
Lenguaje
○ ¿Funcional o no? ... mejor híbrido.
○ Orientado a la Concurrencia... Modelo Actor
○
Máquina Virtual o Plataforma
○ Gestión y Planificador de Procesos (soporta más de 1.000.000 procs)
○ Gestor de Memoria
○ Intérprete de comandos (shell)
○ Interfaz transparente para comunicación entre nodos
○
Características
○ Distribuido
○ Tolerante a fallos
○ Escalable
○ Cambio de código en caliente
6. Caso
○
En 2005, sistemas C++ y MySQL
○
○
○
Máx. 80 usuarios concurrentes
Crashes son muy frecuentes
En 2006, sistemas C++, Python y MySQL
○
Máx. 1.000 usuarios concurrentes
○
Requiere reinicios, el código es difícil de mantener... muchos errores
7. Caso
○
En 2005, sistemas C++ y MySQL
○
○
○
Máx. 80 usuarios concurrentes
Crashes son muy frecuentes
En 2006, sistemas C++, Python y MySQL
○
○
○
Máx. 1.000 usuarios concurrentes
Requiere reinicios, el código es difícil de mantener... muchos errores
En 2007, sistemas Erlang, Python y MySQL
○
○
○
De 20.000 a 1.000.000 de usuarios concurrentes en
De 500 a 50.000 peticiones por segundo
De 50 a 1.850 servidores
9. Progresión Informática
○
Carrera de los Hertzios vs Cores
Cuando estás en un atasco de tráfico con un Porsche, todo lo que puedes hacer es
consumir más combustible que el resto estando parado. La escalabilidad va de construir
carreteras más anchas, no coches más rápidos.
-- Steve Swartz
○
Programación Orientada a Objetos se atribuye a Alan Kay (Smalltalk)
○
Modelo Actor se atribuye a Carl Hewitt por un estudio de 1977.
13. Sintaxis de Erlang
Solo hay dos tipos de lenguajes:
aquellos de los que la gente se queja y
aquellos que nadie usa.
-- Bjarne Stroustrup
Ejemplo típico del factorial
14. Sintaxis de Erlang
Solo hay dos tipos de lenguajes:
aquellos de los que la gente se queja y
aquellos que nadie usa.
-- Bjarne Stroustrup
Ejemplo típico del factorial (C)
factorial(int f) {
int i;
for (i=f-1; i>1; i--) {
f *= i;
}
return f;
}
15. Sintaxis de Erlang
Solo hay dos tipos de lenguajes:
aquellos de los que la gente se queja y
aquellos que nadie usa.
-- Bjarne Stroustrup
Ejemplo típico del factorial (C recursivo)
factorial(int f) {
if (f <= 1) {
return f;
}
return f * factorial(f-1);
}
17. Sintaxis de Erlang
Solo hay dos tipos de lenguajes:
aquellos de los que la gente se queja y
aquellos que nadie usa.
-- Bjarne Stroustrup
Ejemplo típico del factorial (Erlang)
factorial(0) -> 0;
factorial(1) -> 1;
factorial(N) -> N * factorial(N-1).
18. Características del Lenguaje
○
Asignaciones únicas
> A = 1.
1
> A = 2.
** exception error: no match of right hand side value 2
○
Lenguaje simple: case, if, try...catch y receive.
case Value of
12 when is_integer(Value) -> "OK";
_ -> "FAIL";
end.
○
Paso de mensajes
Pid = spawn(fun micode/0),
Pid ! "hola mundo!",
receive
Any -> io:format("OK")
end.