0% encontró este documento útil (0 votos)
72 vistas44 páginas

Fundamentos de Lenguajes de Programaci On: Robinson Duque, Meng - PH.D

Este documento presenta una introducción a los fundamentos de los lenguajes de programación. Explica brevemente conceptos clave como lenguaje, lenguaje de programación y lenguaje de programación. Luego resume la historia de los lenguajes de programación desde Ada Lovelace en la década de 1840 hasta lenguajes más modernos como Simula, Smalltalk y C++. Finalmente, anticipa una discusión sobre los paradigmas de programación y la motivación del curso.

Cargado por

Robinson Duque
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)
72 vistas44 páginas

Fundamentos de Lenguajes de Programaci On: Robinson Duque, Meng - PH.D

Este documento presenta una introducción a los fundamentos de los lenguajes de programación. Explica brevemente conceptos clave como lenguaje, lenguaje de programación y lenguaje de programación. Luego resume la historia de los lenguajes de programación desde Ada Lovelace en la década de 1840 hasta lenguajes más modernos como Simula, Smalltalk y C++. Finalmente, anticipa una discusión sobre los paradigmas de programación y la motivación del curso.

Cargado por

Robinson Duque
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
Está en la página 1/ 44

Fundamentos de lenguajes de programación

Robinson Duque, MEng - Ph.D

Universidad del Valle


[email protected]

Programa de Ingenierı́a de Sistemas


Escuela de Ingenierı́a de Sistemas y Computación

Este documento es una adaptación del material original de los profesores


Carlos Andres Delgado y Carlos Alberto Ramı́rez
Overview

1 Conceptos

2 Un poco de historia
Historia de los lenguajes de programación

3 Perspectiva de los paradigmas de programación


Conceptos generales
Taxonomı́a de los paradigmas de programación
Paradigmas de programación

4 Motivación del curso


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

Lenguaje

Lenguaje =⇒ Comunicación
Lenguaje de programación =⇒ Comunicación con la
máquina
Lenguaje hablado y lenguaje escrito
Lenguaje escrito =⇒ Formalismos =⇒ Lenguajes formales
Conceptos
Un poco de historia
Perspectiva de los paradigmas de programación
Motivación del curso

Lenguajes de programación

La programación se define como una actividad general del


hombre, que significa la acción de extender o cambiar la
funcionalidad de un sistema[VanRoy].
Programar es decirle a un computador (o a alguna máquina)
como realizar su trabajo.
La programación es una actividad de amplio espectro
realizada tanto por no especialistas como por especialistas.
La programación de sistemas de software consta de dos partes
esenciales: la ciencia y la tecnologı́a.
Conceptos
Un poco de historia
Perspectiva de los paradigmas de programación
Motivación del curso

Lenguajes de programación

Un lenguaje de programación es un lenguaje artificial


diseñado para expresar computaciones que pueden ser llevadas
a cabo por una máquina.
Conjunto de sı́mbolos y reglas sintácticas y semánticas.
Conceptos
Un poco de historia
Historia de los lenguajes de programación
Perspectiva de los paradigmas de programación
Motivación del curso

Historia de los lenguajes de programación I

Charles Babagge (Máquina Analı́tica) y Ada Lovelace


(Primera programadora) (Mediados del siglo XIX).
Conceptos
Un poco de historia
Historia de los lenguajes de programación
Perspectiva de los paradigmas de programación
Motivación del curso

Historia de los lenguajes de programación II


Programa escrito por Ada Lovelace
Conceptos
Un poco de historia
Historia de los lenguajes de programación
Perspectiva de los paradigmas de programación
Motivación del curso

Historia de los lenguajes de programación III


Herman Hollerith se percató de que podı́a codificar la
información en tarjetas perforadas cuando observó a los
conductores de trenes que identificaban a los pasajeros según
el orificio que hacı́an en su respectivo ticket. En 1890
Hollerith codificó los datos del censo en tarjetas perforadas.
En la década de 1920 los cálculos numéricos estaban basados
en los números decimales. Con el paso del tiempo, se dieron
cuenta de que la lógica podı́a ser representada con números,
no sólo con palabras.
Conceptos
Un poco de historia
Historia de los lenguajes de programación
Perspectiva de los paradigmas de programación
Motivación del curso

