Lenguajes de programación - Conceptos generales
Upcoming SlideShare
Loading in...5
×
 

Lenguajes de programación - Conceptos generales

on

  • 3,089 views

 

Statistics

Views

Total Views
3,089
Views on SlideShare
3,089
Embed Views
0

Actions

Likes
0
Downloads
28
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-ShareAlike LicenseCC Attribution-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Lenguajes de programación - Conceptos generales Lenguajes de programación - Conceptos generales Presentation Transcript

  • Técnicas Avanzadas de Programación Ingeniería en Informática Carlos Abaffy abaffy@gmail.com
  • Contenido de la Materia1. Conceptos Generales de Lenguajes I. Definición de Lenguajes II. Historia III. Características IV. Tipos de Lenguajes V. Maquinas Virtuales VI. Tipos de Compiladores2. Programación Funcional I. Fundamentos de Programación Funcional II. Lenguaje Scheme3. Compiladores I. Sintaxis y Semántica II. BNF III. Funcionamiento de un Compilador
  • Contenido de la Materia4. Programación Lógica I. Fundamentos de Programación Lógica II. Lenguaje Prolog5. Programación Orientada a Objetos I. Fundamentos del Modelo de Objetos II. Lenguaje C++ III. Lenguaje Java IV. Otros lenguajes basados en el modelo de objetos
  • Bibliografía1.- Lenguajes de Programación principios y paradigmas- Mc Graw Hill – 2003A.Tucker – R.Noonan2.- Concepts of Programming Languages – AddisonWesley 1999Robert Sebesta3.- Programming Languages Design andImplementation – Prentice Hall 1984Terrence W. Pratt4.- Seven Languages in Seven Weeks – 2010Bruce Tate5.- Manuales de Los Lenguajes a utilizar disponibles enInternet
  • Herramientas de Software1.- Programación Funcional - Scheme (Código Abierto)http://www.drscheme.org2.- Programación Lógica - Prolog (Código Abierto)http://www.swi-prolog.org/3.- Programación Orientada a Objetos - C++ /Java/Ruby(Código Abierto)
  • Conceptos de Lenguajes• Cualquier notación para la descripción de algoritmos y estructuras de datos puede llamarse lenguaje de programación, sin embargo, también es requerido que el lenguaje sea implementado en un computador.
  • Conceptos de LenguajesDefiniciones: • Medio de Comunicación entre el Hombre y la Máquina. • Lenguaje usado para dar instrucciones a la máquina . Permite que el programador exprese el procesamiento de datos de una forma simbólica, sin tener en cuenta los detalle específicos de la máquina
  • Conceptos de LenguajesPor qué estudiar lenguajes de Programación: • Terrence Pratt identifica 5 razones: • Para mejorar el conocimiento del lenguaje que se está usando (Los conceptos se pueden aplicar en cualquier lenguaje) • Para enriquecer el vocabulario de estructuras de programación útiles (El lenguaje sirve como ayuda y restricción al momento de pensar) • Para realizar una mejor selección del lenguaje de Programación (Mayor conocimiento implica una mejor selección) • Para facilitar el aprendizaje de un nuevo lenguaje (Aprendizaje por asociación) • Facilita el diseño de un nuevo lenguaje (Reutilización de conceptos en diferentes campos)
  • Conceptos de LenguajesNiveles de Lenguajes
  • Conceptos de LenguajesHistoria de los Lenguajes de Programación: • Los primeros lenguajes de programación fueron los lenguajes de código de máquina de las primeras computadores diseñadas en los años cuarenta . • Los primeros lenguajes de ato nivel surgen en 1950 y han evolucionado rápidamente desde su creación. • La figura siguiente muestra la evolución e influencia que han tenido los lenguajes de programación claves. • Java se considera un lenguaje interesante debido a que aparece como un lenguaje influenciado por varios paradigmas de programación
  • Conceptos de Lenguajes
  • Conceptos de LenguajesInfluencias en la evolución de los lenguajes: • Hardware y Sistemas Operativos Hardware más poderoso y sistemas operativos con mayores servicios. • Aplicaciones Mayor uso del computador => mayor demanda de lenguajes de programación más eficientes. • Métodos de Programación e Implementación Nuevos métodos => inclusión de nuevas características en los lenguajes • Estudios Teóricos Han demostrado las fortalezas y debilidades de las características de los lenguajes. • Estandarización Necesidad de lenguajes estándar que puedan implementados fácilmente en diversas arquitecturas.
  • Conceptos de LenguajesInfluencias en la evolución de los lenguajes: •. Métodos de Programación e Implementación • 1960-1970 Programación Estructurada (eliminación de goto) • 1970–1980 Enfásis en Datos y No en Procesos (Soporte Abstracción) • 1980 Software Orientado a Objetos (Orientación a Objetos)
  • Conceptos de LenguajesCaracterísticas de un Buen Lenguaje: o Claridad y Simplicidad o Unificación de Conceptos o Soporte para Abstracción o Facilidad de Verificación o Ambiente de programación o Portabilidad o Costo de Ejecución o Costo de Creación, Prueba y Uso
  • Conceptos de LenguajesEstructura y Operación del Computador: Se identifican 6 componentes principales: o Data: Archivos, memoria principal, registros, tipos básicos y estructurados o Operaciones Primitivas: Conjunto de operaciones para manipular data (primitivas aritmeticas, acceso a memoria, etc) o Secuencias de Control: Mecanismos para controlar secuencias de ejecución (Próxima instrucción a ejecutar) o Data de Control: Mecanismos para manejo de operandos que cada instrucción de máquina usa. oAdministración de Almacenamiento: Almacenamiento de data y programas o Sistema Operativo: Mecanismos de administración y comunicación con el ambiente.
  • Conceptos de LenguajesEstructura y Operación del Computador: Archivos Externos I/O Memoria principal Registro Dirección Registro Data { Registro Alta Programa Velocidad { Elementos INTERPRETADOR OPERACIÓN OPERACIÓN Procesamiento PRIMITIVA 1 PRIMITIVA n Activo UNIDAD CENTRAL DE PROCESAMIENTO - CPU
  • Conceptos de LenguajesComputador Virtual: o Computador Corre Código de Máquina. o Puedo tener diferente hardware para diferentes lenguajes. Ejm. Máquinas Lisp => Alto Costo o Computador es un conjunto integrado de algoritmos y estructuras de datos que pueden almacenar y ejecutar programas o Computador Real: Hardware o Computador Virtual: Simulación Software
  • Conceptos de LenguajesComputador Virtual: Computador Virtual C Compilador C Sistema Operativo Interpretador Lisp Lenguaje Compilador Máquina Fortran HW Interprete Comandos Compilador Sistema Pascal Operativo Computador Virtual Pascal Compilador Ada Asembler ...
  • Conceptos de LenguajesCompilación: Los lenguajes pueden ser implementados por 3 métodos: Compilador puro: Los programas son transformados en código de máquina que puede ser ejecutado directamente en el computador. Ejm: C, C++,Pascal, etc. Interpretador puro: El interpretador actúa como un software de simulación que busca y ejecuta instrucciones de alto nivel en vez de instrucciones de máquina. Ejm: Lisp. Desventaja: Más Lento(10-100 veces). Sistema Híbrido: El código fuente es transformado en un código intermedio que facilita la interpretación. Ejm; Java
  • Conceptos de Lenguajes CódigoCompilador Puro: Fuente Analizador Lexicográfico Tokens Analizador Sintáctico Arbol Parsing Generador Tabla Código Optimización (opcional) Símbolos Intermedio Código Intermedio Generador Código Data Lenguaje Entrada Máquina Enlazador Computador (Sistema Operativo) Resultados
  • Conceptos de LenguajesInterpretador Puro: Código Fuente Data Entrada Interpretador Resultados
  • Conceptos de LenguajesSistema Híbrido: Código Fuente Analizador Lexicográfico Tokens Analizador Sintáctico Arbol Parsing Generador Código Intermedio Código Intermedio Entrada Interpretador Resultados
  • Conceptos de LenguajesParadigmas de Programación:Los principales paradigmas de programación son: Lenguajes Imperativos: Consiste en una secuencia de instrucciones y datos almacenados en memoria y de un procesador, el cual es capaz de ejecutar de manera secuencial una serie de operaciones llamadas comandos. Estos lenguajes ofrecen al programador conceptos que se traducen de forma natural al modelo de la máquina. Ejm. Fortran, Pascal, C, Ada Problema: Es más cercano a la máquina que al razonamiento humano. Ventaja: Eficiencia en la ejecución.
  • Conceptos de LenguajesParadigmas de Programación: (continuación) Lenguajes Funcionales: Basado en el uso de funciones que convierten datos en resultados. Las funciones pueden manipular datos simbólicos y no sólo numéricos. Ejm: Lisp. Programar en lenguaje funcional significa construir a partir de funciones ya existentes => es importante conocer las funciones existentes ya definidas. Problema: No son eficientes debido a que son más cercanos al razonamiento humano que al computador. Ventaja: Son más cercanos al razonamiento humano.
  • Conceptos de LenguajesParadigmas de Programación: (continuación) Lenguajes lógicos: Se fundamentan en la lógica de 1° orden. Se definen axiomas y reglas para deducir cosas. Estos lenguajes son conocidos como declarativos, Ejm: Prolog. El trabajo del programador se restringe a la buena descripción del problema en forma de hechos y reglas. A partir de estos hechos se pueden encontrar muchas soluciones dependiendo como se formulen las preguntas. ⇒NO ES NECESARIO DEFINIR EL ALGORITMO DE SOLUCIÓN Pero se debe expresar muy bien el conocimiento del problema Problema: No son eficientes debido a que son más cercanos al razonamiento humano que al computador. Ventaja: Son más cercanos al razonamiento humano.
  • Conceptos de LenguajesParadigmas de Programación: (continuación) Lenguajes Orientados a Objetos: Introducen una nueva abstracción de datos a los lenguajes procedimentales (Objetos, Herencia, polimorfismo). Los objetos facilitan la construcción de programas, ya que manejan abstracciones del mundo real, aumentan la modularización y la reutilización. Ejm: C++, Java. Problema: Excesivo manejo de memoria dinámica y una carga fuerte de código causada por la invocación de métodos. Ventaja: Facilitan el desarrollo de programas.