Anda di halaman 1dari 52

FIEC01552

Lenguajes de Programacin
Sesin 1: Introduccin a Lenguajes

Lenguajes de Programacin
Los lenguajes de Programacin son el corazn de
la Ciencia de la Computacin.
Son herramientas que usamos no solo para
comunicarnos con las mquinas sino tambin con
las personas.
el valor de un lenguaje se debe juzgar segn la
forma en que afecta la produccin de Software y
a la facilidad con la que puede integrarse a otras
herramientas
Slide 2

Objetivos
Adquirir

habilidad de apreciar y evaluar


lenguajes,
identificando
sus
lmites
y
posibilidades.

Habilidad

para elegir, para disear, implementar


o utilizar un lenguaje.

Enfatizar

Slide 3

la abstraccin.

Contenido:
Por

qu estudiar Lenguajes?

Historia

de los Lenguajes

Paradigmas

en Lenguajes

Criterios

para evaluar los lenguajes de


programacin

Slide 4

Qu hace a un Lenguaje bueno?

Por qu estudiar Lenguajes?


Aumentar

Slide 5

la capacidad para producir software.

Conocer profundamente las caractersticas de los


lenguajes permite aprovechar su potencia y evitar
errores, minimizando esfuerzo

Por qu estudiar Lenguajes?


Mejora

la habilidad para desarrollar mejores


algoritmos.

Aprendemos a elaborar los algoritmos ms


eficientes en concordancia con el lenguaje que
estamos utilizando.

Ejemplo: Recursin

Slide 6

Por qu estudiar Lenguajes?


Mejora

el uso de su lenguaje de programacin


preferido.

Si se entiende como se implementa cada


caracterstica se mejora la capacidad para escribir
programas eficientes.

Ejemplo: Orientacin a Objetos (Herencia)

Slide 7

Por qu estudiar Lenguajes?


Incrementar

Slide 8

el vocabulario

El lenguaje

equivale a comunicacin.

es una ayuda y una limitacin al pensamiento.

permite expresar y estructurar el pensamiento

Incrementamos la capacidad para expresar ideas

Por qu estudiar Lenguajes?


Incrementa

el conocimiento de construcciones

posibles.

Libera la mente para poder pensar en trminos del


problema y no de determinado lenguaje.

Ejemplo: Tratar de resolver todo en termino de las


capacidades de C.

Slide 9

Por qu estudiar Lenguajes?


Permite

elegir mejor el lenguaje a utilizar para


cada tarea.

Slide 10

Conocer las fortalezas y debilidades de los


diferentes lenguajes nos permite saber que
problema podemos resolver ms fcilmente con
cada uno y por lo tanto se reduce el esfuerzo de
codificacin.

CGI de Internet vs. Programar un controlador de


dispositivo.

calculo

ADA Fortran

inteligencia artificial

Prolog - ML

Por qu estudiar Lenguajes?


Hace

ms fcil aprender nuevos lenguajes de


programacin.

Slide 11

Un conocimiento de la estructura de los lenguajes


de programacin reduce considerablemente la curva
de aprendizaje de un lenguaje nuevo.

Por qu estudiar Lenguajes?


Hace

ms fcil el diseo e implementacin de


lenguajes.

El programador puede convertirse en diseador o


implementador de un lenguaje.

O no necesariamente nuevos lenguajes de


programacin, pero cuando programamos muchas
veces necesitamos crear cdigos de comunicacin.

Ejemplo: Manejo de formas en Internet

Slide 12

Contenido:
Por

qu estudiar Lenguajes?

Historia

de los Lenguajes

Paradigmas

en Lenguajes

Criterios

para evaluar los lenguajes de


programacin

Slide 13

Qu hace a un Lenguaje bueno?

ENIAC

Slide 15

15

IBM 29: Oct /1964

Slide 17

Historia de los Lenguajes

Slide 22

Contenido:
Por

qu estudiar Lenguajes?

Historia

de los Lenguajes

Paradigmas

en Lenguajes

Criterios

para evaluar los lenguajes de


programacin

Slide 23

Qu hace a un Lenguaje bueno?

Paradigmas de Lenguajes
Se

reconoce generalmente 4 paradigmas de


programacin:

Imperativo (Estructurado)

Aplicativo (Funcional)

Orientado a Objetos

Lgico

Slide 24

Lenguajes Imperativos
Su

objetivo es entender y definir el estado de la


mquina (conjunto de posiciones de memorias,
cada una conteniendo un valor).

Lenguajes

orientados a instrucciones

El

programa consiste en elaborar un conjunto de


