evolucion de los lenguajes de programacion

Upload: karla-sanchez

Post on 10-Jul-2015

379 views

Category:

Documents


2 download

TRANSCRIPT

INSTITUTO POLITECNICO NACIONAL ESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA INGENIERIA EN COMUNICACIONES Y ELECTRONICA

INVESTIGACION

MATERIA: Fundamentos de programacin

Integrantes: Snchez Vallejo Karla Berenice Becerra de la Brena Karla Mayela Cuevas Arzate Adn Grupo: 1CM8 Turno: matutino

30 de Septiembre de 2011

1

INDICE* EVOLUCION DE LAS COMPUTADORAS.4 Primera generacin.14 Segunda generacin16 Tercera generacin.18 Cuarta generacin..20 Quinta generacin23 EVOLUCION DE LOS DISPOSITIVOS DE ENTRADA/SALIDA EVOLUCION DE LOS DISPOSITIVOS DE ALMACENAMIENTO EVOLUCION DE LOS LENGUAJES DE PROGRAMACION LENGUAJE ENSAMBLADOR... FORTRAN.................................... ALGOL......................................... COBOL......................................... LISP.............................................. SNOBOL....................................... VISUAL BASIC............................ APL............................................... PL/I............................................... SIMULA 67................................... PASCAL....................................... ADA.............................................. PROLOG....................................... C.................................................... MODULA 2.................................. C++................................................ Java............................................... EVOLUCION DE LOS SISTEMAS OPERATIVOS. SHARE Operating System........... UNIX............................................ MS-DOS...................................... Mac OS....................................... MICROSOFT WINDOWS........... LINUX......................................... ANDROID.................................. BIBLIOGRAFIA.

2

3

4

Definicin de una computadora Una computadora es una mquina con gran capacidad y velocidad, que se ha convertido en un auxiliar del hombre que le presta ayuda en una enorme gama de actividades, tales como: Proveer a los mdicos informacin actualizada sobre la salud del paciente. Preparar grficas de patrones climatolgicos y producir planes de vuelo de acuerdo con las condiciones climatolgicas. Prestar ayuda en la oceanografa y la navegacin. Registrar marcas y evaluar estadsticas de competencias deportivas. Prestar ayuda a los ingenieros en los clculos. Controlar simuladores de vuelo para dar al piloto un entrenamiento inicial en tierra. Coordinar el funcionamiento de los semforos para que el transito no sufra interrupciones. Verificar la cantidad de dinero depositado en una cuenta, o realizar pagos. Proveer informacin sobre los productos del mercado. Mucho se habla de que la computadora est influyendo dentro de nuestra privacidad y sustituyendo la mano de obre, creando desempleo. Estos aspectos no pueden discutirse, sin conocer a fondo lo que es una computadora, pero a medida que se avanza en su conocimiento, es posible emitir un concepto inteligente. Hay que tener en cuenta que una computadora no puede hacer algo a menos que el humano le diga que hacer. Debemos controlar a la computadora y no ella a nosotros.

Generaciones de computadoras

Es la clasificacin histrica de las computadoras, de acuerdo a como fueron evolucionando tecnolgicamente a travs de los aos. Las generaciones de las computadoras, se remontan a los esfuerzos por encontrar un mecanismo que facilitara realizar operaciones de clculos matemticos o aritmticos. El baco es la primera mquina hecha por el hombre por medio de la cual se agiliz el clculo de operaciones. ste data de miles de aos atrs en el cercano Oriente. Haba varias versiones, como el baco Chino y el Sorobn Japons. Era un sencillo invento, compuesto de cuentas insertadas en una varilla insertadas en un marco en forma de rectngulo. Cuando desplazaban las cuentas sobre varillas, sus posiciones representan valores almacenados, a travs de estas posiciones se representaban y almacenaban datos.Originalmente, consista de un tablero cubierto de arena sobre el cual se marcaban unos surcos. En estos surcos se ponan piedras o cuentas. Posteriormente, los surcos fueron sustituidos por alambres y las piedras por bolitas o cuentas ensartadas. Luego esto vara

5

quedando en forma de bastidor, generalmente de madera, en el que se insertan en sentido horizontal varias varillas, por cada una de las que pueden correr diez cuentas. La varilla inferior corresponde al orden de las unidades, la segunda a las decenas, la tercera a las centenas y as sucesivamente. Un nmero se representa desplazando sobre la varilla correspondiente tantas cuentas como indique la cifra de las unidades, de las decenas, etc. En el baco est implcito el sistema decimal posicional de escritura de nmeros. El modelo anterior es el que corresponde al sistema de los diez dedos o sea diez cuentas por varilla. En el modelo de los cinco dedos, cada varilla est dividida en dos partes, una con cinco cuentas y otra con dos, las cuentas de la primera parte corresponden a una unidad y la segunda a cinco. Los romanos utilizaron un modelo de cinco dedos en el que las varillas eran sustituidas por hendiduras en una tabla y las cuentas se sustituan por piedras. El baco fue utilizado tanto por las civilizaciones precolombinas y mediterrneas como en el extremo oriente. Su utilizacin fue un gran avance en la realizacin de clculos ya que en la antigedad no slo no se conoca el actual sistema de numeracin sino que tampoco se dispona de algo tan comn para nosotros como lo es el lpiz y el papel. En varios pases del lejano oriente el empleo del baco ha perdurado desde sus orgenes hasta nuestra poca. Dentro de la historia de la computacin no podemos llamar computadora a este artefacto ya que careca de programas o software, pero nos remonta a los inicios del almacenamiento de datos a travs de un mecanismo. Debido al inters que se ha tenido por saber cules han sido los verdaderos inicios de la computacin se ha descubierto el hecho de que entre los siglos XV y XVI se realiz un proyecto de calculadora. Este proyecto perteneci nada menos que al inventor y pintor Leonardo Da Vinci quien traz las ideas para una sumadora mecnica. Da Vinci naci en 1452 y muri en 1519.

Fue en el ao de 1617 que John Napier invent el rodillo de Napier. Y luego en 1621 que William Cughtred cre la regla de clculo y la operacin de multiplicar.

6

Regla de clculo

Wilhelm Schickard, en 1623 aproximadamente realiz la construccin de la primera mquina de calcular. Aunque corresponde a Schickard la paternidad de la primera calculadora la historia ha registrado a Pascal como su inventor. Debido a que ambos realizaron casi al mismo tiempo sus propias investigaciones, con una diferencia de aproximadamente veinte aos antes por parte de Schickard, pero con la anotacin de que fue la mquina de Pascal la que demostr positivamente su operatividad. En 1642, el francs Blaise Pascal desarroll una mquina calculadora que era operada por una serie de discos, unidos por engranajes, que tenan los nmeros del 0 al 9 en circunferencia, de tal forma que cuando un disco daba vuelta, automticamente el disco de la izquierda avanzaba un dgito. Los indicadores sobre los discos mostraban las respuestas correctas. Pero esta calculadora solo serva para sumar.

En 1694, Gottfried Withelm Leibnitz cre una mquina que multiplicaba y divida directamente. El dispositivo era en forma de rueda escalonada, an se usa en algunas calculadoras. Leibniz disea su famosa CALCULADORA UNIVERSAL en 1671 y despus de realizarle sucesivas modificaciones, da por terminado el ingenio en 1694. Leibniz parti de los modelos de Pascal y de Samuel Morland, Leibniz ide un ingenioso mecanismo para conseguir que su calculadora realizara, adems de sumas y restas, multiplicaciones, divisiones y races cuadradas. Este mecanismo fue bautizado con el nombre de rueda escalada de la calculadora de Leibniz. Este dispositivo consista en un contador de pasos, que se instrumentalizaba mediante una larga rueda dentada cilndrica con nueve dientes o varillas de longitud variable. La calidad de las teoras y trabajos de Leibniz afectaron de forma muy importante a la computacin especialmente por tres grandes logros:

7

la calculadora mecnica la estructuracin de procesos de resolucin de problemas y el perfeccionamiento del sistema binario Otro aspecto importante de aportacin de Leibniz fue su trabajo en el campo de la simbolizacin. El principio fundamental de su teora del simbolismo es que nuestras expresiones reflejan la estructura del mundo, para esto se deba contar con smbolos para todas las nociones que se deban tomar como elementales, estas ideas de Leibniz dieron origen al sistema binario que es una parte fundamental en lo que es el desarrollo de la computacin. La mquina de Leibniz fue el inicio de una serie de modelos similares que iban apareciendo con ciertas variaciones y mejoras pero con la misma estructura bsica.

En 1801 Joseph Marie Jacquard dise tarjetas perforadas para controlar una mquina de hilado textil, en donde cada lnea de tejido se presentaba en una tarjeta perforada como patrn y ste se teja automticamente.

En 1822 Charles Babbage desarroll un proyecto denominado Mquina diferencial, la cual era capaz de producir tablas logartmicas de seis cifras decimales de precisin. Animado por los resultados obtenidos, Babbage continu con sus experimentos para obtener una mquina analtica, pero el bajo nivel de la tecnologa metlica de la poca impidi que llegara a un buen resultado. El trabajo de Babbage fue retomado cuando se hizo nfasis en las investigaciones para obtener mquinas programables. El norteamericano Hernn Hollerith desarroll un mecanismo basado en tarjetas perforadas, cuya primera utilizacin exitosa se llev a cabo en 1886 durante una tabulacin del censo de poblacin de 1880 en USA. Durante la 2nda guerra mundial se dio el mayor impulso y fuerza de desarrollo de las computadoras, en esa poca, l fundador de IBM, junto con la Universidad de Harvard y la Universidad de Pennsylvania desarrollaron el MARK 1 y el ENIAC, que se usaron para misiles guiados de uso militar.

8

En 1930 Bennevar Bush ide la primera computadora analgica. Bush era un ingeniero y profesor de electrnica de el Massachusets Institute of Technology, quien construy la computadora que el llam analizador diferencial, el cual integraba las ecuaciones diferenciales ordinarias, en 1930 Bush y su equipo abren paso a lo que luego permitira la realizacin de la primera computadora digital.

