Вы находитесь на странице: 1из 30

Conceptos Un poco de historia Perspectiva de los paradigmas de programaci on Motivaci on del curso

Fundamentos de Lenguajes de Programaci on


Preliminares Lenguajes de Programaci on

Carlos Alberto Ram rez Restrepo


Programa Acad emico Ingenier a de Sistemas Universidad del Valle, Cali, Colombia Escuela de Ingenier a de Sistemas y Computaci on, home page: http://eisc.univalle.edu.co/ carlos.a.ramirez@correounivalle.edu.co

Carlos Ram rez

Fundamentos de Lenguajes de Programaci on

Conceptos Un poco de historia Perspectiva de los paradigmas de programaci on Motivaci on del curso

Contenido

Conceptos Un poco de historia Perspectiva de los paradigmas de programaci on Motivaci on del curso

Carlos Ram rez

Fundamentos de Lenguajes de Programaci on

Conceptos Un poco de historia Perspectiva de los paradigmas de programaci on Motivaci on del curso

Contenido

Conceptos Un poco de historia Perspectiva de los paradigmas de programaci on Motivaci on del curso

Carlos Ram rez

Fundamentos de Lenguajes de Programaci on

Conceptos Un poco de historia Perspectiva de los paradigmas de programaci on Motivaci on del curso

Contenido

Conceptos Un poco de historia Perspectiva de los paradigmas de programaci on Motivaci on del curso

Carlos Ram rez

Fundamentos de Lenguajes de Programaci on

Conceptos Un poco de historia Perspectiva de los paradigmas de programaci on Motivaci on del curso

Contenido

Conceptos Un poco de historia Perspectiva de los paradigmas de programaci on Motivaci on del curso

Carlos Ram rez

Fundamentos de Lenguajes de Programaci on

Conceptos Un poco de historia Perspectiva de los paradigmas de programaci on Motivaci on del curso

Contenido

Conceptos Un poco de historia Perspectiva de los paradigmas de programaci on Motivaci on del curso

Carlos Ram rez

Fundamentos de Lenguajes de Programaci on

Conceptos Un poco de historia Perspectiva de los paradigmas de programaci on Motivaci on del curso

Lenguaje

Un lenguaje es un sistema de comunicaci on. El lenguaje permite abstraer y comunicar conceptos. Un lenguaje de programaci on posibilita la comunicacion con una m aquina.

Carlos Ram rez

Fundamentos de Lenguajes de Programaci on

Conceptos Un poco de historia Perspectiva de los paradigmas de programaci on Motivaci on del curso

Programaci on

La programaci on se dene como una actividad general del hombre, que signica la acci on de extender o cambiar la funcionalidad de un sistema[VanRoy]. Programar es decirle a un computador (o a alguna m aquina) como realizar su trabajo. La programaci on es una actividad de amplio espectro realizada tanto por no especialistas como por especialistas. La programaci on (de sistemas de software) consta de dos partes esenciales: la ciencia y la tecnolog a.

Carlos Ram rez

Fundamentos de Lenguajes de Programaci on

Conceptos Un poco de historia Perspectiva de los paradigmas de programaci on Motivaci on del curso

Lenguajes de programaci on

Un lenguaje de programaci on es un lenguaje articial dise nado para expresar computaciones que pueden ser llevadas a cabo por una m aquina. Conjunto de s mbolos y reglas sint acticas y sem anticas.

Carlos Ram rez

Fundamentos de Lenguajes de Programaci on

Conceptos Un poco de historia Perspectiva de los paradigmas de programaci on Motivaci on del curso

Contenido

Conceptos Un poco de historia Perspectiva de los paradigmas de programaci on Motivaci on del curso

Carlos Ram rez

Fundamentos de Lenguajes de Programaci on

Conceptos Un poco de historia Perspectiva de los paradigmas de programaci on Motivaci on del curso

Historia de los lenguajes de programaci on I


Charles Babagge (M aquina Anal tica) y Ada Lovelace (Mediados del siglo XIX). Konrad Zuse propuso el C alculo Plan en 1943. Short Code de John Mauchly en 1949 (BINAC y UNIVAC I). A-0, A-1, A-2 entre 1951 y 1953 (UNIVAC). Fortran (FORmula TRANslator) por John Backus et al. en 1953. LISP (LISt Processor) por John McCarthy et al. en 1958. COBOL (COmmon Business Oriented Language) por Grace Hopper en 1959. ALGOL (ALGOrithmic Language) 60 en 1960.
Carlos Ram rez Fundamentos de Lenguajes de Programaci on

Conceptos Un poco de historia Perspectiva de los paradigmas de programaci on Motivaci on del curso

Historia de los lenguajes de programaci on II


