SlideShare ist ein Scribd-Unternehmen logo
1 von 26
Historia de los lenguajes
de programación
Eduard Tomàs i Avellana
@eiximenis
Inicios...
Charles Babbage
(1791 – 1871)
Ada Lovelace
(1815 – 1852)
Grace Murray Hopper
1906 - 1992
Inventó el primer
compilador (A0) para el
UNIVAC 1 en 1951
Popularizó la idea de
lenguajes independientes
de la máquina
El primer bug
Se encontró una
arna atrapada en
una válvula del
Mark 2
Primeros ordenadores
• 1943 Colossus Mark 1,2,3
• 1946 ENIAC
• Primer Turing completo
• 1960 Circuito integrado
• 1971 Microprocesador
• 1981 IBM PC
Turing completo
Un ordenador es “turing completo” si tiene un poder computacional
equivalente a la máquina universal de Turing
• Si tuviese memória infinita
• Si tuviese almacenamiento infinito
Tesis Church-Turing: Todo algoritmo puede ser descrito mediante una
máquina universal de Turing.
Es el inicio de los ordenadores programables (arquitectura de Von
Neumann)
Lenguajes “padre”
1. Fortran (1957)  Algol, BASIC
2. ALGOL(1958)  Pascal, Modula 2, Simula
3. LISP (1958)  Clojure, Scheme
4. COBOL (1959)
5. Simula (1962, 67) Smalltalk, C++
6. CPL (1963)  C, C++, Java, C#, ObjectiveC
70’s segunda generación
• Pascal (1970)
• C (1972)
• Prolog (1972)
• ML (1973)
• Scheme (1975)
• SQL (1978)
80’s – Imperativos al poder
Se mejoran y combinan los paradigmas
inventados en las décadas 60-70.
• C++ (1980)
• MATLAB (1984)
• Eiffel (1985)
• Erlang (1986)
• Perl (1987)
90’s – Auge funcional
• Haskell (1990)
• Python (1991)
• Ruby (1993)
• CLOS (1994)
• Java (1995)
• JavaScript (1995)
• C# (2000)
Actualidad...
Mezca de paradigmas, metaprogramación,
programación distribuída...
• F# (2002)
• Groovy, Scala (2003)
• Clojure (2007)
• Dart (2011)
• Swift (2014)
Vista aérea de lenguajes
de desarrollo
Eduard Tomàs i Avellana
@eiximenis
Una clasificación de lenguajes...
Con / Sin tipos
Estáticos / Dinámicos
Fuerte / Débil
Nominal / Duck
Typing / Structural
Typing
Tipado
Imperativo
Secuencial
Estructurado
Procedural
OOP
Declarativo
Lógico
Funcional
Paradigma
Según paradigma
Imperativos secuenciales
El código se ejecuta en el orden en que está
escrito
Control de flujo muy reducido (salta x líneas, salta
a la línea x)
No hay encapsulación de ningún tipo (todas las
variables globales)
Ejemplo: Ensamblador
Imperativos estructurados
Basados en los secuenciales añaden secuencias
básicas de estructura:
Secuencias
Bucles (for, while, loop)
Condicionales (if/switch)
No hay encapsulación de ningún tipo
Ejemplo: Basic
Imperativos procedurales
Código es básicamente un conjunto de procedimientos
(funciones).
Un procedimiento concreto es el “inicial”
El programa consiste en una secuencia de llamadas a
procedimientos
Encapsulación de estado de procedimiento (variables
locales)
Ejemplo: C, Pascal
Imperativos orientados a objetos
Código consiste en un conjunto de objetos que colaboran entre ellos.
Objeto consiste en identidad, estado y funcionalidad
Encapsulación a nivel de objeto (estado)
Basados en clases (Smalltalk, Java, C#, C++, Ruby)
Usan clases para definir la funcionalidad y posibles valores de los estados de los
objetos
Basados en objetos (JavaScript)
Se definen objetos y se especifica su funcionalidad y estado ad-hoc para cada
objeto
Todos ellos soportan las características “básicas” de la OOP (herencia,
polimorfismo, ...)
Declarativos lógicos
Lenguajes basados en la lógica formal
Programa es un conjunto de sentencias en
lógica formal indicando hechos y reglas
sobre un determinado problema
Ejemplo: Prolog
Declarativos funcionales
Código basado en funciones entendiendo por
función el concepto matemático de ella: sin
cambios de estado, inmutabilidad, sin efectos
colaterales (función “pura”)
Muy basados en recursión y en tratamiento de
listas (influencia matemática)
Ejemplos: Scala, F#, LISP, Scheme, Haskell
Según tipado
Tipado estático vs dinámico
En tipado estático...
1. El tipo de una variable es fijo e inmutable
2. El tipo de una variable es conocido en algun momento antes de
usarse
En tipado dinámico...
1. El tipo de una variable es mutable
2. El tipo de una variable no tiene por que ser declarado ni conocido
de antemano
Tipado fuerte vs tipado débil
No hay definición clara sobre lo que es tipado fuerte y tipado débil.
En general decimos que un lenguaje tiene tipado débil si las reglas sobre lo
que se puede hacer con los tipos no son estrictas. Variables de distintos tipos
pueden ser mezcladas en distintas operaciones. En caso contrario decimos
que el lenguaje tiene un tipado fuerte.
Pero muchos lenguajes ofrecen comportamientos mixtos.
No debe confundirse nunca con lenguajes dinámicos o estáticos
Primera clasificación...
Tipado estático Tipado dinámico
Tipado fuerte Scala, Haskell, Java, C++, Java, C# Ruby
Tipado débil Objective-C, Visual Basic (variant) JavaScipt
Algunos lenguajes con tipado estático fuerte ofrecen características de
tipado estático débil (C# con conversiones de tipo, C/C++ con punteros
void, ...)
Algunos lenguajes con tipado estático ofrecen características de tipado
dinámico (C# con dynamic, Objective-C con id, Swift con Any, ...).
Duck typing
Paradigma típico de algunos lenguajes en el que la presencia de
determinados métodos y propiedades en un objeto determina su
validez semántica, en lugar de la relación de herencia que pueda tener
con otros objetos.
Se resume en la frase: “Si camina como un pato y grazna como un
pato, entonces es un pato”.
Muy común en lenguajes dinámicos
Structural typing
Sistema de tipos estático en el que la presencia de determinados
métodos y propiedades en una clase determina su validez semántica.
Dos tipos se consideran “iguales” si tienen las mismas propiedades y
métodos con independencia de donde se declaran.
Viene a ser el “equivalente” al Duck Typing para lenguajes con tipado
estático.
Ejemplo: C++ a través de templates, Ocaml, Scala

Weitere ähnliche Inhalte

Was ist angesagt?

Glosario Términos De JAVA
Glosario Términos De JAVAGlosario Términos De JAVA
Glosario Términos De JAVAStiven Rocha
 
Unidad5. algebra relacional. yama.may.joseluis.j4
Unidad5. algebra relacional. yama.may.joseluis.j4Unidad5. algebra relacional. yama.may.joseluis.j4
Unidad5. algebra relacional. yama.may.joseluis.j4LuiS YmAY
 
Calculo relacional diapositivas
Calculo relacional diapositivasCalculo relacional diapositivas
Calculo relacional diapositivaslelyydrogo
 
Ciclos Condicionales Y Pseint
Ciclos Condicionales Y PseintCiclos Condicionales Y Pseint
Ciclos Condicionales Y PseintMonjeOneble
 
Cuadro sinóptico estructuras de datos y su clasificación
Cuadro sinóptico   estructuras de datos y su clasificaciónCuadro sinóptico   estructuras de datos y su clasificación
Cuadro sinóptico estructuras de datos y su clasificaciónAlex Uhu Colli
 
15 Instrucciones Aritmeticas y Logicas
15 Instrucciones Aritmeticas y Logicas15 Instrucciones Aritmeticas y Logicas
15 Instrucciones Aritmeticas y LogicasJaime E. Velarde
 
Reporte de practicas android studio
Reporte de practicas android studioReporte de practicas android studio
Reporte de practicas android studioAlanGodinez19
 
Cuadro comparativo.
Cuadro comparativo.Cuadro comparativo.
Cuadro comparativo.carmenmc2017
 
Diagramas de objetos
Diagramas de objetosDiagramas de objetos
Diagramas de objetosstill01
 
Diagramas clases presentacion
Diagramas clases presentacionDiagramas clases presentacion
Diagramas clases presentacionjosebrandon24
 
Una mirada al diagrama Entidad Relación E.E.R.R. por Luicossa
Una mirada al diagrama Entidad Relación E.E.R.R. por LuicossaUna mirada al diagrama Entidad Relación E.E.R.R. por Luicossa
Una mirada al diagrama Entidad Relación E.E.R.R. por LuicossaLuis Carlos Ossa Gómez
 
LENGUAJE DE PROGRAMACION. INVESTIGACION
LENGUAJE DE PROGRAMACION. INVESTIGACIONLENGUAJE DE PROGRAMACION. INVESTIGACION
LENGUAJE DE PROGRAMACION. INVESTIGACIONKathGon1
 

Was ist angesagt? (20)

Glosario Términos De JAVA
Glosario Términos De JAVAGlosario Términos De JAVA
Glosario Términos De JAVA
 
Unidad5. algebra relacional. yama.may.joseluis.j4
Unidad5. algebra relacional. yama.may.joseluis.j4Unidad5. algebra relacional. yama.may.joseluis.j4
Unidad5. algebra relacional. yama.may.joseluis.j4
 
Semana 2 Fundamentos de Python(Ciclos y Listas)
Semana 2   Fundamentos de Python(Ciclos y Listas)Semana 2   Fundamentos de Python(Ciclos y Listas)
Semana 2 Fundamentos de Python(Ciclos y Listas)
 
Estilos Arquitectonicos-Capas
Estilos Arquitectonicos-CapasEstilos Arquitectonicos-Capas
Estilos Arquitectonicos-Capas
 
6 Curso de POO en Java - clases y objetos
6  Curso de POO en Java - clases y objetos6  Curso de POO en Java - clases y objetos
6 Curso de POO en Java - clases y objetos
 
UML
UMLUML
UML
 
Herramientas case
Herramientas caseHerramientas case
Herramientas case
 
Calculo relacional diapositivas
Calculo relacional diapositivasCalculo relacional diapositivas
Calculo relacional diapositivas
 
Iso 9126
Iso 9126Iso 9126
Iso 9126
 
Ciclos Condicionales Y Pseint
Ciclos Condicionales Y PseintCiclos Condicionales Y Pseint
Ciclos Condicionales Y Pseint
 
Cuadro sinóptico estructuras de datos y su clasificación
Cuadro sinóptico   estructuras de datos y su clasificaciónCuadro sinóptico   estructuras de datos y su clasificación
Cuadro sinóptico estructuras de datos y su clasificación
 
Introduccion a Windows Form
Introduccion a Windows FormIntroduccion a Windows Form
Introduccion a Windows Form
 
15 Instrucciones Aritmeticas y Logicas
15 Instrucciones Aritmeticas y Logicas15 Instrucciones Aritmeticas y Logicas
15 Instrucciones Aritmeticas y Logicas
 
Reporte de practicas android studio
Reporte de practicas android studioReporte de practicas android studio
Reporte de practicas android studio
 
Reglas de transformación
Reglas de transformaciónReglas de transformación
Reglas de transformación
 
Cuadro comparativo.
Cuadro comparativo.Cuadro comparativo.
Cuadro comparativo.
 
Diagramas de objetos
Diagramas de objetosDiagramas de objetos
Diagramas de objetos
 
Diagramas clases presentacion
Diagramas clases presentacionDiagramas clases presentacion
Diagramas clases presentacion
 
Una mirada al diagrama Entidad Relación E.E.R.R. por Luicossa
Una mirada al diagrama Entidad Relación E.E.R.R. por LuicossaUna mirada al diagrama Entidad Relación E.E.R.R. por Luicossa
Una mirada al diagrama Entidad Relación E.E.R.R. por Luicossa
 
LENGUAJE DE PROGRAMACION. INVESTIGACION
LENGUAJE DE PROGRAMACION. INVESTIGACIONLENGUAJE DE PROGRAMACION. INVESTIGACION
LENGUAJE DE PROGRAMACION. INVESTIGACION
 

Andere mochten auch

Lenguaje de programacion
Lenguaje de programacionLenguaje de programacion
Lenguaje de programacionElder Giron
 
MANUAL DE LENGUAJE DE PROGRAMACION
MANUAL DE LENGUAJE DE PROGRAMACIONMANUAL DE LENGUAJE DE PROGRAMACION
MANUAL DE LENGUAJE DE PROGRAMACIONmorriz1
 
Programación Orientada a Objeto
Programación Orientada a ObjetoProgramación Orientada a Objeto
Programación Orientada a Objetoismaelrubino
 
Procesamiento paralelo
Procesamiento paraleloProcesamiento paralelo
Procesamiento paralelowarrionet
 
Programación orientada al objeto
Programación orientada al objetoProgramación orientada al objeto
Programación orientada al objetoboncastell
 
Recursividad
RecursividadRecursividad
Recursividadbetzy
 
Cronologia de los Lenguajes de Programación
Cronologia de los Lenguajes de ProgramaciónCronologia de los Lenguajes de Programación
Cronologia de los Lenguajes de ProgramaciónIris Coronado
 
PARADIGMA IMPERATIVO
PARADIGMA IMPERATIVOPARADIGMA IMPERATIVO
PARADIGMA IMPERATIVOFredy Olaya
 
Normalizacion de bases de datos
Normalizacion de bases de datosNormalizacion de bases de datos
Normalizacion de bases de datosCaro_Noirgean
 
Normalización de Base de Datos
Normalización de Base de DatosNormalización de Base de Datos
Normalización de Base de DatosMayra Romero
 
Normalizacion de base de datos
Normalizacion de base de datosNormalizacion de base de datos
Normalizacion de base de datosSergio Sanchez
 
Normalización de la base de datos (3 formas normales)
Normalización de la base de datos (3 formas normales)Normalización de la base de datos (3 formas normales)
Normalización de la base de datos (3 formas normales)michell_quitian
 

Andere mochten auch (20)

Programación pararelo
Programación parareloProgramación pararelo
Programación pararelo
 
Procesamiento en paralelo
Procesamiento en paraleloProcesamiento en paralelo
Procesamiento en paralelo
 
Tema 4: Procesamiento paralelo.
Tema 4: Procesamiento paralelo.Tema 4: Procesamiento paralelo.
Tema 4: Procesamiento paralelo.
 
Lenguaje de programacion
Lenguaje de programacionLenguaje de programacion
Lenguaje de programacion
 
MANUAL DE LENGUAJE DE PROGRAMACION
MANUAL DE LENGUAJE DE PROGRAMACIONMANUAL DE LENGUAJE DE PROGRAMACION
MANUAL DE LENGUAJE DE PROGRAMACION
 
2.1 recursividad
2.1 recursividad2.1 recursividad
2.1 recursividad
 
Programación Orientada a Objeto
Programación Orientada a ObjetoProgramación Orientada a Objeto
Programación Orientada a Objeto
 
Azure functions
Azure functionsAzure functions
Azure functions
 
Procesamiento paralelo
Procesamiento paraleloProcesamiento paralelo
Procesamiento paralelo
 
Recursividad
RecursividadRecursividad
Recursividad
 
Programación orientada al objeto
Programación orientada al objetoProgramación orientada al objeto
Programación orientada al objeto
 
Recursividad
RecursividadRecursividad
Recursividad
 
Cronologia de los Lenguajes de Programación
Cronologia de los Lenguajes de ProgramaciónCronologia de los Lenguajes de Programación
Cronologia de los Lenguajes de Programación
 
Programacion Modular
Programacion ModularProgramacion Modular
Programacion Modular
 
PARADIGMA IMPERATIVO
PARADIGMA IMPERATIVOPARADIGMA IMPERATIVO
PARADIGMA IMPERATIVO
 
Normalizacion de bases de datos
Normalizacion de bases de datosNormalizacion de bases de datos
Normalizacion de bases de datos
 
Normalización de Base de Datos
Normalización de Base de DatosNormalización de Base de Datos
Normalización de Base de Datos
 
Normalizacion de base de datos
Normalizacion de base de datosNormalizacion de base de datos
Normalizacion de base de datos
 
Normalización de la base de datos (3 formas normales)
Normalización de la base de datos (3 formas normales)Normalización de la base de datos (3 formas normales)
Normalización de la base de datos (3 formas normales)
 
Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
 

Ähnlich wie Vista aérea de los lenguajes de programación

Ähnlich wie Vista aérea de los lenguajes de programación (20)

Grupo1
Grupo1Grupo1
Grupo1
 
Javaqert
JavaqertJavaqert
Javaqert
 
Javaqert
JavaqertJavaqert
Javaqert
 
Tema 1[1][1]
Tema 1[1][1]Tema 1[1][1]
Tema 1[1][1]
 
Programacion java
Programacion javaProgramacion java
Programacion java
 
Consideraciones pragmatica
Consideraciones pragmaticaConsideraciones pragmatica
Consideraciones pragmatica
 
2.1 caracteristicas de lenguajes de programación
2.1 caracteristicas de lenguajes de programación2.1 caracteristicas de lenguajes de programación
2.1 caracteristicas de lenguajes de programación
 
iNTRODUCCION AL LENGUAJE JAVA
iNTRODUCCION AL LENGUAJE  JAVAiNTRODUCCION AL LENGUAJE  JAVA
iNTRODUCCION AL LENGUAJE JAVA
 
r124736.PPT
r124736.PPTr124736.PPT
r124736.PPT
 
Java world
Java worldJava world
Java world
 
Introduccion java
Introduccion javaIntroduccion java
Introduccion java
 
Baño
BañoBaño
Baño
 
Estilos de programación y sus lenguajes
Estilos de programación y sus lenguajesEstilos de programación y sus lenguajes
Estilos de programación y sus lenguajes
 
Caracteristicas de C Sharp
Caracteristicas de C SharpCaracteristicas de C Sharp
Caracteristicas de C Sharp
 
Estructura basica de un programa
Estructura basica de un programaEstructura basica de un programa
Estructura basica de un programa
 
Curso Java Inicial 2 - Introducción y Sintaxis
Curso Java Inicial  2 - Introducción y SintaxisCurso Java Inicial  2 - Introducción y Sintaxis
Curso Java Inicial 2 - Introducción y Sintaxis
 
Diapositivas de JAVA
Diapositivas de JAVADiapositivas de JAVA
Diapositivas de JAVA
 
Presentación1
Presentación1Presentación1
Presentación1
 
Tipos de datos
Tipos de datosTipos de datos
Tipos de datos
 
¿Cómo elegir el languaje y el framework de tu próxima aplicación web?
¿Cómo elegir el languaje y el framework de tu próxima aplicación web?¿Cómo elegir el languaje y el framework de tu próxima aplicación web?
¿Cómo elegir el languaje y el framework de tu próxima aplicación web?
 

Mehr von Eduard Tomàs

Kubernetes: Do's, don'ts and why's
Kubernetes: Do's, don'ts and why'sKubernetes: Do's, don'ts and why's
Kubernetes: Do's, don'ts and why'sEduard Tomàs
 
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDA
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDAKCDS 2021- Escalando workloads serverless en Kubernetes con KEDA
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDAEduard Tomàs
 
Escalando workloads serverless en Kubernetes con Keda
Escalando workloads serverless en Kubernetes con KedaEscalando workloads serverless en Kubernetes con Keda
Escalando workloads serverless en Kubernetes con KedaEduard Tomàs
 
C#9 - Más C# que nunca
C#9 - Más C# que nuncaC#9 - Más C# que nunca
C#9 - Más C# que nuncaEduard Tomàs
 
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDACollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDAEduard Tomàs
 
Keda o como convertir Kubernetess en Serverless
Keda o como convertir Kubernetess en ServerlessKeda o como convertir Kubernetess en Serverless
Keda o como convertir Kubernetess en ServerlessEduard Tomàs
 
.NET Memoria y Rendimiento
.NET Memoria y Rendimiento.NET Memoria y Rendimiento
.NET Memoria y RendimientoEduard Tomàs
 
Containers en .NET (Dot Net 2018 - Spain)
Containers en .NET (Dot Net 2018 - Spain)Containers en .NET (Dot Net 2018 - Spain)
Containers en .NET (Dot Net 2018 - Spain)Eduard Tomàs
 
Esos contenedores, ¡a producción! (Commit Conf 2018)
Esos contenedores, ¡a producción! (Commit Conf 2018)Esos contenedores, ¡a producción! (Commit Conf 2018)
Esos contenedores, ¡a producción! (Commit Conf 2018)Eduard Tomàs
 
Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++Eduard Tomàs
 
El "peor" lenguaje del mundo
El "peor" lenguaje del mundoEl "peor" lenguaje del mundo
El "peor" lenguaje del mundoEduard Tomàs
 
Containerize a netcore application with aks
 Containerize a netcore application with aks Containerize a netcore application with aks
Containerize a netcore application with aksEduard Tomàs
 
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)Eduard Tomàs
 
Aplicaciones de consola fáciles? Más quisieramos
Aplicaciones de consola fáciles? Más quisieramosAplicaciones de consola fáciles? Más quisieramos
Aplicaciones de consola fáciles? Más quisieramosEduard Tomàs
 
Serverless with Azure Functions and CosmosDb
Serverless with Azure Functions and CosmosDbServerless with Azure Functions and CosmosDb
Serverless with Azure Functions and CosmosDbEduard Tomàs
 
Docker y todo eso... más o menos
Docker y todo eso... más o menosDocker y todo eso... más o menos
Docker y todo eso... más o menosEduard Tomàs
 
Microservices: Yes or not?
Microservices: Yes or not?Microservices: Yes or not?
Microservices: Yes or not?Eduard Tomàs
 
React native - Unleash the power of your device
React native - Unleash the power of your deviceReact native - Unleash the power of your device
React native - Unleash the power of your deviceEduard Tomàs
 
JavaScript in 2016 (Codemotion Rome)
JavaScript in 2016 (Codemotion Rome)JavaScript in 2016 (Codemotion Rome)
JavaScript in 2016 (Codemotion Rome)Eduard Tomàs
 

Mehr von Eduard Tomàs (20)

Kubernetes: Do's, don'ts and why's
Kubernetes: Do's, don'ts and why'sKubernetes: Do's, don'ts and why's
Kubernetes: Do's, don'ts and why's
 
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDA
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDAKCDS 2021- Escalando workloads serverless en Kubernetes con KEDA
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDA
 
Escalando workloads serverless en Kubernetes con Keda
Escalando workloads serverless en Kubernetes con KedaEscalando workloads serverless en Kubernetes con Keda
Escalando workloads serverless en Kubernetes con Keda
 
C#9 - Más C# que nunca
C#9 - Más C# que nuncaC#9 - Más C# que nunca
C#9 - Más C# que nunca
 
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDACollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
 
Keda o como convertir Kubernetess en Serverless
Keda o como convertir Kubernetess en ServerlessKeda o como convertir Kubernetess en Serverless
Keda o como convertir Kubernetess en Serverless
 
.NET Memoria y Rendimiento
.NET Memoria y Rendimiento.NET Memoria y Rendimiento
.NET Memoria y Rendimiento
 
Containers en .NET (Dot Net 2018 - Spain)
Containers en .NET (Dot Net 2018 - Spain)Containers en .NET (Dot Net 2018 - Spain)
Containers en .NET (Dot Net 2018 - Spain)
 
Esos contenedores, ¡a producción! (Commit Conf 2018)
Esos contenedores, ¡a producción! (Commit Conf 2018)Esos contenedores, ¡a producción! (Commit Conf 2018)
Esos contenedores, ¡a producción! (Commit Conf 2018)
 
Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++
 
El "peor" lenguaje del mundo
El "peor" lenguaje del mundoEl "peor" lenguaje del mundo
El "peor" lenguaje del mundo
 
Containerize a netcore application with aks
 Containerize a netcore application with aks Containerize a netcore application with aks
Containerize a netcore application with aks
 
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
 
Aplicaciones de consola fáciles? Más quisieramos
Aplicaciones de consola fáciles? Más quisieramosAplicaciones de consola fáciles? Más quisieramos
Aplicaciones de consola fáciles? Más quisieramos
 
Serverless with Azure Functions and CosmosDb
Serverless with Azure Functions and CosmosDbServerless with Azure Functions and CosmosDb
Serverless with Azure Functions and CosmosDb
 
Docker y todo eso... más o menos
Docker y todo eso... más o menosDocker y todo eso... más o menos
Docker y todo eso... más o menos
 
Microservices: Yes or not?
Microservices: Yes or not?Microservices: Yes or not?
Microservices: Yes or not?
 
ASP.NET MVC Core
ASP.NET MVC CoreASP.NET MVC Core
ASP.NET MVC Core
 
React native - Unleash the power of your device
React native - Unleash the power of your deviceReact native - Unleash the power of your device
React native - Unleash the power of your device
 
JavaScript in 2016 (Codemotion Rome)
JavaScript in 2016 (Codemotion Rome)JavaScript in 2016 (Codemotion Rome)
JavaScript in 2016 (Codemotion Rome)
 

Kürzlich hochgeladen

Instalacion de servicios windows, configuracion y aplicacion.
Instalacion de servicios windows, configuracion y aplicacion.Instalacion de servicios windows, configuracion y aplicacion.
Instalacion de servicios windows, configuracion y aplicacion.CZSOTEC
 
Webinar Resolucion2335 de 2023 Kubapp.pdf
Webinar Resolucion2335 de 2023 Kubapp.pdfWebinar Resolucion2335 de 2023 Kubapp.pdf
Webinar Resolucion2335 de 2023 Kubapp.pdfAnaRosaMontenegro
 
Se realiza instalacion y configuraacion servicios Windows
Se realiza instalacion y configuraacion servicios WindowsSe realiza instalacion y configuraacion servicios Windows
Se realiza instalacion y configuraacion servicios WindowsCZSOTEC
 
Delitos informáticos en Slideshare.pptx
Delitos informáticos en  Slideshare.pptxDelitos informáticos en  Slideshare.pptx
Delitos informáticos en Slideshare.pptxmaykolmagallanes012
 
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptxMacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptxcalzadillasluis134
 
SQL server Analysis Services & SQL Server Reporting Services.pptx
SQL server Analysis Services & SQL Server Reporting Services.pptxSQL server Analysis Services & SQL Server Reporting Services.pptx
SQL server Analysis Services & SQL Server Reporting Services.pptxRAMIROANTONIOGALINDO
 
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVOSISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVOELIAMARYTOVARFLOREZD
 

Kürzlich hochgeladen (7)

Instalacion de servicios windows, configuracion y aplicacion.
Instalacion de servicios windows, configuracion y aplicacion.Instalacion de servicios windows, configuracion y aplicacion.
Instalacion de servicios windows, configuracion y aplicacion.
 
Webinar Resolucion2335 de 2023 Kubapp.pdf
Webinar Resolucion2335 de 2023 Kubapp.pdfWebinar Resolucion2335 de 2023 Kubapp.pdf
Webinar Resolucion2335 de 2023 Kubapp.pdf
 
Se realiza instalacion y configuraacion servicios Windows
Se realiza instalacion y configuraacion servicios WindowsSe realiza instalacion y configuraacion servicios Windows
Se realiza instalacion y configuraacion servicios Windows
 
Delitos informáticos en Slideshare.pptx
Delitos informáticos en  Slideshare.pptxDelitos informáticos en  Slideshare.pptx
Delitos informáticos en Slideshare.pptx
 
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptxMacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
 
SQL server Analysis Services & SQL Server Reporting Services.pptx
SQL server Analysis Services & SQL Server Reporting Services.pptxSQL server Analysis Services & SQL Server Reporting Services.pptx
SQL server Analysis Services & SQL Server Reporting Services.pptx
 
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVOSISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
 

Vista aérea de los lenguajes de programación

  • 1. Historia de los lenguajes de programación Eduard Tomàs i Avellana @eiximenis
  • 2. Inicios... Charles Babbage (1791 – 1871) Ada Lovelace (1815 – 1852)
  • 3. Grace Murray Hopper 1906 - 1992 Inventó el primer compilador (A0) para el UNIVAC 1 en 1951 Popularizó la idea de lenguajes independientes de la máquina
  • 4. El primer bug Se encontró una arna atrapada en una válvula del Mark 2
  • 5. Primeros ordenadores • 1943 Colossus Mark 1,2,3 • 1946 ENIAC • Primer Turing completo • 1960 Circuito integrado • 1971 Microprocesador • 1981 IBM PC
  • 6. Turing completo Un ordenador es “turing completo” si tiene un poder computacional equivalente a la máquina universal de Turing • Si tuviese memória infinita • Si tuviese almacenamiento infinito Tesis Church-Turing: Todo algoritmo puede ser descrito mediante una máquina universal de Turing. Es el inicio de los ordenadores programables (arquitectura de Von Neumann)
  • 7. Lenguajes “padre” 1. Fortran (1957)  Algol, BASIC 2. ALGOL(1958)  Pascal, Modula 2, Simula 3. LISP (1958)  Clojure, Scheme 4. COBOL (1959) 5. Simula (1962, 67) Smalltalk, C++ 6. CPL (1963)  C, C++, Java, C#, ObjectiveC
  • 8. 70’s segunda generación • Pascal (1970) • C (1972) • Prolog (1972) • ML (1973) • Scheme (1975) • SQL (1978)
  • 9. 80’s – Imperativos al poder Se mejoran y combinan los paradigmas inventados en las décadas 60-70. • C++ (1980) • MATLAB (1984) • Eiffel (1985) • Erlang (1986) • Perl (1987)
  • 10. 90’s – Auge funcional • Haskell (1990) • Python (1991) • Ruby (1993) • CLOS (1994) • Java (1995) • JavaScript (1995) • C# (2000)
  • 11. Actualidad... Mezca de paradigmas, metaprogramación, programación distribuída... • F# (2002) • Groovy, Scala (2003) • Clojure (2007) • Dart (2011) • Swift (2014)
  • 12. Vista aérea de lenguajes de desarrollo Eduard Tomàs i Avellana @eiximenis
  • 13. Una clasificación de lenguajes... Con / Sin tipos Estáticos / Dinámicos Fuerte / Débil Nominal / Duck Typing / Structural Typing Tipado Imperativo Secuencial Estructurado Procedural OOP Declarativo Lógico Funcional Paradigma
  • 15. Imperativos secuenciales El código se ejecuta en el orden en que está escrito Control de flujo muy reducido (salta x líneas, salta a la línea x) No hay encapsulación de ningún tipo (todas las variables globales) Ejemplo: Ensamblador
  • 16. Imperativos estructurados Basados en los secuenciales añaden secuencias básicas de estructura: Secuencias Bucles (for, while, loop) Condicionales (if/switch) No hay encapsulación de ningún tipo Ejemplo: Basic
  • 17. Imperativos procedurales Código es básicamente un conjunto de procedimientos (funciones). Un procedimiento concreto es el “inicial” El programa consiste en una secuencia de llamadas a procedimientos Encapsulación de estado de procedimiento (variables locales) Ejemplo: C, Pascal
  • 18. Imperativos orientados a objetos Código consiste en un conjunto de objetos que colaboran entre ellos. Objeto consiste en identidad, estado y funcionalidad Encapsulación a nivel de objeto (estado) Basados en clases (Smalltalk, Java, C#, C++, Ruby) Usan clases para definir la funcionalidad y posibles valores de los estados de los objetos Basados en objetos (JavaScript) Se definen objetos y se especifica su funcionalidad y estado ad-hoc para cada objeto Todos ellos soportan las características “básicas” de la OOP (herencia, polimorfismo, ...)
  • 19. Declarativos lógicos Lenguajes basados en la lógica formal Programa es un conjunto de sentencias en lógica formal indicando hechos y reglas sobre un determinado problema Ejemplo: Prolog
  • 20. Declarativos funcionales Código basado en funciones entendiendo por función el concepto matemático de ella: sin cambios de estado, inmutabilidad, sin efectos colaterales (función “pura”) Muy basados en recursión y en tratamiento de listas (influencia matemática) Ejemplos: Scala, F#, LISP, Scheme, Haskell
  • 22. Tipado estático vs dinámico En tipado estático... 1. El tipo de una variable es fijo e inmutable 2. El tipo de una variable es conocido en algun momento antes de usarse En tipado dinámico... 1. El tipo de una variable es mutable 2. El tipo de una variable no tiene por que ser declarado ni conocido de antemano
  • 23. Tipado fuerte vs tipado débil No hay definición clara sobre lo que es tipado fuerte y tipado débil. En general decimos que un lenguaje tiene tipado débil si las reglas sobre lo que se puede hacer con los tipos no son estrictas. Variables de distintos tipos pueden ser mezcladas en distintas operaciones. En caso contrario decimos que el lenguaje tiene un tipado fuerte. Pero muchos lenguajes ofrecen comportamientos mixtos. No debe confundirse nunca con lenguajes dinámicos o estáticos
  • 24. Primera clasificación... Tipado estático Tipado dinámico Tipado fuerte Scala, Haskell, Java, C++, Java, C# Ruby Tipado débil Objective-C, Visual Basic (variant) JavaScipt Algunos lenguajes con tipado estático fuerte ofrecen características de tipado estático débil (C# con conversiones de tipo, C/C++ con punteros void, ...) Algunos lenguajes con tipado estático ofrecen características de tipado dinámico (C# con dynamic, Objective-C con id, Swift con Any, ...).
  • 25. Duck typing Paradigma típico de algunos lenguajes en el que la presencia de determinados métodos y propiedades en un objeto determina su validez semántica, en lugar de la relación de herencia que pueda tener con otros objetos. Se resume en la frase: “Si camina como un pato y grazna como un pato, entonces es un pato”. Muy común en lenguajes dinámicos
  • 26. Structural typing Sistema de tipos estático en el que la presencia de determinados métodos y propiedades en una clase determina su validez semántica. Dos tipos se consideran “iguales” si tienen las mismas propiedades y métodos con independencia de donde se declaran. Viene a ser el “equivalente” al Duck Typing para lenguajes con tipado estático. Ejemplo: C++ a través de templates, Ocaml, Scala