Adems de esto Bush se ocup de formas de organizacin de informaciones, ideando un aparato que era capaz de hallar rpidamente una informacin requerida en un banco de datos. Este aparato llamado el Selector Rpido, operaba en un gran banco bibliogrfico dispuesto en soportes microfilmados. Un cdigo binario inventado por Bush, quedaba impreso en el borde de la pelcula y era localizado por una clula foto elctrica. Esto fue el inicio a lo que posteriormente conducira al tratamiento de la informacin y la gestin de los bancos de datos. Bush desarroll tambin un sistema automtico de edicin de textos, con una mquina de escribir se compona una pgina perfectamente alineada, al introducirse el texto correspondiente a cada lnea, la mquina espaciaba convenientemente las palabras y consegua una perfecta alineacin de los mrgenes derecho e izquierdo. Esto forma una parte histrica interesante que ha ido evolucionando con el tiempo. John Atanasoff naci en los Estados Unidos y obtuvo un doctorado en fsica terica. Estaba dedicado a la investigacin. Se consider como el creador de la primera computadora digital electrnica, cuando se invalid en 1973 por orden de un tribunal federal una patente anterior que corresponda a los tambin inventores Mauchly y Eckert, dndole oficialmente el crdito a John V. Atanasoff como el inventor de la computadora digital electrnica.

9

El Dr. Atanasoff, catedrtico de la Universidad Estatal de Iowa, desarroll la primera computadora digital electrnica entre los aos de 1937 a 1942. Llam a su invento la computadora Atanasoff-Berry, o solo ABC (Atanasoff Berry Computer). El estudiante graduado, Clifford Berry, fu su gran ayuda en la construccin de la computadora ABC.

Esta estaba configurada por tres centenares de tubos de vaco sin elementos mecnicos como estructura central. Su operatividad se aplicaba a la resolucin de un conjunto de 29 ecuaciones simultneas con la distincin de 29 variables, esto significaba que no era una computadora de propsito general, nicamente solucionaba cierto tipo de problemas matemticos. Algunos autores consideran que no hay una sola persona a la que se le pueda atribuir el haber inventado la computadora, sino que fue el esfuerzo de muchas personas. Sin embargo en el antiguo edificio de Fsica de la Universidad de Iowa aparece una placa con la siguiente leyenda: "La primera computadora digital electrnica de operacin automtica del mundo, fue construida en este edificio en 1939 por John Vincent Atanasoff, matemtico y fsico de la Facultad de la Universidad, quien concibi la idea, y por Clifford Edward Berry, estudiante graduado de fsica." Despus de varias conversaciones con el Dr. Atanasoff, leer apuntes que describan los principios de la computadora ABC y verla en persona, el Dr. John W. Mauchly colabor con J. Presper Eckert, Jr. para desarrollar una mquina que calculara tablas de trayectoria para el ejrcito estadounidense. El producto final fue una computadora electrnica completamente operacional a gran escala la cual se termin en 1946 y se llam ENIAC (Electronic Numerical Integrator And Computer), o Integrador numrico y calculador electrnico. Esta computadora fue construda para aplicaciones de la Segunda Guerra Mundial y se termin en 30 meses por un equipo de cientficos que trabajaban bajo reloj. La ENIAC, mil veces ms veloz que sus predecesoras electromecnicas, irrumpi como un importante descubrimiento en la tecnologa de la computacin. Pesaba 30 toneladas y ocupaba un espacio de 450 mts. cuadrados, llenaba un cuarto de 6 m x 12 m y contena 18,000 bulbos, tena que programarse manualmente conectndola a 3 tableros que contenan ms de 6000 interruptores. Ingresar un nuevo programa era un proceso muy tedioso que requera das o incluso semanas. A diferencia de las computadoras actuales que operan con un sistema binario (0,1) la ENIAC operaba con uno decimal (0,1,2..9).

10

La ENIAC requera una gran cantidad de electricidad. Hay una historia que cuenta que la ENIAC, construda en la Universidad de Pennsilvania, bajaba las luces de Filadelfia siempre que se activaba. La imponente escala y las numerosas aplicaciones generales de la ENIAC sealaron el comienzo de la primera generacin de computadoras.

Durante la II Guerra Mundial (1939-1945) un equipo de cientficos y matemticos que trabajaban en Bletchely Park, al norte de Londres crearon tambin un ordenador digital totalmente electrnico llamado el Colossus, este incorporaba 1,500 vlvulas o tubos de vaco y en diciembre de 1943 ya era operativo, el equipo de cientficos era dirigido por Alan Turing y era utilizado para decodificar los mensajes de radio cifrados de los alemanes.

Lleg el momento crucial en la historia de la computacin en 1947, en la Universidad de Pensilvania, donde fue construida la primera computadora electrnica. Esta mquina ocupaba el stano entero de la Universidad, contena ms de 18.000 tubos de vaco, un sistema de refrigeracin muy complejo y consuma 200 Kw de electricidad, pero poda realizar 5.000 operaciones aritmticas en un segundo. La historia de la computacin comenz aqu su increble recorrido.

11

Este proyecto era respaldado por el Ministerio de Defensa de USA. Dos aos despus se unira al proyecto el matemtico hngaro John Von Newman, quien es considerado en la historia de la computacin el padre de las computadoras por su valiosa aportacin al desarrollo de estas increbles mquinas. Fue fundamental en la historia de la computacin el avance incluido por Von Newmann, permitiendo que coexistan datos con instrucciones en la memoria, pudiendo as ser programada en un lenguaje.

En 1945, John von Neumann, que haba trabajado con Eckert y Mauchly en la Universidad de Pennsylvania, public un artculo acerca del almacenamiento de programas. El concepto de programa almacenado permiti la lectura de un programa dentro de la memoria de la computadora, y despus la ejecucin de las instrucciones del mismo sin tener que volverlas a escribir. La primera computadora en usar este concepto fue la llamada EDVAC (Eletronic Discrete-Variable Automatic Computer, es decir computadora automtica electrnica de variable discreta), desarrollada por Von Neumann, Eckert y Mauchly.

Los programas almacenados dieron a las computadoras una flexibilidad y confiabilidad tremendas, hacindolas ms rpidas y menos sujetas a errores que los programas mecnicos. Una computadora con capacidad de programa almacenado podra ser utilizada para varias aplicaciones cargando y ejecutando el programa apropiado. Hasta este punto, los programas y datos podran ser ingresados en la computadora slo con la notacin binaria, que es el nico cdigo que las computadoras "entienden". El siguiente desarrollo importante en el diseo de las computadoras fueron los programas intrpretes, que permitan a las personas comunicarse con las computadoras utilizando medios distintos a los nmeros binarios. En 1952 Grace Murray Hoper una oficial de la Marina de E.U., desarroll el primer compilador, un programa que puede traducir enunciados parecidos al ingls en un cdigo binario comprensible para la mquina llamado COBOL (Common Business-Oriented Languaje).

12

PRIMERA GENERACIN (1948 1958) En esta generacin haba un gran desconocimiento de las capacidades de las computadoras, puesto que se realiz un estudio en esta poca que determin que con veinte computadoras se saturara el mercado de los Estados Unidos en el campo de procesamiento de datos. Esta generacin abarco la dcada de los cincuenta. Y se conoce como la primera generacin. En el ao 1948 se produce un gran avance al descubrirse el transistor por los por los ingenieros de la empresa Bell: John Bardeen, Walter Brattain Y William Shockley. En 1956, gracias al descubrimiento del transistor reciben el Premio Nobel de Fsica. El transistor es un dispositivo electrnico semiconductor que se utiliza como amplificador o conmutador electrnico. Es conocido tambin con el nombre de micro amplificador, y fue el que sustituyo a los tubos de vaco, con ello se consigui que las computadoras redujesen considerablemente su tamao. Estas mquinas tenan las siguientes caractersticas: Usaban bulbos como componentes bsicos de sus circuitos. Alto consumo de energa y generaba calor muy intenso. Se requeran de 35 a 100 programadores, analistas, codificadores y personal de mantenimiento, as como un sistema de aire acondicionado. Empleaban tubos al vaco para procesar informacin. Tarjetas perforadas para ingresar informacin. Usaban cilindros magnticos para almacenar informacin e instrucciones internas. Eran sumamente grandes y sumamente lentas. Se comenz a utilizar el sistema binario para representar los datos. Se desarrollan los primeros discos duros, grandes tambores que giraban rpidamente y escriban y lean informacin desde el medio magntico. Se desarrollan los lenguajes de programacin FORTRAN (orientado a la resolucin de problemas numricos) y ALGOL (dirigido al tratamiento de problemas cientficos). Fabricacin industrial: Se inici la fabricacin de computadoras en serie. Hasta entonces los proyectos se haban originado y desarrollado en centros pblicos de investigacin debido a las grandes inversiones que exigan, al alto riesgo de fracaso que entraaban y a las escasas aplicaciones comerciales.

UNIVAC (1era. computadora fabricada para un propsito no militar, USA), IBM 701, IBM 650 pertenecen a esta generacin. En los 50s IBM y Remmington Rand se establecieron como lderes en la fabricacin de computadoras.

13

En esta generacin las mquinas son grandes y costosas (de un costo aproximado de 10,000 dlares). La computadora ms exitosa de la primera generacin fue la IBM 650, de la cual se produjeron varios cientos. Esta computadora que usaba un esquema de memoria secundaria llamado tambor magntico, que es el antecesor de los discos actuales. Usaron las computadoras para el censo de poblacin de USA.

SEGUNDA GENERACIN (1959 1964)

14

En esta generacin las computadoras se reducen de tamao y son de menor costo. Aparecen muchas compaas y las computadoras eran bastante avanzadas para su poca como la serie 5000 de Burroughs y la ATLAS de la Universidad de Manchester. Algunas computadoras se programaban con cintas perforadas y otras por medio de cableado en un tablero. El usuario de las computadoras en esta poca pasa de no tener ningn contacto con ella a ser pieza clave. Se disean pantallas antirreflejos, teclados ergonmicos; en lo referente al software, se comienza a disear para que el usuario de la computadora pierda menos tiempo aprendiendo como manejarlo y le saque mayor rendimiento. As parecen programas con listas de opciones, atajos con el uso de teclas, etc. En estos momentos se comienza a ser consciente de que la relacin entre el usuario y la computadora deben ser mucho ms amistosa acorde con el desarrollo que est llevando a cabo las computadoras. Caractersticas de esta generacin: Se invent el transistor, que sustituy a los bulbos. Se logr la miniaturizacin de los componentes de las computadoras. Se hicieron ms confiables y rpidas, requeran de menos enfriamiento. 200 transistores podan acomodarse en la misma cantidad de espacio que un tubo al vaco. Usaban pequeos anillos magnticos para almacenar informacin e instrucciones. Eran sumamente lentas. Avances en equipos perifricos: impresoras ms rpidas, mejores lectores de tarjetas y de cinta perforada, bobinas de cinta magntica capaces de memorizar y de volver a leer datos en nmero ilimitado. Se desarrolla el lenguaje COBOL, por Grace M. Hopper, y se pone a disponibilidad comercial. Se incrementa la utilizacin del FORTRAN. Se crean los ensambladores que utilizan un cdigo nemotcnico para representar las instrucciones. Se usaron estas computadoras para muchos fines comerciales y gubernamentales: Se usaban en aplicaciones de sistemas de reservaciones de lneas areas, control del trfico areo y simulaciones de propsito general. La marina de los Estados Unidos desarrolla el primer simulador de vuelo, "Whirlwind I". Surgieron las minicomputadoras y los terminales a distancia. Principales fabricantes de computadoras: Honeywell, Burrougs, Univac, NCR y CDC. Las computadoras de esta poca fueron la Phlico 212 y la UNIVAC M460, la Control Data Corporation modelo 1604, seguida por la serie 3000, la IBM mejor la 709 y sac al mercado la 7090, la National Cash Register empez a producir mquinas para proceso de datos de tipo comercial, introdujo el modelo NCR 315. La Radio Corporation of America lanzo al mercado el modelo 501, que ya usaba el lenguaje COBOL, se usaba para tareas administrativas y comerciales.

