lenguajes programacion alto nivel

18
Primeros Lenguajes de Programación de Alto Nivel Ricardo Peña Marí Departamento de Sistemas Informáticos y Computación Universidad Complutense de Madrid Master en formación de profesorado de Secundaria – Informática curso 2009-2010 R. Peña (SIC-UCM) Primeros lenguajes Master Secundaria 09-10 1 / 18

Upload: alan-chuquipul-chuquizuta

Post on 24-Nov-2015

13 views

Category:

Documents


3 download

TRANSCRIPT

  • Primeros Lenguajes de Programacin de Alto Nivel

    Ricardo Pea Mar

    Departamento de Sistemas Informticos y ComputacinUniversidad Complutense de Madrid

    Master en formacin de profesorado de Secundaria Informticacurso 2009-2010

    R. Pea (SIC-UCM) Primeros lenguajes Master Secundaria 09-10 1 / 18

  • Lecturas recomendadas

    De Euclides a Java: Historia de los algoritmos y de los lenguajes deprogramacin. Ricardo Pea. Cap. 6. Ed. Nivola (Coleccin Ciencia Abierta),2006.

    A brief history of computing, Gerard Regan, Cap. 3, Springer 2008.

    R. Pea (SIC-UCM) Primeros lenguajes Master Secundaria 09-10 2 / 18

  • Los aos 1950s

    Hacia 1953 el grueso de la programacin se llevaba a cabo en empresas comoIBM. El software era demasiado caro de producir. Las tres cuartas partes delcoste de un centro de computacin estaba dedicado al desarrollo deprogramas. Y la mitad de l se la llevaba la depuracin de los programas.

    Empezaron a disearse notaciones de ms alto nivel que el lenguajeensamblador como el lenguaje Speedcode de Backus y las macros de GraceHooper. Ella misma acu el trmino de programacin automtica haciendoreferencia a la generacin automtica de instrucciones mquina a partir denotaciones de ms alto nivel.

    No todo el mundo tena clara esta evolucin de la programacin porque sepensaba que el cdigo generado no era competitivo con el realizadomanualmente.

    En este contexto surge el primer lenguaje de alto nivel digno de ese nombre:FORTRAN. Su xito abri la puerta al desarrollo de numerosos lenguajeshasta alcanzar varios cientos hacia 1970.

    R. Pea (SIC-UCM) Primeros lenguajes Master Secundaria 09-10 3 / 18

  • FORTRAN

    John Backus era un joven programador de IBM en 1953. Su primer proyecto fueprogramar una mquina de vlvulas para calcular las posiciones de la Luna. Propusoa sus superiores desarrollar un lenguaje de alto nivel para dicha mquina.

    John Von Neumann, entonces consultor de la IBM, se opuso por considerar que erams importante disear mquinas ms rpidas. A pesar de ello obtuvo unpresupuesto para cuatro personas y se le asign una oficina en la planta 19 al ladode la maquinaria de los ascensores.

    A finales de 1954 produjeron un diseo preliminar de FORTRAN (FORmulaTRANslating system). Tena instruccin de asignacin, vectores y matrices y bucles.

    No pusieron especial cuidado en la sintaxis. Su principal preocupacin era generarun cdigo mquina competitivo con el ensamblador. Introdujeron gran cantidad deoptimizaciones, como extraer de los bucles clculos independientes de los ndices decontrol. Algunas de sus tcnicas no fueron superadas hasta los aos 60.

    Este compilador realizaba seis pasadas por el cdigo fuente y estaba totalmenteescrito en ensamblador, ya que no exista ningun lenguaje previo. Tampocodisponan de una notacin formal ni de herramientas de anlisis lxico o sintctico.

    Tardaron 3 aos en escribir (18000 instrucciones) lo que hoy un estudiante deinformtica podra tardar 6 meses.

    R. Pea (SIC-UCM) Primeros lenguajes Master Secundaria 09-10 4 / 18

  • El impacto de FORTRAN

    El impacto del lenguaje fue mucho ms all de lo que se esperaba. El compiladorgeneraba un cdigo en torno al 90% de eficiencia con respecto al hecho a mano.

    A mediados de 1958 casi todas las mquinas IBM usaban FORTRAN en alguna desus aplicaciones y muchas en ms del 80%. FORTRAN contribuy en gran maneraal xito de IBM. Se convirti en el lenguaje estndar para programacin cientfica yse desarrollaron compiladores para todas las mquinas existentes.

    A partir de 1961 las universidades introdujeron cursos de programacin enFORTRAN y en 1966 se convirti en el primer lenguaje estandarizado por la ANSI.

    Hoy est a todas luces obsoleto, pero el hecho de que se realizaran ingentesinversiones en el desarrollo de software en este lenguaje hizo que perviviera ms delo deseable. A mediados de los 80 todava las tres cuarta partes de los programas seescriban en FORTRAN o COBOL.

    En los 90 se desarrollaron versiones mejoradas con carctersticas de otros lenguajes.

    Fue el primer lenguaje que permiti programar en una notacin independiente de lamquina, lo que tuvo como consecuencia incorporar a muchas personas que no eranespecialistas en mquinas concretas ni deseaban especializarse en ninguna.

    Debido a FORTRAN, John Backus recibi el premio Turing en 1977.

    R. Pea (SIC-UCM) Primeros lenguajes Master Secundaria 09-10 5 / 18

  • Caractersticas de FORTRAN

    1 Uso obligatorio de maysculas e identificadores que no podan exceder de 6caracteres.

    2 Formato rgido, reservndose las cinco primeras columnas para las etiquetas deinstrucciones (caracterstica heredada del ensamblador).

    3 Lenguaje algebraico con notacin cercana a la matemtica.

    4 Aritmtica entera y de coma flotante.

    5 Vectores de varias dimensiones y con notacin matemtica.

    6 Subrutinas y procedimientos con parmetros, con una notacin muy intuitiva.

    7 Instrucciones COMMON para compartir y estructurar zonas de datos.

    8 Instrucciones iterativas DO y condicionales IF aritmtico y calculado.

    9 Entrada y salida con formato, lo que liberaba al programador de una tarea tediosamuy dependiente de la mquina.

    R. Pea (SIC-UCM) Primeros lenguajes Master Secundaria 09-10 6 / 18

  • Un programa en FORTRAN y John Backus

    C

    C PROGRAMA QUE CALCULA EL MAXIMO COMUN DIVISOR DE DOS NUMEROS

    C

    INTEGER X, Y, A, B

    READ (1,80) X, Y

    A=X

    B=Y

    10 IF (A-B) 20, 30, 40

    20 A = A - B

    GO TO 10

    40 B = B - A

    GO TO 10

    30 WRITE (2,90) A

    80 FORMAT (2I5)

    90 FORMAT (12H RESULTADO=,I5)

    END

    R. Pea (SIC-UCM) Primeros lenguajes Master Secundaria 09-10 7 / 18

  • Algol 60

    Los grupos de usuarios de las distintas casas de fabricantes de computadoresinstaron a la ACM a promover la definicin de un lenguaje de alto nivel quepermitiera una programacin portable entre distintas mquinas.

    En Europa ya haba comenzado un movimiento semejante defendido por laAsociacin Alemana de Matemtica Aplicada y Mecnica (GAMM).

    Se convoc una reunin conjunta en Zurich en junio de 1958. All se encontrabanJohn Backus, John McCarthy, Peter Naur, Fritz L. Bauer y Alan Perlis. Reunidosdurante 8 dias crearon Algol 58 (ALGOrithmic Language).

    Recibieron numerosas propuestas de mejora a lo largo de 1959 a travs del ALGOLBulletin y la revista Communications of the ACM.

    Backus public una tcnica (BNF) para describir formalmente su sintaxis.

    Se volvieron a reunir en junio de 1960 y tras ocho das de discusiones naci Algol 60.

    Su influencia en los lenguajes posteriores fue mucho mayor que la de FORTRAN.Durante una poca se us el trmino ALGOL-like para caracterizar la mayor partede los lenguajes diseados.

    R. Pea (SIC-UCM) Primeros lenguajes Master Secundaria 09-10 8 / 18

  • Caractersticas de Algol 60

    Fue el primer lenguaje en incluir las siguientes caractersticas:

    1 Formato libre: los blancos y fin de lnea son eliminados por el analizador lxico. Seintroduce el ; como separador de instrucciones y las construcciones begin-end.

    2 Estructura de bloques anidados, en los que se puede definir variables locales. Seintroducen las reglas de visibilidad que hoy son habituales.

    3 Disciplina de tipos: se deben declarar todas las variables con sus tipos y elcompilador comprueba que se usan de manera consistente.

    4 Instrucciones estructuradas de control: for, while e if-then-else.

    5 Recursividad, aunque los autores dudaron de incluirla debido a que no sabanimplementarla de forma eficiente.

    6 Paso de parmetros por valor y por nombre. El ltimo ha sido abandonado debido alos efectos laterales.

    7 Lmite de los vectores y matrices decididos en tiempo de ejecucin. Esto conlleva laasignacin dinmica de memoria al comenzar un bloque y su liberacin alabandonar el mismo.

    R. Pea (SIC-UCM) Primeros lenguajes Master Secundaria 09-10 9 / 18

  • Importancia de Algol 60

    Se convirti en el lenguaje preferido para publicar algoritmos. No lleg a difundirseen la industria americana, ya que los fabricantes no desarrollaron compiladoresporque contemplaban a Algol 60 como una notacin elegante pero ineficiente deimplementar, y prefirieron ocuparse de sus propios lenguajes.

    Una de las aportaciones ms importantes es la notacin BNF (Backus Naur Form)utilizada hoy en da para definir las gramticas de los lenguajes.

    Las universidades europeas que desarrollaron compiladores para ALGOL seenfrentaron a nuevos problemas como la construccin de analizadores sintcticos, lacreacin de tablas anidadas para procesar la estructura de bloques, laimplementacin de la recursividad etc.

    Esto hizo que Europa estuviera a la cabeza en tcnicas de construccin decompiladores.

    Las sutiles ambigedades del lenguaje estimularon la investigacin en mtodosformales para describir la semntica de los lenguajes.

    El trabajo de Peter Naur no fue reconocido hasta 2005 con la concesin del premioTuring.

    R. Pea (SIC-UCM) Primeros lenguajes Master Secundaria 09-10 10 / 18

  • Un programa en Algol 60 y Peter Naur

    integer procedure factorial(n);value n; integer n;begin integer i ;

    if n = 0 then factorial := 1else begin

    i := factorial(n 1);factorial = n i

    end

    end

    R. Pea (SIC-UCM) Primeros lenguajes Master Secundaria 09-10 11 / 18

  • Cobol

    Se gest como respuesta a la necesidad de un lenguaje adaptado a la programacinde gestin (COmmon Business Oriented Language), alejado de la aparienciaalgebraica de los lenguajes numricos.

    Puso el nfasis en la descripcin de datos y en la manipulacin de ficheros.

    Hubo una primera reunin informal en abril de 1959 entre usuarios y fabricantes ainiciativa de Burroughs Corporation. Estuvo presente Grace M. Hopper deRemington Rand, creadora del lenguaje de gestin FLOWMATIC.

    La primera reunin formal tuvo lugar en el Pentgono en mayo de 1959. Haba 40representantes de los principales fabricantes (Sperry Rand, Burroughs, IBM, GeneralElectrics, RCA, Honeywell Bull), de los grupos de usuarios y el gobierno ysolamente uno de la universidad.

    Se decidi la creacin de tres comits: uno inmediato para estudiar los lenguajes degestin existentes y hacer sugerencias, otro para producir una especificacin para unfuturo lenguaje y otro para establecer a medio plazo un estndar de lenguaje ptimopara la gestin. Este ltimo nunca lleg a nombrarse.

    El informe final del primer comit (diciembre de 1959) consisti en algo ms queunas recomendaciones, ya que contena una especificacin completa de un lenguajeorientado a la gestin.

    R. Pea (SIC-UCM) Primeros lenguajes Master Secundaria 09-10 12 / 18

  • Difusin de COBOL

    El Comit Ejecutivo dio su aprobacin para convertir las recomendaciones delcomit en un lenguaje y se propuso supervisar las primeras implementaciones.

    A finales de 1960 ya existan los primeros compiladores, desarrollados porRCA y Remington Rand.

    COBOL se difundi rpidamente y se convirti en estndar ANSI en 1968,1974 y 1985.

    Represent muy bien el consenso alcanzado por las empresas de la pocapara conseguir un lenguage portable para sus necesidades de programacin degestin.

    El apoyo del Departamento de Defensa y el control frreo de lacompatibilidad de las versiones impuesto por CODASYL (Comit Ejecutivoencargado de supervisar su desarrollo) hizo que su pervivencia fuera ms allde lo razonable.

    En la dcada de los 80 COBOL segua siendo el lenguaje de programacinms usado.

    R. Pea (SIC-UCM) Primeros lenguajes Master Secundaria 09-10 13 / 18

  • Caractersticas de Cobol

    Usaba palabras inglesas para las construcciones del lenguaje, incluidos losoperadores aritmticos (ADD, SUBSTRACT etc) lo que daba a los programas unaspecto verboso. Muchos programadores deploraron esta caracterstica y utilizaronpreprocesadores para trabajar con una notacin ms abreviada.

    Otra deficiencia fue que no se podan pasar parmetros a los procedimientos, lo queera un paso atrs con respecto a FORTRAN.

    Tuvo ms influencia su nfasis en independizar la descripcin de los datos de la delos procedimientos. Un programa se divida en cuatro partes:

    1 Identification division: comentarios explicativos2 Environment division: correspondencia, dependiente de la mquina, entre

    ficheros externos y descripciones internas de los mismos.3 Data division: estructura de los ficheros. Una misma data division poda ser

    utilizada por distintos algoritmos.4 Procedure division: algoritmos.

    El lenguaje de descripcin de datos fue la semilla para los futuros lenguajes dedescripcin y consulta de bases de datos.

    La estructura record tambin fue una aportacin de COBOL.

    R. Pea (SIC-UCM) Primeros lenguajes Master Secundaria 09-10 14 / 18

  • LISP

    LISP (LISt Processing language) surgi del empeo de John McCarthy (MIT) endisponer de un lenguaje para aplicaciones de inteligencia artificial.

    Durante el primer congreso estadounidense dedicado a la inteligencia artificial(1956) conoci el lenguaje IPL-2 en el que se usaban listas como estructura dedatos. Le pareci que un lenguaje simblico basado en listas generales poda serapropiado para la inteligencia artificial.

    Fue consultor de IBM en un proyecto sobre demostracin de teoremas geomtricos.All colabor en el desarrollo de FLPL (FORTRAN List Processing Language). Tresfunciones han previvido desde entonces en el manejo de listas: CONS, CAR y CDR.

    En 1958 obtuvo una plaza en el MIT y trabaj con Marvin Minsky, pionero de lainteligencia artificial. Ante las deficiencias de FLPL decidi crear su propio lenguajepara clculo simblico, al que llam LISP.

    En 1960 estuvo listo el primer sistema LISP y dos aos ms tarde la mayora de loscomputadores cientficos dispona de un intrprete de LISP.

    El uso de sus dialectos, ms en concreto Scheme, ha sobrevivido hasta la actualidad.

    McCarthy recibi el premio Turing en 1971.

    R. Pea (SIC-UCM) Primeros lenguajes Master Secundaria 09-10 15 / 18

  • Caractersticas de LISP

    1 Definiciones recursivas como nico mecanismo de repeticin.

    2 Expresiones condicionales: if e1 then e2 else e3

    3 Orden superior: posibilidad de pasar funciones como argumentos.

    4 Posibilidad de crear funciones annimas, usando una notacin similar a las-abstraccciones de Alonzo Church.

    5 Recolector de basura para reutilizar la memoria de expresiones que ya no sonnecesarias para el cmputo.

    6 Las expresiones se representan mediante listas generales usando una notacinprefija. Ello obliga a utilizar numerosos parntesis al final de los programas paracerrar todas las listas, lo que ha hecho que los programadores LISP traduzcancariosamente sus siglas como Lots of Idiot and Silly Parentheses (un montn denecios y estpidos parntesis).

    7 La funcin eval f x = f x es el equivalente funcional de la Mquina Universal deTuring: una funcin capaz de emular a cualquier otra recibida como parmetro. Esen realidad un intrprete del lenguaje.

    R. Pea (SIC-UCM) Primeros lenguajes Master Secundaria 09-10 16 / 18

  • Un programa en LISP y John McCarthy

    (DEFUN MAPLIST (F,XS)

    (COND (NULL XS)

    NIL

    (CONS (F (CAR XS))

    (MAPLIST F (CDR XS))

    )

    )

    )

    R. Pea (SIC-UCM) Primeros lenguajes Master Secundaria 09-10 17 / 18

  • Impacto de LISP

    El impacto de LISP es conceptualmente comparable al de ALGOL 60.

    Las -abstracciones y el orden superior han hecho que sea considerado elorigen de los lenguajes funcionales, aunque solamente un subconjunto delmismo lo sea, ya que LISP permite programar con efectos laterales.

    McCarthy reconoce que la influencia del -clculo en la definicin de LISPfue pequea. La utilizacin del mismo como fundamento semntico de loslenguajes funcionales vino mucho despus.

    Demuestra en la prctica que la recursividad es suficiente para programarcualquier funcin. Implementa por primera vez la misma mediante una pilaque crea una copia de las variables por cada activacin recursiva.

    Proporciona la primera notacin de orden superior de la historia.

    Es el primer lenguaje interpretado.

    Es el primero en incorporar un mecanismo de recoleccin de basura.

    Usa la composicin de funciones para definir otras ms complejas.

    R. Pea (SIC-UCM) Primeros lenguajes Master Secundaria 09-10 18 / 18