Historia de los lenguajes de programación IV


En 1943 se crea el sistema de codificación de ENIAC la
primera computadora de propósito general.
Conceptos
Un poco de historia
Historia de los lenguajes de programación
Perspectiva de los paradigmas de programación
Motivación del curso

Historia de los lenguajes de programación V


Short Code de John Mauchly en 1949 (BINAC y UNIVAC I).
Por ejemplo la expresión: a = b+c
b∗c se computa ası́:

A-0, A-1, A-2 entre 1951 y 1953 (UNIVAC).


Conceptos
Un poco de historia
Historia de los lenguajes de programación
Perspectiva de los paradigmas de programación
Motivación del curso

Historia de los lenguajes de programación VI


Fortran (FORmula TRANslator) por John Backus et al. en
1953.
C AREA OF A TRIANGLE − HERON ’ S FORMULA
C INPUT − CARD READER UNIT 5 , INTEGER INPUT
C OUTPUT − LINE PRINTER UNIT 6 , REAL OUTPUT
C INPUT ERROR DISPLAY ERROR OUTPUT CODE 1 IN JOB CONTROL LISTING
INTEGER A , B , C
READ ( 5 , 5 0 1 ) A , B , C
501 FORMAT ( 3 I 5 )
IF (A . EQ . 0 . OR . B . EQ . 0 . OR . C . EQ . 0 ) STOP 1
S = (A + B + C) / 2 . 0
AREA = SQRT ( S ∗ ( S − A) ∗ ( S − B) ∗ ( S − C) )
WRITE ( 6 , 6 0 1 ) A , B , C , AREA
601 FORMAT ( 4H A= , I 5 , 5H B= , I 5 , 5H C= , I 5 , 8H AREA= , F10 . 2 ,
$13H SQUARE UNITS )
STOP
END

LISP (LISt Processor) por John McCarthy et al. en 1958.


( defun averagenum ( n1 n2 n3 n4 )
( / ( + n1 n2 n3 n4 ) 4 )
)
( write ( averagenum 10 20 30 4 0 ) )
Conceptos
Un poco de historia
Historia de los lenguajes de programación
Perspectiva de los paradigmas de programación
Motivación del curso

Historia de los lenguajes de programación VII


COBOL (COmmon Business Oriented Language) por Grace
Hopper en 1959.
DATA DIVISION .

W OR KING-STORAGE SECTION .
01 Num1 PIC 9 VALUE ZEROS .
01 Num2 PIC 9 VALUE ZEROS .
01 R e s u l t PIC 99 VALUE ZEROS .

PROCEDURE DIVISION .
DISPLAY " Enter first number (1 digit ) : " WITH NO ADVANCING .
ACCEPT Num1 .
DISPLAY " Enter second number (1 digit ) : " WITH NO ADVANCING .
ACCEPT Num2 .
MULTIPLY Num1 BY Num2 GIVING R e s u l t .
DISPLAY " Result is = " , R e s u l t .
STOP RUN .
Conceptos
Un poco de historia
Historia de los lenguajes de programación
Perspectiva de los paradigmas de programación
Motivación del curso

Historia de los lenguajes de programación VIII


ALGOL (ALGOrithmic Language) 60 en 1960.
p r o c e d u r e Absmax ( a ) S i z e : ( n , m) R e s u l t : ( y ) S u b s c r i p t s : ( i , k ) ;
v a l u e n , m; a r r a y a ; i n t e g e r n , m, i , k ; real y ;
begin
integer p, q;
y := 0 ; i := k := 1 ;
for p := 1 s t e p 1 u n t i l n do
for q := 1 s t e p 1 u n t i l m do
if abs ( a [ p , q ] ) > y then
begin y := abs ( a [ p , q ] ) ;
i := p ; k := q
end
end Absmax
Conceptos
Un poco de historia
Historia de los lenguajes de programación
Perspectiva de los paradigmas de programación
Motivación del curso

Historia de los lenguajes de programación IX


