Download Diapositiva 1

Document related concepts
Transcript
La programación de computadoras es una
de las áreas mas interesantes de la
tecnología moderna. Para comunicarnos
con estas maquinas es necesario recurrir a
lenguajes especiales. Este trabajo presenta
brevemente lo que son los lenguajes de
programación, como se clasifican, las
características y diferencias de los
principales lenguajes y para finalizar,
estudiaremos cual es el proceso que le
permite a la computadora entender esos
lenguajes.



Entre los seres humanos el lenguaje es un medio de
comunicación de ideas, sentimientos, necesidades,
ordenes. De un modo similar, entre el hombre y la
computadora la comunicación se establece por
medio de un lenguaje especializado.
Las computadoras pueden hacer algunas tareas
elementales(con mucha rapidez) y combinándolas
en forma adecuada es posible obtener resultados
útiles.
Un lenguaje de programación permite que el usuario
controle las tareas elementales de la computadora,
además de mantener un nivel de comunicación
adecuado. Por tanto, programar consiste en lograr
que la computadora funcione como queremos,
aplicando las facilidades de un lenguaje.

La programación de las primeras
computadoras (para cambiar un
proceso por otro) se efectuaba
reacomodando cables y conexiones (los
programas eran cableados). Gracias al
espíritu inquieto de muchos
investigadores esta actividad fue
facilitada y mejorada, quitándole lo
mecánico y volviéndola lógica.
En la actualidad hay una gran variedad de
lenguajes de programación, cada uno con
muchas ventajas y también con desventajas.
No obstante, los lenguajes pueden agruparse
según sus características comunes.
Los lenguajes de programación han sido
clasificados de muchas maneras:
*Por su nivel
*Por sus aplicaciones principales.
La clasificación de los lenguajes por su nivel se
refiere a qué tan cercanos están los lenguajes
a las características físicas de la computadora
o qué tan próximos están alas necesidades del
programador. La segunda, por aplicaciones,
se refiere a las ventajas que tienen los
lenguajes para resolver ciertos problemas
específicos.
LENGUAJES DE BAJO NIVEL
 Los lenguajes de bajo nivel son aquellos
que el procesador de la computadora
entiende en forma directa.
 Dependen de las características de cada
tipo de maquina y sólo son comprensibles
por especialistas.
 Aparecieron durante la primera
generación de computadoras y entran en
esta categoría el lenguaje maquina y el
lenguaje ensamblador.




LENGUAJES DE ALTO NIVEL
Los lenguajes de alto nivel son aquellos
desarrollados para el usuario de la
computadora.
Permiten que los procedimientos se
expresen con un estilo comprensible; sin
embargo, la computadora no los entiende
directamente.
Algunos de estos lenguajes fueron
desarrollados durante la segunda
generación de computadoras y la mayoría
durante la tercera.
Ejemplos de lenguajes de alto nivel son:
Pascal, BASIC, Ada, FORTRAN, etcétera.
LENGUAJES DE NIVEL MEDIO
 Los lenguajes de nivel medio se definen
como lenguajes que reúnen las ventajas
de los dos niveles anteriores.
 Los únicos lenguajes de este tipo son C y
Forth.
El siguiente esquema presenta
el lugar que ocupan los
lenguajes dentro del campo
de la computación.
 El lenguaje mas cercano al
hardware (centro de la figura)
es el lenguaje maquina,
circundado por el lenguaje
ensamblador. Como este
ultimo se encuentra mas
alejado del hardware, hay
una capa de traducción
llamada programa
ensamblador. Mas hacia el
exterior están los lenguajes de
alto nivel y de cuarta
generación. Ambos requieren
de un estrato intermedio de
traducción, formado por los
compiladores e intérpretes.

