Está en la página 1de 7

Fascculo 4

Programacin en diversos lenguajes


Cuaderno 2: Lenguajes de programacin: sus componentes

Inicios de la programacin y evolucin de los lenguajes


Explicamos en el primer cuaderno que la programacin es la disciplina que se
orienta al proceso de creacin de un programa de computadora; es tiempo de conocer ms la historia de su evolucin.
La primera programadora de computadora reconocida fue Ada Lovelace (18151852), hija de Anabella Milbanke Byron y el poeta Lord Byron. A principios del
siglo XIX conoci a Charles Babbage, un inventor ingls y profesor matemtico
de la universidad de Cambridge, que dise pero nunca construy la mquina
analtica para ejecutar programas de tabulacin, por lo que se lo considera como
el padre de la computacin.
Fue Ada Lovelace quien predijo muchas de las teoras actuales al traducir y ampliar una descripcin de la mquina analtica de Babbage, uno de los antecedentes
ms directos de lo que conocemos como computadora. Como la mquina no lleg
nunca a construirse, los programas de Ada lgicamente tampoco llegaron a ejecutarse, pero s suponen un punto de partida de la programacin.
El trabajo que Ada realiz le hizo ganarse el ttulo de primera programadora de
computadoras del mundo. El nombre del lenguaje de programacin Ada, utilizado principalmente en aeronutica, fue escogido en su homenaje.
Casi cien aos despus, a finales de 1954, para evitar las dificultades de programacin de las calculadoras de su poca, el informtico estadounidense John
Backus, se encarg de la direccin de un proyecto de investigacin en IBM para el
desarrollo de un lenguaje de programacin ms cercano a la notacin matemtica
normal.
De ese proyecto surgi el lenguaje Fortran, el primero de los lenguajes de programacin de alto nivel, que tuvo un gran impacto, incluso comercial, en la emergente comunidad informtica.
En 1960, se cre COBOL (COmmon Business -Oriented Language, o lenguaje comn orientado a negocios), uno de los lenguajes usados an hoy en informtica
de gestin. Respondi al objetivo de contar con un lenguaje de programacin
universal que pudiera ser usado en cualquier computadora ya que en los aos
1960 existan numerosos modelos incompatibles entre s y que estuviera orientado principalmente a los negocios, es decir, a la llamada informtica de gestin.
Fascculo 4

Cuaderno 2: Lenguajes de programacin: sus componentes

http://competenciastic.educ.ar

Pero an en la dcada de 1960 las computadoras eran mquinas sumamente caras


que se utilizaban nicamente para propsitos especiales, y ejecutaban una sola
tarea a la vez. Sin embargo, durante ese perodo, los precios comenzaron a bajar
al punto de que incluso las pequeas empresas podan comprarlas. A medida que
la complejidad de las tareas que realizaban las computadoras aumentaba, se hizo
necesario disponer de un mtodo ms eficiente para programarlas.
Entonces se crearon los lenguajes de alto nivel, como lo fue BASIC (Beginners
All-purpose Symbolic Instruction Codeen, o cdigo de instrucciones simblicas de
propsito general para principiantes) y otras versiones introducidas en las computadoras que se utilizaron a partir de la dcada de 1980.
Habrn observado que para hablar de la historia de la programacin tenemos que hablar de la historia de los lenguajes de programacin. Estos lenguajes y muchos otros que no se mencionan aqu
no son totalmente independientes entre s, sino que unos influyeron en el diseo de los otros, por lo que es difcil establecer una
jerarqua histrica.
Para hablarle a una computadora es necesario utilizar un lenguaje en particular:
el nico lenguaje que una computadora entiende se denomina binario y tiene muchos dialectos. Esto demuestra por qu un programa escrito para una iMac a veces
no funciona en una PC (Personal Computer, o computadora personal) y viceversa.
Desafortunadamente el lenguaje binario es muy difcil de leer y escribir, por lo cual
se debe utilizar un lenguaje intermedio que despus ser traducido a binario.
Lo que traduce nuestro lenguaje intermediario a binario se denomina intrprete.
De la misma manera que es necesario disponer de un intrprete para traducir del
ingls al ruso, ser necesario disponer de un intrprete tambin para traducir las
rdenes de, por ejemplo, Python a binario.

Del cdigo mquina a los lenguajes de alto nivel


Los primeros programadores tenan que ingresar los cdigos binarios. Esta accin
se conoce como programacin en cdigo mquina, y es increblemente compleja.
No pas mucho tiempo hasta que se pudo desarrollar un traductor que simplemente converta palabras en ingls a su equivalente en cdigo binario.
De esta manera, en vez de tener que recordar que el cdigo 001273 05 04 significaba sumar 5 + 4, los programadores podan escribir entonces ADD (sumar
en ingls) 5 4.
Esta mejora hizo que la programacin fuera ms sencilla y que surgieran velozmente los primeros lenguajes de programacin y las distintas versiones para cada
tipo de computadora.

Fascculo 4

Cuaderno 2: Lenguajes de programacin: sus componentes