APL (A Programing Language) por Kenneth Iverson(IBM)
https://tryapl.org/
Simula por Ole Johan Dahl y Kristen Nygaard y SNOBOL
(StriNg Oriented symBOlic Language) por los Laboratorios
Bell en 1962. Este es el primer lenguaje orientado a objetos
Begin
OutText ( " Hello , World ! " ) ;
Outimage ;
End ;
Begin
Class G l y p h ;
Virtual : Procedure p r i n t Is Procedure p r i n t ; ;
Begin
End ;

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.
Conceptos
Un poco de historia
Historia de los lenguajes de programación
Perspectiva de los paradigmas de programación
Motivación del curso

Historia de los lenguajes de programación X


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.
Conceptos
Un poco de historia
Historia de los lenguajes de programación
Perspectiva de los paradigmas de programación
Motivación del curso

Historia de los lenguajes de programación XI


Prolog (PROgrammation en LOGique) por Colmerauer,
Roussel, y Kowalski en 1972.
Base del conocimiento:
likes ( mary , f o o d ) .
likes ( mary , w i n e ) .
likes ( john , wine ) .
likes ( j o h n , mary ) .

Consultas:
l i k e s ( mary , f o o d ) .
Yes
l i k e s ( john , food ) .
No
l i k e s (X , w i n e ) .
mary
john
No
Conceptos
Un poco de historia
Historia de los lenguajes de programación
Perspectiva de los paradigmas de programación
Motivación del curso

Historia de los lenguajes de programación XII


ML (Meta Language) por Robin Milner en 1973.
fun r e v e r s e [ ] = [ ]
| reverse (h : : t ) = reverse t @ [ h ] ;

fun c o n c a t s p a c e s = s ˆ " " ;

(* Prints each command line arg , suffixed with a space . *)

val =
let
val a r g s = CommandLine . a r g u m e n t s ( )
in
map ( p r i n t o c o n c a t s p a c e ) ( r e v e r s e a r g s ) ;
p r i n t "\n"
end ;

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.
Conceptos
Un poco de historia
Historia de los lenguajes de programación
Perspectiva de los paradigmas de programación
Motivación del curso

Historia de los lenguajes de programación XIII


Common Lisp en 1984.
Eiffel, Erlang, Perl, Tcl y Fl a finales de los 80’s. Ejemplo
Erlang:
s o r t ( [ P i v o t |T] ) ->
s o r t ( [ X | | X <− T , X < P i v o t ] ) ++
[ P i v o t ] ++
s o r t ( [ X | | X <− T , X >= P i v o t ] ) ;
s o r t ( [ ] ) -> [ ] .

Haskell (en honor a Haskell Curry) en 1990.


main = do
f o r M [ 1 . . 3 ] $ \ i −> do
print i

forM [ 7 . . 9 ] $ \ j −> do
print j

w i t h B r e a k $ \break −>
f o r M [ 1 . . ] $ \ −> do
p " loop "
break ( )
Conceptos
Un poco de historia
Historia de los lenguajes de programación
Perspectiva de los paradigmas de programación
Motivación del curso

Historia de los lenguajes de programación XIV

where
w i t h B r e a k = ( ’ runContT ’ return ) . c a l l C C
p = l i f t I O . putStrLn

Python, Lua, Java, Delphi, JavaScript, PHP, Rebol, Visual


Basic, Mozart, entre otros durante los años 90’s.
C#, .NET, J#, Scala, Factor, entre otros apartir del año
2000.
Conceptos
Conceptos generales
Un poco de historia
Taxonomı́a de los paradigmas de programación
Perspectiva de los paradigmas de programación
Paradigmas de programación
Motivación del curso

Paradigmas de programación - Conceptos generales

Un paradigma es un enfoque para programar máquinas


(computadores) basado en un conjunto coherente de principios o
teorı́a matemática [P. Van Roy]:
Las teorı́as de computación resultan en diferentes paradigmas
(λ calculus, π calculus, lógica de primer orden, etc)
Ninguna teorı́a existente cubre todos los conceptos de
programación
¿Porqué necesitamos tantos paradigmas? Para solucionar
problemas más fácilmente utilizando el paradigma correcto!
Conceptos
Conceptos generales
Un poco de historia
Taxonomı́a de los paradigmas de programación
Perspectiva de los paradigmas de programación
Paradigmas de programación
Motivación del curso