15

TERCERA GENERACIN (1964 1971) La tercera generacin de computadoras emergi con el desarrollo de circuitos integrados (pastillas de silicio) en las que se colocan miles de componentes electrnicos en una integracin en miniatura. Las computadoras nuevamente se hicieron ms pequeas, ms rpidas, desprendan menos calor y eran

16

energticamente ms eficientes. El ordenador IBM-360 domin las ventas de la tercera generacin de ordenadores desde su presentacin en 1965. El PDP-8 de la Digital Equipment Corporation fue el primer miniordenador. El Circuito integrado, o chip se invento en el ao 1959 por los ingenieros de la Texas Instruments. Ellos sern los sustitutos de los transistores en la fabricacin de las computadoras. El primer circuito integrado contena seis transistores. Actualmente un chip o circuito integrado puede llegar a tener millones de transistores. Caractersticas de esta generacin: Invencin de circuitos integrados monolticos. Miniaturizacin electrnica. Se desarrollaron los "chips" para almacenar y procesar la informacin. Un "chip" es una pieza de silicio que contiene los componentes electrnicos en miniatura llamados semiconductores. Los circuitos integrados recuerdan los datos, ya que almacenan la informacin como cargas elctricas. Las computadoras pueden llevar a cabo ambas tareas de procesamiento o anlisis matemticos. Emerge la industria del "software". Se le adicionan equipos auxiliares, como terminales interactivas. Primeras minicomputadoras: PDP-11/VAX y la IBM 360, IBM370 POP6. Despedan menos calor. Son utilizables para aplicaciones de tipo cientfico, as como comercial. Surgen la multiprogramacin, multiprocesamiento, las comunicaciones de datos, otros lenguajes (BASIC y PL1) y los paquetes especializados de programacin. Corran los primeros programas multitareas debido a su gran velocidad. Teleproceso: se instalan terminales remotos, que acceden a la computadora central para realizar operaciones, extraer o introducir informacin en bancos de datos, etc. Nacen las calculadoras de bolsillo. Consuman menos electricidad, por lo tanto, generaban menos calor. El sistema operativo que usaba la IBM en el modelo 360 lo llamo OS, tenia varias configuraciones, con el que se poda manejar la memoria y el uso del procesador, ya usaba la tecnologa de los circuitos integrados, que luego se convirtieron en estndares. Todas estas computadoras se caracterizaban por ser muy potentes y veloces. A mediados de la dcada de los 70 las computadoras que se venden en los mercados recuden su tamao, se las denomina minicomputadoras. Estas son mas econmicas que las grandes, pero son muy giles en el tratamiento de la informacin. Algunas de estas minicomputadoras o mainframes (que significa, gran sistema) fueron: la PDP 8, la PDP 11, la VAX de la Virtual Address eXtended, todas estas de la empresa Digital Equipment Corporation, los modelos NOVA y ECLIPSE de Data General, la

17

serie 3000 y 9000 de Hewlett Packard, etc. En la antigua Unin Sovitica se uso durante varias generaciones la US (Sistema Unificado, Ryad).

CUARTA GENERACIN (1971 1988) Aparecen los microprocesadores que es un gran adelanto de la microelectrnica, son circuitos integrados de alta densidad y con una velocidad impresionante. Las microcomputadoras con base en estos circuitos son extremadamente pequeas y baratas, por lo que su uso se extiende al mercado industrial. Aqu nacen las computadoras personales (PC) que han adquirido proporciones enormes y que han influido en la sociedad en general sobre la llamada "revolucin informtica". Caractersticas de esta generacin: Reemplaz las memorias magnticas (acceso secuencial) por microfichas de silicio (chips). Se microminiturizaron los componentes, lo que hizo posible la creacin de la computadora personal (PC). Aparece el lenguaje PASCAL como uno de los ms poderosos, por ser de aplicacin general e incluir los conceptos introductorios de lo que hoy se conoce como programacin estructurada.

18

Surgen las tecnologas LSI (Large Scale Integration) y VLSI (Very Large Scale Integration) que permiten empacar ms componentes en las microfichas. Se rebas el lmite de Gigaherzio en las computadoras personales. Se crean tcnicas para manejar volmenes grandes de informacin y se usan computadoras remotas en operacin con un computador central mediante la telecomunicacin, dando lugar a la telemtica. Se popularizan los lenguajes de programacin de tipo interactivo, las mquinas virtuales y los manipuladores de datos. Se colocan ms circuitos dentro de un "chip". "LSI - Large Scale Integration circuit". "VLSI - Very Large Scale Integration circuit". Cada "chip" puede hacer diferentes tareas. tercer componente, la memoria primaria, es operado por otros "chips". La computadora es capaz de elaborar programas. Memorias electrnicas: estas son ms rpidas y reducidas. Aunque al principio eran ms caras, su costo disminuye con la fabricacin en serie. La capacidad de memoria se aumenta muchsimo. Sistemas de tratamiento de bases de datos: consisten en un conjunto de elementos de hardware y de software interrelacionados que permite un uso sencillo y rpido de la informacin. Microcomputadora y computadora personal: a la minicomputadora se le aaden la microcomputadora y la computadora personal, estos tres forman la gama de las computadoras pequeas contrapuestas a la de las mquinas de gestin empresarial y causa que la computacin tenga un uso ms generalizado. La generalizacin de las aplicaciones: estas son innumerables y afectan prcticamente a todos los campos de la actividad humana: medicina, ingeniera, diseo, comercio, educacin, agricultura, administracin, industria, hogar, juegos, telecomunicaciones, defensa, electrodomsticos, y otros. La generacin del usuario: la computacin deja de ser terreno exclusivo de un grupo reducido de profesionales y se abre a amplios estratos sociales. Se multiplica constantemente el numero de usuarios. La cuarta generacin es la llamada generacin del usuario. Se introdujeron las tecnologas de hyperthreading, hypertransport y multincleo. Hyperthreading: el microprocesador acta a nivel lgico como si se tratara de ms de uno al procesar instrucciones; lo que reanuda en mayor velocidad general del sistema al ejecutar aplicaciones. Hypertransport: una conexin ms rpida capaz de transferir informacin a alta velocidad entre microfichas y otras partes del sistema. Interconexin. Se obtuvo rediseando el bus (conexin interna directa entreel procesador y la memoria) y las interconexiones de los componentes en la placa base. Bellmac 32

Un "chip" sencillo actualmente contiene la unidad de control y la unidad de aritmtica/lgica. El

19

Multincleos: un procesador con 2 o ms ncleos funciona como si se tuvieran 2 o ms procesadores dentro del mismo empaque de CPU, lo que lo hace ms rpido. En el ao 1976 Steve Wozniak y Steve Jobs idean la primera microcomputadora de la que se venden muchsimas unidades. Ms adelante Steve Wozniak y Steve Jobs, fundan la empresa Apple, que llego a ser la segunda compaa ms grande del mundo, solo estaba por encima de ella el gigante IBM, aun hoy Apple est entre las 5 compaas ms grandes del mundo en el campo de la computacin.

Entre los aos 1984 y 1987 se llegaron a vender 60 millones de computadoras personales, esto demuestra su tremenda expansin en todos los terrenos, comercial, industrial y personal. En gran parte todo esto es debido tambin al software que se usa que han propiciado un acercamiento entre la computadora y el usuario de la misma. Comienza a desarrollarse procesadores de palabra, hojas electrnicas de clculo, paquetes grficos, etc. Por esta poca Gary Kildall y William Gates crean sistemas operativos que llegaron a ser tan importantes y conocidos en el mercado mundial como son los famosos sistemas operativos de Microsoft Windows. Pero todo esto no implica que las grandes computadoras hayan desaparecido, todo lo contrario, hoy en da su uso se limita a terreno militar y la gran industria.

20

QUINTA GENERACIN (1989 - PRESENTE) En vista de la acelerada marcha de la microelectrnica, la sociedad industrial se ha dado a la tarea de poner tambin a esa altura el desarrollo del software y los sistemas con que se manejan las computadoras. Surge la competencia internacional por el dominio del mercado de la computacin, en la que se perfilan dos lderes que, sin embargo, no han podido alcanzar el nivel que se desea: la capacidad de comunicarse con la computadora en un lenguaje ms cotidiano y no a travs de cdigos o lenguajes de control especializados.

MacBook Air

Caractersticas de esta generacin: Supercomputadoras. Se introduce el uso de la memoria de burbuja magntica y la tcnica hologrfica con rayos laser. Se mejoran las tcnicas de comunicacin con el procesador central en forma conversacional o interactiva. Los lenguajes son cada vez mas humanos, inclusive la voz.

Japn lanz en 1983 el llamado "programa de la quinta generacin de computadoras", con los objetivos explcitos de producir mquinas con innovaciones reales en los criterios mencionados. Y en los Estados Unidos ya est en actividad un programa en desarrollo que persigue objetivos semejantes, que pueden resumirse de la siguiente manera: Se desarrollan las microcomputadoras, o sea, computadoras personales o PC. Se desarrollan las supercomputadoras. Inteligencia artificial: La inteligencia artificial es el campo de estudio que trata de aplicar los procesos del pensamiento humano usados en la solucin de problemas a la computadora. Robtica: La robtica es el arte y ciencia de la creacin y empleo de robots. Un robot es un sistema de computacin hbrido independiente que realiza actividades fsicas y de clculo. Estn siendo diseados con inteligencia artificial, para que puedan responder de manera ms efectiva a situaciones no estructuradas. Sistemas expertos:

21