http://competenciastic.educ.ar

El desarrollo de estas versiones se conoce como lenguajes ensambladores, y


an se utilizan para algunas tareas de programacin muy especficas. En otras
palabras, el ensamblador es un tipo de lenguaje de bajo nivel utilizado para escribir programas informticos especficos para cada arquitectura de computadoras.
Originalmente este sistema era muy primitivo, pues le deca a la computadora lo
que tena que hacer en el nivel de hardware. Lograr un objetivo sencillo era todava
bastante difcil e implicaba un gran esfuerzo de programacin.
Los lenguajes de alto nivel son actualmente los ms utilizados
en programacin. Aunque no son fundamentalmente declarativos,
estos lenguajes permiten que los algoritmos se expresen en un nivel y estilo de escritura fcilmente legible y comprensible por otros
programadores.
Adems, los lenguajes de alto nivel tienen normalmente la caracterstica de transportabilidad. Es decir, estn implementadas sobre varias mquinas de forma que un
programa puede ser fcilmente transportado o transferido de una mquina a otra sin
una revisin sustancial. En ese sentido se llaman independientes de la mquina.
Algunos ejemplos de estos lenguajes de alto nivel son:
PASCAL, APL y FORTRAN

Para aplicaciones cientficas.

COBOL

Para aplicaciones de procesamiento de datos.

SNOBOL

Para aplicaciones de procesamiento de textos.

LISP y PROLOG

Para aplicaciones de inteligencia artificial.

C y ADA

Para aplicaciones de programacin de sistemas.

PL/I

Para aplicaciones de propsitos generales.

Los lenguajes declarativos son los ms parecidos al castellano o ingls en su


potencia expresiva y funcionalidad: estn en un nivel ms alto respecto de los
otros. Son fundamentalmente lenguajes de rdenes, dominados por sentencias
que expresan lo que hay que hacer.
Ejemplos de estos lenguajes son los lenguajes estadsticos como SAS y SPSS y los
lenguajes de bsqueda en base de datos, como NATURAL e IMS. Se desarrollaron
con la idea de que los programadores pudieran asimilar ms rpidamente el lenguaje y usarlo en su trabajo.

Sintaxis, semntica y gramtica del lenguaje de programacin


Se conoce como sintaxis a la parte visible de un lenguaje de programacin. Se define como el conjunto de reglas que deben seguirse al escribir el cdigo fuente de
los programas para considerarse como correctos para ese lenguaje de programacin.
La mayora de los lenguajes de programacin son puramente textuales, es decir,
utilizan secuencias de texto que incluyen palabras, nmeros y signos de pun-

Fascculo 4

Cuaderno 2: Lenguajes de programacin: sus componentes

http://competenciastic.educ.ar

tuacin, de manera similar a los lenguajes naturales escritos. Por otra parte, hay
algunos lenguajes de programacin que son ms grficos en su naturaleza y utilizan relaciones visuales entre smbolos para especificar un programa.
La sintaxis de un lenguaje de programacin describe adems las combinaciones
posibles de los smbolos que forman un programa sintcticamente correcto. El
significado que se le da a una combinacin de smbolos es manejado por
su semntica.
La sintaxis de los lenguajes de programacin se define mediante la utilizacin de
una combinacin de expresiones. Veamos como caso esta gramtica simple, tomada de Lisp, una familia de lenguajes de programacin de computadora de tipo
funcional con una larga historia y una sintaxis desarrollada completamente entre
parntesis.
Desarrollado originalmente en 1958, es el segundo ms viejo lenguaje de programacin de alto nivel (el primero es el Fortran).




expresin ::= tomo | lista


atomo
::= nmero | smbolo
nmero ::= [+-]?[0-9]+
smbolo ::= [A-Za-z].*
lista::= ( expresin* )

Con esta gramtica se especifica lo siguiente:


Una expresin puede ser un tomo o una lista.
Un tomo puede ser un nmero o un smbolo.
Un nmero es una secuencia continua de uno o ms dgitos decimales, precedido
opcionalmente por un signo ms o un signo menos.
Un smbolo es una letra seguida de cero o ms caracteres (excluyendo espacios).
Una lista es un par de parntesis que abren y cierran, con cero o ms expresiones
en medio.
Las reglas que determinan el significado de los programas constituyen la semntica de los lenguajes de programacin.
Es importante saber que no todos los programas sintcticamente correctos
son semnticamente correctos. Muchos programas sintcticamente correctos
tienen inconsistencias respecto de las reglas del lenguaje y pueden dependiendo
de la especificacin del lenguaje y la solidez de la implementacin resultar en un
error de traduccin o ejecucin.
En algunos casos, tales programas pueden exhibir un comportamiento indefinido.
Adems, incluso cuando un programa est bien definido dentro de un lenguaje,

Fascculo 4

Cuaderno 2: Lenguajes de programacin: sus componentes

http://competenciastic.educ.ar