Paradigmas de programación - Conceptos generales

Un paradigma es un enfoque para programar máquinas


(computadores) basado en un conjunto coherente de principios o
teorı́a matemática [P. Van Roy]:
Las teorı́as de computación resultan en diferentes paradigmas
(λ calculus, π calculus, lógica de primer orden, etc)
Ninguna teorı́a existente cubre todos los conceptos de
programación
¿Porqué necesitamos tantos paradigmas? Para solucionar
problemas más fácilmente utilizando el paradigma correcto!
Conceptos
Conceptos generales
Un poco de historia
Taxonomı́a de los paradigmas de programación
Perspectiva de los paradigmas de programación
Paradigmas de programación
Motivación del curso

Paradigmas de programación - Conceptos generales

ilustración tı́pica de cómo ha evolucionado la programación


el diagrama sólo muestra una pequeña parte; deja por fuera
muchas ideas importantes
Conceptos
Conceptos generales
Un poco de historia
Taxonomı́a de los paradigmas de programación
Perspectiva de los paradigmas de programación
Paradigmas de programación
Motivación del curso

Taxonomı́a de los paradigmas de programación

La jungla de paradigmas de programación


Conceptos
Conceptos generales
Un poco de historia
Taxonomı́a de los paradigmas de programación
Perspectiva de los paradigmas de programación
Paradigmas de programación
Motivación del curso

Taxonomı́a de los paradigmas de programación


Taxonomı́a de paradigmas de programación
Conceptos
Conceptos generales
Un poco de historia
Taxonomı́a de los paradigmas de programación
Perspectiva de los paradigmas de programación
Paradigmas de programación
Motivación del curso

Paradigmas de programación

Los principales paradigmas de programación son:


Declarativos (Funcional, Lógico, Por Restricciones)
Imperativo
Relacional
Orientado a Objetos
Por Restricciones
Concurrente
Orientado a agentes
Conceptos
Conceptos generales
Un poco de historia
Taxonomı́a de los paradigmas de programación
Perspectiva de los paradigmas de programación
Paradigmas de programación
Motivación del curso

Paradigma programación Declarativa

Una operación es declarativa si siempre que es llamada con los


mismos argumentos retorna el mismo resultado.
Una operación 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)
Ejemplo: HTML, XML, CSS, Mercury, Prolog.
Conceptos
Conceptos generales
Un poco de historia
Taxonomı́a de los paradigmas de programación
Perspectiva de los paradigmas de programación
Paradigmas de programación
Motivación del curso

Paradigma programación Declarativa

HTML
<img src=" ./ image . jpg " />

SQL
SELECT ∗ FROM U s e r s WHERE C o u n t r y=’ Mexico ’ ;

XML
< a r t i c l e>
<h e a d e r>
< t i t l e>P r o g r a m a c i o n d e c l a r a t i v a</ t i t l e>
<t e x t>S o l o e s c r i b e s i n p r e o c u p a r t e de má s : )</ t e x t>
</ h e a d e r>
</ a r t i c l e>
Conceptos
Conceptos generales
Un poco de historia
Taxonomı́a de los paradigmas de programación
Perspectiva de los paradigmas de programación
Paradigmas de programación
Motivación del curso

Paradigma programación Funcional

Basado en el cálculo λ (sistema formal 1930).


El concepto de función es fundamental.
Funciones son ciudadanos de primera clase (las funciones
pueden ser parámetros o valores de retorno de otras
funciones).
Programa: Conjunto de funciones + Aplicación.
Ejemplos: Lisp, Haskell, Scheme, ML.
Conceptos
Conceptos generales
Un poco de historia
Taxonomı́a de los paradigmas de programación
Perspectiva de los paradigmas de programación
Paradigmas de programación
Motivación del curso

Paradigma programación declarativo funcional

