0% encontró este documento útil (0 votos)
9 vistas30 páginas

Tutorial de Programación en Erlang

Cargado por

soporteshalomsas
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
9 vistas30 páginas

Tutorial de Programación en Erlang

Cargado por

soporteshalomsas
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

TUTORIAL ERLANG

Programación Concurrente

Integrantes:
● Julián Alexander Manosalva Manrique
● Juan Sebastián Pachón Carvajal
● David Alexander Zambrano Bohórquez
Contenido

01 02
Primeros pasos Tour por Erlang

03 04
Particularidades de Ejemplos
Erlang
01
Primeros pasos
Windows
Instalación
Instalador x86/x64 desde [Link]

Linux & macOS - Pre-built


For Homebrew on macOS: brew install erlang
For MacPorts on macOS: port install erlang
For Ubuntu and Debian: apt-get install erlang
For Fedora: yum install erlang
For ArchLinux and Manjaro: pacman -S erlang
For FreeBSD: pkg install erlang

Código fuente
./configure && make && make install
IDEs

Intellij IDEA VS Code


Erlang Plugin Erlang/OTP Erlang-LS
02
Tour por Erlang
Generalidades
Creación Aplicaciones
Diseñado y creado por la compañía Erlang está diseñado y concebido
Ericsson el 1986 y cedido como para: sistemas distribuidos, sistemas
código de uso libre en 1998. en tiempo real, sistemas tolerantes a
Inicialmente concebido para fallos y aplicaciones de alta
aplicaciones de telefonía. disponibilidad y de uso continuo.

Características Let It Crash


Se distingue por manejar datos La filosofía “let it crash" de Erlang
inmutables, contar con pattern consiste en permitir que los errores
matching y, sobre todo, simplificar la ocurran y sean manejados
creación, administración y adecuadamente para lograr sistemas
comunicación de procesos. más robustos y tolerantes a fallos.
Introducción

Funcional Tipos Dinámicos Paso de Mensajes


Los programas son Los tipos de las variables Los procesos se pueden
composiciones de dependen del contenido comunicar en red a
funciones través de paso de
mensajes
Introducción

Lenguaje Modular
Un módulo por fichero, estos deben tener el mismo nombre.
Es necesario definir el nombre, los ficheros que importa, las
funciones que exporta y su implementación.

Se pueden indicar otros metadatos como autor.

Cada módulo se compila por separado

Las funciones se invocan desde el exterior usando la siguiente


sintaxis modulo:func(args)
Tipos de Datos

hola
42 3.14
ok
-10 -2.71828
'Átomo con espacios'

Enteros Flotantes Átomos


Los enteros se representan Los flotantes se representan Se escriben iniciando con
simplemente escribiendo el escribiendo el número con una minúscula o entre
número, ya sea positivo o un punto decimal comillas simples si contienen
negativo. caracteres especiales
Tipos de Datos

[1, 2, 3]
"Hola, mundo!" {1, hola, 3.14}
[hola, mundo]

Strings Tuplas Listas


Las cadenas de caracteres se Las tuplas se representan Se representan escribiendo
representan entre comillas escribiendo sus elementos sus elementos entre
dobles entre llaves corchetes:
Tipos de Datos

#{name=>adam,age=>24,da -record(person, {name, true or false.


te=>{july,29}}. age}). true

Mapas Record Booleano


Los mapas son pares Similar a una struct en C. Puede tener los valores de
llave-valor y se representan Se declaran con la palabra true o false
entre llaves iniciando con # reservada record
Variables

X Emisor Msg

Empiezan con
mayúscula

Anónima Asignación
No-destructiva
Se usa el símbolo _ para Las variables solo se
denotar variables pueden asignar una
anónimas única vez
Funciones
Parámetros Retorno
Posee un número fijo de En Erlang, no se utiliza explícitamente
parámetros. Si definimos otra la palabra clave "return". En su lugar,
función con el mismo nombre y el valor de la última expresión
distinto número de parámetros, se evaluada en una función se considera
trata de una función distinta. el resultado de esa función.

Cláusulas Ejemplo Cláusulas


Proporcionan una forma de manejar
diferentes casos o condiciones en
una función y especifica qué debe
hacer la función cuando se cumplen
ciertos patrones o condiciones.
Funciones
Patrones Ejemplo Patrones
El patrón define la estructura y los
valores que se esperan en los
argumentos de entrada de la
función. Puede contener variables,
literales o combinaciones de ellos.

Guardas Ejemplo Guardas


Una guarda es una expresión lógica
opcional que se evalúa antes de que
se ejecute la cláusula. Si la guarda
se evalúa como verdadera, se
ejecuta la cláusula correspondiente.
Funciones

Expresiones Ejemplo Expresiones


Una expresión especifica el
resultado que se devuelve cuando la
cláusula es evaluada correctamente.
Puede ser cualquier expresión válida
en Erlang.
Estructuras de control

If-Else Sintaxis If-Else


La estructura If-Else nos permite
tomar decisiones basadas en una
condición. En esta estructura, se
evalúan las condiciones en orden
hasta encontrar una que sea
verdadera.

La expresión asociada a esa