todava puede tener un significado que no es el que la persona que lo escribi estaba tratando de construir.
Usando el lenguaje natural, por ejemplo, puede no ser posible asignarle significado
a una oracin gramaticalmente vlida, o la oracin puede ser falsa:
Los ideales verdes y descoloridos duermen estrepitosamente, es una oracin bien
formada gramaticalmente, pero no tiene significado comnmente aceptado.
Manuel es un soltero casado tambin est bien formada gramaticalment, pero expresa un significado invlido, contradictorio.
Es decir que un lenguaje de programacin consta de un conjunto de
smbolos y un conjunto de reglas vlidas para componerlos, para
que conformen un mensaje con significado para la computadora.
En sntesis, los lenguajes de programacin constan de:
Un conjunto finito de smbolos, a partir del cual se define el lxico o vocabulario del lenguaje.
Un conjunto finito de reglas, la gramtica del lenguaje, para la construccin de
las sentencias correctas del lenguaje (sintaxis).
Semntica, que asocia un significado la accin que debe llevarse a cabo a
cada posible construccin del lenguaje.

Sistema de tipos
El lenguaje de programacin debe adems clasificar los valores y expresiones en
tipos, los cuales conforman un sistema cuyo objetivo es verificar el funcionamiento del programa y detectar operaciones invlidas.
Un sistema de tipos dota a los lenguajes de la capacidad de restringir los datos que
pueden ser asignados a las variables. Esto permite una cierta potencia a la hora de
detectar errores y mejora la comprensin del cdigo.
Cualquier sistema de tipos tiene sus ventajas y desventajas: mientras que por un
lado rechaza muchos programas incorrectos, tambin prohbe algunos programas
correctos que por alguna razn le resulten desconocidos.
Para poder minimizar esta desventaja, algunos lenguajes incluyen lagunas de
tipos, que son conversiones explcitas no chequeadas que pueden ser usadas por
el programador para permitir explcitamente una operacin normalmente no permitida entre diferentes tipos.
Para sintetizar, el sistema de tipos comn realiza las siguientes funciones:
Establece un marco de trabajo que ayuda a permitir la integracin entre lenguajes, la seguridad de tipos y la ejecucin de cdigo con alto rendimiento.

Fascculo 4

Cuaderno 2: Lenguajes de programacin: sus componentes

http://competenciastic.educ.ar

Proporciona un modelo orientado a objetos que admite la implementacin completa de muchos lenguajes de programacin.
Define reglas que deben seguir los lenguajes, lo que ayuda a garantizar que los
objetos escritos en distintos lenguajes puedan interactuar unos con otros.
Al diseo y estudio formal de los sistemas de tipos se le conoce como teora de
tipos.
Si les interesa profundizar sobre esta teora pueden consultar este material disponible en internet.
Les parece interesante aunque seguramente algo complejo lo que vieron hasta
aqu? Tranquilos, no son los nicos Hace no mucho tiempo, a finales de 1960, Edsger
Dijkstra, un cientfico de la computacin de origen holands, trat de simplificar los
pasos de la programacin. Desarroll el concepto de la programacin estructurada y defini que todos los programas pueden estructurarse en los siguientes pasos:
Secuencias de instrucciones
Una estructura de programa es secuencial si se ejecuta una tras otra a modo
de secuencia, es decir que una instruccin no se ejecuta hasta que finaliza la
anterior.
Instruccin condicional
La estructura selectiva permite la realizacin de una instruccin u otra segn un
criterio: solo una de estas instrucciones se ejecutar.
Iteracin (bucle de instrucciones)
Un bucle iterativo o iteracin de una secuencia de instrucciones hace que se
repitan mientras se cumpla una condicin: en un principio el nmero de iteraciones no tiene por qu estar determinado.
Si bien con esta teora los programas pueden ser ms fciles de entender, hoy en
da las aplicaciones informticas son mucho ms ambiciosas que las necesidades de
programacin existentes en los aos 60 principalmente debido a las aplicaciones
grficas por lo que las tcnicas de programacin estructurada no son suficientes.
Ello ha llevado al desarrollo de nuevas tcnicas, tales como la programacin
orientada a objetos y el desarrollo de entornos de programacin que facilitan
la programacin de grandes aplicaciones.
Gradualmente los expertos en computacin desarrollaron lenguajes de alto nivel
para facilitar el trabajo de los programadores. Esto fue tambin el resultado de una
demanda de los usuarios que reclamaban tareas ms complejas y procesos ms
potentes para sus computadoras. Esta exigencia de los usuarios hacia los programadores contina en la actualidad y cada vez son ms los especialistas dedicados a
desarrollar y potenciar nuevos lenguajes. Esto vuelve muy interesante a la programacin como disciplina.
En el siguiente cuaderno analizaremos con profundidad algunos de los perfiles profesionales del programador.

Fascculo 4

Cuaderno 2: Lenguajes de programacin: sus componentes

http://competenciastic.educ.ar

Fuentes
www.wikipedia.org

Autora: Mara Lorena Surez


Coordinacin editorial: Mara Mobilia

Fascculo 4

Cuaderno 2: Lenguajes de programacin: sus componentes

http://competenciastic.educ.ar

También podría gustarte