Cálculo λ
Diseñado para investigar la definición de función, la noción de
aplicación de funciones y la recursión.
Utilizado para definir algoritmos computables o decidibles.
Es una estrategia para definir si un algoritmo es computable,
ya que se ha demostrado que el problema de la parada es un
problema indecidible.
Cualquier función computable puede ser expresada y evaluada
a través de este cálculo.
Las funciones son consideradas un valor tipo procedimiento.
Conceptos
Conceptos generales
Un poco de historia
Taxonomı́a de los paradigmas de programación
Perspectiva de los paradigmas de programación
Paradigmas de programación
Motivación del curso

Paradigma de Programación declarativo lógico

Basado en el cálculo de predicados.


Mecanismo de demostración automática de teoremas.
Esencial: Concepto de deducción lógica.
Programa: Conjunto de axiomas y un objetivo.
Ejemplos: Prolog.
Conceptos
Conceptos generales
Un poco de historia
Taxonomı́a de los paradigmas de programación
Perspectiva de los paradigmas de programación
Paradigmas de programación
Motivación del curso

Paradigma programación Imperativa

Orientado por la máquina.


Alto nivel.
Esencial: Asignación y secuenciación.
La programación está dada en términos del estado del
programa.
Programa: Secuencia de instrucciones.
Ejemplos: Fortran, Algol, Basic, C, Pascal.
Conceptos
Conceptos generales
Un poco de historia
Taxonomı́a de los paradigmas de programación
Perspectiva de los paradigmas de programación
Paradigmas de programación
Motivación del curso

Paradigma de Programación 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.
Conceptos
Conceptos generales
Un poco de historia
Taxonomı́a de los paradigmas de programación
Perspectiva de los paradigmas de programación
Paradigmas de programación
Motivación del curso

Paradigma de Programación Concurrente

Basado en la teorı́a de concurrencia y cálculos de procesos


(Cálculo π, CCS, CCP).
Esencial: Mecanismos de comunicación entre procesos.
Programa: Conjunto de procesos.
Ejemplos: PICT, MWB, Erlang.
Este paradigma funciona bien en lenguajes funcionales, ya que
no se requiere sincronización (semáforos).
Conceptos
Conceptos generales
Un poco de historia
Taxonomı́a de los paradigmas de programación
Perspectiva de los paradigmas de programación
Paradigmas de programación
Motivación del curso

Paradigma de Programación Concurrente

Ejemplo en Erlang
−module ( e j em p lo FL P ) .

−export ( [ i n i c i a r / 0 , d i a l o g o /2 ] ) .

d i a l o g o ( E n t r a d a , 0 ) ->
done ;
d i a l o g o ( E n t r a d a , C o n t a d o r ) ->
i o : format ( "~p~n" , [ Entrada ] ) ,
d i a l o g o ( Entrada , Contador − 1) .

i n i c i a r ( ) ->
spawn ( ejemploFLP , d i a l o g o , [ h o l a , 5 ] ) ,
spawn ( ejemploFLP , d i a l o g o , [ a d i o s , 4 ] ) .

%Funciona miento
%c ( ejemploFLP ) .
%ejemploFLP : iniciar () .
Conceptos
Conceptos generales
Un poco de historia
Taxonomı́a de los paradigmas de programación
Perspectiva de los paradigmas de programación
Paradigmas de programación
Motivación del curso

Paradigma de Programación Relacional

Las relaciones pueden tener cero, una o más salidas (frente a


funciones)
Puede intercambiarse el rol de las entradas y salidas
Selección no-determinista de una opción entre varias
Ejemplo: Prolog (Búsqueda sobre una base de conocimiento),
Analizadores sintácticos, Bases de datos relacionales (SQL).
Conceptos
Conceptos generales
Un poco de historia
Taxonomı́a de los paradigmas de programación
Perspectiva de los paradigmas de programación
Paradigmas de programación
Motivación del curso

Paradigma de Programación Relacional

Ejemplo de paradigma relacional con Prolog (ver ejemplo online).


%Base del conocimiento
amigo ( j u a n , p e d r o ) .
amigo ( j u a n , c a r l o s ) .
amigo ( p e d r o , m a r i a ) .

%consultas
%amigo ( juan , pedro ) . %Retorna yes
%amigo ( juan , X ) . %Retorna X = pedro y X = carlos

