MATEMÁTICAS Y SISTEMAS BOGOTA, febrero de 2001 INTRODUCCIÓN. En este trabajo nos podemos dar cuenta de la importancia que tiene la programación y la creación de estos lenguajes para sintetizar la información y agilizar así los procesos sistemáticos de los sistemas que trabajan por medio de computadoras así como la importancia de que estos lenguajes nos permiten cada día mas cosas debido a su desarrollo al paso de los años como nos podemos dar cuenta en este trabajo al igual hace mas fácil el trabajo para el programador y mas fácil para nosotros los consumistas de tecnología. HISTORIA DE LOS LENGUAJES DE PROGRAMACION Basado en el cálculo numérico: Lenguaje Época de creación Creador FORTRAN IAL , ALGOL NPL, MPPL, PL/I 1955−1957 1960−1962 1963 Backus Naur IBM Lenguaje Época de creación Creador COBOL 1959−1962 Depto. de defensa (EE. UU. AA.) Época de creación Creador Orientado a negocios: Para Inteligencia Artificial: Lenguaje LISP COMIT SNOBOL Prolog McCarthy Yngve Laboratorios Bell 1950 −1959 Para sistemas: Lenguaje Época de creación Creador C 1970 Ritchie 1 periodo 1950 − 55 Influencias Ordenadores primitivos 1956 − 60 Ordenadores pequeños, caros y lentos Cintas magnéticas Compiladores e interpretes Optimización del código Ord. grandes y caros Discos Magnéticos Sistemas operativos Leng. de propósito general 1961 − 65 1966 − 70 1971 − 75 1976 − 80 Ordenadores de diferentes tamaños, velocidades, costes Sistemas de almacenamiento masivo de datos (caros) S.O. multitarea e interactivos Compil. con optimización Leng. estandard , flexibles y generales Micro ordenadores Sistemas de almacenamiento masivo de datos pequeños y baratos Progr. estructurada Ingeniería del software Leng. sencillos Ord. baratos y potentes Sistemas distribuidos Prog. tiempo−real Prog. interactiva Abstracción de datos Prog. con fiabilidad y fácil mantenimiento Lenguajes Lenguajes ensamblador Lenguajes experimentales de alto nivel FORTRAN ALGOL 58 y 60 COBOL LISP FORTRAN IV COBOL 61 Extendido ALGOL 60 Revisado SNOBOL APL ( como notación sólo) PL/I FORTRAN 66 (estandard) COBOL 65 (estandard) ALGOL 68 SNOBOL4 SIMULA 67 BASIC APL/360 PASCAL COBOL 74 PL /I ADA FORTRAN 77 PROLOG C Los primeros lenguajes de programación surgieron de la idea de George Babagga, lo cual se le ocurrió a este hombre a mediados del siglo XIX. Consistía en lo que él denominaba la máquina analítica, pero que por motivos técnicos no pudo construirse hasta mediados del siglo XX. Con él colabora Ada Lovedby, la cual es considerada como la primera programadora de la historia, pues realizó programas para aquella supuesta máquina de Babagge, en tarjetas perforadas. Como la máquina 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, 2 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. 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. Cuando surgió el primer ordenador, el famoso Eniac, su programación se basaba en componentes físicos, o sea, que se programaba, cambiando directamente el Hardware de la máquina, exactamente lo que sé hacia era cambiar cables de sitio para conseguir así la programación de la máquina. Los primeros lenguajes trataban en primera instancia poder resolver problemas del tipo numérico, ya que en los años 30's y 40's se trataba de resolver este tipo de problemas debido a su complejidad en muchos casos. Para los años 50's se empezaban a dar los lenguajes con notaciones ya definidas tal como el lenguaje A−0 creado por Grace Hopper junto con grupo en la Univac y el lenguaje Speedcoding creado para la IBM 701 por John Backus. Unos años después en 1955 a 1957 Backus junto con su equipo empezó a crear FORTRAN ( FORmula TRANslator ) que era para problemas numéricos, el cual fueron perfeccionado con el tiempo , ya que después le introducieron las primeras instrucciones tal como READ INPUT TAPE ( lectura de cinta ). Esto le permitió la rápida aceptación de los programadores e incluso en 1966 era implementado en la mayoría de las computadoras IBM. E incluso muchos lenguajes subsecuentes nacieron del FORTRAN. En los 50's es también cuando se usa el bulbo para las computadoras empezando así con la 1era Generación ( 1950−1959). Pero el temor a la expansión de un monopolio de la IBM, hizo que el lenguaje se hiciera universal, creándose el ALGOL 58 ( ALGOrithmic Language ). El cual permitía una notación mas próxima a la real en las matemáticas, utilidad en la descripción de algoritmos, compilación a lenguaje maquina y poder usado en cualquier ordenador. Todo esto permitió la realización de nuevos lenguajes y nuevo hardware según los fines , tal como el creado por Jules Schwarz, el JOVIAL , usado para la Fuerza Aérea de EUA. En 1955 surge la necesidad de crear lenguajes para negocios y con ello que se crea FLOWMATIC que era el primer lenguaje para este tipo. En 1959 el Departamento de Defensa de EUA , desarrolla el CBL ( Common Business Language ). Pero el lenguaje ya totalmente dedicado a los negocios surge en 1960 con el COBOL ( Common Business Oriented ). Pero Backus seguía creando nuevos conceptos, junto con Naur empezaron a crear la gramática formal de los lenguajes de programación a lo que hoy llamamos Notación de Backus−Naur ( BNF ). Es en los 50's también que surgen los lenguajes de inteligencia artificial como el IPL ( Information Processing Language ), el LISP ( LISt Processing ) creado por John McCarthy para la IBM 704 y fue el que mas evoluciono y mas aceptado por los científicos, ya que manejaba la estructura de árboles. Con el tiempo las ideas iban surgiendo y fue Burroughs en base a la idea de un polaco llamado Lukasiewiez creo el hardware B550 que permitía usar pilas lo que hacia que ALGOL corriera más rápido. También se empiezan a usar los transistores para los aparatos electrónicos y con ello da inicio la 2nda Generación ( 1960−1965 ). Fue en 1967 cuando surge el SIMULA 67 creado por Nygaard y Dahl de Noruega que era un lenguaje de clases de ALGOL , que permitía usar los nuevos conceptos que iban surgiendo y que el FORTRAN y ALGOL original no tenían. En base a esto Stroustrup crea C y después en los 80`s haría las clases de C : C++. Para los años de 1966 a 1973 se empiezan a crear sistemas más avanzados, como los chips ( circuitos integrados ) que consistían en dispositivos que podian tener varios transistores en espacio reducido. Con esto inicia la 3era Generación. En 1963 IBM con los avances de su hardware introduce el NPL ( New Programming Language ) y que después se llamaría MPPL ( Milti−Purpose Programming Language ) y más tarde sería el PL/1 que maneja características numéricas de FORTRAN y de negocios como de COBOL. Mas adelante sale la versión para 3 estudiantes, el PL/C. BASIC otro lenguaje surgido en los 60's surge por la necesidad de cálculos numéricos no científicos. Otro campo en la creación de los lenguajes de programación fue el de sistemas, al principio de los lenguajes el de maquina y se había mantenido este como el de sistemas. Pero el avance del tiempo y del hardware permitieron la creación de CPL y BCPL. Después C quien compitió con UNIX en los 70's. Es aquí de 1974 a 1984 cuando se empiezan a desarrollar circuitos integrados más complejos que permitían reducir muchas cosas en espacios más pequeños. Esto permitió la 4ta generación. En los 80's el hardware iba avanzando permitiendo crear lenguajes de mas alto nivel. En los 90's es cuando empiezan a surgir los visuales que eran adaptaciones y mejoras de los lenguajes de DOS a formato gráfico. Otros lenguajes como FORTRAN, COBOL y LISP solo han tenido que irse adaptando a las nuevas tecnologías de hardware que permitieron de 1985 hasta nuestros días el inicio de la 5ta Generación. Los lenguajes visuales y actuales tales como VISUAL BASIC, C, FOX PRO y otros han tomado en cuenta las capacidades de las computadoras, aplicaciones que muchas veces son en modo gráfico ( lo cual puede ser un inconveniente por el uso de mucha memoria y espacio en disco ), hacer la simplificación de algoritmos y procesos así como su implementación y la estandarización o portabilidad hacia otros lenguajes. SIGNOS DE PROGRAMACIÓN C++. • ELEMENTOS SINTACTICOS. Laspalabras claves son aquellas que tienen un significado especial como: BREAK, DOUBLE, IF, STUCT , CASE, ELSE, INT, SWITCH. CHAR, ENUM, LONG, TYPEDEF, CONST, FLOAT, RETURN, VOID, DEFAULT, FOR, SIZE OF, WJHILE, Los identificadores son nombres que permiten hacer referencia a los diferentes objetos tratados en el programa y que no son palabras clave. Un identificador debe comenzar por una letra o el carácter ( ) y puede ir seguido por dígitos, letras. Se distingue entre mayúsculas y minúsculas. Los delimitadores son signos especiales que permiten separar y reconocer las diferentes unidades sintácticas del lenguaje. Los principales signos delimitadores son: ; se considera el terminador, que es necesario cuando finaliza cada una de las sentencias o declaraciones. , separa dos elementos consecutivos de la lista. () enmarca una lista de parámetros. [ ] enmarca la dimensión o el subíndice de una tabla. {} enmarca un bloque de instrucciones o una lista de valores iniciales. • OPERADORES ARITMÉTICOS: Operan sobre datos numericos y son : 4 ♦ Resta * producto % modulo + suma / división −− decremento. ++ incremento • OPRADORES RELACIONALES. Operan sobre elementos de diferentes tipos y evluan un tipologico. Son los siguientes: ◊ mayor que < menor que >= mayor o igual que <= menor igual que ==igual que != distinto que • OPERADORES LÓGICOS. Operan sobre tipos lógicos. Pueden ser los siguientes: Y O !! NO • FUNCIONES. También podemos encontrar las funciones matemáticas: Sin (x) Cos (x) Tan (x) Exp (x) Log (x) Pow(x,y) Sqrt (x) Los ángulos para las funciones trigonometrícas están dados en radianes. 5 El C se encuentra en la jerarquía de lenguajes en un nivel intermedio entre Pascal y el Ensamblador. Pretende ser un lenguaje de alto nivel con la versatilidad del bajo nivel. Se diseñó junto con el sistema operativo UNIX y está muy orientado a trabajar en su entorno. En su desarrollo se siguieron una serie de líneas generales tales como: El compilador debe ser lo más pequeño y eficiente posible. Pocas palabras reservadas, esto es, un conjunto reducido de sentencias. No existe anidamiento de procedimientos. La entrada/salida no se considera parte del lenguaje en sí, sino que se suministra a través de funciones de librería. La misma política se sigue con cualquier otro tipo complejo de instrucciones. Para escribir un programa se debe poder escribir poco texto. Para lograr esto se reduce el número de palabras claves. Con ello se llegó a un compilador con un poderoso juego de instrucciones, que permite aumentar la productividad/día de los programadores. A pesar de ello el C es un lenguaje rápido de aprender, que deriva en compiladores sencillos de diseñar, robustos, y que generan objetos pequeños y eficientes. Una de las características más apreciadas de C es su gran portabilidad, gracias a que deja en manos de librerías las funciones dependientes de la máquina, ¡y todo ello sin restringir el acceso a dicha máquina! Estas y otras características lo hacen adecuado para la programación en areas tales como: − programación de sistemas − estructuras de datos y sistemas de bases de datos − aplicaciones científicas − software gráfico • análisis numérico 6