Un sistema experto es una aplicacin de inteligencia artificial que usa una base de conocimiento de la experiencia humana para ayudar a la resolucin de problemas. Ejemplos de sistemas expertos: Diagnsticos mdicos Reparacin de equipos Anlisis de inversiones Planeamiento financiero Eleccin de rutas para vehculos Ofertas de contrato Asesoramiento para clientes de autoservicio Control de produccin y entrenamiento. Redes de comunicaciones: Los canales de comunicaciones que interconectan terminales y computadoras se conocen como redes de comunicaciones; todo el "hardware" que soporta las interconexiones y todo el "software" que administra la transmisin. Ejemplos de redes de comunicaciones: LAN - Local Area Network BBN - Back Bone Network MAN - Metropolitan Area Network WAN - Wide Area Network Con la quinta generacin, se pretende multiplicar la velocidad, disponer procesamientos paralelos, disear una arquitectura de hardware-software muy superior y utilizar el lenguaje natural. La renovacin que aporta la quinta generacin es grande y no viene dada slo por la introduccin de cambios de hardware sino por la combinacin de novedades en el material y en la programacin. Por otro lado el tipo de trabajo propio de las mquinas de las generaciones precedentes se resume en el tratamiento de datos. En esta generacin es posible adquirir informacin a partir de los materiales y estructuras de que se dispone, en la elaboracin de conocimientos, en el despliegue de un tratamiento inteligente. La generacin de Internet Desde la aparicin de la multimedia en 1991, Internet fue y sigue siendo la era de la multimedia ya que todava est en auge. La revolucin de los ordenadores y las diferentes tecnologas dio origen a la expansin vertiginosa de la denominada World Wide Web y los dems servicios de Internet. Con ella se establecieron nuevas necesidades en los avances tecnolgicos tanto en equipos como en procesadores para poder explotar de forma eficiente todos los servicios que ofrece esta red de ordenadores interconectados entre s.

22

Las computadoras de la quinta generacin seran capaces de resolver problemas complejos en formas que pudieran llegar a considerarse creativas. Una va que se est explorando activamente es el ordenador de proceso paralelo, que emplea muchos chips para realizar varias tareas diferentes al mismo tiempo. El proceso paralelo podra llegar a reproducir hasta cierto punto las complejas funciones de realimentacin, aproximacin y evaluacin que caracterizan el pensamiento humano. Otra forma de proceso paralelo que se est investigando es el uso de computadoras moleculares. En estas computadoras, los smbolos lgicos se expresan por unidades qumicas de ADN en vez de por el flujo de electrones habitual en las computadoras corrientes. Las computadoras moleculares podran llegar a resolver problemas complicados mucho ms rpidamente que las actuales supercomputadoras y consumir mucha menos energa. Existen problemas complejos que requieren una bsqueda intensiva para su resolucin y que no son eficientemente resueltos por las computadoras digitales. Las computadoras moleculares se muestran ms adecuadas para la resolucin eficiente de esos problemas debido a su enorme capacidad de paralelismo. En la computacin con ADN el paralelismo est en el hecho de que un tubo de ensayo puede contener 10^18 molculas de ADN. Una simple operacin sobre el tubo de ensayo supone del orden de 10^18 operaciones simultneas. Aqu se puede ver la enorme ventaja de las computadoras con ADN frente a las computadoras clsicas para la resolucin de ciertos problemas complejos. Se puede agregar a las caractersticas de esta generacin, adems de lo anterior un incremento en la miniaturizacin de elementos, mayor velocidad, diversas memorias y aumento en su capacidad, lenguaje natural, elaboracin inteligente del saber, multiprocesadores. El futuro de la computacin es muy atrayente, el un futuro prximo veremos como la inteligencia artificial es un hecho, la robtica dar un paso de gigante y la industria se desarrollara aun ms rpidamente, gracias al impresionante desarrollo que sufrirn las computadoras en los prximos aos. En gran parte el desarrollo actual de las computadoras digitales se lo debemos al matemtico John Von Neumann, que estableci como una de las principales premisas que: los datos como los programas, se almacenan en la memoria antes de ser utilizados .

23

24

25

26

EVOLUCION DE LOS LENGUAJES DE PROGRAMACION Tras el desarrollo de las primeras computadoras surgi la necesidad de programarlas para que realizaran las tareas deseadas. Los lenguajes ms primitivos fueron los denominados lenguajes mquina. Como el hardware se desarrollaba antes que el software, estos lenguajes se basaban en el hardware, con lo que cada mquina tena su propio lenguaje y por ello la programacin era un trabajo costoso, vlido slo para esa mquina en concreto. El primer avance fue el desarrollo de las primeras herramientas automticas generadoras de cdigo fuente. Pero con el permanente desarrollo de las computadoras, y el aumento de complejidad de las tareas, surgieron a partir de los aos 50 los primeros lenguajes de programacin de alto nivel. Con la aparicin de los distintos lenguajes, solan aparecer diferentes versiones de un mismo lenguaje, por lo que surgi la necesidad de estandarizarlos para que fueran ms universales. Las organizaciones que se encargan de regularizar los lenguajes son ANSI (Instituto de las Normas Americanas) e ISO (Organizacin de Normas Internacionales). LOS LENGUAJES SE CLASIFICAN EN: LENGUAJES DE BAJO NIVEL Se llaman de bajo nivel porque estn muy cercanos al hardware del ordenador. Es necesario conocer a fondo la arquitectura de la mquina para la que se va a programar. El primer lenguaje de este tipo que se utiliz fue el lenguaje mquina, que consiste en un conjunto de instrucciones en binario, es decir, con ceros y unos, con los cuales se indica al ordenador qu hacer. Este lenguaje es muy complicado y la posibilidad de cometer errores es muy alta, por lo que ya no se utiliza. Para solventar estas dificultades apareci el lenguaje ensamblador, que consiste en asignar una abreviatura a cada instruccin en binario, de forma que sea ms fcil recordarla y ms difcil equivocarse. Sin embargo, con este lenguaje sigue siendo necesario conocer muy bien el hardware del ordenador.

27

LENGUAJES DE ALTO NIVEL Los lenguajes de alto nivel suelen utilizar trminos ingleses del tipo LIST, PRINT u OPEN como comandos que representan una secuencia de decenas o de centenas de instrucciones en lenguaje mquina. Los comandos se introducen desde el teclado, desde un programa residente en la memoria o desde un dispositivo de almacenamiento, y son interceptados por un programa que los traduce a instrucciones en lenguaje mquina. Los programas traductores son de dos tipos: intrpretes y compiladores. Con un intrprete, los programas que repiten un ciclo para volver a ejecutar parte de sus instrucciones, reinterpretan la misma instruccin cada vez que aparece. Por consiguiente, los programas interpretados se ejecutan con mucha mayor lentitud que los programas en lenguaje mquina. Por el contrario, los compiladores traducen un programa ntegro a lenguaje mquina antes de su ejecucin, por lo cual se ejecutan con tanta rapidez como si hubiesen sido escritos directamente en lenguaje mquina. Se considera que fue la estadounidense Grace Hopper quien implement el primer lenguaje de ordenador orientado al uso comercial. Despus de programar un ordenador experimental en la Universidad de Harvard, trabaj en los modelos UNIVAC I y UNIVAC II, desarrollando un lenguaje de alto nivel para uso comercial llamado FLOW-MATIC. Para facilitar el uso del ordenador en las aplicaciones cientficas, IBM desarroll un lenguaje que simplificara el trabajo que implicaba el tratamiento de frmulas matemticas complejas. Iniciado en 1954 y terminado en 1957, el FORTRAN (acrnimo de Formula Translator) fue el primer lenguaje exhaustivo de alto nivel de uso generalizado.

28

LENGUAJE ENSAMBLADOR El lenguaje ensamblador, o assembler (assembly language en ingls ) es un lenguaje de programacin de bajo nivel para los computadores, microprocesadores, micro controladores, y otros circuitos integrados programables. Implementa una representacin simblica de los cdigos de mquina binarios y otras constantes necesarias para programar una arquitectura dada de CPU y constituye la representacin ms directa del cdigo mquina especfico para cada arquitectura legible por un programador. Esta representacin es usualmente definida por el fabricante de hardware, y est basada en los mnemnicos que simbolizan los pasos de procesamiento (las instrucciones), los registros del procesador, las posiciones de memoria, y otras caractersticas del lenguaje. Un lenguaje ensamblador es por lo tanto especfico a cierta arquitectura de computador fsica (o virtual). Esto est en contraste con la mayora de los lenguajes de programacin de alto nivel, que, idealmente son portables. Caractersticas El cdigo escrito en lenguaje ensamblador posee una cierta dificultad de ser entendido ya que su estructura se acerca al lenguaje mquina, es decir, es un lenguaje de bajo nivel. El lenguaje ensamblador es difcilmente portable, es decir, un cdigo escrito para un microprocesador, puede necesitar ser modificado, para poder ser usado en otra mquina distinta. Al cambiar a una mquina con arquitectura diferente, generalmente es necesario reescribirlo completamente. Los programas hechos por un programador experto en lenguaje ensamblador son generalmente mucho ms rpidos y consumen menos recursos del sistema (memoria RAM y ROM) que el programa equivalente compilado desde un lenguaje de alto nivel. Al programar cuidadosamente en lenguaje ensamblador se pueden crear programas que se ejecutan ms rpidamente y ocupan menos espacio que con lenguajes de alto nivel. Con el lenguaje ensamblador se tiene un control muy preciso de las tareas realizadas por un microprocesador por lo que se pueden crear segmentos de cdigo difciles y/o muy ineficientes de programar en un lenguaje de alto nivel, ya que, entre otras cosas, en el lenguaje ensamblador se dispone de instrucciones del CPU que generalmente no estn disponibles en los lenguajes de alto nivel. Tambin se puede controlar el tiempo en que tarda una rutina en ejecutarse, e impedir que se interrumpa durante su ejecucin. El lenguaje ensamblador hard-coded es tpicamente usado en el ROM de arranque del sistema (BIOS en los sistemas compatible IBM PC). Este cdigo de bajo nivel es usado, entre otras cosas, para inicializar y probar el hardware del sistema antes de

29