Lenguajes de cuarta
generación
Lenguajes de alto nivel
Compiladores e
interpretes
Lenguaje
ensamblador
Programa
ensamblador
Lenguaje
máquina
Har
dwa
re
Muchos de los lenguajes de alto nivel
desarrollados para servir a un objeto en
especial. A continuación una clasificación de
los lenguajes de acuerdo con las áreas de
aplicación:
*Lenguajes de propósito general: Pascal, BASIC.
*Lenguajes para aplicaciones científicas:
FORTRAN, APL.
*Lenguajes didácticos: Logo.
*Lenguajes para administración. COBOL, RPG,
SQL.
*Lenguajes para inteligencia artificial:
Prolog, Lisp.
*Lenguajes para programación de
sistemas: C, Ada.
*Lenguajes de programación orientada a
objetos (OOP): SmallTalk, Java, C++.
*lenguajes de cuarta generación (4GL):
Mapper, Cogen, Linc.
*Lenguajes orientados a la interfaz gráfica:
Visual Basic, Visual C++, Delphi.
Los lenguajes de bajo nivel, lenguaje
maquina y ensamblador, aparecieron
durante la primera generación de
computadoras y siguen siendo utilizados
ya que son los lenguajes propios de los
microprocesadores, aunque sólo los
usan programadores especializados.


El CPU de una computadora es un circuito
electrónico digital, por ello solo entiende pulsos
electrónicos. Esos pulsos eléctricos corresponden a
secuencias de unos y ceros que el procesador
maneja y entiende, y son conocidas como lenguaje
maquina; no importa que tan moderna sea la
computadora, cualquier programa que ejecute
deberá estar en lenguaje maquina antes de que el
CPU pueda entenderlo.
Programar en código maquina permite el control
directo del CPU. Sin embargo, sise cambia de
computadora, el lenguaje cambia. Por lo tanto, un
programa realizado en el código maquina de un
procesador no sirve para otro procesador diferente.

A continuación se muestra como ejemplo un programa en
lenguaje maquina que lee os números desde el teclado, los
suma e imprime el resultado. Fue escrito para computadoras
con microprocesador Intel 8086 (y sólo funcionará en maquinas
con este procesador o compatible).
10110100 00000001
11001101 0010001
(leer un número desde el teclado)
10001010 11111000
10110100 00000001
11001101 00100001
(leer otro número desde el teclado)
00000010 11111000
(sumar los números)
10110100 00000010
10001010 11010111
1100110100100001
(imprimir el resultado)
10111000 01001100 00000000 (terminar proceso)
11000011
Aquí se observa con toda claridad que este lenguaje no es sencillo
y con facilidad causa confusión.

B4
CD
8A
B4
CD
02
B4
8A
CD
B8
C3
Para disminuir las confusiones con los ceros y unos se recurre a la
equivalencia hexadecimal de cada byte.
01
21
F8
01
21
F8
02
D7
21
4C 00
(leer un número desde el teclado)
(leer otro número desde el teclado)
(sumar los números)
(imprimir e resultado)
(terminar proceso)
La ventaja del código maquina es el control directo del
procesador y la gran velocidad de ejecución. Además, pese a
los avances logrados en lenguajes, aún existen rutinas que sólo
es posible hacer en código maquina.

Para allanar algunas de las dificultades que
presentaba la programación en lenguaje
maquina se desarrollo un método
mnemotécnico que establecía una
equivalencia entre las secuencias binarias y
un conjunto de abreviaturas que indicaban
las acciones efectuadas por el procesador.
A esta mejora se le nombró como lenguaje
ensamblador y sus instrucciones
mnemotécnicas o mnemónicas.
El lenguaje ensamblador maneja símbolos
que el procesador no entiende de
inmediato, por ello los programas deben
traducirse a lenguaje maquina para
ejecutarse.
 Ese proceso de traducción (conocido
como ensamblado) es sencillo pues existe
una relación uno a uno entre las
instrucciones en ensamblador y las
secuencias numéricas en código maquina.
 Gracias al ensamblador las revisiones y
cambios ya no se realizan sobre el código
binario de la computadora, sino sobre
símbolos.

El programa antes presentado luce así en lenguaje
ensamblador:
MOV AH,0 1H
I N T 2 1H
(leer un número desde el teclado)
MOV BH, AL
MOV AH,0 1H
I N T 2 1H
(leer otro numero desde el teclado)
A DD BH ,BL
(sumar los números)
MOV DL,BH
I N T 2 1H
MOV AX, 4C 0 0H
(imprimir el resultado)
I N T 21
(terminar proceso)
RET
El ensamblador tiene las mismas ventajas que el lenguaje maquina:
control directo del procesador y gran velocidad de ejecución;
además, ofrece mayores facilidades para el desarrollo de
programas. También es un lenguaje que depende por
completo de cada tipo de computadora.
Debido a las dificultades que presentaba
programar con lenguajes de bajo nivel, se
desarrollaron nuevos lenguajes, llamados
de alto nivel, que facilitaron bastante el
trabajo de los programadores.
 Actualmente hay gran variedad de
