Vous êtes sur la page 1sur 22

Introduccin a los lenguajes de programacin

Table of Contents
1 Bibliografa
2 Historia de los lenguajes de programacin
3 Elementos de los lenguajes de programacin
4 Abstraccin
5 Paradigmas de programacin
5.1 Paradigma funcional
5.2 Paradigma lgico
5.3 Paradigma imperativo
5.4 Paradigma orientado a objetos
6 Compiladores e intrpretes
6.1 Compilacin
6.2 Interpretacin
6.3 Ejecucin en mquina virtual
6.4 Enlazado de rutinas y libreras
6.5 Preprocesamiento

1 Bibliografa
El tema est basado en los siguientes captulos. Os recomendamos que los estudieis y, si os interesa y os queda tiempo, que exploris en los enlaces
que hemos dejado en los apuntes para ampliar informacin.

Introduccin captulo 1 Abelson & Sussman (Building Abstractions with Procedures)


Captulo 1.2 Scott (The Programming Language Spectrum)
Captulo 1.3 Scott (Why Study Programming Languages)
Captulo 1.4 Scott (Compilation and Interpretation)

2 Historia de los lenguajes de programacin


Convertido de web en PDF a http://www.htmlapdf.com con el api html a pdf
Al comienzo slo exista el cdigo mquina. Al principio de la historia de los computadores no existan los lenguajes de programacin. Los
computadores se programaban en el lenguaje que entenda la unidad de procesamiento: el cdigo mquina.

El UNIVAC fue el primer computador comercial. La primera unidad se vendi en 1951. Se vendieron varias decenas de instalaciones en organismos
oficiales, ejrcito y empresas importantes. Se daban cursos de programacin y apareci la figura del programador (manual de 1959 de programacin
del UNIVAC). Eran ms importantes las horas de funcionamiento del computador que las horas de trabajo del programador.