cargar el sistema operativo, y est almacenado en el ROM. Una vez que ha tomado lugar un cierto nivel de inicializacin del hardware, la ejecucin se transfiere a otro cdigo, tpicamente escrito en lenguajes de alto nivel; pero el cdigo corriendo inmediatamente despus de que es aplicada la energa usualmente est escrito en lenguaje ensamblador. Lo mismo es cierto para los boot loaders. Muchos compiladores traducen lenguajes de alto nivel a lenguaje ensamblador primero, antes de la compilacin completa, permitiendo que el cdigo en ensamblador sea visto para propsitos de depuracin y optimizacin. Lenguajes de relativo bajo nivel, como C, con frecuencia proveen sintaxis especial para empotrar lenguaje ensamblador en cada plataforma de hardware. El cdigo portable del sistema entonces puede usar estos componentes especficos a un procesador a travs de una interface uniforme. El lenguaje ensamblador tambin es valioso en ingeniera inversa, puesto que muchos programas solamente son distribuidos en una forma de cdigo de mquina. El cdigo de mquina es usualmente fcil de trasladar hacia lenguaje ensamblador para luego ser cuidadosamente examinado en esta forma, pero es muy difcil de trasladar hacia un lenguaje de alto nivel. Herramientas como Interactive Disassembler, hacen uso extenso del desensamblador para tales propsitos.

30

FORTRAN Estrictamente hablando, FORTRAN (FORmula TRANslating system) no fue el primer lenguaje de programacin que existi (Laning & Zierler, del MIT, ya tenan un compilador de un lenguaje algebraico en 1952), pero s fue el primero en atraer la atencin de una parte importante de la reducida comunidad de usuarios de computadoras de la poca. Su desarrollo comenz en 1955 y el lenguaje se liber finalmente en abril de 1957, despus de 18 aos. Fue desarrollado principalmente por John Backus en IBM. Backus recibi el Turing Award en 1977. Su diseo se bas en un intrprete llamado Speedcoding, que fue desarrollado por Backus para la IBM 701. La especificacin preliminar de FORTRAN fue recibida con frialdad y escepticismo. Pocos crean que pudiera disearse un compilador que fuese equiparable (en eficiencia) a un humano. John Backus fue fuertemente criticado incluso por luminarias de la poca como John von Neumann, quienes crean que el desarrollo de FORTRAN slo era un desperdicio de dinero (el proyecto estuvo a punto de ser cancelado). El secreto de SU xito se atribuye a su excelente documentacin y a las sofisticadas tcnicas de optimizacin que se us en el diseo de su compilador. De acuerdo a John Backus, las tcnicas utilizadas en FORTRAN no fueron superadas sino hasta los 60s. En 1958 se liber FORTRAN II. Otro dialecto, llamado FORTRAN III, fue liberado tambin en 1958, pero no result muy exitoso debido a su enorme dependencia de la IBM 704. En 1962 se liber FORTRAN IV, que ha sido quizs la versin ms popular del compilador. En 1958, el American National Standards Institute (ANSI) estandariz FORTRAN (a esta versin se le llama ANS FORTRAN). Un nuevo estndar fue liberado en 1977 (se le conoce como FORTRAN 77). Las versiones ms recientes de FORTRAN (FORTRAN 90 y FORTRAN 2000) difieren mucho del lenguaje original. Los programas en FORTRAN se dividen en 2 partes: 1.- Una parte declarativa, la cual describe las reas de datos, sus longitudes (tipos) y sus valores iniciales. Las instrucciones declarativas existen en la mayor parte de los lenguajes estructurados, aunque se les llama de maneras distintas. En FORTRAN se les denomina sentencias no ejecutables. 1) Asignar un rea de memoria de un tamao especificado. Los tipos de datos disponibles en FORTRAN son: INTEGER, REAL, DOUBLE PRECISION y arreglos. El tipo de las variables numricas suele considerarse REAL por omisin. 2) Asociar un nombre simblico a un rea especfica de memoria (a esto se le llama binding o declaracin de variables). 3) Inicializar el contenido de esa rea de memoria.

31

En el caso de FORTRAN, las variables no tienen que ser inicializadas. Esto suele ser una fuente comn de errores en FORTRAN. 2.- Una parte imperativa que contiene los comandos a ser ejecutados en el momento en que corre un programa. A las instrucciones imperativas de FORTRAN se les denomina sentencias ejecutables. Las sentencias imperativas son de 3 tipos diferentes: 1) Sentencias computacionales: Son anlogas a las operaciones aritmticas y de movimiento de datos del pseudo-cdigo que vimos anteriormente. La asignacin es la sentencia computacional ms importante de FORTRAN. 2) Sentencias de control de flujo: Comparaciones y ciclos. FORTRAN proporciona instrucciones condicionales (sentencias IF), ciclos (usando DO) y saltos incondicionales (usando GOTO). El lenguaje tiene sentencias muy primitivas para flujo de datos. 3) Sentencias de entrada/salida: FORTRAN I tena 12 sentencias de entrada/salida de un total de 26 del lenguaje. La razn era la enorme variedad de dispositivos de E/S que deba ser capaz de manejar el compilador. Las versiones ms recientes de FORTRAN han reducido y/o simplificado la necesidad de usar tantas sentencias de E/S. Este lenguaje, tiene, en general, una estructura lineal y no jerrquica, dado que la mayora de sus instrucciones no permiten ningn tipo de anidamiento.

32

ALGOL ALGOL (ALGOrithmic Language) es uno de varios lenguajes de alto nivel, diseado especficamente para la programacin de cmputo cientfico. Comenz a fines de la dcada de 1950, primeramente formalizado en un reporte titulado 'ALGOL 58' y posteriormente progres bajo los reportes 'ALGOL 60' y 'ALGOL 68'. Fue designado como un lenguaje universal por un comit internacional. Su conferencia original que se llev a cabo en Zurich, fue uno de los primeros intentos para resolver el problema de portabilidad del software. ALGOL es independiente al hardware donde se ejecuta, lo cual permiti a los diseadores ser ms creativos, sin embargo, esto hizo que la implementacin del lenguaje fuera mucho ms difcil. Aunque ALGOL nunca alcanz los niveles de popularidad comercial de otros lenguajes, como COBOL y FORTRAN, es considerado el lenguaje ms importante de su era, en trminos de su influencia en el desarrollo posterior de lenguajes. Las estructuras sintcticas y lexicogrficas de ALGOL, fueron tan populares que virtualmente todos los lenguajes que se han diseado despus, se les refiere como 'tipo ALGOL', es decir, que son jerrquicos en estructura, con ambiente y estructuras de control anidados. El segundo gran lenguaje de programacin de la era informtica; FORTRAN fue el primero. ALGOL intent mejorarlo cuidando especialmente su sintaxis y proporcionando una estructura modular. El resultado fue un lenguaje demasiado abstracto y general. Caractersticas ALGOL utiliza bloques de declaraciones entre parntesis y fue el primer lenguaje en emplear los trminos BEGIN y END para delimitarlos. ALGOL 58 incorpor ciclos, hasta entonces los programas eran de estructura plana, secuencial, como los realizados en ensamblador. ALGOL 60 es un lenguaje implementable que se convirti en un estndar para la descripcin de algoritmos: utilizado principalmente sobre papel (mundo acadmico y de investigacin). Se utiliz bastante en Europa. ALGOL 60 inici varias tradiciones, incluyendo el uso de la Notacin BNF, propuesta por John Backus para especificar la sintaxis y el empleo adicional de BNF para organizar el manual de referencia del lenguaje. ALGOL 60 introdujo la recursin: "Cualquier aparicin de un identificador de procedimiento dentro del cuerpo del procedimiento, excepto una aparicin en la parte izquierda de un enunciado de asignacin, denota la activacin del procedimiento". Tambin introdujo la declaracin explcita del tipo de las variables, las reglas de mbito para variables locales, el paso de parmetros por referencia, la estructura de bloque y las matrices de tamao dinmico. ALGOL 60 incluye estructuras de control condicionales del tipo if-then-else y ciclos for. Aunque proporciona constructores de flujo de control estructurados, mantiene (al igual que casi todos sus derivados) el enunciado goto, cuya naturaleza daina para la comprensin y modificacin de programas es clara.

33

ALGOL 60 tambin tena algunas caractersticas que no siempre se han recogido en lenguajes posteriores, como las declaraciones own (similares a las variables static de C) o las expresiones switch (muy diferentes a las estructuras de control switch de C).

34

COBOL En informtica, acrnimo de COmmon Bussines-Oriented Language (Lenguaje Comn Orientado hacia Aplicaciones de Empresa), lenguaje de programacin desarrollado entre 1959 y 1961 que utiliza como base el idioma ingls y que se caracteriza por su gran facilidad de lectura. Su afirmacin como lenguaje exigido por el Departamento de Defensa de los Estados Unidos (actualmente es ADA), su nfasis en las estructuras de datos y su sintaxis similar al ingls (a diferencia de la de FORTRAN y ALGOL) fueron las razones de su amplia aceptacin y uso, en especial en aplicaciones de empresa. Los programas escritos en COBOL, que es un lenguaje compilado, se clasifican en cuatro divisiones: La Identification division: especifica el nombre del programa y contiene informacin general del programa como puede ser su autor, fecha en que se escribi y una pequea descripcin de su utilidad, as como cualquier otra documentacin que el programador desee aadir. Estructura: IDENTIFICATION DIVISION PROGRAM-ID. NombreDelPrograma. [AUTHOR. NombreDelAutor.] Otras entradas La primera lnea representa la cabecera de la divisin y aqu es donde comienza el programa. Luego viene el nombre del programa el cual es definido por el programador, tambin se especifica el nombre del autor y otras entradas de las cuales muchas son simplemente informacin para el programador (comentarios). La Enviroment division: especifica qu equipo o equipos se estn utilizando, y los archivos empleados en el programa para la entrada y la salida. La Data division: describe los datos utilizados en el programa.

La Procedure division: contiene la parte del procesamiento que dicta las acciones del programa. Caractersticas COBOL es un lenguaje independiente de la plataforma donde se ejecute, adems puede comunicarse con cualquier base de datos que exista, se adapta a la tecnologa cliente-servidor, a la tecnologa de eventos e inclusive puede estar en la web. Posee un elevado grado de precisin y velocidad de clculo numrico, con la capacidad de manejar hasta 30 posiciones decimales. Se emplea en aplicaciones comerciales y para el manejo de grandes cantidades de datos. Como dato histrico es el lenguaje ms utilizado en toda la historia para este propsito.

35