lenguajes, algunos aparecieron en la
segunda generación (FOLTRAN, ALGOL y
COBOL), la mayoria en la tercera y se
siguen desarrollando más.

CARACTERISTICAS GENERALES
Por muy diferentes que puedan ser entre
sí los lenguajes de alto nivel, todos
poseen las siguientes caracteristicas:
Independencia: el lenguaje no
depende de un equipo en particular


Transportabilidad: un programa hecho
en una computadora puede funcionar
en otra
Generación de códigos: los programas
hechos en lenguajes de alto nivel deben
ser traducidos a lenguaje maquina para
poder ejecutarse.

Notación orientada al problema: los
lenguajes y su gramática se especializan
hacia un área especifica
(administrativa, científica, etcétera).

Uso de identificadores: los valores o
procesos pueden s ser referidos
mediante símbolos o palabras, en lugar
de números.


Similitud con el lenguaje ordinario: las
palabras del lenguaje y sus estructuras
son parecidas al idioma inglés.


Fue el primer lenguaje de alto nivel que
apareció. Su nombre es una abreviatura de
FORmula TRANslating system. Se desarrolló a
partir de 1954 y dos años más tarde apareció
en el IBM 704. Se mejoraron sus características
y se transformo en FORTRAN II (1958). FORTRAN
III no se utilizo públicamente y en 1962 se
desarrollo FORTRAN IV para IBM 7090/7094. La
ultima versión estándar es FORTRAN 95.
FORTRAN fue orientado hacia la solución de
problemas y permite el manejo de números
complejos.
El ALGOL (ALGOrithmic Language)
apareció en 1985, tras su discusión en un
comité de dos asociaciones de
informática (ACM-americana y GAMMeuropea). Fue el primer lenguaje
estructurado.
 El ALGOL se orientó hacia problemas
científicos. Sus principales características
fueron ser algorítmico y permitir la
recursividad.



COBOL son siglas de Common Business Oriented
Lenguaje. Sus orígenes remontan a 1959, cuando
después de una reunión de fabricantes de
computadoras, industrias y gobierno
estadounidense, se planteó la necesidad de un
lenguaje que estuviese enfocado hacia las
necesidades administrativas. Como resultado se
formó el Comité CODASYL(Conference on Data
Systems Languajes) que desarrolló una descripción
del lenguaje, apareciendo finalmente COBOL en
1960.
COBOL fue el primer lenguaje transportable y su
enfoque de trabajo es hacia problemas
administrativos.


BASIC son las siglas de Beginner’s All-purpose
Symbolic Instruction Code. Este lenguaje fue
desarrollado en 1965, en el Darmouth College
(New Hamshire), por Thomas Kurtz y John
Kenemy. Estos investigadores tuvieron como
finalidad tener un lenguaje facil de aprender
(en aquella época ninguno de los lenguajes
existentes resultaba sencillo para los
estudiantes universitarios).
Sus características son la simplicidad, el fácil
aprendizaje, la versatilidad, y no ser
estructurado.



Este lenguaje fue creado por Seymour Papert (del
Tecnológico de Massachussets) en las postrimerías
de la década de los sesenta, y es una variante de
LISP (LISt Processor). Mediante él intentó reunir teorías
pedagógicas de aprendizaje e inteligencia artificial.
LOGO es un eficiente lenguaje educativo (para
enseñanza de programación y aprendizaje en
general) gracias a su sencillez y a sus capacidades
graficas (conocidas como gráficos de tortuga).
LOGO tiene como características ser interactivo,
ampliable y recursivo. Debido a su ascendiente (LISP)
puede servir de introducción en los campos de
inteligencia artificial y procesamiento de listas.
En honor a Blaise Pascal, Nicklaus Wirth así
bautizó al lenguaje que diseñó en 1970. el
lenguaje Pascal tuvo propósito enseñar ,os
principios de la programación estructurada
a estudiantes universitarios. Tuvo como
antecesor directo al ALGOL; sin embargo,
en Pascal es más sencillo el manejo de
datos y no es tan extenso.
 Es un lenguaje estructurado, transportable,