APL (A Programing Language) por Kenneth Iverson(IBM), Simula por Ole Johan Dahl y Kristen Nygaard y SNOBOL (StriNg Oriented symBOlic Language) por los Laboratorios Bell en 1962. CPL (Combined Programming Languaje) en 1963. BASIC (Beginners All-purpose Symbolic Instruction Code) por Kurtz y PL/1 (Programming Language 1) de IBM en 1964. BCPL (Basic Combined Programming Language) por Martin Richards en 1967. ALGOL 68 y Logo por Danny Bobrow, Wally Feurzeig y Seymour Papert en 1968. C por Dennis Ritchie y Ken Thompson entre 1969 y 1973. Pascal por Wirth y SmallTalk en 1970.
Carlos Ram rez Fundamentos de Lenguajes de Programaci on

Conceptos Un poco de historia Perspectiva de los paradigmas de programaci on Motivaci on del curso

Historia de los lenguajes de programaci on III


Prolog (PROgrammation en LOGique) por Colmerauer, Roussel, y Kowalski en 1972. ML (Meta Language) por Robin Milner en 1973. Scheme por Guy L. Steele y Gerald Jay Sussman en 1975. SQL (Structured Query Language) en 1978. Ada por Jean Ichbiah et al. en 1983. C++ por Bjarne Stroustrup en 1983. Common Lisp en 1984. Eiel, Erlang, Perl, Tcl y Fl a nales de los 80s. Haskell (en honor a Haskell Curry) en 1990. Python, Lua, Java, Delphi, JavaScript, PHP, Rebol, Visual Basic, Mozart, entre otros durante los a nos 90s. C#, .NET, J#, Scala, Factor, entre otros apartir del a no 2000.
Carlos Ram rez Fundamentos de Lenguajes de Programaci on

Conceptos Un poco de historia Perspectiva de los paradigmas de programaci on Motivaci on del curso

Contenido

Conceptos Un poco de historia Perspectiva de los paradigmas de programaci on Motivaci on del curso

Carlos Ram rez

Fundamentos de Lenguajes de Programaci on

Conceptos Un poco de historia Perspectiva de los paradigmas de programaci on Motivaci on del curso

Paradigmas de programaci on

Los principales paradigmas de programaci on son: Declarativos (Funcional, L ogico, Por Restricciones) Imperativo Orientado a Objetos Concurrente Orientado a aspectos Orientado a agentes

Carlos Ram rez

Fundamentos de Lenguajes de Programaci on

Conceptos Un poco de historia Perspectiva de los paradigmas de programaci on Motivaci on del curso

Programaci on Declarativa

Una operaci on es declarativa si siempre que es llamada con los mismos argumentos retorna el mismo resultado. Una operaci on declarativa es:
Independiente (depende solo de sus argumentos) Sin estado (no hay memoria entre distintos llamados) Determinista (un llamado con los mismos argumentos da siempre el mismo resultado)

Carlos Ram rez

Fundamentos de Lenguajes de Programaci on

Conceptos Un poco de historia Perspectiva de los paradigmas de programaci on Motivaci on del curso

Paradigma de Programaci on Imperativa

Orientado por la m aquina. Alto nivel. Esencial: Asignaci on y secuenciaci on. La programaci on est a dada en t erminos del estado del programa. Programa: Secuencia de instrucciones. Ejemplos: Fortran, Algol, Basic, C, Pascal.

Carlos Ram rez

Fundamentos de Lenguajes de Programaci on

Conceptos Un poco de historia Perspectiva de los paradigmas de programaci on Motivaci on del curso

Paradigma de Programaci on Funcional

Basado en el c alculo . Manejo impl cito de la memoria. El concepto de funci on es fundamental. Funciones son ciudadanos de primera clase (las funciones pueden ser par ametros o valores de retorno de otras funciones). Programa: Conjunto de funciones + Aplicaci on. Ejemplos: Lisp, Haskell, Scheme, ML.

Carlos Ram rez

Fundamentos de Lenguajes de Programaci on

Conceptos Un poco de historia Perspectiva de los paradigmas de programaci on Motivaci on del curso

Paradigma de Programaci on L ogica

Basado en el c alculo de predicados. Mecanismo de demostraci on autom atica de teoremas. Esencial: Concepto de deducci on l ogica. Programa: Conjunto de axiomas y un objetivo. Ejemplos: Prolog.

Carlos Ram rez

Fundamentos de Lenguajes de Programaci on

Conceptos Un poco de historia Perspectiva de los paradigmas de programaci on Motivaci on del curso

Paradigma de Programaci on Orientada a Objetos

Se representa el mundo real mediante objetos y sus interacciones. Basado en el concepto computacional de objeto. Esencial: Concepto de objeto, herencia, mensaje. Programa: Conjunto de objetos y sus interacciones. Ejemplos: Smalltalk, Java, C++, Obliq, etc.