COBOL cuenta con aproximadamente 300 palabras reservadas. Es un lenguaje auto-documentado: se supona en un inicio que COBOL sera un lenguaje accesible para agentes no programadores, o sea se hablaba de que estos pudieran revisar el cdigo sin tener conocimientos de programacin, la idea a pesar de que no fue completamente efectiva, hizo que cobol se convirtiera en el lenguaje auto-documentado ms fcil de entender. Es un lenguaje simple con una funcionalidad limitada: no tiene punteros ni funciones ni tipos definidos por el usuario. Es portable: su estndar no pertenece a ninguna marca concreta y puede ser llevado a todo tipo de mquinas por ejemplo Windows, UNIX, OS/2 entre otros. Es mantenible: como se ha dicho ya, COBOL tiene una gran facilidad de interpretacin y una gran legibilidad y adems tiene una rgida estructura jerrquica y por medio de todo esto su mantenimiento se facilita muchsimo. Como ejemplo se podra ver que en el ao 2000 con el problema Y2K muchas aplicaciones COBOL se vieron afectadas y de igual manera su reparacin fue mucho ms fcil y barata en comparacin con otros lenguajes.

36

LISP En informtica, acrnimo de List Processing. Un lenguaje de programacin para ordenadores o computadoras orientado a la generacin de listas, desarrollado en 1959-1960 por John McCarthy y usado principalmente para manipular listas de datos. El lenguaje LISP constituy un cambio radical con respecto a los lenguajes procedurales (FORTRAN, ALGOL) que se desarrollaban por entonces. El LISP es un lenguaje interpretado, en el que cada expresin es una lista de llamadas a funciones. Este lenguaje se sigue utilizando con frecuencia en investigacin y en crculos acadmicos, y fue considerado durante mucho tiempo el lenguaje modelo para la investigacin de la inteligencia artificial (IA), aunque el Prolog ha ganado terreno durante los ltimos aos. Caractersticas Con unos pocos operadores y notacin para funciones se puede construir un lenguaje. Tambin es un modelo que marca la tendencia de los lenguajes actuales. Hay dos modelos: C y Lisp Los lenguajes diseados en los ltimos 20 aos se basan en el modelo de C al que aaden partes de Lisp. Es el lenguaje ms antiguo que se mantiene activo. Se adapta a cualquier paradigma de programacin. Adems de las implementaciones de Lisp como lenguaje, las versiones ms pequeas: Scheme Subconjuntos de Common Lisp: XLisp, elisp. Se empotran en aplicaciones especficas como lenguajes de scripts: Emacs, editor de texto, elisp. GIMP, editor de grficos, Scheme. Audacity, editor de audio, Nyquist (XLisp). LilyPond, partituras musicales, Scheme. AutoCAD, diseo tcnico, AutoLisp (XLisp). Habiendo declinado algo en los aos 1990, Lisp experiment un nuevo crecimiento de inters. La mayor parte de la nueva actividad est enfocada alrededor de las implementaciones de fuente abierta del Common Lisp, e incluye el desarrollo aplicaciones y de nuevas bibliotecas porttiles. Este inters puede ser medido en parte por las ventas de la versin impresa de Practical Common Lisp (Common Lisp Prctico) de Peter Seibel, un tutorial para nuevos programadores Lisp publicado en 2004, que estuvo brevemente en

37

Amazon.com como el segundo libro de programacin ms popular. El libro es accesible en lnea sin costo. Muchos nuevos programadores Lisp fueron inspirados por escritores como Paul Graham y Eric S. Raymond luchando por un lenguaje que otros consideran anticuado. Los nuevos programadores de Lisp frecuentemente describen el lenguaje como una experiencia que abre los ojos y una aclamacin de ser substancialmente ms productivo que otros lenguajes. Este aumento de conciencia puede ser contrastado con el "invierno de la inteligencia artificial" y el breve crecimiento del Lisp a mediados de los 1990.

38

SNOBOL SNOBOL (StriNg Oriented symBOlic Language) es un lenguaje de programacin de computadoras de muy alto nivel que surgi en la dcada de los 60 en los Laboratorios Bell merced al equipo formado por David J. Farber, Ralph E. Griswold y Ivan P. Polonsky. Durante las dcadas de los cincuenta y sesenta del siglo veinte haba un importante inters en lenguajes de programacin de computadoras de propsito especial. SNOBOL fue uno ms de los lenguajes orientados a cadenas de texto y de entre ellos uno de los ms exitosos. Fue usado ampliamente durante las dcadas de los setenta y ochenta del siglo veinte como un lenguaje de manipulacin de texto en las disciplinas humansticas, pero, en aos recientes su popularidad se ha desvanecido merced a que lenguajes nuevos tales como AWK y Perl han hecho popular la manipulacin de cadenas usando expresiones regulares; ahora es usado principalmente por aficionados siendo raro ver implementaciones recientes. La implementacin clsica fue en la PDP-10 y se ha usado para estudiar compiladores, gramticas formales e inteligencia artificial, en particular traduccin automtica y comprensin automtica de lenguajes naturales. La implementacin original fue en una IBM 7090 en los Laboratorios Bell en Holmdel, Nueva Jersey. Fue diseado expresamente para la portabilidad as que fue rpidamente exportado a otras plataformas. Queda por comprobar lo que se dice al respecto de que el algoritmo de coincidencia de patrones de bsqueda es superior al de las expresiones regulares de modo que programas bien escritos y compilados usando la implementacin SPITBOL del SNOBOL4 son del orden de 10 o ms veces ms rpidos en su ejecucin que los equivalentes escritos en Perl. Se llamaba originalmente "SEXI" (StriNg EXpression Interpreter), que en espaol es algo as como: Intrprete de Expresiones de Cadenas. La versin SNOBOL4 es la cuarta y ms reciente encarnacin de una serie de lenguajes de programacin de computadoras para el propsito especial de manipulacin de cadenas de caracteres. SNOBOL4 soporta una cantidad importante de tipos de datos tales como: enteros, nmeros reales de precisin limitada, cadenas de texto, patrones de bsqueda, arreglos y tablas as como la capacidad de permitir al programador definir tipos de datos adicionales y nuevas funciones (esta ltima caracterstica fue avanzada para su poca adems de parecerse y de que precede a los 'records' del Pascal o los 'structs' del C). Sobresale de entre los lenguajes de programacin ms famosos de su tiempo por usar los patrones de bsqueda como un tipo de datos nativo al lenguaje y por proveer operadores

39

para concatenacin de patrones y alternacin, adems de que las cadenas generadas durante la ejecucin pueden ser tratadas como programas que pueden a su vez ser ejecutados. Un patrn de bsqueda puede ser muy simple o extremadamente complicado. Ofrece al programador una amplia variedad de caractersticas incluyendo algunas muy exticas, de ah que se pueda usar como si fuera un lenguaje orientado a objetos, un lenguaje de programacin lgica, un lenguaje de programacin funcional o un lenguaje de programacin imperativa cambiando el conjunto de caractersticas usadas para escribir un programa. Tambin concatena cadenas que estn una junto a la otra en una sentencia y mantiene las cadenas en un montculo de memoria liberando as a los programadores de preocupaciones tales como asignacin de memoria y manejo de cadenas. Se implementa normalmente como un intrprete debido a las dificultades para instrumentar algunas de sus caractersticas de muy alto nivel, pero hay un compilador, el SPITBOL, que provee casi todas las caractersticas que la versin interpretada. El lenguaje de programacin de computadoras Icon es un descendiente de SNOBOL4.

40

VISUAL BASIC BASIC es un lenguaje de programacin desarrollado por los estadounidenses John Kemeny y Thomas Kurtz en el Dartmouth College. La versin original del lenguaje Basic fue creada en el ao 1964, ganndose una enorme popularidad gracias sobre todo a dos implementaciones, Tiny BASIC y Microsoft BASIC, que convirtieron a este lenguaje en la primera lengua franca de los microordenadores. Otras importantes implementaciones han sido CBASIC (BASIC Compilado), Integer y Applesoft BASIC (para el Apple II), GWBASIC (para computadoras personales), Turbo BASIC (de Borland) y Microsoft QuickBASIC. El lenguaje ha cambiado en el transcurso de los aos pues naci con el objetivo de servir como lenguaje para aquellas personas que deseaban introducirse por primera vez en el mundo de la programacin, y luego fue sufriendo modificaciones, hasta que en 1978 se estableci el Basic estndar. Inicialmente, Visual Basic fue pensado para ser un producto muy tctico. Microsoft tena varias iniciativas en el desarrollo que lideraba Visual Basic 1.0, todas fueron pensadas para convertirse en las herramientas de programacin a largo plazo, estratgicas, grficas y orientadas a objetos. Como siempre ocurre con los productos en su versin 1.0, el equipo de Visual Basic 1.0 fue forzado a cortar caractersticas de su larga lista de ideas para entregar realmente el producto al mercado. Consecuentemente, la primera versin incluy poco ms que la tecnologa Embedded Basic que haba sido desarrollada originalmente en Microsoft QuickBasic 4.0 (el cdigo p y compilador de Microsoft) y una herramienta compiladora de diseo simple originalmente diseada para Windows 3.0 pero que nunca fue utilizada para tal fin. Aproximadamente 12 meses despus, el desarrollo y mejora de la versin 1.0 comenz, Microsoft sac al mercado una herramienta desarrolladora para cubrir la exigencia en ese momento del mercado cuyo nombre en clave fue Thunder (Trueno). Caractersticas Posee una curva de aprendizaje muy rpida. Integra el diseo e implementacin de formularios de Windows. Permite usar con facilidad la plataforma de los sistemas Windows, dado que tiene acceso prcticamente total a la API de Windows, incluidas libreras actuales. Es uno de los lenguajes de uso ms extendido, por lo que resulta fcil encontrar informacin, documentacin y fuentes para los proyectos. Fcilmente extensible mediante libreras DLL y componentes ActiveX de otros lenguajes. Posibilita aadir soporte para ejecucin de scripts, VBScript o JScript, en las aplicaciones mediante Microsoft Script Control. Tiene acceso a la API multimedia de DirectX (versiones 7 y 8). Tambin est disponible, de forma no oficial, un componente para trabajar con OpenGL 1.1.

41

Existe una versin, VBA, integrada en las aplicaciones de Microsoft Office, tanto Windows como Mac, que permite programar macros para extender y automatizar funcionalidades en documentos, hojas de clculo, bases de datos (access). Si bien permite desarrollar grandes y complejas aplicaciones, tambin provee un entorno adecuado para realizar pequeos prototipos rpidos. Visual Basic provee soporte para empaquetado y distribucin, es decir, permite generar un mdulo instalador que contiene el programa ejecutable y las bibliotecas DLL necesarias para l. Con ese mdulo la aplicacin generada se distribuye y puede ser instalada en cualquier equipo (con sistema compatible). As como bibliotecas DLL, hay numerosas aplicaciones de terceros que disponen de variadas funciones y mejoras para Visual Basic, incluyendo tambin para empaquetado y distribucin.

42

