Clase02 paradigmas

549 visualizaciones

Publicado el

0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
549
En SlideShare
0
De insertados
0
Número de insertados
2
Acciones
Compartido
0
Descargas
0
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Clase02 paradigmas

  1. 1. Lenguajes y Paradigmas de ProgramaciónClase 2: Lenguajes de Programación
  2. 2. Índice Historia de los lenguajes de programación Características de los lenguajes de programación Paradigmas de programación
  3. 3. Lenguajes más importantes1957 FORTRAN 1972 C 1987 Perl1958 ALGOL 1975 Pascal 1988 Tcl/Tk1960 Lisp 1975 Scheme 1990 Haskell1960 COBOL 1975 Modula 1991 Python1962 APL 1983 Smalltalk-80 1993 Ruby1962 SIMULA 1983 Objective-C 1995 Java1964 BASIC 1983 Ada 1995 PHP1964 PL/I 1986 C++ 2000 C#1970 Prolog 1986 Eiffel enlace
  4. 4. Lista completa Diagrama completo Póster de OReilly
  5. 5. Influencias en la evolución de los LP Recursos del ordenador Aplicaciones Métodos de programación Estudios teóricos Estandarización
  6. 6. Lenguajes y sus influencias a finalesdel siglo XX
  7. 7. ¿Por qué estudiar lenguajes deprogramación? Mejora el uso de los lenguajes de programación Incrementa el vocabulario de los elementos de programación Permite una mejor elección del lenguaje de programación Mejora la habilidad para desarrollar programas efectivos y eficientes Facilita el aprendizaje de un nuevo lenguaje de programación Facilita el diseño de nuevos lenguajes de programación
  8. 8. Proyectos activos en la actualidad freshmeat.net
  9. 9. Historia en expansión Timeline of Programming Languages ¿Quién diseña un lenguaje de programación? Lenguaje de Programación Ruby 1993 Yukihiro Matsumoto Más potente que Perl Más OO que Phyton P. Funcional e Imperativa balanceada Expansión: grupos de noticias
  10. 10. ¿Podemos conocer TODOS los lenguajes de programación?
  11. 11. XML no es un lenguaje deprogramación XML es un lenguaje de representación de datos No tiene semántica asociada <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE people_list SYSTEM "example.dtd"> <people_list> <person> <name>Fred Bloggs</name> <birthdate>27/11/2008</birthdate> <gender>Male</gender> </person> <person> </people_list>
  12. 12. ¿Los lenguajes visuales son lenguajes deprogramación? Son lenguajes muy interesantes pero no todos son lenguajes de programación. Por ejemplo, un lenguaje para definir animaciones multimedia no es un LP.Scratch : un lenguaje visual para niños
  13. 13. ¿Qué es un lenguaje deprogramación?Definición de la Encyclopedia of Computer Science:"A programming language is a set of characters, rulesfor combining them, and rules specifying their effectswhen executed by a computer, which have the followingfour characteristics: 1. It requires no knowledge of machine code on the part of the user 2. It has machine independence 3. Is translated into machine language 4. Employs a notation that is closer to that of the specific problem being solved than is machine code"
  14. 14. ¿Qué es un lenguaje deprogramación?Definición de Abelson y Sussman:"A powerful programming language is morethan just a means for instructing a computer toperform tasks. The language also serves as aframework within which we organize our ideasabout processes. Thus, when we describe alanguage, we should pay particular attention tothe means that the language provides forcombining simple ideas to form more complexideas."
  15. 15. Características de un lenguaje deprogramación Define un proceso que se ejecuta en un computador Es de alto nivel, cercano a los problemas que se quieren resolver (abstracción) Permite construir nuevas abstracciones que se adapten al dominio que se programa
  16. 16. Elementos de los LP Expresiones primitivas, que representan las entidades más simples del lenguaje Mecanismos de combinación con los que se construyen elementos compuestos a partir de elementos más simples Mecanismos de abstracción con los que dar nombre a los elementos compuestos y manipularlos como unidades
  17. 17. Abstracción La abstracción es la herramienta/habilidad fundamental de los informáticos. Los informáticos usan abstracciones: Arrays, grafos, estructuras de datos, ... Protocolos: TCP/IP, HTTP, llamadas a procedimiento remoto Servicios del sistema operativo: dispositivos, memoria, ficheros Los informáticos crean nuevas abstracciones: Nuevas APIs para los programas Modelos de datos que simulan la realidad (aplicaciones de gestión, inventario, matriculación, etc.) Nuevos interfaces de usuario (iPhone, web, etc.)
  18. 18. Abstracción Según la Wikipedia:"Abstraction is the process or result of generalization byreducing the information content of a concept or an observablephenomenon, typically in order to retain only information whichis relevant for a particular purpose.For example, abstracting a leather soccer ball to a ball retainsonly the information on general ball attributes and behaviour.Computer scientists use abstraction to understand and solveproblems and communicate their solutions with the computer insome particular computer language." Los lenguajes de programación proporcionan herramientas para construir abstracciones.
  19. 19. Paradigmas de programación Los más importantes Paradigma funcional Paradigma lógico Paradigma imperativo o procedural Paradigma orientado a objetos Buen artículo en la Wikipedia: http://en.wikipedia.org/wiki/Programming_paradigm
  20. 20. Paradigma funcional Definición de funciones Funciones como datos primitivos Valores sin efectos laterales, no existe la mutación Programación declarativa Lenguajes: LISP, Scheme, Haskell, Scala, Clojure
  21. 21. Ejemplo: Scheme (define (factorial x) (if (= x 0) 1 (* x (factorial (- x 1))))) >(factorial (+ 2 1 5)) 40320 >(factorial 30) 265252859812191058636308480000000
  22. 22. Paradigma lógico Definición de reglas Unificación como elemento de computación Programación declarativa Lenguajes: Prolog, Mercury, Oz
  23. 23. Ejemplo: Prolog padrede(juan, maria). % juan es padre de maria padrede(pablo, juan). % pablo es padre de juan padrede(pablo, marcela). padrede(carlos, debora). hijode(A,B) :- padrede(B,A). abuelode(A,B) :- padrede(A,C), padrede(C,B). hermanode(A,B) :- padrede(C,A) , padrede(C,B), A == B. familiarde(A,B) :- padrede(A,B). familiarde(A,B) :- hijode(A,B). familiarde(A,B) :- hermanode(A,B). ?- hermanode(juan, marcela). yes ?- hermanode(carlos, juan). no ?- abuelode(pablo, maria). yes ?- abuelode(maria, pablo). no
  24. 24. Paradigma procedural Definición de procedimientos Definición de tipos de datos Chequeo de tipos en tiempo de compilación Cambio de estado de variables Pasos de ejecución de un proceso Lenguajes: Fortran, Algol, C, Pascal
  25. 25. Ejemplo: Pascal type tDimension = 1..100; eMatriz(f,c: tDimension) = array [1..f,1..c] of real; tRango = record f,c: tDimension value 1; end; tpMatriz = ^eMatriz; procedure EscribirMatriz(var m: tpMatriz); var filas,col : integer; begin for filas := 1 to m^.f do begin for col := 1 to m^.c do write(m^[filas,col]:7:2); writeln(resultado); writeln(resultado) end; end;
  26. 26. Paradigma Orientado a Objetos Definición de clases y herencia Objetos como abstracción de datos y procedimientos Polimorfismo y chequeo de tipos en tiempo de ejecución Lenguajes: Modula, Smalltalk, Java, C#
  27. 27. Ejemplo: Java (1)public class Bicicleta { public int marcha; public int velocidad; public Bicicleta(int velocidadInicial, int marchaInicial) { marcha = marchaInicial; velocidad = velocidadInicial; } public void setMarcha(int nuevoValor) { marcha = nuevoValor; } public void frenar(int decremento) { velocidad -= decremento; } public void acelerar(int incremento) { velocidad += incremento; }}
  28. 28. Ejemplo: Java (2)public class MountainBike extends Bicicleta { public int alturaSillin; public MountainBike(int alturaInicial, int velocidadInicial, int marchaInicial) { super(velocidadInicial, marchaInicial); alturaSillin = alturaInicial; } public void setAltura(int nuevoValor) { alturaSillin = nuevoValor; }}public class Excursion { public static void main(String[] args) { MountainBike miBicicleta = new MoutainBike(10,10,3); miBicicleta.acelerar(10); miBicicleta.setMarcha(4); miBicicleta.frenar(10); }}
  29. 29. ResumiendoSiempre se ha dicho que aprenderidiomas sirve para abrir la mente ymadurar como persona...¡Lo mismo pasa con los lenguajes deprogramación!
  30. 30. ¿Preguntas?

×