Carlos Ram rez

Fundamentos de Lenguajes de Programaci on

Conceptos Un poco de historia Perspectiva de los paradigmas de programaci on Motivaci on del curso

Paradigma de Programaci on por Restricciones

Basado en el concepto de restricci on (un predicado o relaci on l ogica). Esencial: Concepto de consecuencia l ogica. Esencial: B usqueda en arboles y reducci on de dominios (distribuci on y propagaci on). Programa: Variables + Restricciones (Conjunto de Relaciones entre variables) + Estrategia de exploraci on. Ejemplos: CLP, Mozart.

Carlos Ram rez

Fundamentos de Lenguajes de Programaci on

Conceptos Un poco de historia Perspectiva de los paradigmas de programaci on Motivaci on del curso

Paradigma de Programaci on Concurrente

Basado en la teor a de concurrencia y c alculos de procesos (C alculo , CCS, CCP). Esencial: Mecanismos de comunicaci on entre procesos. Programa: Conjunto de procesos. Ejemplos: PICT, MWB.

Carlos Ram rez

Fundamentos de Lenguajes de Programaci on

Conceptos Un poco de historia Perspectiva de los paradigmas de programaci on Motivaci on del curso

Paradigma de Programaci on Orientada a Aspectos

Modularidad de las aplicaciones y separaci on de conceptos (generalmente conceptos t ecnicos y comunes a toda la aplicaci on). Separaci on de las funcionalidades comunes utilizadas en la aplicaci on de las funcionalidades propias de cada m odulo. Esencial: Concepto de aspecto (funcionalidad transversal). Ejemplos: AspectJ, Aspect, phpAspect, Aspyct AOP.

Carlos Ram rez

Fundamentos de Lenguajes de Programaci on

Conceptos Un poco de historia Perspectiva de los paradigmas de programaci on Motivaci on del curso

Paradigma de Programaci on Orientada a Agentes


Se representa el mundo real mediante agentes y sus interacciones a trav es de mensajes. Basado en el concepto de agentes. Un agente es una entidad computacional situada en alg un entorno y que es capaz de ejecutar acciones aut onomas en dicho entorno con el f n de cumplir sus objetivos de dise no. Hilo de ejecuci on independiente, comunicaci on por paso de mensajes, conocimiento parcial del entorno, mecanismo de toma de decisiones, reactividad, proactividad, habilidad social. Programa: Conjunto de agentes y sus interacciones. Ejemplos: JADE, JASON.

Carlos Ram rez

Fundamentos de Lenguajes de Programaci on

Conceptos Un poco de historia Perspectiva de los paradigmas de programaci on Motivaci on del curso

Algunos Retos

Enfoques basados en componentes. Mecanismos de seguridad y de conabilidad, seguridad en hilos. Enfasis en movilidad y distribuci on. Enfoques basados en paradigmas y tecnolog as actuales (computaci on grid y cloud, Map and Reduce).

Carlos Ram rez

Fundamentos de Lenguajes de Programaci on

Conceptos Un poco de historia Perspectiva de los paradigmas de programaci on Motivaci on del curso

Contenido

Conceptos Un poco de historia Perspectiva de los paradigmas de programaci on Motivaci on del curso

Carlos Ram rez

Fundamentos de Lenguajes de Programaci on

Conceptos Un poco de historia Perspectiva de los paradigmas de programaci on Motivaci on del curso

Por qu e estudiar los conceptos de lenguajes de programaci on?

Incrementa la capacidad para expresar ideas. Ampl a el espectro de conocimientos necesario para seleccionar un lenguaje. Incrementa la habilidad para aprender nuevos lenguajes y paradigmas.

Carlos Ram rez

Fundamentos de Lenguajes de Programaci on

Conceptos Un poco de historia Perspectiva de los paradigmas de programaci on Motivaci on del curso

Por qu e estudiar los conceptos de lenguajes de programaci on?

Mejor entendimiento de como los lenguajes de programaci on est an implementados. Mejor uso de los lenguajes de programaci on que ya se conocen. Progreso global de las ciencias computacionales.

Carlos Ram rez

Fundamentos de Lenguajes de Programaci on

Conceptos Un poco de historia Perspectiva de los paradigmas de programaci on Motivaci on del curso

Preguntas

Carlos Ram rez

Fundamentos de Lenguajes de Programaci on

Conceptos Un poco de historia Perspectiva de los paradigmas de programaci on Motivaci on del curso

Pr oxima sesi on

Repaso de Scheme. Relaci on entre inducci on y programaci on (Capitulo 1 EOPL).

Carlos Ram rez

Fundamentos de Lenguajes de Programaci on