condición se evalúa y se devuelve
como resultado. Si ninguna
condición es verdadera, se evalúa
la expresión asociada a true.
Estructuras de control

Case Sintaxis Case


La estructura Case nos permite
evaluar múltiples patrones y ejecutar
diferentes acciones en función de
esos patrones.

En esta estructura, la expresión se


evalúa y se compara con cada patrón
en orden. Cuando se encuentra un
patrón que coincide, se ejecuta la
acción asociada a ese patrón. Si
ningún patrón coincide, se produce
un error.
Estructuras de control
Iteración mediante Ejemplo Recursividad
recursividad
Muchas definiciones pueden expresarse Factorial: El factorial de 0 es 1 (caso base),
de forma recursiva mediante: y el factorial de N es N*factorial de N-1
● Un caso base (caso general).
● Un caso general, que se define
mediante una expresión con casos
más simples
Se expresan directamente como una
colección de cláusulas (el caso general al
final). Toda cláusula termina en ‘; ’,
excepto la última, que finaliza en ‘.’
Funciones Built-In
Disponibilidad Algunas funciones
Las funciones Built-In, también conocidas Algunas características comunes de las
como funciones incorporadas o funciones Built-In en Erlang:
predefinidas, son funciones que están ● Funciones matemáticas
integradas en el propio lenguaje Erlang y ● Funciones de listas
están disponibles sin necesidad de ● Funciones de cadenas de
importar librerías externas. caracteres
● Funciones de manejo de tiempos
Estas funciones proporcionan una amplia
variedad de características y Además, el lenguaje proporciona muchas
funcionalidades útiles para el desarrollo más funciones integradas para diversas
de aplicaciones en Erlang. tareas, como operaciones de bits,
manipulación de tuplas, manejo de
excepciones, entre otros.
Reducción y unificación
Actualizaciones Semántica write-once
En Erlang, se utiliza un enfoque llamado En Erlang, se sigue una semántica
"cambio sobre estructuras" para manejar “write-once", lo que significa que una vez
las actualizaciones de software. que un valor se asigna a una variable, no
se puede modificar.
Esto significa que, en lugar de reemplazar
completamente una estructura de datos Esta propiedad de inmutabilidad
cuando se realiza una actualización, se simplifica el razonamiento sobre el
comparten la mayor parte de los comportamiento de un programa, ya que
elementos entre diferentes versiones. se evitan los efectos secundarios
inesperados causados por cambios en los
Esto es posible debido a la inmutabilidad valores de las variables.
de los datos en Erlang.
Reducción y unificación
Pattern-matching Higher-order functions
En Erlang, el pattern-matching es una En Erlang, las funciones son ciudadanos
característica poderosa que permite de primera clase, lo que significa que se
hacer coincidir valores con patrones pueden pasar como argumentos a otras
específicos. funciones y también se pueden devolver
como resultados.
Esto permite una mayor flexibilidad en la Esto se conoce como funciones de orden
concordancia de patrones y la toma de superior o “higher-order functions".
decisiones basada en condiciones
específicas. Este concepto permite una programación
más modular y flexible, ya que las
funciones se pueden combinar y
componer de manera dinámica.
03
Particularidades
de Erlang
¿Qué lo hace especial para la concurrencia?

Es un lenguaje de programación funcional que también dispone


de un entorno de ejecución.
Tiene soporte integrado para

● Concurrencia
● Distribución
● Tolerancia a fallos

Se desarrolló originalmente para ser utilizado en varios sistemas


de telecomunicaciones grandes de Ericsson en 1986.
¿Por qué Erlang?

Debe ser fácilmente Debe responder a los


distribuible a través de una Debe ser escalable. usuarios dentro de unos
red de ordenadores. plazos estrictos.

Debe gestionar un gran Debe ser tolerante a fallos Debe poder actualizarse y
número de actividades de software y hardware. reconfigurar fácilmente sin
simultáneas. tener que detenerse
Concurrencia en Erlang
Erlang

Es fácil crear hilos de ejecución Permite que estos hilos se En Erlang, cada hilo de
paralelos comuniquen entre sí ejecución se denomina
proceso.
Procesos

Spawn Sintaxis Spawn


Crea un nuevo proceso
concurrente que evalúa funciones. Funciones anónimas
El nuevo proceso se ejecuta en
paralelo con la llamada.
Teniendo en cuenta la forma en la
que se definan las funciones
dentro del código, la sintaxis
puede ser de dos maneras Definiendo una función
diferentes.
Comunicación entre hilos

“!” y receive…end Sintaxis


Para la comunicación entre hilos
existen dos sentencias, una para
enviar el mensaje y otra para
recibir.

“!” envía un mensaje al proceso


con identificador Pid. El envío de
mensajes es asíncrono.

“Receive…end” recibe un mensaje


que ha sido enviado a un proceso.
04
Ejemplos
Referencias
Consultas
● Tutorial Erlang
● Getting Started with Erlang
● Erlang. Programación Distribuida y su Aplicación Bajo Internet.
● Erlang. Perdiendo el miedo a la programación concurrente.

Íconos
● Freepik

Enlace al notebook trabajado


También podría gustarte