de propósito general, recursivo y modular.

Durante la década de los sesenta se empezó a sentir necesidad
de un lenguaje de programación que tuviera facilidades y
estructuras de un lenguaje de alto nivel pero que permitiera
también manipular directamente al procesador de la
computadora.
 El primer intento lo realizó Martin Richards en la Universidad de
Cambridge (Inglaterra) en 1969, con el lenguaje BCPL. En los
laboratorios Bell tomaron sus conceptos y desarrollaron el
lenguaje B. En 1972 Ken Thompson y Dennis Ritchie empiezan a
extender este lenguaje dando creación al lenguaje C.
 Las capacidades del C promovieron que el núcleo del sistema
operativo Unix fuera reescrito casi en su totalidad en este
lenguaje, en 1973.
 El lenguaje C es uno de los más populares en la actualidad, se
ha implantado en casi la totalidad de las computadoras y ha
mantenido gran estandaridad en sus librerías de funciones,
gracias a lo cual es muy útil para desarrollar sistemas
transportables.

Cuando se escribe un programa en
lenguaje de alto nivel, éste debe
traducirse al lenguaje máquina de la
computadora para lo que lo pueda
ejecutar.
 Este proceso de traducción se realiza
mediante programas especializados
llamados compiladores e intérpretes.

Disco
Programa
fuente
traducción
CPU
Cargar
programa
Programa
objeto

Una vez escrito un programa éste puede estar en
código fuente, código objeto o código ejecutable.

Código fuente: es el conjunto de instrucciones tal y
como fueron escritas por el programador en el
lenguaje de alto nivel (también se le conoce como
programa fuente).
Código objeto: son las instrucciones de un programa
cuando ya han sido traducidas a lenguaje máquina
(también se le conoce como programa fuente).
Código ejecutable: es un código objeto que puede
ser ejecutado por la computadora de inmediato (no
todos los códigos objeto son ejecutables.)





El compilador es un programa especial que
traduce un programa fuente (escrito en un
lenguaje de alto nivel) a un código objeto.
Un compilador analiza las líneas del programa
e identifica ciertas estructuras para traducirlas
adecuadamente a lenguaje máquina. Una
vez que se ha efectuado la compilación
puede prescindirse del programa fuente.
Los compiladores son propios de cada
lenguaje de programación. Algunos ejemplos
de lenguajes que requieren compilador son:
Pascal, C, FORTRAN, COBOL, ALGOL, Y APL.

El proceso de compilación se verifica en
cinco etapas:
Programa
fuente
Análisis
de léxico
Análisis de
sistemas
Generación de
código
intermedio
Generación de
código máquina
Programa
objeto




Análisis léxico: durante esta etapa se verifica
que las palabras utilizadas en el programa
fuente pertenezcan al lenguaje.
Análisis de sintaxis: esta parte de la
compilación examina cada instrucción del
programa fuente para que las instrucciones
estén organizadas correctamente.
Generación de código intermedio: este paso
produce un código simbólico que permitirá
efectuar la equivalencia con lenguaje
máquina.
Generación de código máquina: en esta
última etapa se elabora el programa objeto.
Es un programa especial que traduce (a
lenguaje máquina) cada línea del
programa fuente y la ejecuta de
inmediato.
 Los interpretes no producen código objeto,
por ello la ejecución de un programa
requiere forzosamente del código fuente.
Además, los programas en lenguaje
interpretado se ejecutan con más lentitud
que aquellos en lenguaje compilado.
 Son lenguajes que requieren intérprete:
BASIC, LOGO, Prolog, LISP Y SmallTalk.






