Lenguajes
Lenguajes de programaci´ on
Jonatan Gom´ ez Perdomo, Ph.D.
Arles Rodr´ıguez, Ph.D.(c)
Camilo Cubides, Ph.D.(c)
Grupo de investigaci´on en vida artificial – Research Group on Artificial Life – (Alife) Departamento de Ingenier´ıa de Sistemas e Industrial
Facultad de Ingenier´ıa
Lenguajes
Agenda
1
Lenguajes
2
Lenguajes de programaci´ on
3
Lenguajes de bajo y de alto nivel
Lenguajes
Lenguaje
Un lenguaje es un conjunto de elementos que permite expresarnos y
comunicarnos con otros entes, ya sean personas, animales, computadores,
etc. Un lenguaje est´ a definido por tres elementos, el l´ exico, la sintaxis y la
sem´ antica.
Lenguajes
L´ exico
El l´ exico de un lenguaje lo conforman las unidades m´ınimas con significado
completo. A cada uno de estas unidades m´ınimas con significado se le
conoce como lexema. Por ejemplo, en el espa˜ nol, las palabras y los
s´ımbolos de puntuaci´ on (que son usados para formar frases, oraciones y
p´ arrafos) conforman el l´ exico. A tales lexemas se les asocia un significado
preciso en t´ erminos de las frases construidas con ellos.
Lenguajes
Sintaxis
La sintaxis de un lenguaje explica la forma en que se pueden construir
frases en el lenguaje a partir del l´ exico. Usualmente la sintaxis se presenta
como una colecci´ on de reglas de reescritura que se definen con una
gram´ atica. ´ Estas son reglas que indican como unos s´ımbolos de la
gram´ atica pueden ser reescritos por otros s´ımbolos de la gram´ atica o por
lexemas. La idea es que al final del proceso de reescritura s´ olo se tengan
lexemas. Por ejemplo en espa˜ nol una frase se puede reescribir como un
sujeto y un predicado, a su vez un sujeto se puede reescribir como un
art´ıculo, un sustantivo y un adjetivo, finalmente un sustantivo puede ser
reescrito como la palabra perro.
Lenguajes
Sem´ antica
La sem´ antica de un lenguaje define la forma en que se le asocia significado (sentido) a las frases construidas mediante la gram´ atica. En espa˜ nol la sem´ antica no es f´ acil de definir ya que intervienen elementos muy
elaborados que han sido construidos de manera natural a trav´ es del tiempo
(cada objeto/idea conocido(a) por el ser humano esta asociado(a) con una
palabra). El sentido de una frase o una oraci´ on en espa˜ nol depende mucho
del contexto en el que se escribe o dice la frase y del posible conjunto de
significados el cual es muy grande. Este hecho es lo que hace dif´ıcil, para
los computadores actuales, trabajar directamente en lenguaje natural.
Lenguajes de programaci´on
Agenda
1
Lenguajes
2
Lenguajes de programaci´ on
3
Lenguajes de bajo y de alto nivel
Lenguajes de programaci´on
Lenguajes de programaci´ on I
Los computadores hacen exactamente lo que se les dice. En programaci´ on
nosotros tenemos un lenguaje bien definido donde los significados de las
frases son exactas. Esto exige que el programador exprese de forma precisa
lo que desea hacer.
Lenguajes de programaci´on
Lenguajes de programaci´ on II
El lenguaje espa˜ nol es muy ambiguo. Para el computador no hay puntos intermedios, s´ olo valores de verdad, ceros y unos (verdadero o falso).
Desde este punto, la l´ ogica nos permite entender los lenguajes de
programaci´ on. Los lenguajes de programaci´ on son aquellos lenguajes que
nos permiten comunicarnos con el computador para ordenarles que hacer.
Lenguajes de programaci´on
Lenguajes de programaci´ on III
Al principio programar era muy complicado. En el principio los programas se hac´ıan casi que en hardware: se requer´ıa que los programas se
escribieran cableando ciertas compuertas de la m´ aquina para determinar
que el programa hiciera lo que ten´ıa que hacer. El problema consist´ıa en la
forma en la que se cableaban los circuitos. Un error en el cableado en este
sentido era dif´ıcil de detectar.
Lenguajes de programaci´on
Lenguajes de programaci´ on IV
Posteriormente se pens´ o en separar el programa de la parte f´ısica y as´ı es como llegaron las tarjetas perforadas inspiradas en el invento del telar. Los programas eran representados por huecos en tarjetas. La m´ aquina
realizaba lecturas de aquellos huecos de las tarjetas en un orden espec´ıfico,
de desordenarse las tarjetas el programa dejar´ıa de funcionar.
Lenguajes de programaci´on
Lenguajes de programaci´ on V
Posteriormente el hombre construy´ o m´ aquinas de c´ alculo para tareas muy espec´ıficas como investigaci´ on y militares, usando dispositivos
electro-mec´ anicos como rel´ es y tubos de vac´ıo. Se programaba revisando
las salidas de los estados de los tubos (encendido ´ o 1 y apagado ´ o 0). A
estos computadores sol´ıan acercarseles insectos en busca de calor da˜ nando
los tubos. De all´ı proviene el termino “bug” (bicho de programaci´ on)
conocido actualmente en programaci´ on como un defecto en el programa.
Lenguajes de programaci´on
Lenguajes de programaci´ on VI
Estos computadores dieron paso a los elementos transistorizados. Las
m´ aquinas de c´ omputo de esta generaci´ on ten´ıan pocas facilidades de
programaci´ on. La comunicaci´ on se establec´ıa en lenguaje de m´ aquina
(lenguaje binario: ceros y unos). Estos aparatos eran grandes y costosos.
Lenguajes de bajo y de alto nivel
Agenda
1
Lenguajes
2
Lenguajes de programaci´ on
3
Lenguajes de bajo y de alto nivel
Lenguajes de bajo y de alto nivel
Lenguaje de m´ aquina I
Es el ´ unico lenguaje que entiende el hardware (m´ aquina) y usa exclusivamente el sistema binario (ceros y unos). Este lenguaje es espec´ıfico para cada hardware (procesador, dispositivos, etc.).
El programa (tanto c´ odigos de instrucci´ on como datos) es almacenado en memoria. La estructura de una instrucci´ on en lenguaje m´ aquina es la siguiente:
CODIGO ARGUMENTO(S)
0010 00011010
1010 10111000
0110 11010001
Lenguajes de bajo y de alto nivel
Lenguaje de m´ aquina II
Surgi´ o la necesidad de desarrollar un lenguaje de nivel mayor al de la m´ aquina, y se desarroll´ o una forma de construir un lenguaje intermedio que empleara mnem´ onicos (palabras cortas escritas con caracteres alfanum´ ericos), para codificar las operaciones. Los datos y/o direcciones son codificados generalmente como n´ umeros en un sistema hexadecimal.
Generalmente es espec´ıfico (aunque no ´ unico) para cada lenguaje de m´ aquina. La estructura de una instrucci´ on en este lenguaje es la siguiente:
MNEMONICO ARGUMENTO(S) ADD R1, F4
MOV F4, C2
SUB AX, AX
Lenguajes de bajo y de alto nivel
Lenguaje ensamblador
Un Ensamblador es un software, generalmente escrito en lenguaje de m´ aquina, que es capaz de traducir de lenguaje ensamblador a lenguaje de m´ aquina.
Este lenguaje dio el salto fundamental. Dicho salto se da cuando se logra separar el programa de la m´ aquina empleando los conceptos de m´ aquina de Turing y la arquitectura de Von Neumann. Almacenando el programa en memoria y empleando el hardware como elemento de control.
Esto dio origen a los sistemas operativos, logrando que la m´ aquina
completa pudiera controlar otro programa.
Lenguajes de bajo y de alto nivel
Lenguajes de alto nivel I
Posteriormente se plante´ o la idea de generar un lenguaje mas parecido al lenguaje natural y que realizara la compilaci´ on del programa y generara un programa de c´ odigo de m´ aquina. Lenguajes como Basic empleaban interpretes tomando cada instrucci´ on y traduci´ endola a Ensamblador y de Ensamblador a c´ odigo de m´ aquina.
Se plante´ o la idea de tomar un c´ odigo y traducirlo completamente a
lenguaje de m´ aquina mediante un proceso de compilaci´ on. El lenguaje de
programaci´ on C entra en esta categor´ıa de lenguajes.
Lenguajes de bajo y de alto nivel
Lenguajes de alto nivel II
Dichos lenguajes est´ an basados en una estructura gramatical para codificar estructuras de control y/o instrucciones. Cuenta con un conjunto de palabras reservadas (escritas en lenguaje natural).
Estos lenguajes permiten el uso de s´ımbolos aritm´ eticos y relacionales para
describir c´ alculos matem´ aticos, y generalmente representan las cantidades
num´ ericas mediante sistema decimal.
Lenguajes de bajo y de alto nivel
Lenguajes de alto nivel III
Gracias a su estructura gramatical, estos lenguajes permiten al
programador olvidar el direccionamiento de memoria (donde cargar datos y/o instrucciones en la memoria), ya que este se realiza mediante el uso de conceptos como el de variable. Los compiladores e interpretes son software capaz de traducir de un lenguaje de alto nivel al lenguaje ensamblador espec´ıfico de una m´ aquina. Los primeros toman todo el programa en lenguaje de alto nivel, lo pasan a lenguaje ensamblador y luego lo ejecutan.
Los ´ ultimos toman instrucci´ on por instrucci´ on, la traducen y la van
ejecutando.
Lenguajes de bajo y de alto nivel