¿Porqué estudiar Lenguajes? Capítulo I Introducción a los Lenguajes de Programación Dominios de Programación l l l l l l Aplicaciones de negocio Programación de sistemas Aplicaciones científicas Inteligencia Artificial Scripting (Shell, PERL, etc.) Lenguajes de propósitos especiales (e.g. SQL, Simula, etc.) Categorías de Lenguajes l Imperativos l l Funcionales l l l l l l Incrementar capacidad de expresar ideas Mejor base para elegir lenguajes apropiados Incrementar habilidad de aprender nuevos lenguajes Mejorar el uso de su lenguaje Mejor comprensión del significado de la implementación Criterios de Evaluación Característica / Criterio Simplicidad/ortogonalidad Estructuras de Control Tipos y estructuras de datos Diseño de sintaxis Soporte para abstracción Expresividad Prueba de tipos Manejo de excepciones Restricción de alias (seudónimos) Facilidad de Lectura * * * * Facilidad de Escritura * * * * * * Fiabilidad * * * * * * * * * (Fuente: Sebasta 1999) Métodos de Implantación l l l Compilación (e.g. C++) Interpretación (e.g. LISP) Híbrido (e.g. Java) Basado en funciones Lógicos l l Básicamente una abstracción de la máquina de von Neumann (estados y acciones) l Basados en cálculo de predicado de primer orden *Orientados a Objetos l Extensión de los lenguajes imperativos 1 Ambientes de Programación l l l l l l l Evolución de los Lenguajes Sistema de Archivos Editores Enlazadores Cargadores Compiladores Depuradores etc. l l l l l l l l 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 Fortran I Fortran II • • Fortran IV • • Algol 58 • Flow-Matic • Algol 60 • Cobol • PL/I • • Simula I Estándares • Basic Algol W • • Simula 67 • • • Algol 68 • Pascal • Modula-2 l BCPL B C • • • • Fortran 90 l l • • • • C++ ANSI C Eiffel • l • QuickBasic • Visual Basic de jure y de facto Consideraciones importantes: l Smalltalk 80 Ada 83 Oberon • Tipos de estándares: l l Fortran 77 Lenguaje de Máquina Assembly Fortran y LISP Cobol Algol y sus descendientes Simula 67, Smalltalk y Eiffel C, C++ y Java C# Oportuno Conformidad Obsolescencia Java Ada 95 2