You are on page 1of 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 COBOL SNOBOL LISP y PROLOG C y ADA PL/I Para aplicaciones cientficas. Para aplicaciones de procesamiento de datos. Para aplicaciones de procesamiento de textos. Para aplicaciones de inteligencia artificial. Para aplicaciones de programacin de sistemas. 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

You might also like