Observe que
1 Hay una búsqueda en un conjunto de datos
2 Se retornan cero o más valores en una consulta.
SQL también es un lenguaje relacional de búsqueda sobre bases de
datos.
Conceptos
Conceptos generales
Un poco de historia
Taxonomı́a de los paradigmas de programación
Perspectiva de los paradigmas de programación
Paradigmas de programación
Motivación del curso

Paradigma de Programación por Restricciones

Basado en el concepto de restricción (un predicado o relación


lógica).
Esencial: Concepto de consecuencia lógica.
Esencial: Búsqueda en arboles y reducción de dominios
(distribución y propagación).
Programa: Variables + Restricciones (Conjunto de Relaciones
entre variables) + Estrategia de exploración.
La búsqueda de soluciones es concurrente (se exploran varias
posibilidades a la vez).
Ejemplos: CLP, Mozart, MiniZinc.
Conceptos
Conceptos generales
Un poco de historia
Taxonomı́a de los paradigmas de programación
Perspectiva de los paradigmas de programación
Paradigmas de programación
Motivación del curso

Paradigma de Programación por Restricciones


Ejemplo: encontrar los valores de las letras para que SEND +
MORE = MONEY (ver ejemplos online).
declare
proc {Money Root}
local
S E N D M O R Y
in
Root = s o l ( s : S e : E n : N d : D m:M o :O r : R y : Y) % Registro con letras
Root : : : 0#9 % Dominio de b ú squeda de
las variables entre 0 y 9

%Restricciones
{FD . d i s t i n c t Root}

%S y M distintos de 0 ( si no todo se hace 0)


S \=: 0
M \=: 0
1000∗S + 100∗E + 10∗N + D
+ 1000∗M + 100∗O + 10∗R + E
=: 10000∗M + 1000∗O + 100∗N + 10∗E + Y

%Estrategia de b ú squeda ( probar primero con n ú meros peque ~


n os del dominio )
{FD . d i s t r i b u t e f f Root}
end
%Explore todas las posibilidades
{ E x p l o r e A l l Money}
Conceptos
Conceptos generales
Un poco de historia
Taxonomı́a de los paradigmas de programación
Perspectiva de los paradigmas de programación
Paradigmas de programación
Motivación del curso

Paradigma de Programación Orientada a Agentes

Se representa el mundo real mediante agentes y sus


interacciones a través de mensajes.
Basado en el concepto de agentes.
Un agente es una entidad computacional situada en algún
entorno y que es capaz de ejecutar acciones autónomas en
dicho entorno con el fı́n de cumplir sus objetivos de diseño.
Hilo de ejecución independiente, comunicación 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.
Conceptos
Conceptos generales
Un poco de historia
Taxonomı́a de los paradigmas de programación
Perspectiva de los paradigmas de programación
Paradigmas de programación
Motivación del curso

¿Qué paradigma es el mejor?

Cada uno es mejor para una clase especı́fica de problema (la


paradoja del paradigma - ”more is not better or worse, only
different”)
Las fronteras de los paradigmas son completamente artificiales
(sólo existen por razones históricas)
Java es sólo orientado a objetos (errado)
Scala es funcional, orientado a objetos, basado en actores
(correcto)
Un programa grande casi siempre necesita diversos paradigmas
(por esto es necesario aprender múltiples paradigmas)
Un buen lenguaje deberı́a soportar diversos paradigmas (Scala
y Erlang se mueven en la dirección correcta; Java y C++ se
están estancando..)
Conceptos
Un poco de historia
Perspectiva de los paradigmas de programación
Motivación del curso

¿Por qué estudiar los conceptos de lenguajes de


programación?

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.
Conceptos
Un poco de historia
Perspectiva de los paradigmas de programación
Motivación del curso

¿Por qué estudiar los conceptos de lenguajes de


programación?

Mejor entendimiento de como los lenguajes de programación


están implementados.
Mejor uso de los lenguajes de programación que ya se
conocen.
Progreso global de las ciencias computacionales.
Conceptos
Un poco de historia
Perspectiva de los paradigmas de programación
Motivación del curso

Preguntas

?
Conceptos
Un poco de historia
Perspectiva de los paradigmas de programación
Motivación del curso

Próxima sesión

Repaso de Racket.

También podría gustarte