Vous êtes sur la page 1sur 8

960114 – Lenguajes Comparados

“Las herramientas y el lenguaje que utilizamos para expresar o para guardar nuestros pensamientos
son los factores más importantes a la hora de determinar completamente lo que podemos pensar o
expresar.”
Edsger W. Dijkstra [1972]
• Principios de diseño de lenguajes de programación

• Paradigmas de programación y dominios de aplicación

• Consideraciones pragmáticas

• Brevísima historia de los lenguajes de programación

• Cualidades de un lenguaje de programación

• Niveles de Lenguajes
• Traductores Compiladores Tipos
960114 – Lenguajes Comparados

• Principios de diseño de lenguajes de programación

• Sintaxis

• Semántica y Sistemas de tipos

• Gestión de Memoria

• Manipulación de Excepciones
960114 – Lenguajes Comparados

• Paradigmas de Programación y Dominios de Aplicación


Computación Sistemas de Inteligencia Sistemas Centrada en la
Científica Información Artificial Web

Imperativa Fortran, C, Ada COBOL, C++, RPG, Fortran C, C++, Ada, Ada95 .NET, javascript,
SQL VBscript

Orientada a C++, Java, Eiffel C++, Java .NET, javascript,


VBscript
Objetos

Funcional Lisp, Haskell, R (Estadística), K Lisp, Haskell,


Scheme, (Análisis Financiero), Scheme
Mathematica,
Miranda

Lógica Prolog, CLP, CLIPS

(Declarativa)

Guiada por java.awt, Visual .NET, Visual Basic,


Basic, Delphi, Visual javascript, VBscript,
Eventos C++, Visual J++, Perl, Tcl/Tk
Visual Fox, Power
Builder, X, Motif,
Tcl/Tk

Concurrente Erlang (Funcional), Fortran de alto


Fortran de alto rendimiento,
rendimiento, Ada2005
Ada2005
960114 – Lenguajes Comparados

• Consideraciones Pragmáticas
• Restricciones de arquitectura
• Restricciones contextuales

Lenguaje Natural

Área de Aplicación

Lenguaje de Programación

Compilador / Intérprete

Máquina Virtual

Sistema Operativo

Lenguaje de Máquina

• Intérpretes y equipos virtuales


• Normalizaciones: www.ansi.org y www.iso.org
• Sistemas heredados: 90% vs. 10%
960114 – Lenguajes Comparados

• Brevísima evolución histórica


• Pre-50’s
Predecessor(s) Year Name Chief developer, Company

* ~1837 Analytical Engine order code Charles Babbage and Ada Lovelace

* 1943- Plankalkül (concept) Konrad Zuse


5
* 1943- ENIAC coding system John Von Neumann, John Mauchly, J. Presper Eckert, Herman Goldstine after
6 Alan Turing
ENIAC coding 1946 ENIAC Short Code Richard Clippinger, John Von Neumann after Alan Turing
system
ENIAC coding 1946 Von Neumann and Goldstine John Von Neumann and Herman Goldstine
system graphing system
ENIAC coding 1947 ARC Assembly Kathleen Booth
system
Analytical Engine 1948 CPC Coding scheme Howard Aiken
order code

ENIAC coding 1948 Curry notation system Haskell Curry


system
ENIAC Short 1949 Brief Code John Mauchly and William F. Schmitt
Code
ENIAC Short 1949 C-10 Betty Holberton
Code
CPC Coding 1949 Seeber coding scheme (concept) Robert Seeber
scheme
960114 – Lenguajes Comparados

• Brevísima evolución histórica


• Post-2000

Java 2000 Join Java G Stewart von Itzstein


FP, Forth 2000 Joy von Thun
C, C++, C#, Java 2000 D Walter Bright at Digital Mars
C, C++, Java, Delphi 2000 C# Anders Hejlsberg at Microsoft(ECMA)
Java 2001 AspectJ Xerox PARC
Self, NewtonScript 2002 Io Steve Dekorte
Perl, C++ 2003 S2 Fitzpatrick, Atkins
C#, ML, MetaHaskell 2003 Nemerle University of Wrocław
Joy, Forth, Lisp 2003 Factor Slava Pestov
Fortran 95 2004 Fortran 2003
* 2004 Subtext Jonathan Edwards
Python, C#, Ruby 2004 Boo Rodrigo B. de Oliveira
Object Pascal, C# 2004 Chrome programming language RemObjects Software
Java 2004 Groovy James Strachan
Haskell 2006 Links Phil Wadler, University of Edinburgh
ksh, C#, Ruby, SQL 2006 Windows PowerShell Microsoft
C# 2006-07 Cω Microsoft Research
Ada 95 2007 Ada 2005 ISO
960114 – Lenguajes Comparados

• Cualidades de un Lenguaje de Programación

• Simplicidad y claridad

• Uniones: int x; // ¿cuándo se une x al tipo int?


• en definición del lenguaje (tipos básicos)

• en implementación (representaciones del equipo – e.g., IEEE 754)

• en escritura del programa (declaraciones)

• en compilación y carga del programa (variables estáticas a direcciones fijas de


memoria)

• en ejecución (variables dinámicas)

• en tiempos alternativos: unión temprana vs. unión tardía

• Ortogonalidad: x = 1 + 2; vs. s = “ho” + ”la”; en C vs. en Pascal

• Fiabilidad

• Aplicabilidad

• Abstracción: bibliotecas  extensibilidad

• Implementación eficiente
960114 – Lenguajes Comparados

• Niveles de Lenguajes:

Lenguaje Visuales
traducción::

a b s t r a c c i ó n

c o m p i l a c i ó n
Lenguajes Estructurados

Intérpretes

Mnemotécnico & Ensamblador

Lenguaje de Máquina

• Tipos de Compiladores:
{ Preprocesador, Cruzado, Linkeditor Separado, Incremental, Auto-
Compilador, Metacompilador, Decompilador (Ingeniería Reversa) }

Vous aimerez peut-être aussi