Un lenguaje de programación permite que
el usuario controle las tareas elementales
de la computadora.
La programación de las primeras
computadoras era por medio de cables.
Los lenguajes de programa se clasifican por
su nivel y por sus aplicaciones principales.
Lenguajes de bajo nivel son los que el
procesador de la computadora entiende
directamente. Dependen de las
características de cada tipo de máquina.
Son lenguajes de bajo nivel el lenguaje
máquina y el lenguaje ensamblador.
Lenguajes de alto nivel son lenguajes
que permiten que los procedimientos de
expresen con palabras y estructura
comprensibles.
 Algunos lenguajes de alto nivel son:
Pascal, BASIC, Ada, FORTRAN.
 Los lenguajes de nivel medio son los que
reúnen las ventajas de lenguajes de alto
y bajo nivel. Los únicos de este tipo son
C y Forth.
 El CPU de una computadora es un
circuito electrónico digital que sólo
entiende pulsos electrónicos.

El lenguaje máquina son las secuencias
de unos y ceros que el procesador
maneja y entiende.
 Cualquier programa deberá estar en
lenguaje máquina antes de que el CPU
pueda entenderlo.
 Programar en código máquina permite
el control directo del CPU y gran
velocidad de ejecución.
 Un programa escrito en el lenguaje
máquina de un procesador específico
no sirve para otro diferente.

El lenguaje ensamblador maneja símbolos y
existe una relación uno a uno entre esos
símbolos y las secuencias numéricas en
código máquina. También es un lenguaje
totalmente dependiente de cada tipo de
computadora.
 Las instrucciones en ensamblador no las
entiende directamente del CPU, por ello los
programas deben traducirse a lenguaje
máquina para poder ejecutarse (proceso
de ensamblado).
 Las ventajas del lenguaje ensamblador son
control directo del procesador , gran
velocidad de ejecución y facilidades para
la depuración y mantenimiento de
programas.

Son características de los lenguajes de alto
nivel la independencia, transportabilidad,
generación de código, notación orientada
al problema, uso de identificadores y
similitud con el lenguaje ordinario.
 El lenguaje FORTRAN (FORmula TRANslating
system) fue el primer lenguaje de alto nivel
que apareció. Se orientó a la solución de
problemas numéricos.
 El lenguaje ALGOL (ALGOrithmic Languaje)
fue el primer lenguaje estructurado,
algorítmico y que permitió la recursividad.
Se orientó hacia problema científicos.

El lenguaje COBOL (Common Business
Oriented Languaje) fue el primer
lenguaje transportable y su enfoque de
trabajo e hacia problemas
administrativos.
 El lenguaje Pascal ha tenido como
propósito enseñar los principios de la
programación estructurada. Sus
principales características son ser un
lenguaje estructurado, transportable, de
propósito general, recursivo y modular.

El lenguaje C es muy útil para la
programación de sistema debido a su
estandarizad, a la gran cantidad de
computadoras que lo han
implementado y que permite grandes
facilidades para el control directo de la
computadora. Se desarrolló en 1972 por
Thompson y Ritchie (laboratorios Bell) y
se encuentra emparentado con el
sistema operativo UNIX.
 El código fuente es el conjunto de
instrucciones en lenguaje de alto nivel.

El código objeto son las instrucciones de
un programa que ya han sido
traducidas a lenguaje máquina.
 El código ejecutable es un código
objeto que puede ser ejecutado por la
computadora de inmediato.
 Un compilador es un programa especial
que traduce un programa escrito en
lenguaje de alto nivel a un código
objeto.
 Algunos ejemplos de lenguajes que
requieren compilador son: Pascal, C,
FORTRAN, COBOL, ALGOL Y APL.

Los pasos de compilación son análisis
léxico, análisis de sintaxis, generación de
código intermedio y generación de código
máquina.
 El intérprete es un programa especial que
traduce (a lenguaje máquina) cada línea
del programa fuente y la ejecuta de
inmediato.
 Los intérpretes no producen código objeto.
La ejecución de un programa requiere del
código fuente. Los programas en lenguaje
interpretado se ejecutan con más lentitud
que aquellos en lenguaje compilado.
 Los lenguajes que requieren intérprete son
BASIC, LOGO, Prolog y LISP.


Vasconcelos Santillán, INTRODUCCIÓN A
LA COMPUTACIÓN, México 2005, 103105 pp., Publicaciones cultural.

Karen Cruz Ríos

Blanca Estela Espinal Hernández

Abraham Mayer Chávez