instrucciones para que la mquina llegue a la
respuesta.

Ejemplos:
Sintaxis:
Slide 25

C, Fortran, Pascal, Cobol

S1, S2, S3, S4,

Lenguajes Imperativos
Programacin:

serie de pasos (input, clculo,

ouput).
Elementos:

abstraccin procedural, asignacin,


loops, secuencias, condicionales.

Slide 26

Lenguajes Funcionales
Su

objetivo es entender la funcin que producira


la respuesta deseada.

Es

orientada hacia la composicin de funciones.

Programar

consiste en construir la funcin que


halle la respuesta.

Ejemplos:
Sintaxis:

Slide 27

ML, Lisp, Scheme, Haskell

F1(F2(F3(x)))

Lenguajes Funcionales
Programacin:

coleccin de funciones que se


combinan en formas complejas para construir
nuevas funciones.

Elementos:

Slide 28

alto orden, composicin, recursin.

Orientados a Objetos
Su

objetivo es modelar el problema con


elementos similares a los realmente presentes.

Programar

significa generar objetos que


intercambian mensajes entre si para resolver un
problema.

Ejemplos:
Sintxis:

Slide 29

Smalltalk, C++, Java, Squeak, C#

O1 ->mensaje-> O2.

Orientados a Objetos
Lenguajes

imperativos que unen


aplicativos con sentencias imperativas.

diseos

Sintaxis:

Conjunto de objetos (clases) conteniendo


datos (concepto imperativo) y mtodos (conceptos
aplicativos).

Programacin:

coleccin de objetos que


interactan pasndose mensajes que transforman
estados.

Elementos:

modelado de
herencia, encapsulamiento.

Slide 30

objetos,

clases,

Lenguajes Lgicos
Definen

reglas para decidir cuando la respuesta


ha sido alcanzada.

Utiliza

un conjunto de reglas para deducir los


atributos de la respuesta.

Ejemplos:
Sintaxis:

Slide 31

Prolog

Regla -> Conclusin

Contenido:
Por

qu estudiar Lenguajes?

Historia

de los Lenguajes

Paradigmas

en Lenguajes

Criterios

para evaluar los lenguajes de


programacin

Slide 32

Qu hace a un Lenguaje bueno?

Slide 33

Facilidad de Escritura
La

facilidad de escritura es la medida de cuan fcil


resulta usar un lenguaje para construir soluciones.

Simplicidad
Claridad
Ortogonalidad
Soporte

Slide 34

de Abstraccin

Facilidad de Escritura

Simplicidad

El lenguaje debera ser lo suficientemente pequeo y simple para


ser entendido en su totalidad

Un pequeo nmero de construcciones primitivas.


Un conjunto consistente de reglas para combinarlas
(ortogonalidad).

Qu tienen de malo los lenguajes grandes y complejos?

Contienen tantas caractersticas que muchas de ellas


nunca llegan a usarse ni a entenderse.
La complejidad del lenguaje crece de forma no lineal
con el nmero de caractersticas que incorpora.
Slide 35

Facilidad de Escritura

Simplicidad

Sin embargo,
El lenguaje ms usado (C++) es complejo.
Uno de los ms recomendados (Ada) es
grande y complejo.
Java, que naci con vocacin de ser simple,
tiende a hacerse ms grande y complejo.

Slide 36

Facilidad de Escritura

Claridad

Un programador slo puede escribir programas fiables si


entiende con toda claridad lo que significa (implica) cada
una de las estructuras del lenguaje.
La especificacin del lenguaje y la calidad de su
documentacin es absolutamente crtica en este aspecto:

Debe evitarse cualquier ambigedad.


No debe ser necesario escribir y ejecutar
fragmentos de cdigo para descubrir el
significado de una caracterstica del lenguaje.

Slide 37

Facilidad de Escritura

Ortogonalidad

El efecto de la combinacin de caractersticas debe


entenderse fcilmente y ser predecible.

Proporciona un mayor grado


restricciones ni casos especiales.

Las reglas del lenguaje deben tener las mnimas


excepciones posibles.

El usuario comprende mejor si tiene un pequeo


nmero de primitivas y un conjunto consistente de
reglas de combinacin.

Slide 38

de

generalidad

sin

Facilidad de Escritura
Ortogonalidad

Si es ortogonal, un lenguaje es fcil de aprender y usar.

Por ejemplo: Asignacin y Tipos


X=5
F(x)=x+3
A[y]=8

Slide 39

Facilidad de Escritura

Ortogonalidad

Qu tienen de malo la falta de ortogonalidad?

Que hace imposible deducir nuevas propiedades del lenguaje de


