• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Historia de la programacion
 

Historia de la programacion

on

  • 1,564 views

UNIVERSIDAD VALLE DE GRIJALVA

UNIVERSIDAD VALLE DE GRIJALVA
TUXTLA GUTIERREZ CHIAPAS MEXICO. 2011

Statistics

Views

Total Views
1,564
Views on SlideShare
1,560
Embed Views
4

Actions

Likes
1
Downloads
45
Comments
0

2 Embeds 4

http://progbasicaivan.blogspot.com 3
http://www.slideshare.net 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft Word

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Historia de la programacion Historia de la programacion Document Transcript

    • 638810-319405<br />-737235-366395 Universidad Valle de Grijalva.<br />Materia:<br />Programaci√≥n B√°sica.<br />Catedr√°tico:<br />M.R.T. MC Fernando Rom√°n Rodr√≠guez.<br />Tema:<br />Historia, Evoluci√≥n y<br />Futuro de la<br />Programaci√≥n.<br />(Investigaci√≥n).<br />Alumno:<br />Iv√°n Meza Cruz.<br />Semestre: <br />Segundo.<br />Carrera:<br />Ingenier√≠a en Redes Computacionales.<br />Comentario del Catedr√°tico:<br />11 de Junio del 2011.Tuxtla Guti√©rrez, Chiapas; M√©xico.<br />√ćndice.<br />Portada.1Presentaci√≥n.2√ćndice,3Introducci√≥n.4Contenido.Historia de la Programaci√≥n.5Evoluci√≥n del lenguaje de programaci√≥n.6Primera Generaci√≥n.8Segunda Generaci√≥n.8Tercera Generaci√≥n.10Cuarta Generaci√≥n.10Quinta Generaci√≥n.11Los Tipos m√°s importantes del lenguaje de programaci√≥n.12Lenguaje Imperativo.12Lenguajes Funcionales.12Lenguaje L√≥gicos.12Lenguaje Orientas a Objetos.13Lenguaje Concurrentes, Paralelos y Distribuidos14Futuro de la Programaci√≥n.14El √Čxito.16El Fracaso.16Algunas Perspectivas futuras.17Actualmente Google ha lanzado GO.18Conclusi√≥n.19Bibliograf√≠a.20<br />Introducci√≥n.<br />La computadora fue inventada para facilitar el trabajo intelectual. Si el hombre tiene alg√ļn problema, el dise√Īador define el algoritmo que resuelve el problema, el programador lo codifica en un lenguaje de programaci√≥n, el cual la computadora es capaz de "entender", luego la computadora ejecuta el algoritmo expresado como programa en el lenguaje de programaci√≥n en cuesti√≥n, y entrega al hombre la respuesta. Los lenguajes de programaci√≥n son el medio de comunicaci√≥n entre el hombre y la m√°quina, por lo tanto son una forma de representaci√≥n del conocimiento.<br />Historia de la programaci√≥n.<br />Los primeros lenguajes de programaci√≥n surgieron de la idea de Charles Babagge, la cual se le ocurri√≥ a este hombre a mediados del siglo XIX. Era un profesor matem√°tico de la universidad de Cambridge e inventor ingles, que la principio del siglo XIX predijo muchas de las teor√≠as en que se basan los actuales ordenadores.<br />Consist√≠a en lo que √©l denominaba la maquina anal√≠tica, pero que por motivos t√©cnicos no pudo construirse hasta mediados del siglo XX. Con √©l colaboro Ada Lovedby, la cual es considerada como la primera programadora de la historia, pues realizo programas para aqu√©lla supuesta maquina de Babagge, en tarjetas perforadas. Como la maquina no llego nunca a construirse, los programas de Ada, l√≥gicamente, tampoco llegaron a ejecutarse, pero si suponen un punto de partida de la programaci√≥n, sobre todo si observamos que en cuanto se empez√≥ a programar, los programadores utilizaron las t√©cnicas dise√Īadas por Charles Babagge, y Ada, que consist√≠an entre otras, en la programaci√≥n mediante tarjetas perforadas. A pesar de ello, Ada ha permanecido como la primera programadora de la historia. Se dice por tanto que estos dos genios de anta√Īo, se adelantaron un siglo a su √©poca, lo cual describe la inteligencia de la que se hallaban dotados.<br />En 1823 el gobierno Brit√°nico lo apoyo para crear el proyecto de una m√°quina de diferencias, un dispositivo mec√°nico para efectuar sumas repetidas. Pero Babagge se dedico al proyecto de la m√°quina anal√≠tica, abandonando la m√°quina de diferencias, que se pudiera programar con tarjetas perforadas, gracias a la creaci√≥n de Charles Jacquard (franc√©s). Este hombre era un fabricante de tejidos y hab√≠a creado un telar que pod√≠a reproducir autom√°ticamente patrones de tejidos, leyendo la informaci√≥n codificada en patrones de agujeros perforados en tarjetas de papel r√≠gido. <br />Entonces Babagge intento crear la m√°quina que se pudiera programar con tarjetas perforadas para efectuar cualquier c√°lculo con una precisi√≥n de 20 d√≠gitos. Pero la tecnolog√≠a de la √©poca no bastaba para hacer realidad sus ideas. Si bien las ideas de Babagge no llegaron a materializarse de forma definitiva, su contribuci√≥n es decisiva, ya que los ordenadores actuales responden a un esquema an√°logo al de la m√°quina anal√≠tica. En su dise√Īo, la m√°quina constaba de cinco unidades b√°sicas:<br />1) Unidad de entrada, para introducir datos e instrucciones; <br />2) Memoria, donde se almacenaban datos y resultados intermedios; <br />3) Unidad de control, para regular la secuencia de ejecuci√≥n de las operaciones; <br />4) Unidad Aritm√©tico‚ąíL√≥gica, que efect√ļa las operaciones; <br />5) Unidad de salida, encargada de comunicar al exterior los resultados. <br />Charles Babbage, conocido como el "padre de la inform√°tica" no pudo completar en aquella √©poca la construcci√≥n del computador que hab√≠a so√Īado, dado que faltaba algo fundamental: la electr√≥nica. El camino se√Īalado de Babbage, no fue nunca abandonado y sigui√©ndolo, se construyeron los primeros computadores. Cuando surgi√≥ el primer ordenador, el famoso ENIAC (Electronic Numerical Integrator And -calculator), su programaci√≥n se basaba en componentes f√≠sicos, o sea, que se programaba, cambiando directamente el Hardware de la maquina, exactamente lo que s√© hacia era cambiar cables de sitio para conseguir as√≠ la programaci√≥n de la maquina. La entrada y salida de datos se realizaba mediante tarjetas perforadas.<br />Evoluci√≥n del lenguaje de programaci√≥n.<br />Primeras maquinas ->Primeros lenguajes de programaci√≥n, orientas por las maquinas:<br />Algebraic Interpreter: MIT.<br />A-2: Univac.<br />Se Advierten los primeros grandes requerimientos:<br />Independencia de las maquinas, Alto Nivel.<br />Los Pioneros:<br />Fortran (1953): Estructuras de control.<br />LISP (1958): Manejo autom√°tico de la memoria, Inteligencia Artificial, Recursi√≥n.<br />ALGOL (1960): BNF, Estructura de bloques.<br />ALGOL-68: Computaci√≥n paralela, tipos, coerci√≥n.<br />Simula (1960-1967): Lenguaje con prop√≥sito especifico (simulaci√≥n de proceso), clases de objetos.<br />Cobol (1968-1974-1985): Lenguaje con prop√≥sito espec√≠fico (Procesamiento de grandes cantidades de datos).<br />Otros: Apl, Snobol.<br />La Evoluci√≥n:<br />PL I (1960): Reemplazar Fortran y Cobol, bloques, recursi√≥n, excepciones, facilidad de depuraci√≥n. Prematuro para la √©poca.<br />Pascal (1971); Disciplina, ense√Īanza, refinamiento paso a paso, programaci√≥n estructurada.<br />C (1972): Competidor de Pascal, Cobol y Fortran. Se impone cuando el procesamiento grafico y en red se hace indispensable.<br />Prolog (1972): El poder de la deducci√≥n al servicio de la programaci√≥n. IA, capacidad de paralelizacion, la apuesta japonesa.<br />BASIC (1978): F√°cil de aprender, r√°pido de compilar, f√°cil de depurar.<br />Scheme, ML,CAML,Haskell(1980¬īs): Lenguajes funcionales, compilaci√≥n eficiente.<br />La Orientaci√≥n de Objeto:<br />Smalltalk (1971): tres evoluciones 72,76 (Xerox), 80 (Apple,DEC,Tecktronix).<br />ADA (1973): Muy alto nivel combinado programaci√≥n concurrente y en tiempo real; paquetes y mecanismos de excepciones.<br />C++ (1984) : Evoluci√≥n de C, con soporte a mecanismos orientados a objetos.<br />OCAML (1990¬īs): Evoluci√≥n de CAMLL,OO.<br />JAVA (1990¬īs): Maquina virtual OO, concurrencia,internet,portabilidad.<br />Otros:<br />Oz,Mozart (1990¬īs): Restricciones, concurrencia, multiparadigma.<br />Junus,Cordial (1990¬īs): Programaci√≥n visual.<br />Visual XX (1990¬īs): Interfaces visuales para programaci√≥n textual.<br />158115281305En esta tabla se muestra m√°s claro le evoluci√≥n de la programaci√≥n.<br />Primera Generaci√≥n.<br />En esta generaci√≥n hab√≠a 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 saturar√≠a el mercado de los Estados Unidos en el campo de procesamiento de datos.<br />Esta generaci√≥n abarco la d√©cada de los cincuenta. Y se conoce como la primera generaci√≥n. Estas m√°quinas ten√≠an las siguientes caracter√≠sticas:<br />Estas m√°quinas estaban construidas por medio de tubos de vac√≠o.<br />Eran programadas en lenguaje de m√°quina. 1<br />En esta generaci√≥n las m√°quinas son grandes y costosas (de un costo aproximado de ciento de miles de d√≥lares). En 1951 aparece la UNIVAC (NIVersAl Computer), fue la primera computadora comercial, que dispon√≠a de mil palabras de memoria central y pod√≠an leer cintas magn√©ticas, se utiliz√≥ para procesar el censo de 1950 en los Estados Unidos.<br />En las dos primeras generaciones, las unidades de entrada utilizaban tarjetas perforadas, retomadas por Herman Hollerith (1860 ‚ąí 1929), quien adem√°s fund√≥ una compa√Ī√≠a que con el paso del tiempo se conocer√≠a como IBM (International Bussines Machines).Despu√©s se desarroll√≥ por IBM la IBM 701 de la cual se entregaron 18 unidades entre 1953 y 1957.<br />Posteriormente, la compa√Ī√≠a Remington Rand fabric√≥ el modelo 1103, que compet√≠a con la 701 en el campo cient√≠fico, por lo que la IBM desarrollo la 702, la cual present√≥ problemas en memoria, debido a esto no dur√≥ en el mercado.<br />La computadora m√°s exitosa de la primera generaci√≥n fue la IBM 650, de la cual se produjeron varios cientos. Esta computadora que usaba un esquema de memoria secundaria llamado tambor magn√©tico, que es el antecesor de los discos actuales.<br />Otros modelos de computadora que se pueden situar en los inicios de la segunda generaci√≥n son: la UNIVAC 80 y 90, las IBM 704 y 709, Burroughs 220 y UNIVAC 1105.<br />Segunda Generaci√≥n.<br />Cerca de la d√©cada de 1960, las computadoras segu√≠an evolucionando, se reduc√≠a su tama√Īo y crec√≠a su capacidad de procesamiento. Tambi√©n en esta √©poca se empez√≥ a definir la forma de comunicarse con las computadoras, que recib√≠a el nombre de programaci√≥n de sistemas.<br />Las caracter√≠sticas de la segunda generaci√≥n son las siguientes:<br />Est√°n construidas con circuitos de transistores.<br />Se programan en nuevos lenguajes llamados lenguajes de alto nivel.<br />En esta generaci√≥n las computadoras se reducen de tama√Īo y son de menor costo. Aparecen muchas compa√Ī√≠as y las computadoras eran bastante avanzadas para su √©poca como la serie 5000 de Burroughs y la ATLAS de la Universidad de Manchester.<br />Algunas de estas computadoras se programaban con cintas perforadas y otras m√°s por medio de cableado en un tablero. Los programas eran hechos a la medida por un equipo de expertos: analistas, dise√Īadores, programadores y operadores que se manejaban como una orquesta para resolver los problemas y c√°lculos solicitados por la administraci√≥n. El usuario final de la informaci√≥n no ten√≠a contacto directo con las computadoras. <br />Esta situaci√≥n en un principio se produjo en las primeras computadoras personales, pues se requer√≠a saberlas "programar" (alimentarle instrucciones) para obtener resultados; por lo tanto su uso estaba limitado a aquellos audaces pioneros que gustaran de pasar un buen n√ļmero de horas escribiendo instrucciones, "corriendo" el programa resultante y verificando y corrigiendo los errores o bugs que aparecieran.<br /> <br />Adem√°s, para no perder el "programa" resultante hab√≠a que "guardarlo" (almacenarlo) en una grabadora de astte, pues en esa √©poca no hab√≠a discos flexibles y mucho menos discos duros para las PC; este procedimiento pod√≠a tomar de 10 a 45 minutos, seg√ļn el programa. El panorama se modific√≥ totalmente con la aparici√≥n de las computadoras personales con mejore circuitos, m√°s memoria, unidades de disco flexible y sobre todo con la aparici√≥n de programas de aplicaci√≥n general en donde el usuario compra el programa y se pone a trabajar. Aparecen los programas procesadores de palabras como el c√©lebre Word Star, la impresionante hoja de c√°lculo (spreadsheet) Visicalc y otros m√°s que de la noche a la ma√Īana cambian la imagen de la PC. El software empieza a tratar de alcanzar el paso del hardware. Pero aqu√≠ aparece un nuevo elemento: el usuario.<br />El usuario de las computadoras va cambiando y evolucionando con el tiempo. De estar totalmente desconectado a ellas en las m√°quinas grandes pasa la PC a ser pieza clave en el dise√Īo tanto del hardware como del software. Aparece el concepto de human interface que es la relaci√≥n entre el usuario y su computadora. Se habla entonces de hardware ergon√≥mico (adaptado a las dimensiones humanas para reducir el cansancio), dise√Īos de pantallas antirreflejos y teclados que descansen la mu√Īeca. Con respecto al software se inicia una verdadera carrera para encontrar la manera en que el usuario pase menos tiempo capacit√°ndose y entren√°ndose y m√°s tiempo produciendo. Se ponen al alcance programas con men√ļs (listas de opciones) que orientan en todo momento al usuario (con el consiguiente aburrimiento de los usuarios expertos); otros programas ofrecen toda una artiller√≠a de teclas de control y teclas de funciones (atajos) para efectuar toda suerte de efectos en el trabajo (con la consiguiente desorientaci√≥n de los usuarios novatos). Se ofrecen un sinn√ļmero de cursos prometiendo que en pocas semanas hacen de cualquier persona un experto en los programas comerciales. <br />Pero el problema "constante" es que ninguna soluci√≥n para el uso de los programas es "constante". Cada nuevo programa requiere aprender nuevos controles, nuevos trucos, nuevos men√ļs. Se empieza a sentir que la relaci√≥n usuario‚ąíPC no est√° acorde con los desarrollos del equipo y de la potencia de los programas. Hace falta una relaci√≥n amistosa entre el usuario y la PC.<br />Las computadoras de esta generaci√≥n fueron: la Philco 212 (esta compa√Ī√≠a se retir√≥ del mercado en 1964) 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 m√°quinas para proceso de datos de tipo comercial, introdujo el modelo NCR 315. La Radio Corporation of Am√©rica introdujo el modelo 501, que manejaba el lenguaje COBOL, para procesos administrativos y comerciales. Despu√©s sali√≥ al mercado la RCA 601.<br />Tercera generaci√≥n.<br />Con los progresos de la electr√≥nica y los avances de comunicaci√≥n con las computadoras en la d√©cada de los 1960, surge la tercera generaci√≥n de las computadoras. Se inaugura con la IBM 360 en abril de 1964.3<br />Las caracter√≠sticas de esta generaci√≥n fueron las siguientes:<br />Su fabricaci√≥n electr√≥nica est√° basada en circuitos integrados.<br />Su manejo es por medio de los lenguajes de control de los sistemas operativos.<br />La IBM produce la serie 360 con los modelos 20, 22, 30, 40, 50, 65, 67, 75, 85, 90, 195 que utilizaban t√©cnicas especiales del procesador, unidades de cinta de nueve canales, paquetes de discos magn√©ticos y otras caracter√≠sticas que ahora son est√°ndares (no todos los modelos usaban estas t√©cnicas, sino que estaba dividido por aplicaciones).<br />El sistema operativo de la serie 360, se llam√≥ OS que contaba con varias configuraciones, inclu√≠a un conjunto de t√©cnicas de manejo de memoria y del procesador que pronto se convirtieron en est√°ndares. 2 En 1964 CDC introdujo la serie 6000 con la computadora 6600 que se consider√≥ durante algunos a√Īos como la m√°s r√°pida.<br />En la d√©cada de 1970, la IBM produce la serie 370 (modelos 115, 125, 135, 145, 158, 168). UNIVAC compite son los modelos 1108 y 1110, m√°quinas en gran escala; mientras que CDC produce su serie 7000 con el modelo 7600. Estas computadoras se caracterizan por ser muy potentes y veloces.<br />A finales de esta d√©cada la IBM de su serie 370 produce los modelos 3031, 3033, 4341. Burroughs con su serie 6000 produce los modelos 6500 y 6700 de avanzado dise√Īo, que se reemplazaron por su serie 7000. Honey ‚ąí Well participa con su computadora DPS con varios modelos. A mediados de la d√©cada de 1970, aparecen en el mercado las computadoras de tama√Īo mediano, o minicomputadoras que no son tan costosas como las grandes (llamadas tambi√©n como mainframes que significa tambi√©n, gran sistema), pero disponen de gran capacidad de procesamiento. <br />Algunas minicomputadoras fueron las siguientes: la PDP ‚ąí 8 y la PDP ‚ąí 11 de Digital Equipment Corporation, la VAX (Virtual Address eXtended) de la misma compa√Ī√≠a, los modelos NOVA y ECLIPSE de Data General, la serie 3000 y 9000 de Hewlett ‚ąí Packard con varios modelos el 36 y el 34, la Wang y Honey ‚ąí Well ‚ąíBull, Siemens de origen alem√°n, la ICL fabricada en Inglaterra. En la Uni√≥n Sovi√©tica se utiliz√≥ la US (Sistema Unificado, Ryad) que ha pasado por varias generaciones.<br />Cuarta Generaci√≥n.<br />Aqu√≠ aparecen los microprocesadores que es un gran adelanto de la microelectr√≥nica, son circuitos integrados de alta densidad y con una velocidad impresionante. Las microcomputadoras con base en estos circuitos son extremadamente peque√Īas y baratas, por lo que su uso se extiende al mercado industrial. Aqu√≠ nacen las computadoras personales que han adquirido proporciones enormes y que han influido en la sociedad en general sobre la llamada "revoluci√≥n inform√°tica".<br />En 1976 Steve Wozniak y Steve Jobs inventan la primera microcomputadora de uso masivo y m√°s tarde forman la compa√Ī√≠a conocida como la Apple que fue la segunda compa√Ī√≠a m√°s grande del mundo, antecedida tan solo por IBM; y esta por su parte es a√ļn de las cinco compa√Ī√≠as m√°s grandes del mundo.<br />En 1981 se vendieron 800 00 computadoras personales, al siguiente subi√≥ a 1 400 000. Entre 1984 y 1987 se vendieron alrededor de 60 millones de computadoras personales, por lo que no queda duda que su impacto y penetraci√≥n han sido enormes.<br />Con el surgimiento de las computadoras personales, el software y los sistemas que con ellas de manejan han tenido un considerable avance, porque han hecho m√°s interactiva la comunicaci√≥n con el usuario. Surgen otras aplicaciones como los procesadores de palabra, las hojas electr√≥nicas de c√°lculo, paquetes gr√°ficos, etc.<br />Tambi√©n las industrias del Software de las computadoras personales crecen con gran rapidez, Gary Kildall y William Gates se dedicaron durante a√Īos a la creaci√≥n de sistemas operativos y m√©todos para lograr una utilizaci√≥n sencilla de las microcomputadoras (son los creadores de CP/M y de los productos de Microsoft). No todo son microcomputadoras, por supuesto, las minicomputadoras y los grandes sistemas contin√ļan en desarrollo. De hecho las m√°quinas peque√Īas rebasaban por mucho la capacidad de los grandes sistemas de 10 o 15 a√Īos antes, que requer√≠an de instalaciones costosas y especiales, pero ser√≠a equivocado suponer que las grandes computadoras han desaparecido; por el contrario, su presencia era ya ineludible en pr√°cticamente todas las esferas de control gubernamental, militar y de la gran industria. Las enormes computadoras de las series CDC, CRAY, Hitachi o IBM por ejemplo, eran capaces de atender a varios cientos de millones de operaciones por segundo.<br />Quinta Generaci√≥n.<br />En vista de la acelerada marcha de la microelectr√≥nica, la sociedad industrial se ha dado a la tarea de poner tambi√©n 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 computaci√≥n, en la que se perfilan dos l√≠deres que, sin embargo, no han podido alcanzar el nivel que se desea: la capacidad de comunicarse con la computadora en un lenguaje m√°s cotidiano y no a trav√©s de c√≥digos o lenguajes de control especializados.<br />Jap√≥n lanz√≥ en 1983 el llamado "programa de la quinta generaci√≥n de computadoras", con los objetivos expl√≠citos de producir m√°quinas 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:<br />Procesamiento en paralelo mediante arquitecturas y dise√Īos especiales y circuitos de gran velocidad.<br />Manejo de lenguaje natural y sistemas de inteligencia artificial.<br />El futuro previsible de la computaci√≥n es muy interesante, y se puede esperar que esta ciencia siga siendo objeto de atenci√≥n prioritaria de gobiernos y de la sociedad en conjunto. <br />Los tipos m√°s importantes de lenguajes de programaci√≥n son:<br />Lenguajes Imperativos.<br />Su origen es la propia arquitectura de von Neumann, que consta de una secuencia de celdas (memoria) en las cuales se pueden guardar datos e instrucciones, y de un procesador capaz de ejecutar de manera secuencial una serie de operaciones (√≥ comandos) principalmente aritm√©ticas y booleanas. En general, un lenguaje imperativo ofrece al programador conceptos que se traducen de forma natural al modelo de la m√°quina.<br />Ejemplos: FORTRAN, Algol, Pascal, C, Modula-2, Ada.<br />El programador tiene que traducir la soluci√≥n abstracta del problema a t√©rminos muy primitivos, cercanos a la m√°quina, por lo que los programas son m√°s "comprensibles" para la m√°quina que para el hombre. Esto es una desventaja para nosotros que hace que sea sumamente complicado construir c√≥digo en lenguaje imperativo. Lo bueno de este lenguaje es que es tan cercano al lenguaje de la m√°quina que la eficiencia en la ejecuci√≥n es alt√≠sima.<br />Lenguajes Funcionales.<br />Los matem√°ticos resuelven problemas usando el concepto de funci√≥n, que convierte datos en resultados. Sabiendo c√≥mo evaluar una funci√≥n, usando la computadora, podr√≠amos resolver autom√°ticamente muchos problemas. Este fue el pensamiento que llev√≥ a la creaci√≥n de los lenguajes de programaci√≥n funcionales. Adem√°s se aprovech√≥ la posibilidad que tienen las funciones para manipular datos simb√≥licos, y no solamente num√©ricos, y la propiedad de las funciones que les permite componer, creando de esta manera, la oportunidad para resolver problemas complejos a partir de las soluciones a otros m√°s sencillos. Tambi√©n se incluy√≥ la posibilidad de definir funciones recursivamente.<br />Un lenguaje funcional ofrece conceptos que son muy entendibles y relativamente f√°ciles de manejar. El lenguaje funcional m√°s antiguo y popular es LISP, dise√Īado por McCarthy en la segunda mitad de los a√Īos 50. Se usa principalmente en Inteligencia Artificial. En los 80 se a√Īadi√≥ a los lenguajes funcionales la tipificaci√≥n y algunos conceptos modernos de modularizaci√≥n y polimorfismo, un ejemplo es el lenguaje ML.<br />Programar en un lenguaje funcional significa construir funciones a partir de las ya existentes. Por lo tanto es importante conocer y comprender bien las funciones que conforman la base del lenguaje, as√≠ como las que ya fueron definidas previamente. De esta manera se pueden ir construyendo aplicaciones cada vez m√°s complejas. La desventaja es que est√° alejado del modelo de la m√°quina de von Neumann y, por lo tanto, la eficiencia de ejecuci√≥n de los int√©rpretes de lenguajes funcionales es peor que la ejecuci√≥n de los programas imperativos precompilados.<br />Lenguajes L√≥gicos.<br />Otra forma de razonar para resolver problemas en matem√°ticas se fundamenta en la l√≥gica de primer orden. El conocimiento b√°sico de las matem√°ticas se puede representar en la l√≥gica en forma de axiomas, a los cuales se a√Īaden reglas formales para deducir cosas verdaderas (teoremas). Gracias al trabajo de algunos matem√°ticos, de finales de siglo pasado y principios de √©ste, se encontr√≥ la manera de automatizar computacionalmente el razonamiento l√≥gico -particularmente para un subconjunto significativo de la l√≥gica de primer orden- que permiti√≥ que la l√≥gica matem√°tica diera origen a otro tipo de lenguajes de programaci√≥n, conocidos como lenguajes l√≥gicos. Tambi√©n se conoce a estos lenguajes, y a los funcionales, como lenguajes declarativos, porque para solucionar un problema el programador solo tiene que describirlo con axiomas y reglas de deducci√≥n en el caso de la programaci√≥n l√≥gica y con funciones en el caso de la programaci√≥n funcional.<br />En los lenguajes l√≥gicos se utiliza el formalismo de la l√≥gica para representar el conocimiento sobre un problema y para hacer preguntas que se vuelven teoremas si se demuestra que se pueden deducir a partir del conocimiento dado en forma de axiomas y de las reglas de deducci√≥n estipuladas. As√≠ se encuentran soluciones a problemas formulados como preguntas. Con base en la informaci√≥n expresada dentro de la l√≥gica de primer orden, se formulan las preguntas sobre el dominio del problema y el int√©rprete del lenguaje l√≥gico trata de encontrar la respuesta autom√°ticamente. El conocimiento sobre el problema se expresa en forma de predicados (axiomas) que establecen relaciones sobre los s√≠mbolos que representan los datos del dominio del problema.<br />El PROLOG surgi√≥ a principio de los 70 y es el primer lenguaje l√≥gico. Las aplicaciones en la Inteligencia Artificial lo mantienen vivo y √ļtil. En el caso de la programaci√≥n l√≥gica, el trabajo del programador es la buena descripci√≥n del problema en forma de hechos y reglas. A partir de √©sta se pueden encontrar muchas soluciones dependiendo de c√≥mo se formulen las preguntas (metas), que tienen sentido para el problema. Si el programa est√° bien definido, el sistema encuentra autom√°ticamente las respuestas a las preguntas formuladas. En este caso ya no es necesario definir el algoritmo de soluci√≥n, como en la programaci√≥n imperativa, lo fundamental aqu√≠ es expresar bien el conocimiento sobre el problema. <br />En programaci√≥n l√≥gica, al igual que en programaci√≥n funcional, el programa, en este caso los hechos y las reglas, est√°n muy alejados del modelo von Neumann que posee la m√°quina en la que tienen que ser interpretados; por lo que la eficiencia de la ejecuci√≥n es inferior a la de un programa equivalente en lenguaje imperativo. Sin embargo, para cierto tipo de problemas, la formulaci√≥n del programa mismo puede ser mucho m√°s sencilla y natural.<br />Lenguajes Orientados a Objetos.<br />A mediados de los a√Īos 60 se empez√≥ a usar las computadoras para la simulaci√≥n de problemas del mundo real. Pero el mundo real est√° lleno de objetos, en la mayor√≠a de los casos complejos, los cuales dif√≠cilmente se traducen a los tipos de datos primitivos de los lenguajes imperativos. As√≠ surgi√≥ el concepto de objeto y sus colecciones (clases de objetos), que permitieron introducir abstracciones de datos a los lenguajes de programaci√≥n. La posibilidad de reutilizaci√≥n del c√≥digo y sus indispensables modificaciones, se reflejaron en la idea de las jerarqu√≠as de herencia de clases. <br />Tambi√©n surgi√≥ el concepto de polimorfismo introducido v√≠a procedimientos virtuales. Todos estos conceptos (que hoy identificamos como conceptos del modelo de objetos) fueron presentados en el lenguaje Simula 67, desde el a√Īo 1967, aunque este lenguaje estaba enfocado a aplicaciones de simulaci√≥n discreta.<br />Fue en los a√Īos 80 cuando surgieron lenguajes de programaci√≥n con conceptos de objetos encabezada por Smalltalk, C++, Eiffel, Modula-3, Ada 95 y terminando con Java.<br />El modelo de objetos, y los lenguajes que lo usan, parecen facilitar la construcci√≥n de sistemas o programas en forma modular. Los objetos ayudan a expresar programas en t√©rminos de abstracciones del mundo real, lo que aumenta su comprensi√≥n. La clase ofrece cierto tipo de modularizaci√≥n que facilita las modificaciones al sistema. <br />La reutilizaci√≥n de clases previamente probadas en distintos sistemas tambi√©n es otro punto a favor. Sin embargo, el modelo de objetos, a la hora de ser interpretado en la arquitectura von Neumann conlleva un excesivo manejo din√°mico de memoria debido a la constante creaci√≥n de objetos, as√≠ como a una carga de c√≥digo fuerte causada por la constante invocaci√≥n de m√©todos. Por lo tanto los programas en lenguajes orientados a objetos son ineficientes, en tiempo y memoria, contra los programas equivalentes en lenguajes imperativos, aunque les ganan en la comprensi√≥n de c√≥digo.<br />Lenguajes Concurrentes, Paralelos y Distribuidos.<br />El origen de los conceptos para el manejo de concurrencia, paralelismo y distribuci√≥n est√° en el deseo de aprovechar al m√°ximo la arquitectura von Neumann y sus modalidades reflejadas en conexiones paralelas y distribuidas.<br />Esto fue un tema importante sobre todo cuando las computadoras eran caras y escasas; el sistema operativo ten√≠a que ofrecer la ejecuci√≥n concurrente y segura de programas de varios usuarios, que desde distintos terminales utilizaban un solo procesador, y as√≠ surgi√≥ la necesidad de introducir algunos conceptos de programaci√≥n concurrente para programar los sistemas operativos.<br />Cuando los procesadores cambiaron de tama√Īo y de precio, se abri√≥ la posibilidad de contar con varios procesadores en una m√°quina y ofrecer el procesamiento en paralelo (procesar varios programas al mismo tiempo). Esto dio el impulso a la creaci√≥n de lenguajes que permit√≠an expresar el paralelismo. <br />Finalmente, llegaron las redes de computadoras, que tambi√©n ofrecen la posibilidad de ejecuci√≥n en paralelo, pero con procesadores distantes, lo cual conocemos como la programaci√≥n distribuida.<br />Hist√≥ricamente encontramos soluciones conceptuales y mecanismos (sem√°foros, regiones cr√≠ticas, monitores, env√≠o de mensajes, llamadas a procedimientos remotos (RPC)) que se incluyeron despu√©s en lenguajes de programaci√≥n como Concurrent Pascal o Modula (Basados en monitores), Ada √≥ SR (Basada en RendezVous (Tipo de RPC)), ALGOL 68(Sem√°foros), OCCAM (Env√≠o de mensajes), Java...<br />El futuro de la programaci√≥n.<br />La historia nos ha dado algunas lecciones respecto a la evoluci√≥n y el uso de los lenguajes inform√°ticos. Comentamos algunas lecciones sobre la dicotom√≠a entre lenguajes generalistas y lenguajes espec√≠ficos para un dominio de aplicaci√≥n, su nivel de abstracci√≥n, la estandarizaci√≥n de los lenguajes y el precio de los errores. No hay un lenguaje que sea mejor que los dem√°s en todos los aspectos. <br />Si algo nos ense√Īa la historia de los lenguajes de programaci√≥n es que nunca hay un lenguaje que nos satisface completamente. Bien se busca un lenguaje m√°s abstracto, bien m√°s portable, bien m√°s adecuado a cierto dominio, etc. De hecho, igual que existen algunos antagonismos en la inform√°tica, como la eficiencia en espacio y tiempo en la algoritmia, parece haber un antagonismo entre lenguaje generalista y lenguaje para un dominio. Esta simple dicotom√≠a deber√≠a hacernos desistir de emprender ninguna cruzada a favor de ning√ļn lenguaje y limitarlas a cada uso concreto.<br />Por ejemplo en los a√Īos sesenta se inici√≥ un debate entre los partidarios de -FORTRAN y de lenguajes tipo Algol .Los partidarios de Algol, mayoritariamente acad√©micos procedentes de matem√°ticas, han denostado FORTRAN, preferido por f√≠sicos e ingenieros. El resultado de este enfrentamiento es que, hasta FORTRAN 90, FORTRAN no ha incorporado muchos de los elementos de la programaci√≥n estructurada. Al rev√©s es a√ļn peor: los lenguajes tipo Algol no contienen algunos de los elementos que justifican el √©xito de FORTRAN. Otra cuesti√≥n importante es el nivel de abstracci√≥n de los lenguajes. <br />Desde los primeros lenguajes de m√°quina hasta los lenguajes orientados a objetos pasando por lenguajes ensambladores, FORTRAN y lenguajes procedimentales, la tendencia ha sido hacia un mayor nivel de abstracci√≥n en los lenguajes de programaci√≥n. <br />Sin embargo, esta tendencia no es inmutable. Por un lado, ha habido lenguajes que al extenderse han provocado una bajada del nivel de abstracci√≥n, por ejemplo C. Pero quiz√° la anomal√≠a m√°s evidente se ha dado con los lenguajes declarativos (funcionales, l√≥gicos, con restricciones) que, a pesar de su alt√≠simo nivel de abstracci√≥n, no se han impuesto. No es f√°cil determinar la raz√≥n de este fracaso; quiz√° falta de apoyo comercial, entornos de desarrollo, herramientas o librer√≠as de programaci√≥n, o quiz√° una exigencia de un esfuerzo de formalizaci√≥n excesivo para las necesidades o la formaci√≥n del programador medio.<br />En perspectiva, puede decirse que, a pesar de los augurios lanzados en m√ļltiples ocasiones sobre el final cercano del paradigma imperativo, basado en el modelo de computadora de von Neumann, √©ste mantiene un predominio aplastante. Hasta hace poco este predominio se ha basado en lenguajes procedimentales y actualmente es de lenguajes orientados a objetos. Lo mismo puede decirse respecto al predominio de los lenguajes secuenciales frente a lenguajes paralelos, concurrentes o distribuidos. A lo largo de estas d√©cadas, la estandarizaci√≥n de los lenguajes se ha mostrado imprescindible y m√°s a√ļn en un mundo con diferentes plataformas interconectadas. Por supuesto, los problemas para estandarizar son muchos y no hay ninguna receta clara para tratarlos: momento de la estandarizaci√≥n, conformidad del compilador al est√°ndar, obsolescencia de versiones anteriores, etc. En el mundo de competencia feroz que es la inform√°tica no puede olvidarse la dificultad de que las empresas acaten la disciplina de un est√°ndar e incluso respeten el tiempo necesario para elaborar la norma.<br />Los desarrollos de sistemas son cada vez m√°s complejos y costosos, involucrando cuestiones de distribuci√≥n y concurrencia. Antes de pasar al desarrollo e implantaci√≥n de un sistema, es necesario demostrar la correcci√≥n del dise√Īo y sus propiedades de viveza y seguridad, para evitar pagar el precio de los errores tard√≠os. Para ilustrar este tipo de sucesos es recomendable hacer una visita al foro de riesgos en computaci√≥n de la ACM (ACM Risks-Forum Digest, http://catless.ncl.ac.uk/Risks), donde se recuerdan sucesos como un desbordamiento del contador de programa que le cost√≥ a un banco de Nueva York p√©rdidas valoradas en 32.000 millones de d√≥lares, historias de cortes de suministro de operadoras telef√≥nicas como el de Pac Bell de 1991 que afect√≥ a m√°s de seis millones de tel√©fonos, o fiascos como los errores de dise√Īo de las operaciones en punto flotante del Pentium. Tal vez el precio de errores como los mencionados contribuya en el futuro a introducir lenguajes y herramientas formales, a pesar de las dificultades inherentes a su alto nivel de abstracci√≥n y desarrollo acad√©mico, razones comentadas en p√°rrafos anteriores.<br />El √©xito.<br />Es imposible predecir cu√°ndo tendr√° √©xito un lenguaje de programaci√≥n, pero podemos apuntar algunas tendencias del pasado. En primer lugar, el √©xito de una innovaci√≥n no siempre llega en el momento de su divulgaci√≥n. La oportunidad del momento es una pieza clave del √©xito de un lenguaje, independientemente de los m√©ritos que aporte. Por ejemplo, la orientaci√≥n a objetos no triunf√≥ a comienzos de los 80 con Smalltalk, sino en los 80 con C++ y Java. Un lenguaje triunfa si satisface las necesidades de una comunidad, aunque no guste a la comunidad acad√©mica. Ya hemos comentado antes la divergencia entre seguidores de FORTRAN y de Algol. <br />Los seguidores de FORTRAN apreciaban su soporte para compilaci√≥n separada de procedimientos, sus facilidades para c√°lculo num√©rico, la posibilidad de entrelazar c√≥digo en ensamblador y la eficiencia del c√≥digo generado. Por su parte, los acad√©micos prefer√≠an la sencillez conceptual y la elegancia de Algol. Otro ejemplo lenguaje de √©xito pero denostado por la comunidad acad√©mica es COBOL. Sin embargo, se sigue usando much√≠simo para aplicaciones de gesti√≥n porque satisface mejor sus necesidades que otros lenguajes. Esto se debe a su capacidad para manejar datos heterog√©neos y jer√°rquicos (con estructura de registro), realizar aritm√©tica de punto fijo, generar informes y manejar grandes vol√ļmenes de datos.<br />El aspecto visual y la utilizaci√≥n de modelos claros tambi√©n suponen otro factor de √©xito en la implantaci√≥n de un lenguaje. Los lenguajes formales actuales, a pesar de todas<br />sus ventajas y el impulso recibido desde la academia, siguen sin imponerse. Por el contrario, vemos c√≥mo el lenguaje de modelado unificado (UML), a pesar de que carece de una sem√°ntica formal, se est√° imponiendo r√°pidamente en las grandes compa√Ī√≠as de software. Adem√°s de un adecuado nivel de abstracci√≥n y el car√°cter visual del lenguaje, podemos encontrar otras razones de su √©xito en la existencia de un creciente n√ļmero de herramientas de soporte al dise√Īo.<br />El fracaso.<br />El intento de imponer algunos lenguajes de prop√≥sito general se ha saldado con fracaso. Aunque estos lenguajes frecuentemente han estado bien dise√Īados, han fracasado por su complejidad. El caso m√°s clamoroso fue el de PL/I por IBM en los setenta. Debido al dominio comercial de IBM, se us√≥ bastante en esa d√©cada, pero en seguida decay√≥ su uso.<br />Tambi√©n puede considerarse un fracaso la imposici√≥n de Ada por el Departamento de Defensa de EE.UU. En este caso, el lenguaje tuvo un dise√Īo especialmente cuidado, pero su gran complejidad lo limit√≥ casi exclusivamente a aplicaciones militares o de control. Un √ļltimo ejemplo, esta vez en el √°mbito de los lenguajes de descripci√≥n de hardware, es VHDL, tambi√©n impulsado por el Departamento de Defensa de los Estados Unidos. A pesar de exigirse una descripci√≥n en VHDL como requisito para la presentaci√≥n de cualquier proyecto, no ha desplazado al resto de los lenguajes, especialmente a Verilog en temas de s√≠ntesis.<br />Algunas aportaciones de alto nivel t√©cnico o matem√°tico exigen un esfuerzo tal a los programadores que estos las rechazan. Este esfuerzo puede darse tanto en los propios lenguajes como en metodolog√≠as o en herramientas. Muchas herramientas que restringen el proceso de desarrollo (como los editores dirigidos por sintaxis o las herramientas CASE) terminan siendo abandonadas, independientemente de su calidad, salvo por algunos seguidores entusiastas.<br />Algunas perspectivas futuras.<br />Resulta dif√≠cil hacer previsiones a largo plazo, y m√°s a√ļn en el mundo tan cambiante de la inform√°tica. De todas formas, no queremos dejar esta breve reflexi√≥n sin se√Īalar algunas tendencias actuales. De vez en cuando se produce un cambio de paradigma en el modelo de programaci√≥n m√°s usado (imperativo, eso s√≠). A comienzos de los setenta se impuso la programaci√≥n estructurada, en los noventa ha sido la programaci√≥n orientada a objetos (por ejemplo C++, Java) y los lenguajes de gui√≥n (por ejemplo Tcl/Tk, Perl). Parece que en esta d√©cada seguir√° el auge y afianzamiento de los lenguajes orientados a objetos y de gui√≥n. <br />Con la explosi√≥n de la web, el auge le ha llegado a los lenguajes orientados a la web, tanto de programaci√≥n (p.ej. Java) como documentales (de marcado, como HTML o<br />XML). Java continuar√° gozando de buena salud durante bastante tiempo y volver√° a pasar por nuevas fases de dise√Īo para dotar al lenguaje y a la m√°quina virtual de nuevas<br />medidas de seguridad especialmente en la parte de soporte a hilos para el desarrollo de c√≥digo m√≥vil. XML y todos los est√°ndares relacionados (DOM, XSL, etc.) van a seguir imponi√©ndose como base de todo tipo de nuevas aplicaciones en Internet.<br />Respecto a las nuevas tendencias de software de componentes y servidores de aplicaciones, asistiremos al desarrollo de nuevos lenguajes para la integraci√≥n de componentes y lenguajes, y posiblemente tambi√©n para la estandarizaci√≥n de lenguajes de cat√°logos y descripci√≥n de componentes. Por otra parte, la comercializaci√≥n y distribuci√≥n de componentes forzosamente pasa por el cauce de Internet y deber√°<br />ajustarse a los est√°ndares que rigen en ella. ¬ŅEst√° XML llamado a desempe√Īar esta funci√≥n? <br />El tiempo nos ayudar√° a desvelar esta inc√≥gnita, pero nosotros as√≠ lo suponemos. Respecto a las t√©cnicas formales, √ļnicamente aquellas que ofrecen modelos sencillos y visuales parecen tener √©xito en la industria. Si a esto unimos la necesidad de verificaci√≥n y validaci√≥n de los sistemas, nuestra opini√≥n es que asistiremos a la aparici√≥n de nuevos lenguajes y herramientas visuales de comprobaci√≥n de modelos simb√≥licas, deductivas y transformacionales, y que estos se integrar√°n en entornos y lenguajes aceptados, como UML o incluso en Java.<br />Tambi√©n es probable que haya un renacer de los lenguajes declarativos, apoyados en mejores herramientas, incluido soporte para programaci√≥n en Internet.<br />Actualmente Google a lanzando GO.<br />La industria inform√°tica est√° en constante tensi√≥n entre generar un nuevo comienzo y la evoluci√≥n de las tecnolog√≠as actuales. Los l√≠mites actuales de dise√Īos de hardware y la tradicional tecnolog√≠a de programaci√≥n motivaron a Google a tomar el primer enfoque y crear Go.<br />‚ÄúHemos encontrado algunos de estos problemas muy frustrante y decidimos que la √ļnica manera de hacerles frente es con un nuevo lenguaje‚ÄĚ, dijo Rob Pike, un ingeniero Principal de Google Go.<br />Cuando hablamos caracter√≠sticas modernas de programaci√≥n y l√≠mites de hardware actual nos referimos a que Go est√° dise√Īado para resolver los problemas presentes en la mayor√≠a de programas en relaci√≥n al aprovechamiento de los procesadores de m√ļltiples n√ļcleos para realizar m√ļltiples tareas en paralelo.<br />Go tambi√©n incorpora un enfoque para aliviar algunos de los dolores de cabeza de la programaci√≥n orientada a objetos. Adem√°s tiene las caracter√≠sticas de un lenguaje moderno, como ‚Äúla recolecci√≥n de basura‚ÄĚ que ayuda a los programadores trabajar con gesti√≥n de la memoria sin preocuparse demasiado. Go intenta combinar la velocidad de los lenguajes din√°micos con el rendimiento y seguridad de los lenguajes compilados.<br />Actualmente, el proyecto Go cuenta con el lenguaje propio de programaci√≥n, compiladores y un paquete runtime con una serie de funciones incorporadas. Go tiene una sintaxis similar a C y C ++, pero emplea las caracter√≠sticas modernas de la programaci√≥n y tiene suficiente versatilidad que incluso podr√≠a ser utilizado en los navegadores Web. The Go Programming Language<br />Los creadores de Google Go.<br />Ken Thompson, el ganador del Premio Turing 1983 y 1998 la Medalla Nacional de Tecnolog√≠a que, junto a Dennis Ritchie fueron los creadores originales de Unix. Thompson tambi√©n se acerc√≥ con el lenguaje de programaci√≥n B, que condujo luego a C de Ritchie. Rob Pike, ingeniero de software que era un miembro del equipo Unix de Bell Labs, y un proyecto de sistema operativo denominado Plan 9. El ha trabajado con Thompson durante a√Īos y con √©l cre√≥ el ampliamente utilizado esquema de codificaci√≥n de caracteres UTF-8.Robert Griesemer, que ayud√≥ a escribir el compilador de Java HotSpot y V8, el motor JavaScript del navegador Chrome. Russ Cox, un desarrollador de Plan 9 .Ian Taylor, que ha trabajado en la implementaci√≥n del ampliamente utilizado compilador de c√≥digo abierto GCC. Adam Langley. Jini Kim.<br />Conclusi√≥n.<br />2653665121920En conclusi√≥n unas palabras profeticas de E. W. Dijkstra habl√≥ casi hace 28 a√Īos en su es la conferencia del Premio de Turing que dec√≠a ‚ÄúTan largo como no hab√≠a m√°quinas, programar era ning√ļn problema; cuando tuvimos unos pocas computadoras d√©biles, programar lleg√≥ a ser un problema templado y ahora que tenemos las computadoras gigantescas, programar ha llegado a ser un problema igualmente gigantesco. En este sentido que la industria electr√≥nica no ha resuelto un solo problema, tiene s√≥lo los cre√≥ - ha creado el problema de usar su producto". ["El Programista Humilde", Comunicaciones del ACM, Vol 15, No. 10 (el octubre 1972).].<br />Es decir una de las llaves a programar exitoso son el concepto de la abstracci√≥n. La abstracci√≥n es la llave a la construcci√≥n sistemas complejos de software. Como el tama√Īo de nuestros problemas crece, la necesidad para la abstracci√≥n dram√°ticamente esta en aumento.<br />1era.Generacion: Al desarrollarse las primeras computadoras electr√≥nicas, se vio la necesidad de programarlas, es decir, de almacenar en memoria la informaci√≥n sobre la tarea que iban a ejecutar. Las primeras se usaban como calculadoras simples; se les indicaban los pasos de c√°lculo, uno por uno.2da.Generacion: El primer gran avance que se dio, como ya se coment√≥, fue la abstracci√≥n dada por el Lenguaje Ensamblador, y con √©l, el nacimiento de las primeras herramientas autom√°ticas para generar el c√≥digo m√°quina. Esto redujo los errores triviales, como pod√≠a ser el n√ļmero que correspond√≠a a una operaci√≥n, que son sumamente engorrosos y dif√≠ciles de detectar, pero f√°ciles de cometer.3er.Generacion: Con el desarrollo en los 50s y 60s de algoritmos de m√°s elevado nivel, y el aumento de poder del hardware, empezaron a entrar al uso de computadoras cient√≠ficos de otras ramas; ellos conoc√≠an mucho de F√≠sica, Qu√≠mica y otras ramas similares, pero no de Computaci√≥n, y por supuesto, les era sumamente complicado trabajar con lenguaje Ensamblador en vez de f√≥rmulas. As√≠, naci√≥ el concepto de Lenguaje de Alto Nivel, con el primer compilador de FORTRAN (FORmula TRANslation), que, como su nombre indica, inici√≥ como un "simple" esfuerzo de traducir un lenguaje de f√≥rmulas, al lenguaje ensamblador y por consiguiente al lenguaje de m√°quina. A partir de FORTRAN, se han desarrollado innumerables lenguajes, que siguen el mismo concepto: buscar la mayor abstracci√≥n posible, y facilitar la vida al programador, aumentando la productividad, encarg√°ndose los compiladores o int√©rpretes de traducir el lenguaje de alto nivel, al lenguaje de computadora.4ta.Generacion: Los idiomas de la cuarta generaci√≥n parecen seg√ļn las instrucciones a las de la tercera generaci√≥n. Lo nuevo de estas lenguajes son conceptos como clases, objetos y eventos que permiten soluciones m√°s f√°ciles y l√≥gicos. Lenguajes como C++, java y C# se llaman lenguajes orientadas al objeto. 5ta.Generacion: Como la quinta generaci√≥n est√°n conocidos los Lenguajes de inteligencia artificial. Han sido muy valorados al principio de las noventa - mientras ahora el desarrollo de software toma otras caminos. Lo que veremos en el futuro es menos dependencia en el idioma, y m√°s en el modelando herramientas, tal como el Unificado Modelando el Idioma (UML). Aun faltan novedades en programaci√≥n como la web. 2.0 y Programacion Go de Google que el futuro de la programaci√≥n es unificar e interactuar los lenjuages de programaci√≥n en uno solo.<br />Bibliograf√≠as.<br />http://www.it.uc3m.es/jvillena/irc/practicas/estudios/Lenguajes_de_Programacion.pdf<br />http://pdf.rincondelvago.com/lenguajes-de-programacion_historia-y-evolucion.html<br />http://www.authorstream.com/Presentation/verarex-33544-evolucion-de-los-lenguajes-programaci-evolucionlp-education-ppt-powerpoint/<br />http://ocw.univalle.edu.co/ocw/ingenieria-de-sistemas-telematica-y-afines/fundamentos-de-lenguajes-de-programacion/material-1/evolucionLP.pdf<br />http://jorgesaavedra.wordpress.com/2007/07/07/el-futuro-lenguaje-de-programacion-d/<br />http://geeks.ms/blogs/mllopis/archive/2008/10/29/el-futuro-de-los-lenguajes-de-programaci-243-n-cap-237-tulo-1-control-poder-y-confianza.aspx<br />