Download Lenguajes de programación

Document related concepts

Erlang wikipedia , lookup

Oz (lenguaje de programación) wikipedia , lookup

Programación funcional wikipedia , lookup

Scala (lenguaje de programación) wikipedia , lookup

Rust (lenguaje de programación) wikipedia , lookup

Transcript
MEI – SEiU Q1 2012/2013
Felipe Caicedo
Daniel Yuste
Contenido
• ¿Qué es un Sistema Crítico?
• Requisitos de un lenguaje para SC
• Lenguajes de programación para SC
• Demo-Comparativa
• Conclusiones
2
¿Qué es un sistema crítico?
•Sistema cuyo fallo o mal funcionamiento puede dar lugar a:
oDaños:
Personales
Ambientales
oPérdidas
•No se puede detener ante un fallo o error del sistema
¿Qué es?
Requisitos de
un lenguaje
Lenguajes de
programación
DemoComparativa
Conclusiones
3
Características de un SC
• Seguro (safety)
• Fiable (reliability)
• Protegido
• Redundante
•Estable
¿Qué es?
Requisitos de
un lenguaje
Lenguajes de
programación
DemoComparativa
Conclusiones
4
Características de un SC
• Prevención y detección
de defectos
• Detección de defectos
• Tolerante a defectos
•Determinista
¿Qué es?
Requisitos de
un lenguaje
Lenguajes de
programación
DemoComparativa
Conclusiones
5
Requisitos de un lenguaje para SC
• Facilidad para verificarlo
(análisis estático y dinámico)
• Robusto
• Redundante
• Mantenibilidad
• Concurrente
• Entorno de programación
Capaz de implementar las
características de los SC
¿Qué es?
Requisitos de
un lenguaje
Lenguajes de
programación
DemoComparativa
Conclusiones
6
Lenguajes de programación
SPARK
ADA
(SPADE ADA
Kernel)
(Advanced Data
Analysis)
C/C++
MISRA
C++
Erlang
Eiffel
¿Qué es?
Requisitos de
un lenguaje
Haskell
(Ericsson
LANGuage)
Lenguajes de
programación
DemoComparativa
Conclusiones
7
Lenguajes de programación
ADA
• Diseño de software robusto y fiable
• Énfasis en la reutilización del software
• Ada 83 (basado en objetos)
•
•
•
•
•
•
•
Legibilidad
Tipado estricto
Construcción de grandes programas
Manejo de excepciones y verificaciones en tiempo de ejecución
Abstracción de datos
Procesamiento paralelo
Unidades genéricas
• Ada 95 (orientado a objetos)
• Herencia
• Interface con otros lenguajes
¿Qué es?
Requisitos de
un lenguaje
Lenguajes de
programación
DemoComparativa
Conclusiones
8
Lenguajes de programación
ADA
• Es uno de los mas utilizados (recomendado por muchos
estándares de seguridad)
• Grupo de trabajo ISO que se encarga de definir y revisar las
directrices para su uso
• Semántica bien definida
• Sintaxis con grado de redundancia elevado
¿Qué es?
Requisitos de
un lenguaje
Lenguajes de
programación
DemoComparativa
Conclusiones
9
Lenguajes de programación
ADA
with Ada.Text_IO, Ada.Strings.Unbounded;
use Ada.Text_IO, , Ada.Strings.Unbounded;
procedure Hola_Mundo is
Rist : Unbounded_String :=
To_Unbounded_String
("¡Hola, mundo!");
begin
Put (Rist);
end
Hola_Mundo;
¿Qué es?
Requisitos de
un lenguaje
Lenguajes de
programación
DemoComparativa
Conclusiones
10
Lenguajes de programación
SPARK
• Herramientas de análisis y simple
• Comprueba propiedades complejas de su código
• Herramientas interactivas durante el desarrollo
• Ejecutar análisis en programas incompletos
¿Qué es?
Requisitos de
un lenguaje
Lenguajes de
programación
DemoComparativa
Conclusiones
11
Lenguajes de programación
SPARK
• Es un subconjunto de ADA
• Elimina características consideradas peligrosas
en los sistemas críticos
• Proporciona herramientas para el análisis del
flujo de datos e información
¿Qué es?
Requisitos de
un lenguaje
Lenguajes de
programación
DemoComparativa
Conclusiones
12
Lenguajes de programación
SPARK
with Spark_IO;
--# inherit Spark_IO;
--# main_program;
procedure Hola_Mundo is
--# global in out Spark_IO.Outputs;
begin
spark_IO.Put_Line(Spark_IO.Standard_
Output, “Hola Mundo!”, o);
end Hola_Mundo;
¿Qué es?
Requisitos de
un lenguaje
Lenguajes de
programación
DemoComparativa
Conclusiones
13
Lenguajes de programación
Erlang
•Es un lenguaje de programación concurrente
•Es un lenguaje funcional, con evaluación
estricta, asignación única, y tipado dinámico
•Fue diseñado en la compañía Ericsson para realizar
aplicaciones distribuidas, tolerantes a fallos, soft-realtime y de funcionamiento ininterrumpido
¿Qué es?
Requisitos de
un lenguaje
Lenguajes de
programación
DemoComparativa
Conclusiones
14
Lenguajes de programación
Erlang
• Potente conjunto de primitivas para crear
procesos y comunicar entre los mismos
• Cambio en caliente de código
• Creación y gestión de procesos es trivial
¿Qué es?
Requisitos de
un lenguaje
Lenguajes de
programación
DemoComparativa
Conclusiones
15
Lenguajes de programación
Erlang
-module(hola2).
-export([hola_mundo/0, saludar/0, saludar/1]).
hola_mundo() ->
io:format("Hola mundo~n"). saludar(Nombre)
->
io:format("Hola ~s ~n ", [Nombre] ).
saludar() ->
saludar("tu").
¿Qué es?
Requisitos de
un lenguaje
Lenguajes de
programación
DemoComparativa
Conclusiones
16
Lenguajes de programación
Eiffel
• Lenguaje Orientado a objetos
• Centrado en la construcción de software robusto
• Permite diseño por contrato
• Soporta herencia
• Implementa administración automática de memoria
¿Qué es?
Requisitos de
un lenguaje
Lenguajes de
programación
DemoComparativa
Conclusiones
17
Lenguajes de programación
Eiffel
• Protección estática contra referencias nulas
• SCOOP (Simple Concurrent-Oriented Programming)
• Tiene la intención de promover una respuesta sencilla,
extensible, reutilizable y confiable
• Proporciona técnicas de optimización extensas
¿Qué es?
Requisitos de
un lenguaje
Lenguajes de
programación
DemoComparativa
Conclusiones
18
Lenguajes de programación
Eiffel
class HELLO_WORLD
create
make
feature
make is
do
io.put_string ("Hola Mu
ndo!%N")
end
end
¿Qué es?
Requisitos de
un lenguaje
Lenguajes de
programación
DemoComparativa
Conclusiones
19
Demo-Comparativa
¿Qué es?
Requisitos de
un lenguaje
Lenguajes de
programación
DemoComparativa
Conclusiones
20
Conclusiones
ADA
SPARKS
Erlang
Eiffel
Robusto
Mucho
Mucho
Normal
Normal
Redundante
Mucho
Mucho
Mucho
Mucho
Concurrente
Mucho
Mucho
Mucho
Normal
Verificación
Baja
Mucho
Mucho
Mucho
Mantenibilidad
Mucho
Mucho
Mucho
Mucho
Entorno de
programación
Mucho
Mucho
Normal
Mucho
¿Qué es?
Requisitos de
un lenguaje
Lenguajes de
programación
DemoComparativa
Conclusiones
21
Gracias
22