las que ya se conocen.
Que va en contra de la claridad.

Ejemplos de falta de ortogonalidad:

En Pascal todos los tipos escalares pueden leerse y escribirse,


excepto los booleanos que slo pueden escribirse.
En C las funciones pueden retornar structs pero no arrays
En C los parmetros se pasan a las funciones por valor, excepto
los arrays que se pasan por referencia.

Slide 40

Facilidad de Escritura

Soporte

de Abstraccin

La abstraccin es la capacidad para definir y utilizar


estructuras y operaciones muy complicadas de forma
que la complejidad quede oculta.

Concepto clave para manejar la complejidad.

Abstraccin de procesos y de datos.

Principio de diseo: Ocultamiento de la informacin

Slide 41

Legibilidad
Fcil

de leer a las personas (equipo)

SEMANTICA
SINTAXIS
DEFINICION
ESTRUCTURAS

DE DATOS

ESTRUCTURAS

DE CONTROL

Slide 42

Legibilidad

Semntica

Slide 43

La semntica de un lenguaje especifica el significado


algortmico de un programa y se define como un conjunto
de reglas que describen el comportamiento de ese
lenguaje en tiempo de ejecucin.

Legibilidad

Sintaxis

La sintaxis determina la forma en que se combinan los elementos del


lenguaje para construir sentencias y programas.

Unas reglas sintcticas adecuadas son fundamentales para que los


programas sean legibles.

Documentacin y comentarios
Eleccin de nombres
Uso de constantes
If-then-else anidados
Separacin de sentencias
Indentacin

Slide 44

Legibilidad

Sintaxis

Ejemplos de una mala sintaxis:


Restringir el tamao de los identificadores.
Uso del smbolo = para realizar asignaciones.
Palabras reservadas con ms de un significado (static
en en C).
Uso de llaves {... ...} para delimitar bloques.

Slide 45

Legibilidad

Definicin

del lenguaje

Precisin en la definicin de la sintaxis y de la semntica

Ambigedad: ejemplo, M(i) puede significar un

elemento del arreglo M una llamada a la


funcin M

Portabilidad

Definiciones formales

Slide 46

Legibilidad

Estructuras

Programacin estructurada

Estructuras

Slide 47

de control

de datos

Facilidades para expresar los datos del problema

Confiabilidad
Correcto:

cumple con las especificaciones

Verificacin

Chequeo
Robusto

Slide 48

de programas: probar su correccin

de tipos

Confiabilidad
Chequeo

de tipos

Chequeos estticos y dinmicos

Robusto

Capacidad de prevenir situaciones

Manejo de excepciones

Slide 49

Mantenibilidad

Modificabilidad
Factoreo
Localidad

Slide 50

Mantenibilidad

Mantenible

Modificabiliad: facilidad de introducir


cambios

Factoreo: una sola vez y luego rehusar

Localidad: el efecto de una caracterstica


se restringirse a una porcin local del
programa

Slide 51

Eficiencia

Tiempo

y Espacio

Esfuerzo

humano

Optimizable

Slide 52

Contenido:
Por

qu estudiar Lenguajes?

Historia

de los Lenguajes

Paradigmas

en Lenguajes

Criterios

para evaluar los lenguajes de


programacin

Slide 53

Qu hace a un Lenguaje bueno?

Qu hace a un lenguaje bueno?


Naturalidad

de la aplicacin

La estructura del programa refleja la estructura lgica del


algoritmo.

Cada lenguaje generalmente se especializa en un campo


de accin determinado y es ms fcil resolver ciertos
problemas con l.

Slide 54

Qu hace a un lenguaje bueno?


Facilidad

de verificacin

Debe proveer una manera de corroborar que el programa


efectivamente realiza su tarea.

Una sintaxis sencilla facilita la verificacin.

Slide 55

Qu hace a un lenguaje bueno?


Ambiente

de programacin

Debe contar con un entorno que facilite la programacin


en el lenguaje.

Generalmente lenguajes no tan buenos, pero que tienen


un buen entorno de programacin, son ms usados en el
mercado.

Slide 56

Qu hace a un lenguaje bueno?


Portabilidad

Que tan fcil se puede transportar la aplicacin de la


mquina en que se desarroll a otras mquinas donde va
a ser ejecutada.

El mejor ejemplo de esto es programacin para Internet.

Slide 57

Qu hace a un lenguaje bueno?


Costo

de uso

Costo de ejecucin

Costo de traduccin

Costo de creacin, prueba y uso

Costo de mantenimiento

Slide 58

Anda mungkin juga menyukai