SlideShare une entreprise Scribd logo
1  sur  52
Lenguajes de Programación
Sesión 1: Introducción a Lenguajes
FIEC01552
Slide  2
Lenguajes de Programación
Los lenguajes de Programación son el corazón de
la Ciencia de la Computación.
Son herramientas que usamos no solo para
comunicarnos con las máquinas sino también con
las personas.
“el valor de un lenguaje se debe juzgar según la
forma en que afecta la producción de Software y
a la facilidad con la que puede integrarse a otras
herramientas”
Slide  3
Objetivos
Adquirir habilidad de apreciar y evaluar
lenguajes, identificando sus límites y
posibilidades.
Habilidad para elegir, para diseñar, implementar
o utilizar un lenguaje.
Enfatizar la abstracción.
Slide  4
Contenido:
¿Por qué estudiar Lenguajes?
Historia de los Lenguajes
Paradigmas en Lenguajes
Criterios para evaluar los lenguajes de
programación
– ¿Qué hace a un Lenguaje bueno?
Slide  5
¿Por qué estudiar Lenguajes?
Aumentar la capacidad para producir software.
– Conocer profundamente las características de los
lenguajes permite aprovechar su potencia y evitar
errores, minimizando esfuerzo
Slide  6
¿Por qué estudiar Lenguajes?
Mejora la habilidad para desarrollar mejores
algoritmos.
– Aprendemos a elaborar los algoritmos más
eficientes en concordancia con el lenguaje que
estamos utilizando.
– Ejemplo: Recursión
Slide  7
¿Por qué estudiar Lenguajes?
Mejora el uso de su lenguaje de programación
preferido.
– Si se entiende como se implementa cada
característica se mejora la capacidad para escribir
programas eficientes.
– Ejemplo: Orientación a Objetos (Herencia)
Slide  8
¿Por qué estudiar Lenguajes?
Incrementar el vocabulario
– El lenguaje
• equivale a comunicación.
• es una ayuda y una limitación al pensamiento.
• permite expresar y estructurar el pensamiento
– Incrementamos la capacidad para expresar ideas
Slide  9
¿Por qué estudiar Lenguajes?
Incrementa el conocimiento de construcciones
posibles.
– Libera la mente para poder pensar en términos del
problema y no de determinado lenguaje.
– Ejemplo: Tratar de resolver todo en termino de las
capacidades de C.
Slide  10
¿Por qué estudiar Lenguajes?
Permite elegir mejor el lenguaje a utilizar para
cada tarea.
– Conocer las fortalezas y debilidades de los
diferentes lenguajes nos permite saber que
problema podemos resolver más fácilmente con
cada uno y por lo tanto se reduce el esfuerzo de
codificación.
• CGI de Internet vs. Programar un controlador de
dispositivo.
• calculo ADA – Fortran
• inteligencia artificial Prolog - ML
Slide  11
¿Por qué estudiar Lenguajes?
Hace más fácil aprender nuevos lenguajes de
programación.
– Un conocimiento de la estructura de los lenguajes
de programación reduce considerablemente la curva
de aprendizaje de un lenguaje nuevo.
Slide  12
¿Por qué estudiar Lenguajes?
Hace más fácil el diseño e implementación de
lenguajes.
– El programador puede convertirse en diseñador o
implementador de un lenguaje.
– O no necesariamente nuevos lenguajes de
programación, pero cuando programamos muchas
veces necesitamos crear códigos de comunicación.
– Ejemplo: Manejo de formas en Internet
Slide  13
Contenido:
¿Por qué estudiar Lenguajes?
Historia de los Lenguajes
Paradigmas en Lenguajes
Criterios para evaluar los lenguajes de
programación
– ¿Qué hace a un Lenguaje bueno?
Slide  15
ENIAC
15
Slide  17
IBM 29: Oct /1964
Slide  22
Historia de los Lenguajes
Slide  23
Contenido:
¿Por qué estudiar Lenguajes?
Historia de los Lenguajes
Paradigmas en Lenguajes
Criterios para evaluar los lenguajes de
programación
– ¿Qué hace a un Lenguaje bueno?
Slide  24
Paradigmas de Lenguajes
Se reconoce generalmente 4 paradigmas de
programación:
– Imperativo (Estructurado)
– Aplicativo (Funcional)
– Orientado a Objetos
– Lógico
Slide  25
Lenguajes Imperativos
Su objetivo es entender y definir el estado de la
máquina (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 máquina llegue a la
respuesta.
Ejemplos: C, Fortran, Pascal, Cobol
Sintaxis: S1, S2, S3, S4, …
Slide  26
Lenguajes Imperativos
Programación: serie de pasos (input, cálculo,
ouput).
Elementos: abstracción procedural, asignación,
loops, secuencias, condicionales.
Slide  27
Lenguajes Funcionales
Su objetivo es entender la función que produciría
la respuesta deseada.
Es orientada hacia la composición de funciones.
Programar consiste en construir la función que
halle la respuesta.
Ejemplos: ML, Lisp, Scheme, Haskell
Sintaxis: F1(F2(F3(x)))
Slide  28
Lenguajes Funcionales
Programación: colección de funciones que se
combinan en formas complejas para construir
nuevas funciones.
Elementos: alto orden, composición, recursión.
Slide  29
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: Smalltalk, C++, Java, Squeak, C#
Sintáxis: O1 ->mensaje-> O2.
Slide  30
Orientados a Objetos
Lenguajes imperativos que unen diseños
aplicativos con sentencias imperativas.
Sintaxis: Conjunto de objetos (clases) conteniendo
datos (concepto imperativo) y métodos (conceptos
aplicativos).
Programación: colección de objetos que
interactúan pasándose mensajes que transforman
estados.
Elementos: modelado de objetos, clases,
herencia, encapsulamiento.
Slide  31
Lenguajes Lógicos
Definen reglas para decidir cuando la respuesta
ha sido alcanzada.
Utiliza un conjunto de reglas para deducir los
atributos de la respuesta.
Ejemplos: Prolog
Sintaxis: Regla -> Conclusión
Slide  32
Contenido:
¿Por qué estudiar Lenguajes?
Historia de los Lenguajes
Paradigmas en Lenguajes
Criterios para evaluar los lenguajes de
programación
– ¿Qué hace a un Lenguaje bueno?
Slide  33
Slide  34
Facilidad de Escritura
La facilidad de escritura es la medida de cuan fácil
resulta usar un lenguaje para construir soluciones.
Simplicidad
Claridad
Ortogonalidad
Soporte de Abstracción
Slide  35
Facilidad de Escritura
Simplicidad
– El lenguaje debería ser lo suficientemente pequeño y simple para
ser entendido en su totalidad
• Un pequeño número de construcciones primitivas.
• Un conjunto consistente de reglas para combinarlas
(ortogonalidad).
– ¿Qué tienen de malo los lenguajes “grandes” y “complejos”?
• Contienen tantas características que muchas de ellas
nunca llegan a usarse ni a entenderse.
• La complejidad del lenguaje crece de forma no lineal
con el número de características que incorpora.
Slide  36
Facilidad de Escritura
Simplicidad
– Sin embargo,
• El lenguaje más usado (C++) es complejo.
• Uno de los más recomendados (Ada) es
grande y complejo.
• Java, que nació con vocación de ser simple,
tiende a hacerse más grande y complejo.
Slide  37
Facilidad de Escritura
Claridad
– Un programador sólo puede escribir programas fiables si
entiende con toda claridad lo que significa (implica) cada
una de las estructuras del lenguaje.
– La especificación del lenguaje y la calidad de su
documentación es absolutamente crítica en este aspecto:
• Debe evitarse cualquier ambigüedad.
• No debe ser necesario escribir y ejecutar
fragmentos de código para descubrir el
significado de una característica del lenguaje.
– .
Slide  38
Facilidad de Escritura
Ortogonalidad
– El efecto de la combinación de características debe
entenderse fácilmente y ser predecible.
– Proporciona un mayor grado de generalidad sin
restricciones ni casos especiales.
– Las reglas del lenguaje deben tener las mínimas
excepciones posibles.
– El usuario comprende mejor si tiene un pequeño
número de primitivas y un conjunto consistente de
reglas de combinación.
Slide  39
Facilidad de Escritura
Ortogonalidad
 Si es ortogonal, un lenguaje es fácil de aprender y usar.
 Por ejemplo: Asignación y Tipos
X=5
F(x)=x+3
A[y]=8
Slide  40
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 sólo pueden escribirse.
• En C las funciones pueden retornar “structs” pero no “arrays”
• En C los parámetros se pasan a las funciones por valor, excepto
los arrays que se pasan por referencia.
Slide  41
Facilidad de Escritura
Soporte de Abstracción
– La abstracción 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.
– Abstracción de procesos y de datos.
– Principio de diseño: Ocultamiento de la información
Slide  42
Legibilidad
Fácil de leer a las personas (equipo)
SEMANTICA
SINTAXIS
DEFINICION
ESTRUCTURAS DE DATOS
ESTRUCTURAS DE CONTROL
Slide  43
Legibilidad
Semántica
– La semántica de un lenguaje especifica el significado
algorítmico de un programa y se define como un conjunto
de reglas que describen el comportamiento de ese
lenguaje en tiempo de ejecución.
Slide  44
Legibilidad
Sintaxis
– La sintaxis determina la forma en que se combinan los elementos del
lenguaje para construir sentencias y programas.
– Unas reglas sintácticas adecuadas son fundamentales para que los
programas sean legibles.
• Documentación y comentarios
• Elección de nombres
• Uso de constantes
• If-then-else anidados
• Separación de sentencias
• Indentación
Slide  45
Legibilidad
Sintaxis
– Ejemplos de una “mala” sintaxis:
• Restringir el tamaño de los identificadores.
• Uso del símbolo = para realizar asignaciones.
• Palabras reservadas con más de un significado (static
en en C).
• Uso de llaves {... ...} para delimitar bloques.
Slide  46
Legibilidad
Definición del lenguaje
– Precisión en la definición de la sintaxis y de la semántica
– Ambigüedad: ejemplo, M(i) puede significar un
elemento del arreglo M ó una llamada a la
función M
– Portabilidad
– Definiciones formales
Slide  47
Legibilidad
Estructuras de control
– Programación estructurada
Estructuras de datos
– Facilidades para expresar los datos del problema
Slide  48
Confiabilidad
 Correcto: cumple con las especificaciones
 Verificación de programas: probar su corrección
 Chequeo de tipos
 Robusto
Slide  49
Confiabilidad
Chequeo de tipos
– Chequeos estáticos y dinámicos
Robusto
– Capacidad de prevenir situaciones
– Manejo de excepciones
Slide  50
Mantenibilidad
Modificabilidad
Factoreo
Localidad
Slide  51
Mantenibilidad
Mantenible
– Modificabiliad: facilidad de introducir
cambios
– Factoreo: una sola vez y luego rehusar
– Localidad: el efecto de una característica
se restringirse a una porción local del
programa
Slide  52
Eficiencia
 Tiempo y Espacio
 Esfuerzo humano
 Optimizable
Slide  53
Contenido:
¿Por qué estudiar Lenguajes?
Historia de los Lenguajes
Paradigmas en Lenguajes
Criterios para evaluar los lenguajes de
programación
– ¿Qué hace a un Lenguaje bueno?
Slide  54
¿Qué hace a un lenguaje bueno?
Naturalidad de la aplicación
– La estructura del programa refleja la estructura lógica del
algoritmo.
– Cada lenguaje generalmente se especializa en un campo
de acción determinado y es más fácil resolver ciertos
problemas con él.
Slide  55
¿Qué hace a un lenguaje bueno?
Facilidad de verificación
– Debe proveer una manera de corroborar que el programa
efectivamente realiza su tarea.
– Una sintaxis sencilla facilita la verificación.
Slide  56
¿Qué hace a un lenguaje bueno?
Ambiente de programación
– Debe contar con un entorno que facilite la programación
en el lenguaje.
– Generalmente lenguajes no tan buenos, pero que tienen
un buen entorno de programación, son más usados en el
mercado.
Slide  57
¿Qué hace a un lenguaje bueno?
Portabilidad
– Que tan fácil se puede transportar la aplicación de la
máquina en que se desarrolló a otras máquinas donde va
a ser ejecutada.
– El mejor ejemplo de esto es programación para Internet.
Slide  58
¿Qué hace a un lenguaje bueno?
Costo de uso
– Costo de ejecución
– Costo de traducción
– Costo de creación, prueba y uso
– Costo de mantenimiento

Contenu connexe

Tendances

Mapa conceptual ac
Mapa conceptual acMapa conceptual ac
Mapa conceptual acmani villa
 
Comparación de lenguajes de programación
Comparación de lenguajes de programaciónComparación de lenguajes de programación
Comparación de lenguajes de programaciónSebastian D Valenzuela
 
diapositivas algoritmos
diapositivas algoritmos diapositivas algoritmos
diapositivas algoritmos TiffanyMartinez
 
Actividad 2 Analizador léxico, sintáctico y semántico
Actividad 2 Analizador léxico, sintáctico y semántico Actividad 2 Analizador léxico, sintáctico y semántico
Actividad 2 Analizador léxico, sintáctico y semántico maryr_
 
Analizador Sintáctico
Analizador SintácticoAnalizador Sintáctico
Analizador SintácticoPablo Guerra
 
Estructura y funcionamiento del procesador
Estructura y funcionamiento del procesadorEstructura y funcionamiento del procesador
Estructura y funcionamiento del procesadorJose Diaz Silva
 
Metodologia xp cortesserranoeliud
Metodologia xp cortesserranoeliudMetodologia xp cortesserranoeliud
Metodologia xp cortesserranoeliudEliud Cortes
 
Compilador e interprete
Compilador e interpreteCompilador e interprete
Compilador e interpreteFernando Solis
 
Fundamentos de Programación
Fundamentos de ProgramaciónFundamentos de Programación
Fundamentos de ProgramaciónKudos S.A.S
 
Cualidades de un lenguaje de programación
Cualidades de un lenguaje de programaciónCualidades de un lenguaje de programación
Cualidades de un lenguaje de programaciónJose Gallardo
 
Analizador Sintactico
Analizador SintacticoAnalizador Sintactico
Analizador SintacticoBayo Chicaiza
 
Aplicaciones Distribuídas
Aplicaciones DistribuídasAplicaciones Distribuídas
Aplicaciones DistribuídasJavierialv
 
Especificación y resultados de las pruebas de software
Especificación y resultados de las pruebas de softwareEspecificación y resultados de las pruebas de software
Especificación y resultados de las pruebas de softwareJesús E. CuRias
 

Tendances (20)

Pruebas De Software
Pruebas De SoftwarePruebas De Software
Pruebas De Software
 
Presentacion Python
Presentacion  Python Presentacion  Python
Presentacion Python
 
Mapa conceptual ac
Mapa conceptual acMapa conceptual ac
Mapa conceptual ac
 
Jerarquia de chomsky
Jerarquia de chomskyJerarquia de chomsky
Jerarquia de chomsky
 
Comparación de lenguajes de programación
Comparación de lenguajes de programaciónComparación de lenguajes de programación
Comparación de lenguajes de programación
 
Python para principiantes
Python para principiantesPython para principiantes
Python para principiantes
 
diapositivas algoritmos
diapositivas algoritmos diapositivas algoritmos
diapositivas algoritmos
 
Actividad 2 Analizador léxico, sintáctico y semántico
Actividad 2 Analizador léxico, sintáctico y semántico Actividad 2 Analizador léxico, sintáctico y semántico
Actividad 2 Analizador léxico, sintáctico y semántico
 
Exposición de Lenguajes de Programación
Exposición de Lenguajes de ProgramaciónExposición de Lenguajes de Programación
Exposición de Lenguajes de Programación
 
Analizador Sintáctico
Analizador SintácticoAnalizador Sintáctico
Analizador Sintáctico
 
Estructura y funcionamiento del procesador
Estructura y funcionamiento del procesadorEstructura y funcionamiento del procesador
Estructura y funcionamiento del procesador
 
Metodologia xp cortesserranoeliud
Metodologia xp cortesserranoeliudMetodologia xp cortesserranoeliud
Metodologia xp cortesserranoeliud
 
Compilador e interprete
Compilador e interpreteCompilador e interprete
Compilador e interprete
 
Fundamentos de Programación
Fundamentos de ProgramaciónFundamentos de Programación
Fundamentos de Programación
 
Cualidades de un lenguaje de programación
Cualidades de un lenguaje de programaciónCualidades de un lenguaje de programación
Cualidades de un lenguaje de programación
 
Analizador Sintactico
Analizador SintacticoAnalizador Sintactico
Analizador Sintactico
 
Aplicaciones Distribuídas
Aplicaciones DistribuídasAplicaciones Distribuídas
Aplicaciones Distribuídas
 
5. Métodos de Prueba de Software
5. Métodos de Prueba de Software5. Métodos de Prueba de Software
5. Métodos de Prueba de Software
 
Métodos Formales
Métodos FormalesMétodos Formales
Métodos Formales
 
Especificación y resultados de las pruebas de software
Especificación y resultados de las pruebas de softwareEspecificación y resultados de las pruebas de software
Especificación y resultados de las pruebas de software
 

Similaire à Lenguajes de Programacion

Resumen Capitulo 1 - Sebesta
Resumen Capitulo 1 - Sebesta Resumen Capitulo 1 - Sebesta
Resumen Capitulo 1 - Sebesta Santiago Valdez
 
Tipos de lenguaje de programacion
Tipos de lenguaje de programacionTipos de lenguaje de programacion
Tipos de lenguaje de programacionLy Andre
 
Preguntas de diagnostico
Preguntas de diagnosticoPreguntas de diagnostico
Preguntas de diagnosticoJavierCR2017
 
Evoluciýýn de la programaciýýn
Evoluciýýn de la programaciýýnEvoluciýýn de la programaciýýn
Evoluciýýn de la programaciýýnJana EstRada JacoBo
 
Resumen mstr. lulu
Resumen mstr. luluResumen mstr. lulu
Resumen mstr. lulutriss0706
 
01. lenguajes de programación autor virtuniversidad
01. lenguajes de programación autor virtuniversidad01. lenguajes de programación autor virtuniversidad
01. lenguajes de programación autor virtuniversidadLuisBeltrnAlvinoAlva
 
01. Lenguajes de programación autor Virtuniversidad.pdf
01. Lenguajes de programación autor Virtuniversidad.pdf01. Lenguajes de programación autor Virtuniversidad.pdf
01. Lenguajes de programación autor Virtuniversidad.pdfrosalesjonathan2024
 
Lenguajes de programacion (exposicion)
Lenguajes de programacion (exposicion)Lenguajes de programacion (exposicion)
Lenguajes de programacion (exposicion)YJGG
 
Cuadro comparativo.
Cuadro comparativo.Cuadro comparativo.
Cuadro comparativo.carmenmc2017
 
Cuadro comparativo.
Cuadro comparativo.Cuadro comparativo.
Cuadro comparativo.carmenmc2017
 

Similaire à Lenguajes de Programacion (20)

Resumen Capitulo 1 - Sebesta
Resumen Capitulo 1 - Sebesta Resumen Capitulo 1 - Sebesta
Resumen Capitulo 1 - Sebesta
 
Tipos de lenguaje de programacion
Tipos de lenguaje de programacionTipos de lenguaje de programacion
Tipos de lenguaje de programacion
 
Preguntas de diagnostico
Preguntas de diagnosticoPreguntas de diagnostico
Preguntas de diagnostico
 
Programación
ProgramaciónProgramación
Programación
 
Clase 15 06
Clase 15 06Clase 15 06
Clase 15 06
 
Evoluciýýn de la programaciýýn
Evoluciýýn de la programaciýýnEvoluciýýn de la programaciýýn
Evoluciýýn de la programaciýýn
 
Programacion objetos
Programacion objetosProgramacion objetos
Programacion objetos
 
Taller saberes previos
Taller saberes previosTaller saberes previos
Taller saberes previos
 
Resumen mstr. lulu
Resumen mstr. luluResumen mstr. lulu
Resumen mstr. lulu
 
Lenguaje de programacion
Lenguaje de programacionLenguaje de programacion
Lenguaje de programacion
 
Clase02 paradigmas
Clase02 paradigmasClase02 paradigmas
Clase02 paradigmas
 
POO
POOPOO
POO
 
01. lenguajes de programación autor virtuniversidad
01. lenguajes de programación autor virtuniversidad01. lenguajes de programación autor virtuniversidad
01. lenguajes de programación autor virtuniversidad
 
01. Lenguajes de programación autor Virtuniversidad.pdf
01. Lenguajes de programación autor Virtuniversidad.pdf01. Lenguajes de programación autor Virtuniversidad.pdf
01. Lenguajes de programación autor Virtuniversidad.pdf
 
Introducción a la Gerencia Informática
Introducción a la Gerencia InformáticaIntroducción a la Gerencia Informática
Introducción a la Gerencia Informática
 
lenguajes de programacion
lenguajes de programacionlenguajes de programacion
lenguajes de programacion
 
Diapositiva
DiapositivaDiapositiva
Diapositiva
 
Lenguajes de programacion (exposicion)
Lenguajes de programacion (exposicion)Lenguajes de programacion (exposicion)
Lenguajes de programacion (exposicion)
 
Cuadro comparativo.
Cuadro comparativo.Cuadro comparativo.
Cuadro comparativo.
 
Cuadro comparativo.
Cuadro comparativo.Cuadro comparativo.
Cuadro comparativo.
 

Plus de Velmuz Buzz

Ecuaciones Diferenciales de 1er Orden
Ecuaciones Diferenciales de 1er OrdenEcuaciones Diferenciales de 1er Orden
Ecuaciones Diferenciales de 1er OrdenVelmuz Buzz
 
Capa de Aplicacion
Capa de AplicacionCapa de Aplicacion
Capa de AplicacionVelmuz Buzz
 
Capa de Transporte
Capa de TransporteCapa de Transporte
Capa de TransporteVelmuz Buzz
 
Estructura Organizacional
Estructura OrganizacionalEstructura Organizacional
Estructura OrganizacionalVelmuz Buzz
 
Inteligencia artificial sistema experto
Inteligencia artificial sistema expertoInteligencia artificial sistema experto
Inteligencia artificial sistema expertoVelmuz Buzz
 
Electronica transistores
Electronica transistoresElectronica transistores
Electronica transistoresVelmuz Buzz
 
Electronica rectificadores
Electronica rectificadoresElectronica rectificadores
Electronica rectificadoresVelmuz Buzz
 
Electronica polarizacion
Electronica polarizacionElectronica polarizacion
Electronica polarizacionVelmuz Buzz
 
Electronica polarizacion tipo h
Electronica polarizacion tipo hElectronica polarizacion tipo h
Electronica polarizacion tipo hVelmuz Buzz
 
Electronica introduccion y repaso
Electronica introduccion y repasoElectronica introduccion y repaso
Electronica introduccion y repasoVelmuz Buzz
 
Electronica funcion de transferencia
Electronica funcion de transferenciaElectronica funcion de transferencia
Electronica funcion de transferenciaVelmuz Buzz
 
Electronica ejercicios
Electronica ejerciciosElectronica ejercicios
Electronica ejerciciosVelmuz Buzz
 
Electronica aplicaciones de diodos
Electronica aplicaciones de diodosElectronica aplicaciones de diodos
Electronica aplicaciones de diodosVelmuz Buzz
 
Electronica polarizacion del fet
Electronica  polarizacion del fetElectronica  polarizacion del fet
Electronica polarizacion del fetVelmuz Buzz
 
Electronica modelaje de transitores bipolares
Electronica  modelaje de transitores bipolaresElectronica  modelaje de transitores bipolares
Electronica modelaje de transitores bipolaresVelmuz Buzz
 
Electronica analisis a pequeña señal fet
Electronica  analisis a pequeña señal fetElectronica  analisis a pequeña señal fet
Electronica analisis a pequeña señal fetVelmuz Buzz
 
Electronica transitores efecto de cambio
Electronica transitores efecto de cambioElectronica transitores efecto de cambio
Electronica transitores efecto de cambioVelmuz Buzz
 

Plus de Velmuz Buzz (20)

Ecuaciones Diferenciales de 1er Orden
Ecuaciones Diferenciales de 1er OrdenEcuaciones Diferenciales de 1er Orden
Ecuaciones Diferenciales de 1er Orden
 
Ruby
Ruby Ruby
Ruby
 
Capa de Aplicacion
Capa de AplicacionCapa de Aplicacion
Capa de Aplicacion
 
Capa de Transporte
Capa de TransporteCapa de Transporte
Capa de Transporte
 
Capa Red
Capa RedCapa Red
Capa Red
 
Capa Enlace
Capa Enlace Capa Enlace
Capa Enlace
 
Estructura Organizacional
Estructura OrganizacionalEstructura Organizacional
Estructura Organizacional
 
Inteligencia artificial sistema experto
Inteligencia artificial sistema expertoInteligencia artificial sistema experto
Inteligencia artificial sistema experto
 
Electronica transistores
Electronica transistoresElectronica transistores
Electronica transistores
 
Electronica rectificadores
Electronica rectificadoresElectronica rectificadores
Electronica rectificadores
 
Electronica polarizacion
Electronica polarizacionElectronica polarizacion
Electronica polarizacion
 
Electronica polarizacion tipo h
Electronica polarizacion tipo hElectronica polarizacion tipo h
Electronica polarizacion tipo h
 
Electronica introduccion y repaso
Electronica introduccion y repasoElectronica introduccion y repaso
Electronica introduccion y repaso
 
Electronica funcion de transferencia
Electronica funcion de transferenciaElectronica funcion de transferencia
Electronica funcion de transferencia
 
Electronica ejercicios
Electronica ejerciciosElectronica ejercicios
Electronica ejercicios
 
Electronica aplicaciones de diodos
Electronica aplicaciones de diodosElectronica aplicaciones de diodos
Electronica aplicaciones de diodos
 
Electronica polarizacion del fet
Electronica  polarizacion del fetElectronica  polarizacion del fet
Electronica polarizacion del fet
 
Electronica modelaje de transitores bipolares
Electronica  modelaje de transitores bipolaresElectronica  modelaje de transitores bipolares
Electronica modelaje de transitores bipolares
 
Electronica analisis a pequeña señal fet
Electronica  analisis a pequeña señal fetElectronica  analisis a pequeña señal fet
Electronica analisis a pequeña señal fet
 
Electronica transitores efecto de cambio
Electronica transitores efecto de cambioElectronica transitores efecto de cambio
Electronica transitores efecto de cambio
 

Lenguajes de Programacion

  • 1. Lenguajes de Programación Sesión 1: Introducción a Lenguajes FIEC01552
  • 2. Slide  2 Lenguajes de Programación Los lenguajes de Programación son el corazón de la Ciencia de la Computación. Son herramientas que usamos no solo para comunicarnos con las máquinas sino también con las personas. “el valor de un lenguaje se debe juzgar según la forma en que afecta la producción de Software y a la facilidad con la que puede integrarse a otras herramientas”
  • 3. Slide  3 Objetivos Adquirir habilidad de apreciar y evaluar lenguajes, identificando sus límites y posibilidades. Habilidad para elegir, para diseñar, implementar o utilizar un lenguaje. Enfatizar la abstracción.
  • 4. Slide  4 Contenido: ¿Por qué estudiar Lenguajes? Historia de los Lenguajes Paradigmas en Lenguajes Criterios para evaluar los lenguajes de programación – ¿Qué hace a un Lenguaje bueno?
  • 5. Slide  5 ¿Por qué estudiar Lenguajes? Aumentar la capacidad para producir software. – Conocer profundamente las características de los lenguajes permite aprovechar su potencia y evitar errores, minimizando esfuerzo
  • 6. Slide  6 ¿Por qué estudiar Lenguajes? Mejora la habilidad para desarrollar mejores algoritmos. – Aprendemos a elaborar los algoritmos más eficientes en concordancia con el lenguaje que estamos utilizando. – Ejemplo: Recursión
  • 7. Slide  7 ¿Por qué estudiar Lenguajes? Mejora el uso de su lenguaje de programación preferido. – Si se entiende como se implementa cada característica se mejora la capacidad para escribir programas eficientes. – Ejemplo: Orientación a Objetos (Herencia)
  • 8. Slide  8 ¿Por qué estudiar Lenguajes? Incrementar el vocabulario – El lenguaje • equivale a comunicación. • es una ayuda y una limitación al pensamiento. • permite expresar y estructurar el pensamiento – Incrementamos la capacidad para expresar ideas
  • 9. Slide  9 ¿Por qué estudiar Lenguajes? Incrementa el conocimiento de construcciones posibles. – Libera la mente para poder pensar en términos del problema y no de determinado lenguaje. – Ejemplo: Tratar de resolver todo en termino de las capacidades de C.
  • 10. Slide  10 ¿Por qué estudiar Lenguajes? Permite elegir mejor el lenguaje a utilizar para cada tarea. – Conocer las fortalezas y debilidades de los diferentes lenguajes nos permite saber que problema podemos resolver más fácilmente con cada uno y por lo tanto se reduce el esfuerzo de codificación. • CGI de Internet vs. Programar un controlador de dispositivo. • calculo ADA – Fortran • inteligencia artificial Prolog - ML
  • 11. Slide  11 ¿Por qué estudiar Lenguajes? Hace más fácil aprender nuevos lenguajes de programación. – Un conocimiento de la estructura de los lenguajes de programación reduce considerablemente la curva de aprendizaje de un lenguaje nuevo.
  • 12. Slide  12 ¿Por qué estudiar Lenguajes? Hace más fácil el diseño e implementación de lenguajes. – El programador puede convertirse en diseñador o implementador de un lenguaje. – O no necesariamente nuevos lenguajes de programación, pero cuando programamos muchas veces necesitamos crear códigos de comunicación. – Ejemplo: Manejo de formas en Internet
  • 13. Slide  13 Contenido: ¿Por qué estudiar Lenguajes? Historia de los Lenguajes Paradigmas en Lenguajes Criterios para evaluar los lenguajes de programación – ¿Qué hace a un Lenguaje bueno?
  • 15. Slide  17 IBM 29: Oct /1964
  • 16. Slide  22 Historia de los Lenguajes
  • 17. Slide  23 Contenido: ¿Por qué estudiar Lenguajes? Historia de los Lenguajes Paradigmas en Lenguajes Criterios para evaluar los lenguajes de programación – ¿Qué hace a un Lenguaje bueno?
  • 18. Slide  24 Paradigmas de Lenguajes Se reconoce generalmente 4 paradigmas de programación: – Imperativo (Estructurado) – Aplicativo (Funcional) – Orientado a Objetos – Lógico
  • 19. Slide  25 Lenguajes Imperativos Su objetivo es entender y definir el estado de la máquina (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 máquina llegue a la respuesta. Ejemplos: C, Fortran, Pascal, Cobol Sintaxis: S1, S2, S3, S4, …
  • 20. Slide  26 Lenguajes Imperativos Programación: serie de pasos (input, cálculo, ouput). Elementos: abstracción procedural, asignación, loops, secuencias, condicionales.
  • 21. Slide  27 Lenguajes Funcionales Su objetivo es entender la función que produciría la respuesta deseada. Es orientada hacia la composición de funciones. Programar consiste en construir la función que halle la respuesta. Ejemplos: ML, Lisp, Scheme, Haskell Sintaxis: F1(F2(F3(x)))
  • 22. Slide  28 Lenguajes Funcionales Programación: colección de funciones que se combinan en formas complejas para construir nuevas funciones. Elementos: alto orden, composición, recursión.
  • 23. Slide  29 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: Smalltalk, C++, Java, Squeak, C# Sintáxis: O1 ->mensaje-> O2.
  • 24. Slide  30 Orientados a Objetos Lenguajes imperativos que unen diseños aplicativos con sentencias imperativas. Sintaxis: Conjunto de objetos (clases) conteniendo datos (concepto imperativo) y métodos (conceptos aplicativos). Programación: colección de objetos que interactúan pasándose mensajes que transforman estados. Elementos: modelado de objetos, clases, herencia, encapsulamiento.
  • 25. Slide  31 Lenguajes Lógicos Definen reglas para decidir cuando la respuesta ha sido alcanzada. Utiliza un conjunto de reglas para deducir los atributos de la respuesta. Ejemplos: Prolog Sintaxis: Regla -> Conclusión
  • 26. Slide  32 Contenido: ¿Por qué estudiar Lenguajes? Historia de los Lenguajes Paradigmas en Lenguajes Criterios para evaluar los lenguajes de programación – ¿Qué hace a un Lenguaje bueno?
  • 28. Slide  34 Facilidad de Escritura La facilidad de escritura es la medida de cuan fácil resulta usar un lenguaje para construir soluciones. Simplicidad Claridad Ortogonalidad Soporte de Abstracción
  • 29. Slide  35 Facilidad de Escritura Simplicidad – El lenguaje debería ser lo suficientemente pequeño y simple para ser entendido en su totalidad • Un pequeño número de construcciones primitivas. • Un conjunto consistente de reglas para combinarlas (ortogonalidad). – ¿Qué tienen de malo los lenguajes “grandes” y “complejos”? • Contienen tantas características que muchas de ellas nunca llegan a usarse ni a entenderse. • La complejidad del lenguaje crece de forma no lineal con el número de características que incorpora.
  • 30. Slide  36 Facilidad de Escritura Simplicidad – Sin embargo, • El lenguaje más usado (C++) es complejo. • Uno de los más recomendados (Ada) es grande y complejo. • Java, que nació con vocación de ser simple, tiende a hacerse más grande y complejo.
  • 31. Slide  37 Facilidad de Escritura Claridad – Un programador sólo puede escribir programas fiables si entiende con toda claridad lo que significa (implica) cada una de las estructuras del lenguaje. – La especificación del lenguaje y la calidad de su documentación es absolutamente crítica en este aspecto: • Debe evitarse cualquier ambigüedad. • No debe ser necesario escribir y ejecutar fragmentos de código para descubrir el significado de una característica del lenguaje. – .
  • 32. Slide  38 Facilidad de Escritura Ortogonalidad – El efecto de la combinación de características debe entenderse fácilmente y ser predecible. – Proporciona un mayor grado de generalidad sin restricciones ni casos especiales. – Las reglas del lenguaje deben tener las mínimas excepciones posibles. – El usuario comprende mejor si tiene un pequeño número de primitivas y un conjunto consistente de reglas de combinación.
  • 33. Slide  39 Facilidad de Escritura Ortogonalidad  Si es ortogonal, un lenguaje es fácil de aprender y usar.  Por ejemplo: Asignación y Tipos X=5 F(x)=x+3 A[y]=8
  • 34. Slide  40 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 sólo pueden escribirse. • En C las funciones pueden retornar “structs” pero no “arrays” • En C los parámetros se pasan a las funciones por valor, excepto los arrays que se pasan por referencia.
  • 35. Slide  41 Facilidad de Escritura Soporte de Abstracción – La abstracción 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. – Abstracción de procesos y de datos. – Principio de diseño: Ocultamiento de la información
  • 36. Slide  42 Legibilidad Fácil de leer a las personas (equipo) SEMANTICA SINTAXIS DEFINICION ESTRUCTURAS DE DATOS ESTRUCTURAS DE CONTROL
  • 37. Slide  43 Legibilidad Semántica – La semántica de un lenguaje especifica el significado algorítmico de un programa y se define como un conjunto de reglas que describen el comportamiento de ese lenguaje en tiempo de ejecución.
  • 38. Slide  44 Legibilidad Sintaxis – La sintaxis determina la forma en que se combinan los elementos del lenguaje para construir sentencias y programas. – Unas reglas sintácticas adecuadas son fundamentales para que los programas sean legibles. • Documentación y comentarios • Elección de nombres • Uso de constantes • If-then-else anidados • Separación de sentencias • Indentación
  • 39. Slide  45 Legibilidad Sintaxis – Ejemplos de una “mala” sintaxis: • Restringir el tamaño de los identificadores. • Uso del símbolo = para realizar asignaciones. • Palabras reservadas con más de un significado (static en en C). • Uso de llaves {... ...} para delimitar bloques.
  • 40. Slide  46 Legibilidad Definición del lenguaje – Precisión en la definición de la sintaxis y de la semántica – Ambigüedad: ejemplo, M(i) puede significar un elemento del arreglo M ó una llamada a la función M – Portabilidad – Definiciones formales
  • 41. Slide  47 Legibilidad Estructuras de control – Programación estructurada Estructuras de datos – Facilidades para expresar los datos del problema
  • 42. Slide  48 Confiabilidad  Correcto: cumple con las especificaciones  Verificación de programas: probar su corrección  Chequeo de tipos  Robusto
  • 43. Slide  49 Confiabilidad Chequeo de tipos – Chequeos estáticos y dinámicos Robusto – Capacidad de prevenir situaciones – Manejo de excepciones
  • 45. Slide  51 Mantenibilidad Mantenible – Modificabiliad: facilidad de introducir cambios – Factoreo: una sola vez y luego rehusar – Localidad: el efecto de una característica se restringirse a una porción local del programa
  • 46. Slide  52 Eficiencia  Tiempo y Espacio  Esfuerzo humano  Optimizable
  • 47. Slide  53 Contenido: ¿Por qué estudiar Lenguajes? Historia de los Lenguajes Paradigmas en Lenguajes Criterios para evaluar los lenguajes de programación – ¿Qué hace a un Lenguaje bueno?
  • 48. Slide  54 ¿Qué hace a un lenguaje bueno? Naturalidad de la aplicación – La estructura del programa refleja la estructura lógica del algoritmo. – Cada lenguaje generalmente se especializa en un campo de acción determinado y es más fácil resolver ciertos problemas con él.
  • 49. Slide  55 ¿Qué hace a un lenguaje bueno? Facilidad de verificación – Debe proveer una manera de corroborar que el programa efectivamente realiza su tarea. – Una sintaxis sencilla facilita la verificación.
  • 50. Slide  56 ¿Qué hace a un lenguaje bueno? Ambiente de programación – Debe contar con un entorno que facilite la programación en el lenguaje. – Generalmente lenguajes no tan buenos, pero que tienen un buen entorno de programación, son más usados en el mercado.
  • 51. Slide  57 ¿Qué hace a un lenguaje bueno? Portabilidad – Que tan fácil se puede transportar la aplicación de la máquina en que se desarrolló a otras máquinas donde va a ser ejecutada. – El mejor ejemplo de esto es programación para Internet.
  • 52. Slide  58 ¿Qué hace a un lenguaje bueno? Costo de uso – Costo de ejecución – Costo de traducción – Costo de creación, prueba y uso – Costo de mantenimiento