APL APL (A Programing Language, tambin conocido como Array Processing Language desde hace algunos aos) es un lenguaje de programacin interpretado desarrollado por Kenneth Iverson, de IBM, a finales de los aos 60. Es un lenguaje muy conciso, con una sintaxis muy sencilla. Est orientado a trabajos con matrices, con la que se pueden hacer todo tipo de operaciones lgicas o matemticas. Incluso se pueden definir nuevas operaciones matriciales. Es de una potencia tremenda. Una sola sentencia puede traducirse en miles de ellas en otros lenguajes, como por ejemplo Fortran. Como ejemplo, el lenguaje de simulacin de circuitos, SIAL, ocupaba cerca de 25 000 sentencias en Fortran-Assembler y, al ser reescrito en APL, todo el programa se poda imprimir en dos folios. Por otra parte, a pesar de ser un lenguaje de tan alto nivel, tambin es capaz de manipular a escala de bits y tiene interfaces con lenguajes de programacin de bajo nivel (C, ensamblador...) mediante los llamados procesadores auxiliares. Tiene la propiedad de que desde una rutina se puede crear, compilar y ejecutar, en tiempo de ejecucin, otras, lo que lo hace muy apropiado para la fabricacin de compiladores e intrpretes. Sus problemas radican en que: Necesita teclado especial para poner los operadores lgicos y simblicos. Los programas escritos en APL son tan concisos que son difciles de documentar y de comprender. El APL, al ser tan conciso, es un lenguaje que permite un ciclo de desarrollo muy veloz. Por otra parte, al ser interpretado, la velocidad de ejecucin es tpicamente ms lenta que la de los lenguajes de programacin compilados. Por ello, se considera un buen lenguaje para el desarrollo de prototipos.

43

PL/I El lenguaje de programacin PL/I (programming languange I), fue creado alrededor de las dcadas de los 60 y 70, por IBM. Naci como parte del desarrollo de la arquitectura system 360, fabricada por IBM en aquel tiempo. Su desarrollo fue llevado a cabo en los laboratorios hursley, ubicados en el reino unido y propiedad de IBM, y su diseo iba orientado a satisfacer las necesidades existentes en las aplicaciones cientficas y comerciales. Esta necesidad, era producida debido a que los lenguajes de programacin antecesores a este, como por ejemplo Cobol y Fortran, podan resolver problemas de carcter cientfico o comercial, pero era necesario realizar aplicaciones que pudieran resolver tanto los problemas de carcter cientfico, como los referentes al negocio, y dado esto se procedi a realizar este lenguaje. PL/I es un lenguaje estructurado por capas de tercera generacin, donde la capa externa corresponde a la parte del cdigo y datos, y posee distintas capas que corresponden a procedimientos que son ejecutados como subrutinas o como funciones, y otras capas iniciales, que poseen llamados a funciones in-line. Como dato importante de este lenguaje, podemos mencionar que carece de palabras reservadas. Posee una serie de palabras reservadas pero que son reconocidas nicamente por contexto, de otra manera el programador puede utilizarlas libremente, ya que el compilador puede notar la diferencia segn el contexto en el que se utilicen estas palabras. Caractersticas El compilador hace uso de palabras reservadas analizndolas segn el contexto, lo que brinda mayor libertad al programador. Presenta un alto porcentaje de modularidad, gracias a su estructura por capas. Presenta cuatro distintas formas de almacenamiento: AUTOMATIC, STATIC, CONTROLLED, y BASED, lo que le brinda mayores opciones al programador. Entre sus definiciones, esta la utilizacin de estructuras de datos, tales como vectores, estructuras, vectores de estructuras, etc. La definicin de los datos a utilizar en un programa es independiente al hardware de la mquina. Funciones de entrada y salida forman una parte ntegra del lenguaje, y no a travs de alguna biblioteca. Pertenece al software libre, por lo que es gratuito. Permite realizar aplicaciones que resuelvan todo tipo de problemas (cientficos y comerciales).

44

SIMULA 67 Simula es un lenguaje de programacin orientada a objetos (OOP). Fue el primero de los lenguajes orientado a objetos. Varios aos despus de su desarrollo, casi todos los lenguajes modernos comenzaron a utilizar sus principios de orientacin a objetos. As fue como se popularizaron trminos como clases, objetos, instancias, herencia, polimorfismo, etc. Simula 67 fue lanzado oficialmente por sus autores Ole Johan Dahl y Kristen Nygaard en mayo de 1967, en la Conferencia de Trabajo en Lenguajes de Simulacin IFIO TC 2, en Lysebu cerca de Oslo Hoy en da, los creadores de Simula han desarrollado un nuevo lenguaje de programacin, llamado Beta, que generaliza todas las construcciones del lenguaje en una nica idea denominada patrn.

! todo programa empieza con un begin y termina con un end ;Begin

Class Saludos; Begin OutText("Hola Mundo!"); OutImage; End of class saludos; REF(Saludos) objeto; objeto :- New Saludos; End of module program;

45

PASCAL Lenguaje de programacin imperativo, diseado entre 1967 y 1971 por Niklaus Wirth. Se trata de un lenguaje compilado y estructurado, basado en el lenguaje ALGOL, que simplifica su sintaxis a la vez que incluye nuevos tipos de datos y estructuras, como subrangos, tipos de datos enumerados, archivos, registros y conjuntos. La aceptacin y el uso de Pascal se increment considerablemente en 1984 cuando Borland International introdujo Turbo Pascal. Se trataba de un compilador de Pascal de alta velocidad y bajo coste para sistemas MS-DOS del que se vendieron ms de un milln de copias en sus diferentes versiones. El lenguaje de programacin en Pascal, es un lenguaje de alto nivel, y de propsito general, lo cual quiere decir que se puede utilizar para cualquier tipo de propsitos. El lenguaje de programacin en Pascal se considera un lenguaje estructurado, sencillo y prctico para todos aquellos usuarios que se inician en el mundo de la programacin, ya que fue creado con fines de aprendizaje. Al ser un Pascal lenguaje estructurado, sirve de base para cualquier otro lenguaje de alto nivel, por estas caractersticas es utilizado en las universidades e institutos de educacin para inicializar a los futuros ingenieros en sistemas o informtica. El lenguaje de programacin Pascal, es idneo en el estudio y definicin de las estructuras de datos, su fcil definicin lo hace manejable para un programador novato. Con la programacin en Pascal, se pueden realizar desde programas formales, rutinas, utilitarios, hasta cualquier clase de video juegos. Programacin en Pascal es un lenguaje de sintaxis sencilla, muy estructurado y que comprueba exhaustivamente todo tipo de datos. El mejor de los propsitos de programacin en Pascal es que ensea buenas formas de programacin, con lo cual se utiliza mucho en la enseanza, por todos los motivos nominados anteriormente, por su sencillez, su estructuracin y su facilidad de lectura y entendimiento. Existen varios dialectos locales de programacin en Pascal, entre ellas el Turbo Pascal, el cual acepta instrucciones de Pascal. TIPOS DE DATOS Pascal es un lenguaje donde se debe especificar a la computadora qu datos va a contener una variable. Se recordar que una variable es un vaso o contenedor. Pues bien: un humano puede, a simple vista, distinguir entre una palabra como 'Hola' o un nmero como 47. Pero la computadora no puede hacer esto, as que se le debe decir qu tipo de datos se pondr en cada variable. Una vez hecho esto, no puede almacenarse un valor de cualquier tipo en esa variable, sino de algunos tipos (Pascal permite ciertas conversiones de tipo).

46

Para decirle a Pascal el tipo de una variable, se usa una de las siguientes palabras clave en el lugar indicado en el esqueleto del programa (ver ms abajo): INTEGER: Nmero entero entre -32,768 y 32,767 LONGLNT: Nmero entero entre -2*10^31 y 2*10^31 - 1 REAL: Nmero con coma decimal entre 2.9*10-39^y 1.7*10^38 STRING: Cadena de caracteres (conjunto de nmeros, letras, smbolos; palabras y frases) CHAR: Un carcter (un dgito o una letra o un smbolo) Existen otros tipos de datos, pero no son necesarios para completar el programa del Laboratorio. ESQUELETO DE UN PROGRAMA EN PASCAL: sonProgram ; Uses WinCrt; Const {constantes} = ; Var {variables} : ; Begin {instrucciones} ... End.

47

ADA Ada es un lenguaje de programacin orientado a objetos y fuertemente tipado de forma esttica que fue diseado por Jean Ichbiah de CII Honeywell Bull por encargo del Departamento de Defensa de los Estados Unidos. Es un lenguaje multipropsito, orientado a objetos y concurrente, pudiendo llegar desde la facilidad de Pascal hasta la flexibilidad de C++. Fue diseado con la seguridad en mente y con una filosofa orientada a la reduccin de errores comunes y difciles de descubrir. Para ello se basa en un tipado muy fuerte y en chequeos en tiempo de ejecucin (desactivables en beneficio del rendimiento). La sincronizacin de tareas se realiza mediante la primitiva rendezvous. Ada se usa principalmente en entornos en los que se necesita una gran seguridad y fiabilidad como la defensa, la aeronutica (Boeing o Airbus), la gestin del trfico areo (como Indra en Espaa) y la industria aeroespacial entre otros. Un compilador de Ada muy usado es GNAT, originalmente desarrollado por la Universidad de Nueva York bajo patrocinio del DoD. Est basado en la tecnologa de GCC y es software libre. Actualmente est mantenido por AdaCore (antes llamada Ada Core Technologies), empresa que ofrece soporte y servicios sobre el compilador. Existen otros compiladores comerciales. Caractersticas La sintaxis, inspirada en Pascal, es bastante legible incluso para personas que no conozcan el lenguaje. Es un lenguaje que no escatima en la longitud de las palabras clave, en la filosofa de que un programa se escribe una vez, se modifica decenas de veces y se lee miles de veces (legibilidad es ms importante que rapidez de escritura). Es indiferente el uso de maysculas y minsculas en los identificadores y palabras claves, es decir es un lenguaje case-insensitive. En Ada, todo el programa es un nico procedimiento, que puede contener subprogramas (procedimientos o funciones). Cada sentencia se cierra con end qu_cerramos. Es un modo de evitar errores y facilitar la lectura. No es necesario hacerlo en el caso de subprogramas, aunque todos los manuales lo aconsejan y casi todos los programadores de Ada lo hacen. El operador de asignacin es:=, el de igualdad =. A los programadores de C y similares les puede confundir este rasgo inspirado en Pascal. La sintaxis de atributos predefinidos es Objeto'Atributo (o Tipo'Atributo) (nota: esto slo aplica a atributos predefinidos por el lenguaje, ya que no es el concepto de atributo tpico de OOP).