(Imagen tomada de http://www.computer-history.info/Page4.dir/pages/Univac.dir/index.html)

Los primeros lenguajes de programacin aparecieron a finales de la dcada de los 50.

El FORTRAN fue el primero de ellos. Lo desarroll un equipo de IBM dirigido por John W. Backus. A finales de 1953, Backus lanz la propuesta de
desarrollar una alternativa ms productiva al lenguaje de programacin ensamblador: escribir los programas en un lenguaje ms expresivo y
traducirlos a ensamblador (FORmula TRANslating system). El primer manual de FORTRAN apareci en octubre de 1956 y el primer compilador se
termin en abril de 1956.

Cita de John Backus (tomada de la entrada de la Wikipedia sobre FORTRAN ):


Convertido de web en PDF a http://www.htmlapdf.com con el api html a pdf
Much of my work has come from being lazy. I didn't like writing programs, and so, when I was working on the IBM 701, writing programs
for computing missile trajectories, I started work on a programming system to make it easier to write programs.

Desde 1954 hasta la actualidad se han documentado ms de 2.500 lenguajes de programacin (consultar en The Language List). Entre 1952 y 1972,
la primera poca de los lenguajes de programacin, se desarrollaron alrededor de 200 lenguajes, de los que una decena fueron realmente
siginificativos y tuvieron influencia en el desarrollo de lenguajes posteriores.

Una lista parcial de algunos de los lenguajes de programacin ms importantes, junto con su ao de creacin:

1957 FORTRAN 1975 Pascal 1990 Haskell


1958 ALGOL 1975 Scheme 1991 Python

1960 Lisp 1975 Modula 1993 Ruby


1960 COBOL 1983 Smalltalk-80 1995 Java

1962 APL 1983 Objective-C 1995 PHP


1962 SIMULA 1983 Ada 2000 C#
1964 BASIC 1986 C++ 2003 Scala

1964 PL/I 1986 Eiffel 2003 Groovy


1970 Prolog 1987 Perl 2009 Go

1972 C 1988 Tcl/Tk

Un diagrama de los lenguajes ms importantes y sus dependencias:

Convertido de web en PDF a http://www.htmlapdf.com con el api html a pdf


(Figura tomada de http://people.mandriva.com/%7Eprigaux/language-study/diagram.html)

Convertido de web en PDF a http://www.htmlapdf.com con el api html a pdf


ric Lvnez ha hecho el esfuerzo de construir un rbol genealgico de los lenguajes de programacin, que indica la fecha en la que cada lenguaje fue
creado y la influencia que ha tenido en los lenguajes posteriores. Consultar el documento PDF y la web de ric Lvnez.

La Torre de Babel, representa el gran nmero de lenguajes de programacin. Esta imagen se us en la portada de Programming Languages: History
and Fundamentals, de J. E. Sauel, 1969, Prentice Hall.

Al principio, los lenguajes se diseaban nicamente para poder ejecutar los programas eficientemente. Los ordenadores, carsimos, eran el recurso
crtico, y los programadores eran bastante baratos. Un lenguaje de alto nivel tena que ser competitivo con la ejecucin de un cdigo en ensamblador.
A mediados de los aos 60, cuando se haban diseado FORTRAN, COBOL, LISP y ALGOL, John Backus (creador de FORTRAN) se dio cuenta que
la programacin estaba cambiando. Las mquinas eran menos caras, el coste de la programacin estaba aumentando, apareca la necesidad de
mover o migrar los programas de unas estaciones a otras, y surga la necesidad de llevar un buen mantenimiento de los programas resultantes. El
objetivo de un lenguaje de alto nivel se transform no slo en en ejecutar los programas eficientemente, sino tambin en facilitar el desarrollo de
programas para resolver problemas en determinadas reas de aplicacin.

La tecnologa de los ordenadores madur entre 1960 y 1970 y los lenguajes se centraron en resolver problemas especficos de un dominio. Los

Convertido de web en PDF a http://www.htmlapdf.com con el api html a pdf


programas cientficos generalmente se implementaban en FORTRAN, las aplicaciones para los negocios en COBOL, las aplicaciones militares en
JOVIAL, las de inteligencia artificial en LISP y las militares internas en Ada. Al igual que sucede con los lenguajes naturales, los lenguajes de
programacin a veces dejan de usarse. ALGOL no se utiliza desde los aos 60, se reemplaz por Pascal, el cual se reemplaz a su vez por C++ y
Java. COBOL, que se utilizaba para las aplicaciones mercantiles, se sustituy tambin por C++.

Los primeros lenguajes que todava se usan tienen revisiones peridicas para reflejar influencias de otras reas de computacin. Lenguajes como
Java, C++ y ML reflejan una gran experiencia obtenida en el diseo y uso de los cientos de lenguajes antiguos. Algunas de esas influencias son:

Recursos del ordenador: la evolucin de los ordenadores desde los aos 50, junto con los modernos sistemas operativos, han influenciado las
caractersticas de los lenguajes de alto nivel.
Aplicaciones: el uso de los ordenadores se ha extendido rpidamente desde las aplicaciones militares, cientficas y de negocios a los juegos,
los ordenadores personales, internet y cualquier aplicacin cotidiana.
Mtodos de programacin : el diseo de los lenguajes tiene que reflejar los buenos mtodos para implementar programas grandes y
complejos.
Estudios tericos<: Gracias a la investigacin durante ms de 50 aos en el diseo e implementacin de lenguajes, se conocen los puntos
fuertes y dbiles de las caractersticas de los mismos, por lo que influye en el diseo de los nuevos lenguajes.
Estandarizacin: cada vez ms existe la necesidad de que los programas sean portables de unos sistemas a otros.</li>

La siguiente tabla (extraida del libro Programming Languages. Design and Implementation, de Terrence W. Pratt y Marvin V. Zelkowitz) muestra una
pequea lista de los lenguajes y las influencias que fueron importante a finales del siglo 20.

Convertido de web en PDF a http://www.htmlapdf.com con el api html a pdf


Convertido de web en PDF a http://www.htmlapdf.com con el api html a pdf
A pesar de la enorme lista de lenguajes de programacin que han ido apareciendo, la mayor parte de los programadores slo utilizan unos pocos
lenguajes. Adems, los programadores a menudo trabajan en empresas o instalaciones donde se trabaja con un nico lenguaje en particular, como
Java, C o Ada. Entonces, os preguntars por qu es importante el estudio de diferentes lenguajes o paradigmas cuando al final slo trabajaris con
unos pocos. Hay muchas razones que justifican su estudio, entre las cuales las ms importantes son:

Mejora el uso del lenguaje de programacin : si se conoce cmo estn implementadas las caractersticas en un lenguaje de programacin, se
mejorar la habilidad para escribir programas eficientes. Por ejemplo, si se conoce cmo crear y manipular listas o cadenas en un lenguaje,
por ejemplo Scheme, utilizando recursin se conseguir construir programas ms eficientes.
Incrementa el vocabulario de los elementos de programacin .
Permite una mejor eleccin del lenguaje de programacin: El conocimiento de diversos lenguajes de programacin facilitan la eleccin del
lenguaje ms adecuado para un proyecto determinado.
Mejora la habilidad para desarrollar programas efectivos y eficientes: Muchos lenguajes proporcionan caractersticas que, cuando se utilizan
correctamente, aportan muchos beneficios a la programacin pero, cuando se hace un uso incorrecto, pueden ocasionar un gran coste
computacional. El ejemplo tpico es la <em>recursin</em>, que permite una implementacin elegante y eficiente de funciones. Pero cuando
no se sabe utilizar, puede ocasionar un aumento exponencial del tiempo de ejecucin.
Facilita el aprendizaje de un nuevo lenguaje de programacin : Cuando se conocen las estructuras, tcnicas de implementacin y
construcciones de un lenguaje, es mucho ms sencillo aprender un nuevo lenguaje de programacin que tenga estructuras similares.
Facilita el diseo de nuevos lenguajes de programacin : Es posible que en un futuro tengais que disear vosotros un lenguaje que se adapte a
vuestras necesidades. Cuantos ms lenguajes y paradigmas se conozcan, ms sencillo resultar el diseo y la implementacin.

La historia de los lenguajes de programacin es <em>dinmica</em> y se encuentra en continua expansin. El gran nmero de lenguajes de
programacin que han aparecido desde los aos 60 hasta la actualidad no son ni mucho menos los nicos que aparecern en un futuro.

Por ejemplo, a continuacin tenemos una lista extraida de freshmeat donde se puede ver el nmero de proyectos activos etiquetados con la etiqueta
Libraries ordenados por lenguaje de programacin (Febrero 2011):

Java (1436) J2ME (35) Groovy (12)


C (1310) Other (30) Visual Basic (11)
C++ (988) Unix Shell (30) ML (10)
PHP (857) Fortran (28) ASP (10)
Python (629) Haskell (23) Pascal (9)
Perl (404) Ada (23) HTML (8)
JavaScript (200) Other Scripting.. (19) Erlang (8)
Ruby (130) Lisp (17) Zope (8)
C# (88) Delphi (15) AJAX (8)
Tcl (86) Lua (14) XML (7)

Convertido de web en PDF a http://www.htmlapdf.com con el api html a pdf


SQL (67) Eiffel (14) .NET (7)
Objective C (41) PL/SQL (13) Qt (6)
Scheme (37) OCaml (13) Emacs Lisp (6)
Assembly (36) Common Lisp (12) bash (5)

En la siguiente web Timeline of Programming Languages tenemos una lista de los lenguajes que han aparecido cronolgicamente desde los aos 50.
Es interesante ver los que han aparecido desde el ao 2000 al 2007 (21 lenguajes).

La evolucin de los lenguajes de programacin nunca se detiene. Continuamente surgen nuevos lenguajes que toman relevancia. Algunos lenguajes
de programacin son el trabajo de personas individuales con ganas de combinar distintas ideas y solucionar problemas y limitaciones que detectan en
los lenguajes conocidos.

Por ejemplo, tenemos el caso de Ruby, un lenguaje de programacin ideado en 1993 por un joven japons llamado Yukihiro Matsumoto. Cre un
lenguaje multi-paradigma, interpretado y muy expresivo que actualmente se utiliza tanto para desarrollar aplicaciones web como videojuegos.

El propio lenguaje de programacin Ruby nunca ha parado de evolucionar. La primera versin pblica Ruby 0.95 se anunci en un grupo de noticias en
Japn en diciembre de 1995. A continuacin se lanzaron tres versiones ms y se cre el grupo de noticias ruby-list. La versin Ruby 1.0 apareci en
diciembre de 1996, la versin 1.3 en 1999 y la 1.8.7 en junio de 2008. La ltima versin que se ha lanzado Ruby 1.9.1 ha sido el 25 de Enero de 2009.

Convertido de web en PDF a http://www.htmlapdf.com con el api html a pdf


Otro ejemplo es Scala, diseado en 2003 por el profesor alemn Martin Oderski como una respuesta a los problemas de los lenguajes tradicionales
imperativos para manejar la concurrencia. Est implementado sobre Java y corre en la Mquina Virtual Java.

Un ltimo ejemplo de lenguaje muy reciente es Go, el nuevo lenguaje de programacin de Google. Una mezcla de C y Python que intenta conseguir
un lenguaje de programacin de sistemas muy eficiente, expresivo y tambin multiparadigma.

3 Elementos de los lenguajes de programacin


Hemos visto el gran nmero de lenguajes de programacin que se han desarrollado en la historia de la informtica. A pesar de la gran variedad de
lenguajes desarrollados, hay unos elementos comunes a todos ellos. Cules son? Qu hace que algo pueda ser considerado un lenguaje de
programacin?

Segn la definicin de la Encyclopedia of Computer Science 1 (Encyclopedia of Computer Science, 4th Edition, Wiley, 2000)

A programming language is a set of characters, rules for combining them, and rules specifying their effects when executed by a computer,
which have the following four characteristics:

1. It requires no knowledge of machine code on the part of the user


2. It has machine independence
3. Is translated into machine language
4. Employs a notation that is closer to that of the specific problem being solved than is machine code

Convertido de web en PDF a http://www.htmlapdf.com con el api html a pdf


Segn Abelson y Sussman, en el libro que vamos a seguir en nuestra asignatura (SICP, p. 1)

We are about to study the idea of a computational process. Computational processes are abstract beings that inhabit computers. As
they evolve, processes manipulate other abstract things called data. The evolution of a process is directed by a pattern of rules called a
program. [] The programs we use to conjure processes are like a sorcerer's spells. They are carefully composed from symbolic
expressions in arcane and esoteric programming languages that prescribe the tasks we want our processes to perform.

Y despus, en la pgina 4, aaden otra idea fundamental:

A powerful programming language is more than just a means for instructing a computer to perform tasks. The language also serves as a
framework within which we organize our ideas about processes. Thus, when we describe a language, we should pay particular attention to
the means that the language provides for combining simple ideas to form more complex ideas.

As, entre las caractersticas de un lenguaje de programacin podemos remarcar las siguientes:

1. Define un proceso que se ejecuta en un computador


2. Es de alto nivel, cercano a los problemas que se quieren resolver (abstraccin)
3. Permite construir nuevas abstracciones que se adapten al dominio que se programa

Para Abelson y Sussman, todos los lenguajes de progamacin permiten combinar ideas simples en ideas ms complejas mediante los siguientes tres
mecanismos

Expresiones primitivas que representan las entidades ms simples del lenguaje


Mecanismos de combinacin con los que se construyen elementos compuestos a partir de elementos ms simples
Mecanismos de abstraccin con los que dar nombre a los elementos compuestos y manipularlos como unidades

Cuando se habla de elementos en el prrafo anterior nos estamos refiriendo tanto a datos como a programas.

Una breve lista de caractersticas comunes a todos los lenguajes de programacin:

Tienen una sintaxis: un conjunto de reglas que definen qu expresiones de texto son correctas. Por ejemplo, en C todas las sentencias deben
terminar en ';'
Los lenguajes de programacin se ejecutan en un computador y tienen una determinada semntica que define cul ser el resultado de la
ejecucin de un programa.
Definen un conjunto de tipos de datos primitivos que representan los posibles valores que pueden devolver las expresiones del lenguaje.
Tienen mecanismos de abstraccin para definir nuevos tipos de datos a partir de los primitivos o nuevas funciones y procedimientos.

Otra idea importante es que Los lenguajes de programacin son para las personas .

Los lenguajes de programacin deben ser precisos, deben poder traducirse sin ambiguedad en lenguaje mquina para que sean ejecutados por
computadores. Pero deben ser utilizados (ledos, comentados, probados, etc.) por personas.

Es importante reflexionar sobre el campo de los lenguajes de programacin. El estudio general de este campo nos ayuda a:

aprender nuevos lenguajes


Convertido de web en PDF a http://www.htmlapdf.com con el api html a pdf
identificar caractersticas conocidas en estos nuevos lenguajes
conocer sus posibilidades y sus lmites
disear nuevas caractersticas cuando los lenguajes que usamos no las tienen
valorar y apreciar una de las herramientas fundamentales de los informticos

4 Abstraccin
El concepto de abstraccin es fundamental en informtica. Para escribir un programa que preste unos servicios es fundemental modelar el dominio
(sistema de informacin de una universidad, sistema de sensores de una planta qumica, etc.) sobre el que va a trabajar. Para ello es necesario definir
distintas abstracciones que nos permitan tratar sus elementos y comunicarnos correctamente con los usuarios que van a utilizar el programa.

Una abstraccin agrupa un conjunto de elementos (datos y procedimientos) y le da un nombre. Por ejemplo, cuando hablamos del sistema de
informacin de una universidad identificamos elementos como:

Estudiantes
Asignaturas
Matrcula
Expediente acadmico

Existen abstracciones propias de la computacin, que se utilizan en mltiples dominios. Por ejemplo, abstracciones de datos como:

Listas
rboles
Grafos
Tablas hash

Tambin existen abstracciones que nos permiten tratar con dispositivos y ordenadores externos:

Fichero
Raster grfico
Protocolo TCP/IP

Uno de los trabajos principales de un informtico es la construccin de abstracciones que permitan ahorrar tiempo y esfuerzo a la hora de tratar con la
complejidad del mundo real.

Tal y como dice Joel Spolsky en su blog Joel on Software

TCP is what computer scientists like to call an abstraction: a simplification of something much more complicated that is going on under the
covers. As it turns out, a lot of computer programming consists of building abstractions. What is a string library? It's a way to pretend that
computers can manipulate strings just as easily as they can manipulate numbers. What is a file system? It's a way to pretend that a hard
drive isn't really a bunch of spinning magnetic platters that can store bits at certain locations, but rather a hierarchical system of folders-

Convertido de web en PDF a http://www.htmlapdf.com con el api html a pdf


within-folders containing individual files that in turn consist of one or more strings of bytes.

Una misin fundamental de los lenguajes de programacin es proporcionar herramientas que sirvan para construir estas abstracciones.

5 Paradigmas de programacin
Existe una enorme variedad de lenguajes de programacin, no slo en cuanto a su sintaxis, sino tambin en cuanto a su comportamiento o semntica.

Hemos visto que cada ao el nmero de lenguajes se incrementa, de forma que para los informticos es prcticamente imposible conocer cada nuevo
lenguaje que aparece. Pero eso no es un problema, ya que todos esos lenguajes tienen caractersticas comunes y se pueden agrupar en cuatro
grandes grupos o modelos computacionales llamados paradigmas.

Convertido de web en PDF a http://www.htmlapdf.com con el api html a pdf


Imagen del libro Programming Languages. Design and Implementation de Terrence W. Pratt y Marvin V. Zelkowitz.

Todos los lenguajes pertenecen a uno de esos cuatro paradigmas. De forma que, si se conocen las caractersticas de los paradigmas de
programacin, es muy sencillo aprender a programar en un nuevo lenguaje, porque tendr las caractersticas del paradigma de programacin al que
pertenezca.
Convertido de web en PDF a http://www.htmlapdf.com con el api html a pdf
El origen de la palabra paradigma entendida como un marco general en el que se desarrollan teoras cientficas se encuentra en el trabajo de 1962 del
filsofo e historiador de la ciencia Thomas S. Kuhn, La estructura de las revoluciones cientficas . Esa palabra ha sido despus adoptada por el mundo
de la computacin para definir un conjunto de ideas y principios comunes de grandes grupos de lenguajes de programacin.

La definicin de la palabra paradigma ms cercana a lo que se quiere decir en la expresin paradigma de programacin es la siguiente:

Un marco filosfico y terico de una escuela o disciplina cientfica en el que se formulan teoras, leyes y generalizaciones y los
experimentos realizados en soporte de ellas.

Un paradigma define un conjunto de reglas, patrones y estilos de programacin que son usados por un grupo de lenguajes de programacin.

Podemos distinguir cuatro grandes paradigmas de programacin:

Paradigma funcional
Paradigma lgico
Paradigma imperativo o procedural
Paradigma orientado a objetos

Una reflexin importante es que la separacin entre los paradigmas y los lenguajes no es estricta. Existen ideas comunes a distintos paradigmas, as
como lenguajes de programacin que soportan ms de un paradigma. Por ejemplo, el paradigma funcional y lgico comparten caractersticas
declarativas, mientras que el paradigma orientado a objetos y procedural tienen caractersticas imperativas.

Otros paradigmas de programacin menos comunes:

Paradigmas de programacin paralela y concurrente


Paradigmas basados en restricciones
Paradigmas visuales

Se puede encontrar ms informacin sobre distintos paradigmas de programacin en la Wikipedia.

Veamos algunas caractersticas importantes de los paradigmas ms importantes.

5.1 Paradigma funcional


Resumen de las caractersticas principales:

La computacin se realiza mediante la evaluacin de expresiones


Definicin de funciones
Funciones como datos primitivos
Valores sin efectos laterales, no existe la asignacin
Programacin declarativa

Lenguajes: LISP, Scheme, Haskell, Scala, Clojure.

Convertido de web en PDF a http://www.htmlapdf.com con el api html a pdf


Ejemplo de cdigo (LISP):

(define (factorial x)
(if (= x 0)
1
(* x (factorial (- x 1)))))

(factorial 8)
40320
(factorial 30)
265252859812191058636308480000000

5.2 Paradigma lgico


Caractersticas:

Definicin de reglas
Unificacin como elemento de computacin
Programacin declarativa

Lenguajes: Prolog, Mercury, Oz.

Ejemplo de cdigo (Prolog):

Convertido de web en PDF a http://www.htmlapdf.com con el api html a pdf


padrede('juan', 'maria'). % juan es padre de maria
padrede('pablo', 'juan'). % pablo es padre de juan
padrede('pablo', 'marcela').
padrede('carlos', 'debora').

hijode(A,B) :- padrede(B,A).
abuelode(A,B) :- padrede(A,C), padrede(C,B).
hermanode(A,B) :- padrede(C,A) , padrede(C,B), A \== B.

familiarde(A,B) :- padrede(A,B).
familiarde(A,B) :- hijode(A,B).
familiarde(A,B) :- hermanode(A,B).

?- hermanode('juan', 'marcela').
yes
?- hermanode('carlos', 'juan').
no
?- abuelode('pablo', 'maria').
yes
?- abuelode('maria', 'pablo').
no

5.3 Paradigma imperativo


Los lenguajes de programacin que complen el paradigma imperativo se caracterizan por tener un estado implcito que es modificado mediante
instrucciones o comandos del lenguaje. Como resultado, estos lenguajes tienen una nocin de secuenciacin de los comandos para permitir un
control preciso y determinista del estado.

Caractersticas:

Definicin de procedimientos
Definicin de tipos de datos
Chequeo de tipos en tiempo de compilacin
Cambio de estado de variables
Pasos de ejecucin de un proceso

Convertido de web en PDF a http://www.htmlapdf.com con el api html a pdf


type
tDimension = 1..100;
eMatriz(f,c: tDimension) = array [1..f,1..c] of real;

tRango = record
f,c: tDimension value 1;
end;

tpMatriz = ^eMatriz;

procedure EscribirMatriz(var m: tpMatriz);


var filas,col : integer;
begin
for filas := 1 to m^.f do begin
for col := 1 to m^.c do
write(m^[filas,col]:7:2);
writeln(resultado);
writeln(resultado)
end;
end;

5.4 Paradigma orientado a objetos


Caractersticas:

Definicin de clases y herencia


Objetos como abstraccin de datos y procedimientos
Polimorfismo y chequeo de tipos en tiempo de ejecucin

Ejemplo (Java):

Convertido de web en PDF a http://www.htmlapdf.com con el api html a pdf


public class Bicicleta {
public int marcha;
public int velocidad;

public Bicicleta(int velocidadInicial, int marchaInicial) {


marcha = marchaInicial;
velocidad = velocidadInicial;
}

public void setMarcha(int nuevoValor) {


marcha = nuevoValor;
}

public void frenar(int decremento) {


velocidad -= decremento;
}

public void acelerar(int incremento) {


velocidad += incremento;
}
}

public class MountainBike extends Bicicleta {


public int alturaSillin;

public MountainBike(int alturaInicial, int velocidadInicial, int marchaInicial) {


super(velocidadInicial, marchaInicial);
alturaSillin = alturaInicial;
}

public void setAltura(int nuevoValor) {


alturaSillin = nuevoValor;
}
}

public class Excursion {

public static void main(String[] args) {


MountainBike miBicicleta = new MoutainBike(10,10,3);
miBicicleta.acelerar(10);
miBicicleta.setMarcha(4);
miBicicleta.frenar(10);
}
}

6 Compiladores e intrpretes
Convertido de web en PDF a http://www.htmlapdf.com con el api html a pdf
Existe una gran variedad de estrategias para conseguir que un programa se ejecute en un computador. Todas se basan en los "meta-programas"
(compiladores, intrpretes, etc.) cuyos datos de entrada son el cdigo fuente de otros programas.

Estos meta-programas procesan otros programas y realizan mltiples tareas.

6.1 Compilacin
La siguiente figura muestra el proceso de generacin y ejecucin de un programa compilado.

Ejemplos: C, C++

Diferentes momentos en la vida de un programa: tiempo de compilacin y tiempo de ejecucin


Mayor eficiencia

6.2 Interpretacin

Ejemplos: BASIC, LISP, Scheme, Python, Ruby

No hay diferencia entre el tiempo de compilacin y el tiempo de ejecucin


Mayor flexibilidad: el cdigo se puede construir y ejecutar "on the fly" (funciones lambda o clousures).

6.3 Ejecucin en mquina virtual

Convertido de web en PDF a http://www.htmlapdf.com con el api html a pdf


Ejemplos: Java, Scala

6.4 Enlazado de rutinas y libreras

6.5 Preprocesamiento

Convertido de web en PDF a http://www.htmlapdf.com con el api html a pdf


El preprocesador analiza el cdigo y sustituye macros. Ejemplo: C, C++. Scala hace algo parecido con Java.

Lenguajes y Paradigmas de Programacin


Curso 2010-2011
Departamento de Ciencia de la Computacin e Inteligencia Artificial
Universidad de Alicante

Sitio web realizado con org-mode y el estilo CSS del proyecto Worg

Footnotes:
1 La Encyclopedia of Computer Science est disponible en la biblioteca politcnica con el identificador: POE R0/E/I/ENC/RAL

Validate XHTML 1.0

Convertido de web en PDF a http://www.htmlapdf.com con el api html a pdf

Vous aimerez peut-être aussi