Académique Documents
Professionnel Documents
Culture Documents
PROGRAMACIÓN
COMPILADORES E INTÈRPRETES
Evolución de los Lenguajes de Programación
teniendo en cuenta las generaciones
Lenguaje Ensamblador 19 Junio, 1950
Es un lenguaje de programación de bajo nivel, basado en la
representación de código de máquina. (Binario) El ensamblador
realiza la traducción del código de máquina.
Fortran 1 Octubre, 1957
Es un lenguaje de programación de Alto nivel que se utilizó
principalmente para el cálculo numérico y para la computadora
científica. Creado por IBM
Considerado uno de los lenguajes más viejos utilizados hoy en
día.
Principales usos: Aplicaciones para supercomputadoras,
desarrollo de Inteligencia Artificial, software empresarial.
Lisp 1 Abril, 1958
Especificado originalmente en 1958 por John McCarthy y sus
colaboradores en el Instituto Tecnológico de Massachusetts, el
Lisp es el segundo más viejo lenguaje de programación de alto
nivel. El nombre LISP deriva del "LISt Processing"
Cobol 1 Junio, 1979
(acrónimo de COmmon Business-Oriented Language, Lenguaje
Común Orientado a Negocios) con el objetivo de crear un
lenguaje de programación universal que pudiera ser usado en
cualquier ordenador, ya que en los años 1960 existían
numerosos modelos de ordenadores incompatibles entre sí, y
que estuviera orientado principalmente a los negocios, es decir,
a la llamada informática de gestión.
Algol 1 Julio, 1960
Lenguaje elaborado diseñado por Niklaus Wirth y Tony Hoare a
partir de los trabajos del grupo ALGOL de la IFIP. Se trata de
un lenguaje conciso, simple de implementar, que evita todos
los defectos conocidos del lenguaje Algol e incluye sus propias
características adicionales. Sin embargo, el grupo Algol no lo
adoptó como sucesor de Algol prefiriendo en su lugar al que
terminó siendo Algol 68. Algol W fue utilizado por gran cantidad
de usuarios.
Basic 11 Noviembre, 1964
El BASIC es un lenguaje de programación que se creó con fines
pedagógicos, era el lenguaje que utilizan las
microcomputadoras de los años 80. Actualmente sigue siendo
muy conocido y tienen muchísimos dialectos muy diferentes al
PÁGINA 1
original.
Los creadores del BASIC fueron John Goerge Kemeny y Thomas
Eugene Kurtz en el año 1964. Fue inventado para permitir a los
estudiantes escribir programas usando terminales de
computador de tiempo compartido. Con el BASIC se quiso hacer
un lenguaje de programación.
Pascal 20 Diciembre, 1970
Es un lenguaje de programación desarrollado por el profesor
suizo Niklaus Wirth. Su objetivo era crear un lenguaje que
facilitara el aprendizaje de programación a sus alumnos,
utilizando la programación estructurada y estructuración de
datos. Sin embargo con el tiempo su utilización fue de gran uso
para herramientas de todo tipo.
Lenguaje de alto nivel. Las versiones comerciales de Pascal
fueron ampliamente utilizadas en los años 80’s.
Principales usos: Enseñanza de la programación. Objet Pascal,
un derivado, se utiliza comúnmente para el desarrollo de
aplicaciones Windows.
Lenguaje C 1 Setiembre, 1972
Es un lenguaje orientado a la implementación de Sistemas
Operativos, concretamente Unix. C es apreciado por la
eficiencia del código que produce y es el lenguaje de
programación más popular para crear software de sistemas,
aunque también se utiliza para crear aplicaciones.
Lenguaje de propósito general, de bajo nivel. Creado por Unix
Systems. Es el lenguaje más popular (precedido por Java). De
él se derivan muchos lenguajes como C#, Java, Javascript,
Perl, PHP y Phyton.
Creador: Dennis Ritchie (Laboratorios Bell)
Principales usos: Programación multiplataforma, programación
de sistemas, programación en Unix y desarrollo de videojuegos.
Lenguaje C++ 1 Junio, 1983
C++ es un lenguaje de programación diseñado por Bjarne
Stroustrup. La intención de su creación fue el extender al
exitoso lenguaje de programación C con mecanismos que
permitan la manipulación de objetos.
Lenguaje de nivel intermedio, orientado a objetos. Una
extensión de C con mejoras como clases, funciones virtuales y
plantillas.
Principales usos: Desarrollo de aplicaciones comerciales,
software embebido, aplicaciones cliente-servidor en
videojuegos.
PÁGINA 2
Perl 1987
Lenguaje de propósito general, de alto nivel. Creado para el
procesamiento de reportes en sistemas Unix. Hoy en día es
conocido por su alto poder y versatilidad.
Creador: Larry Wall (Unisys)
Principales usos: Imágenes generadas por computadora,
aplicaciones de base de datos, administración de sistemas,
programación web y programación de gráficos.
Usado por: IMDb, Amazon, Priceline, Ticketmaster
Phyton 10 Junio, 1991
Python es un lenguaje de programación interpretado creado por
Guido van Rossum. Python es un lenguaje de programación
multiparadigma. Esto significa que más que forzar a los
programadores a adoptar un estilo particular de programación,
permite varios estilos: programación orientada a objetos,
programación estructurada y programación funcional. Que ha
permitido modificar la forma de programar en la actualidad.
Lenguaje de propósito general, de alto nivel.
Principales usos: Aplicaciones Web, desarrollo de software,
seguridad informática.
HTML 10 Junio, 1991
Siglas de HyperText Markup Language, es de los primeros
lenguaje para paginas web. Describe 22 elementos
comprendiendo el diseño inicial y relativamente simple de
HTML. Trece de estos elementos todavía existen en HTML 4
Ruby 1993
Lenguaje de propósito general, de alto nivel. Un programa de
enseñanza, influenciado por Perl, Ada, Lisp, Smalltalk, entre
otros. Diseñado para hacer la programación más productiva y
agradable.
Creador: Yukihiro Matsumoto
Principales usos: Desarrollo de aplicaciones Web, Ruby on
Rails.
Visual C++ 10 junio, 1993
También conocido como Mvs}C, Microsoft Visual C++) es un
entorno de desarrollo integrado (IDE) para lenguajes de
programación C, C++ y C++/CLI.
PHP 1995
Lenguaje de código abierto, de propósito general. Se utiliza
para construir páginas web dinámicas. Más ampliamente usado
en software de código abierto para empresas.
PÁGINA 3
Creador: Rasmus Lerdorf
Principales usos: Construcción y mantenimiento de páginas
web dinámicas, desarrollo del lado del servidor.
JAVASCRIPT 10 Junio, 1995
Javascript es un lenguaje de programación interpretado
dialecto del estándar ECMAScript. Se define como orientado a
objetos, basado en prototipos, imperativo, débilmente tipado y
dinámico
Lenguaje de alto nivel. Creado para extender las
funcionalidades de las páginas web. Usado por páginas
dinámicas para el envío y validación de formularios,
interactividad, animación, seguimiento de actividades de
usuario, etc.
Creador: Brendan Eich (Netscape)
Principales usos: Desarrollo de web dinámica, documentos PDF,
navegadores web y widgets de Escritorio.
JAVA 1995
Lenguaje de propósito general, de alto nivel. Hecho para un
proyecto de televisión interactiva. Funcionalidad de
programación multiplataforma. Es actualmente el segundo
lenguaje de programación más popular en el mundo.
Creador: James Gosling (Sun Microsystems)
Principales usos: Programación Web, desarrollo de aplicaciones
Web, desarrollo de software, desarrollo de interfaz gráfica de
usuario.
PÁGINA 4
Clasificación De Los Lenguajes De Programación
Un Lenguaje de Programación es un conjunto de reglas, notaciones,
símbolos y/o caracteres que permiten a un programador poder
expresar el procesamiento de datos y sus estructuras en la
computadora. Cada lenguaje posee sus propias sintaxis. También se
puede decir que un programa es un conjunto de órdenes o
instrucciones que resuelven un problema específico basado en un
Lenguaje de Programación. Existen varias clasificaciones para los
lenguajes de programación. Clasificación de los Lenguajes de
Programación Los programadores escriben instrucciones en diversos
lenguajes de programación. La computadora puede entender
directamente algunos de ellos, pero otros requieren pasos de
traducción intermedios. Hoy día se utilizan cientos de lenguajes de
computadora.
1. Nivel de abstracción.
Según el nivel de abstracción, o sea, según el grado de cercanía a la
máquina:
Lenguajes de bajo nivel: La programación se realiza teniendo
muy en cuenta las características del procesador.
El lenguaje maquina: Este lenguaje ordena al
dispositivo las operaciones fundamentales para su
funcionamiento. Consiste en un codigo binario (0,1) que
forma las ordenes entendibles por el hardware. Este
lenguaje es mucho más rápido que los lenguajes de alto
nivel. La desventaja es que son bastantes difíciles de
manejar y usar, además de tener códigos fuente
enormes donde encontrar un fallo es casi imposible.
PÁGINA 5
El lenguaje ensamblador: Es un derivado del lenguaje
máquina y está formado por abreviaturas de letras y
números llamadas mnemotécnicos. Con la aparición de
este lenguaje se crearon los programas traductores para
poder pasar los programas escritos en lenguaje
ensamblador a lenguaje máquina. Como ventaja con
respecto al código máquina es que los códigos fuente
serán más cortos y los programas creados ocupaban
menos memoria. Las desventajas de este lenguaje
siguen siendo prácticamente las mismas que las del
lenguaje ensamblador, añadiendo la dificultad de tener
que aprender un nuevo lenguaje difícil de probar y
mantener.
PÁGINA 6
Lenguajes de alto nivel: Más parecidos al lenguaje humano.
Manejan conceptos, tipos de datos, etc., de una manera
cercana al pensamiento humano ignorando (abstrayéndose)
del funcionamiento de la máquina. Ejemplos: Java, Ruby.
Hay quien sólo considera lenguajes de
bajo nivel y de alto nivel, (en ese caso,
C es considerado de alto nivel).
2. Propósito.
Según el propósito, es decir, el tipo de problemas a tratar con ellos:
Lenguajes de propósito general: Aptos para todo tipo de
tareas. Permiten la implementación de prácticamente cualquier
algoritmo, el nivel de abstracción es más uniforme, proporciona
razonable rendimiento. Ej Pascal, C, C++, Java, Delphi, Lisp,
Scheme.
PÁGINA 7
3. Evolución histórica.
Con el paso del tiempo, se va incrementando el nivel de abstracción,
pero en la práctica, los de una generación no terminan de sustituir a
los de la anterior:
Lenguajes de primera generación (1GL): Código máquina.
Lenguajes de segunda generación (2GL): Lenguajes
ensamblador.
Lenguajes de tercera generación (3GL): La mayoría de los
lenguajes modernos, diseñados para facilitar la programación
a los humanos. Ejemplos: C, Java.
Lenguajes de cuarta generación (4GL): Diseñados con un
propósito concreto, o sea, para abordar un tipo concreto de
problemas. Ejemplos: NATURAL, Mathematica.
Lenguajes de quinta generación (5GL): La intención es que
el programador establezca el qué problema ha de ser resuelto
y las condiciones a reunir, y la máquina lo resuelve. Se usan en
inteligencia artificial. Ejemplo: Prolog.
4. Manera de ejecutarse.
Según la manera de ejecutarse:
Lenguajes compilados: Un programa traductor traduce el
código del programa (código fuente) en código máquina
(código objeto). Otro programa, el enlazador, unirá los ficheros
de código objeto del programa principal con los de las librerías
para producir el programa ejecutable. Ejemplo: C.
Lenguajes interpretados: Un programa (intérprete), ejecuta
las instrucciones del programa de manera directa. Ejemplo:
Lisp.
PÁGINA 8
También los hay mixtos, como Java, que primero pasan por una fase
de compilación en la que el código fuente se transforma en
“bytecode”, y este “bytecode” puede ser ejecutado luego
(interpretado) en ordenadores con distintas arquitecturas
(procesadores) que tengan todos instalados la misma “máquina
virtual” Java.
5. Manera de abordar la tarea a realizar.
Según la manera de abordar la tarea a realizar, pueden ser:
Lenguajes imperativos: Son abstracciones de alguna secuencia
de instrucciones que especifican con detalle el orden de ejecución del
programa, es decir; indican cómo hay que hacer la tarea, es
decir, expresan los pasos a realizar. Ejemplos: Fortran, Algol,
Ada, Pascal, C, C++.
6. Paradigma de programación.
El paradigma de programación es el estilo de programación
empleado. Algunos lenguajes soportan varios paradigmas, y otros
sólo uno. Se puede decir que históricamente han ido apareciendo
para facilitar la tarea de programar según el tipo de problema a
PÁGINA 9
abordar, o para facilitar el mantenimiento del software, o por otra
cuestión similar, por lo que todos corresponden a lenguajes de alto
nivel (o nivel medio), estando los lenguajes ensambladores “atados”
a la arquitectura de su procesador correspondiente. Los principales
son:
Lenguajes de programación procedural: Divide el
problema en partes más pequeñas, que serán realizadas por
subprogramas (subrutinas, funciones, procedimientos), que se
llaman unas a otras para ser ejecutadas. Ejemplos: C, Pascal.
Lenguajes de programación orientada a objetos: Crean un
sistema de clases y objetos siguiendo el ejemplo del mundo
real, en el que unos objetos realizan acciones y se comunican
con otros objetos. Ejemplos: C++, Java.
Lenguajes de programación funcional: La tarea se realiza
evaluando funciones, (como en Matemáticas), de manera
recursiva. Ejemplo: Lisp.
Lenguajes de programación lógica: La tarea a realizar se
expresa empleando lógica formal matemática. Expresa qué
computar. Ejemplo: Prolog.
7. Lugar de ejecución.
En sistemas distribuidos, según dónde se ejecute:
Lenguajes de servidor: Se ejecutan en el servidor. Ejemplo:
PHP es el más utilizado en servidores web.
8. Concurrencia.
Según admitan o no concurrencia de procesos, esto es, la ejecución
simultánea de varios procesos lanzados por el programa:
Lenguajes concurrentes. Ejemplo: Ada.
PÁGINA 10
Lenguajes no concurrentes. Ejemplo: C.
9. Interactividad.
Según la interactividad del programa con el usuario u otros
programas:
Lenguajes orientados a sucesos: El flujo del programa es
controlado por la interacción con el usuario o por mensajes de
otros programas/sistema operativo, como editores de texto,
interfaces gráficos de usuario (GUI) o kernels. Ejemplo:
VisualBasic, lenguajes de programación declarativos.
Ejemplo: Mindscript.
PÁGINA 11
Lenguajes de programación textual: El código del
programa se realiza escribiéndolo. Ejemplos: C, Java, Lisp.
11. Determinismo.
Según se pueda predecir o no el siguiente estado del programa a
partir del estado actual:
Lenguajes deterministas. Ejemplos: Todos los anteriores.
Lenguajes probabilísticos o no deterministas: Sirven para
explorar grandes espacios de búsqueda, (como gramáticas), y
en la investigación teórica de hipercomputación. Ejemplo: mutt
(generador de texto aleatorio).
12. Productividad.
Según se caractericen por tener virtudes útiles o productivas, u
oscuras y enrevesadas:
Lenguajes útiles o productivos: Sus virtudes en cuanto a
eficiencia, sencillez, claridad, productividad, etc., motiva que
sean utilizados en empresas, administraciones públicas y/o en
la enseñanza. Ejemplos: Cualquier lenguaje de uso habitual (C,
Java, C++, Lisp, Python, Ruby,).
PÁGINA 12
Funcionalidad de los Lenguajes de
Programación desde las arquitecturas RISC Y
SISC
ARQUITECTURA CISC: CISC es la abreviatura de Computadora de
conjunto de instrucciones complejas. La arquitectura CISC intenta
reducir el número de Instrucciones que tiene un programa,
optimizando así la parte de Instrucciones de cada programa de la
ecuación anterior. Esto se hace combinando muchas instrucciones
simples en una única y compleja. Han hecho su aparición los
lenguajes de alto nivel, imponiéndose en la programación al lenguaje
más básico del computador, el assembler.
PÁGINA 13
está haciendo una serie de instrucciones que incluyen: "Sigue la
pelota", luego "Recógela", luego "Regresa con el humano" y
finalmente "Dale la pelota al humano".
Dado que en una instrucción de estilo CISC, la CPU tiene que trabajar
más en una sola instrucción, por lo que las velocidades de reloj son
un poco más lentas. Además, el número de registros de propósito
general es menor ya que se necesitan usar más transistores para
decodificar las instrucciones.
Lenguajes de programación
PÁGINA 14
RISC tomará solo un ciclo de CPU. Esto podría ser como una
instrucción de "sentarse" que le damos a un perro.
Load A, 1200
Load B, 1201
Mul A, B
Store 1200, A
Esto puede parecer mucho trabajo, pero en realidad, dado que cada
una de estas instrucciones solo ocupa un ciclo de reloj, la operación
de multiplicación completa se completa en menos ciclos de reloj.
COMPARACION
PÁGINA 15
Los procesadores RISC generalmente tienen menos y más simples
instrucciones que en la mayoría de los casos toman una sola
palabra. La compensación es que los procesadores RISC están
hechos con lógica combinatoria y ejecutan la mayoría de las
instrucciones en un solo ciclo de reloj, mientras que los
procesadores CISC a menudo usan micro código incorporado para
PÁGINA 16
instrucciones, se deben captar menos bytes de la memoria para
ejecutarlo. En segundo lugar, porque la gestión de memoria,
sobretodo en un entorno que utilice paginación y memoria virtual, se
ve simplificada por la disminución de los fallos de página.
PÁGINA 17