48

Se distingue entre "procedimientos" (subrutinas que no devuelven ningn valor pero pueden modificar sus parmetros) y "funciones" (subrutinas que devuelven un valor y no modifican los parmetros). Muchos lenguajes de programacin no hacen esta distincin. Las funciones de Ada favorecen la seguridad al reducir los posibles efectos colaterales, pues no pueden tener parmetros in out. with Ada.Text_IO; procedure Hola_Mundo is begin Ada.Text_IO.Put("Hola, mundo!"); end Hola_Mundo;

49

PROLOG Lenguaje de programacin lgico e interpretado (Prolog). La programacin lgica es un paradigma de los lenguajes de programacin en el cual los programas se consideran como una serie de aserciones lgicas. De esta forma, el conocimiento se representa mediante reglas, tratndose de sistemas declarativos. es un lenguaje de programacin simple pero poderoso desarrollado en la Universidad de Aix-Marseille (Marsella, Francia) por los profesores Alain Colmerauer y Philippe Roussel, como una herramienta prctica para programacin lgica. Naci de un proyecto que no tena como objetivo la implementacin de un lenguaje de programacin, sino el procesamiento de lenguajes naturales. Alain Colmerauer y Robert Pasero trabajaban en la parte del procesado del lenguaje natural y Jean Trudel y Philippe Roussel en la parte de deduccin e inferencia del sistema. Interesado por el mtodo de resolucin SL, Trudel persuadi a Robert Kowalski para que se uniera al proyecto, dando lugar a una versin preliminar del lenguaje Prolog a finales de 1971 y apareciendo la versin definitiva en 1972. Esta primera versin de Prolog fue programada en ALGOL W. Inicialmente se trataba de un lenguaje totalmente interpretado hasta que, en 1983, David H.D. Warren desarroll un compilador capaz de traducir Prolog en un conjunto de instrucciones de una mquina abstracta denominada Warren Abstract Machine, o abreviadamente, WAM. Desde entonces Prolog es un lenguaje semi-interpretado. Si bien en un principio se trataba de un lenguaje de uso reducido, la aparicin de intrpretes del mismo para microordenadores de 8 bits y para ordenadores domsticos de 16 bits a lo largo de la dcada de 1980 contribuy notablemente a su popularizacin. Otro importante factor en su difusin fue la adopcin del mismo para el desarrollo del proyecto de la quinta generacin de computadoras a principios de la dcada de los 1980, en cuyo contexto se desarroll la implementacin paralelizada del lenguaje llamada KL1 y del que deriva parte del desarrollo moderno de Prolog. Las primeras versiones del lenguaje diferan, en sus diferentes implementaciones, en muchos aspectos de sus sintaxis, emplendose mayormente como forma normalizada el dialecto propuesto por la Universidad de Edimburgo , hasta que en 1995 se estableci un estndar ISO (ISO/IEC 13211-1), llamado ISO-Prolog. Un entorno de desarrollo Prolog se compone de: Un compilador: Transforma el cdigo fuente en cdigo de byte. A diferencia de Java, no existe un Standard al respecto. Por eso, el cdigo de byte generado por un entorno de desarrollo no tiene por qu funcionar en el intrprete de otro entorno. Un intrprete: Ejecuta el cdigo de byte. Un shell o top-level. Se trata de una utilidad que permite probar los programas, depurarlos, etc. Su funcionamiento es similar a los interfaces de lnea de comando de los sistemas operativos.

50

Una biblioteca de utilidades: Estas bibliotecas son, en general, muy amplias. Muchos entornos incluyen (afortunadamente) unas bibliotecas standard-ISO que permiten funcionalidades bsicas como manipular cadenas, entrada/salida, etc. ELEMENTOS tomos: Es una definicin genrica de un objeto del mundo que queremos representar. Predicados: Nos permite especificar caractersticas de los objetos de nuestro mundo o las relaciones entre ellos. Es algo que est ocurriendo en el mundo, caracterstica o relacin entre objetos. En el lenguaje natural un hecho podra ser por ejemplo que Lgica y Compatibilidad es una asignatura de Ingeniera Informtica. Expresan relaciones entre objetos. La forma de representarlo en PROLOG es: Los nombres de objetos y relaciones deben comenzar con una letra minscula. Primero se escribe la relacin, y luego los objetos separados por comas y encerrados entre parntesis. Al final de un hecho debe ir un punto ("."). Variables: No es variable con el concepto que se tiene de ella en la programacin habitual. En Prolog, una variable representa el valor de un tomo. Representan objetos que el mismo PROLOG determina. Una variable puede estar instanciada no instanciada. Estar instanciada cuando existe un objeto determinado representado por la variable. Los nombres de variables comienzan siempre por una letra mayscula. Un caso particular es la variable annima, representada por el carcter subrayado ("_"). REGLAS Una regla consiste en una cabeza y un cuerpo, unidos por el signo ":-". La cabeza est formada por un nico hecho. El cuerpo puede ser uno ms hechos (conjuncin de hechos), separados por una coma (","), que acta como el "y" lgico. Las reglas finalizan con un punto (".").

51

C Lenguaje de programacin desarrollado en 1972 por el estadounidense Dennis Ritchie en los Laboratorios Bell. C es apreciado por la eficiencia del cdigo que produce y es el lenguaje de programacin ms popular para crear software de sistemas, aunque tambin se utiliza para crear aplicaciones. Se trata de un lenguaje dbilmente tipificado de medio nivel pero con muchas caractersticas de bajo nivel. Dispone de las estructuras tpicas de los lenguajes de alto nivel pero, a su vez, dispone de construcciones del lenguaje que permiten un control a muy bajo nivel. Los compiladores suelen ofrecer extensiones al lenguaje que posibilitan mezclar cdigo en ensamblador con cdigo C o acceder directamente a memoria o dispositivos perifricos. La primera estandarizacin del lenguaje C fue en ANSI, con el estndar X3.159-1989. El lenguaje que define este estndar fue conocido vulgarmente como ANSI C. Posteriormente, en 1990, fue ratificado como estndar ISO (ISO/IEC 9899:1990). La adopcin de este estndar es muy amplia por lo que, si los programas creados lo siguen, el cdigo es porttil entre plataformas y/o arquitecturas Caractersticas Un ncleo del lenguaje simple, con funcionalidades aadidas importantes, como funciones matemticas y de manejo de archivos, proporcionadas por bibliotecas. Es un lenguaje muy flexible que permite programar con mltiples estilos. Uno de los ms empleados es el estructurado "no llevado al extremo" (permitiendo ciertas licencias de ruptura). Un sistema de tipos que impide operaciones sin sentido. Usa un lenguaje de preprocesado, el preprocesador de C, para tareas como definir macros e incluir mltiples archivos de cdigo fuente. Acceso a memoria de bajo nivel mediante el uso de punteros. Interrupciones al procesador con uniones. Un conjunto reducido de palabras clave. Por defecto, el paso de parmetros a una funcin se realiza por valor. El paso por referencia se consigue pasando explcitamente a las funciones las direcciones de memoria de dichos parmetros. Punteros a funciones y variables estticas, que permiten una forma rudimentaria de encapsulado y polimorfismo.

52

Tipos de datos agregados (struct) que permiten que datos relacionados (como un empleado, que tiene un id, un nombre y un salario) se combinen y se manipulen como un todo (en una nica variable "empleado"). Elementos generales Comentarios: Se identifican porque van entre diagonales y asterisco. Nos sirve para escribir informacin que nos referencie al programa pero que no forme parte de l. Por ejemplo especificar que hace el programa, quien lo elabor, en qu fecha, que versin es, etc. Inclusin de archivos: Consiste en mandar llamar a la o las bibliotecas donde se encuentran definidas las funciones de C (instrucciones) que estamos utilizando en el programa. En realidad, la inclusin de archivos no forma parte de la estructura propia de un programa sino que pertenece al desarrollo integrado de C. Se incluye aqu para que el alumno no olvide que debe mandar llamar a los archivos donde se encuentran definidas las funciones estndar que va a utilizar. main (): En C, todo est constituido a base de funciones. El programa principal no es la excepcin. main () indica el comienzo de la funcin principal del programa la cual se delimita con llaves. Variables locales: Antes de realizar alguna operacin en el programa, se deben declarar la(s) variable(s) que se utilizarn en el programa. Flujo de sentencias: Es la declaracin de todas las instrucciones que conforman el programa. Definicin de funciones creadas por el programador utilizadas en main(): Finalmente, se procede a definir el contenido de las funciones utilizadas dentro de main(). Estas contienen los mismos elementos que la funcin principal. Despus de cada asignacin o funcin es imprescindible colocar un punto y coma (;) ya que ste es un terminador de proposiciones. En caso de que no se escriba, se marcar un error a la hora de compilar el programa.

53

MODULA 2 Modula-2 es un lenguaje de programacin cuyo autor es Niklaus Wirth, autor tambin del lenguaje Pascal. Como novedad respecto a este ltimo lenguaje, introduce el concepto de mdulo, y de encapsulacin. Del cdigo contenido en un mdulo, slo se facilita una interfaz pblica denominada mdulo de definicin, permaneciendo el resto oculto (encapsulado) para un desarrollador ajeno, lo que facilita el mantenimiento de dichas estructuras de programacin a la vez que imposibilita la modificacin de las mismas a cualquiera que no posea el cdigo de su mdulo de implementacin. Este concepto de mdulo constituye el antecedente de las clases u objetos que se observan en el concepto moderno de Programacin Orientada a Objetos (POO); sin embargo, la incapacidad de declarar mltiples instancias de los mdulos, as como la ausencia de todo tipo de herencia, impiden afirmar que Modula-2 sea un lenguaje orientado a objetos propiamente dicho. Modula-2 se utiliza principalmente en las universidades por su excelente adaptacin a la enseanza de lenguajes estructurados, pero en el mbito laboral su difusin ha sido escasa frente al predominio de C, lo que ha contribuido a crear un distanciamiento entre universidad y mercado laboral. Existen compiladores de Modula-2 como Mocka o GNU Modula-2 (para GNU/Linux y resto de sistemas soportados por GCC), FST (para MS-DOS) o Native XDS (para Windows) entre otros.

54

C++ En informtica, una versin orientada a objetos del lenguaje de programacin C, desarrollada por Bjarne Stroustrup a comienzos de la dcada de 1980 en los Laboratorios Bell. El formato general de un programa en C++ es el siguiente:

ENCABEZADO

/ | Definicin de constantes y macros, < declaracin de variables globales, | inclusin de archivos. \

void main (void)