Вы находитесь на странице: 1из 20

Curso: PS263 Lenguajes de programacin

HISTORIA Y TIPOS DE LENGUAJE DE PROGRAMACIN

1. Lenguajes de programacin: una visin general Lenguajes de

programacin: una visin general


Hay, al menos, dos formas fundamentales desde las que pueden verse o clasificarse los lenguajes de programacin: por su nivel y por sus principales aplicaciones.

Adems, estas visiones estn condicionadas por la evolucin histrica por la que ha transcurrido el lenguaje. Adems, hay cuatro niveles distintos de lenguajes de Programacin: Lenguajes declarativos

Lenguajes de alto nivel

Lenguajes ensambladores

Lenguajes mquina

Los lenguajes declarativos son los ms parecidos al castellano o ingls en su potencia expresiva y funcionalidad y estn en el nivel ms alto respecto a los otros. Son fundamentalmente lenguajes de rdenes, dominados por sentencias que expresan lo que hay que hacer en vez de cmo hacerlo. Ejemplos de estos lenguajes son los lenguajes estadsticos como SAS y SPSS y los lenguajes de bsqueda en bases de datos, como NATURAL e IMS. Estos lenguajes se desarrollaron con la idea de que los profesionales pudieran asimilar ms

rpidamente el lenguaje y usarlo en su trabajo, sin necesidad de programadores o prcticas de programacin.

Los lenguajes de alto nivel son los ms utilizados como lenguajes de programacin. Aunque no son fundamentalmente declarativos, estos lenguajes permiten que los algoritmos se expresen en un nivel y estilo de escritura fcilmente legible y comprensible por otros programadores. Adems, los lenguajes de alto nivel suelen tener la caracterstica de transportabilidad. Es decir, estn implementados sobre varias mquinas, de forma que un programa puede ser fcilmente transportado (transferido) de una mquina a otra sin una revisin sustancial. En este sentido, se llaman independientes de la mquina. Ejemplos de estos lenguajes de alto nivel son PASCAL, APL y FORTRAN (lenguajes de programacin utilizados para aplicaciones cientficas), COBOL (para aplicaciones de procesamiento de datos), SNOBOL (para aplicaciones de procesamiento de textos), LISP y PROLOG (para aplicaciones de inteligencia artificial), C y ADA (para aplicaciones de programacin de sistemas) y PL/I (para aplicaciones de propsito general). Todos estos lenguajes de alto nivel los desarrollaremos ms detenidamente en otro apartado de la presentacin.

Los lenguajes ensambladores y los lenguajes mquina son dependientes de la mquina. Cada tipo de mquina tiene su propio lenguaje mquina distinto y su lenguaje ensamblador asociado. El lenguaje ensamblador es simplemente una representacin simblica del lenguaje mquina asociado, lo cual permite una programacin menos tediosa que con el anterior. Sin embargo, es necesario un conocimiento de la arquitectura mecnica subyacente para realizar una programacin efectiva en cualquiera de estos niveles de lenguajes. 2. Perspectiva histrica de los lenguajes de programacin

El programador, diseador e implementador de un lenguaje de programacin deben comprender la evolucin histrica para poder apreciar por qu presentan caractersticas diferentes. La misma historia nos permite ver la evolucin de familias de lenguajes de programacin, ver la influencia que ejercen las arquitecturas y aplicaciones de las computadoras sobre el diseo de lenguajes y evitar futuros defectos de diseo aprendiendo las lecciones del pasado. En el siguiente diagrama que presentamos resumimos algunos de los ms importantes avances en el diseo de lenguajes de alto nivel desde sus comienzos hasta finales de la dcada de los 80.

Este diagrama representa slo un pequea muestra de todos los lenguajes de programacin. Existen en uso, hoy en da, ms de 150 lenguajes de programacin diferentes, con nombres tan diversos como AMBIT, BASEBALL, LOGO y MAD. Muchos son dialectos de los que se muestran en el diagrama. Los que describimos en nuestra presentacin los hemos elegido debido a su mayor influencia y amplio uso entre los programadores, as como por sus distintivas caractersticas de diseo e implementacin.

El diagrama tambin contiene las lneas que relacionan a varios lenguajes. Las lneas continuas muestran ascendencia directa, mientras que las lneas discontinuas muestran una fuerte influencia. Por ejemplo, vemos que FORTRAN I es un ascendente directo de FORTRAN II, mientras que FORTRAN, COBOL, ALGOL 60, LISP, SNOBOL y los lenguajes ensambladores, influyeron en el diseo de PL/I.

Varios lenguajes representados en el diagrama estn prefijados por las letras ANS. Con esto queremos decir que el American National Standards Institute ha adoptado esa versin del lenguaje como el estndar nacional.

Finalmente, creemos importante denotar algunas influencias anteriores a 1.960 en el diseo de los lenguajes de programacin. Incluimos como importantes la notacin algebraica ordinaria, por ejemplo, que influy fuertemente en el diseo de FORTRAN y ALGOL; el ingls como principal influencia en el desarrollo de COBOL; el lambda clculo de Church, que dio los fundamentos de la notacin funcional de LISP, mientras que el algoritmo de Markov motiv el estilo de reconocimiento de formas de SNOBOL. En ltimo lugar, la arquitectura de computadores de Von Neumann, la cual fue una evolucin de la mquina ms antigua de Turing, es el modelo bsico de la mayora de los diseos de computadoras hasta hoy en da. Estas mquinas no slo influyeron en los primeros lenguajes sino que tambin suministraron el esqueleto operacional sobre el que evolucion la mayora de la programacin de sistemas.

3. Caractersticas de todos lenguaje : UNIVERSAL: todo problema que pueda ser resuelto por una computadora, debe ser posible de ser programable (no es un requisito tan estricto) NATURAL: debe facilitar la resolucin de problemas al menos para el rea de aplicacin del lenguaje IMPLEMENTABLE: debe ser posible ejecutar todo programa bien formado en dicho lenguaje; ejemplos de no implementables: notacin matemtica, lenguaje natural. EFICIENTE: depende de la arquitectura de computadora

Los lenguajes de programacin buscan hacer cada vez mas expresivo la simplicidad y eficiencia de los lenguajes Ejemplo: Ada y PL/1 fueron diseados por un grupo grande de personas. Pascal fue diseado por una sola persona: Niklaus Wirth

Curso: PS263 Lenguajes de programacin

Genealoga de algunos lenguajes de programacin 1950 FORTRAN 1960 Simula 1970 Smalltalk 1980 Java Ada Miranda C++ Pascal
C ML

LISP COBOL

Algol-60

PL/I Algol-68 Prolog

Orientados a objetos

Imperativos

Funcionales

Lgicos

4. Margo de referencia evolucin de los lenguajes de programacin AO LENGUAJE 1900s BINARIO 1946 Plankalkul 1949 Short Code 1950 ASM (ensamblador) 1951 A-0 1952 AUTOCODE 1956 FORTRAN 1956 COBOL 1958 ALGOL 58 1960 LISP 1961 FORTRAN IV 1961 COBOL 61 Extendido 1960 ALGOL 60 Revisado 1964 PASCAL 1964 BASIC 1965 SNOBOL 1965 APL 1965 COBOL 65 1966 PL/I 1966 FORTRAN 66 1967 SIMULA 67 1968 ALGOL 68 1968 SNOBOL4 1970s GW-BASIC 1970 APL/360 1972 SMALLTALK 1972 C 1974 COBOL 74 1975 PL /I Lenguaje sencillo Centro de Investigacin de pequeo y rpido Xerox en Palo Alto Laboratorios Bell lenguaje con tipos antiguo y clsico BASIC IBM sistema de Traduccin de Formulas matemticas solo anotacin Niklaus Wirth Universidad de Dartmouth (california) programacin estructurada Beginners All Purpose Symbolic Instruction Code IBM Interprete orientado a la Inteligencia Artificial sistema de Traduccin de Formulas matemticas INVENTOR Bool Konrad Zuse DESCRIPCION primer lenguaje creado para jugar al ajedrez lenguaje traducido a mano lenguaje ensamblador fue el primer compilador compilador muy rudimentario sistema de Traduccin de Formulas matemticas Compilador

Grace Hopper Alick E. Glennie IBM

1977 FORTRAN 77 1980s SMALLTALK/V 1980 C con clases

IBM Digitalk Laboratorios Bell Ministerio Japons de Comercio Internacional e Industria (MITI) Ministerio de Defensa de los EE.UU AT&T Bell Laboratories (Bjarne Stroustrup) Microsoft Microsoft Microsoft Microsoft

sistema de Traduccin de Formulas matemticas pequeo y rpido lenguaje con clases Lenguaje estndar para la Inteligencia Artificial

1981 PROLOG

1982 ADA

lenguaje muy seguro

1984 C++ 1985 CLIPPER 1985 QuickBASIC 1.0 1986 QuickBASIC 2.0 1987 QuickBASIC 3.0 1987 QuickBASIC 4.0 CLIPPER SUMMER 1987 '87 1988 QuickBASIC 4.5 1989 QuickBASIC 7.1 1989 ASIC v5.0 1990s VISUAL C++ 1990s VISUAL BASICScript 1990 HTML 1993 XML 1993 SGML 1990s WML 1990s ASP 1990s PHP 1995 JAVA 1995 CLIPPER 5.01 1995 GNAT ADA95

compilador compilador para bases de datos compilador de BASIC soporte de tarjeta grfica EGA 43 lineas con la tarjeta EGA tarjetas Hercules, VGA compilador para bases de datos

Microsoft Microsoft

tarjeta SVGA ultima versin de QuickBASIC interprete tipo QBASIC shareware

Microsoft

lenguaje de script

Tim Berners-Lee para internet C. M. Sperbergpara internet McQueen Charles F. para internet Goldfarb para internet Microsoft Sun Microsystems Ministerio de Defensa de los EE.UU para internet para internet para internet y propsito general compilador para bases de datos lenguaje muy seguro

1995 FORTRAN 95 1991 VISUAL BASIC 1.0 1992 VISUAL BASIC 2.0 1993 VISUAL BASIC 3.0 1994 VISUAL BASIC 4.0 1995 VISUAL BASIC 5.0 1998 VISUAL BASIC 6.0 1990s C# 2001 VISUAL BASIC .NET

IBM Microsoft Microsoft Microsoft Microsoft Microsoft Microsoft Microsoft

sistema de Traduccin de Formulas matemticas

La evolucin de Visual Basic

Fuente: http://iabot.iespana.es/ciencia/software/historia_lenguajes_programacion.htm

5. Sintaxis y semntica

La sintaxis se refiere a la forma de los programas; cmo los diferentes componentes del lenguaje son agregados para formar programas. La semntica se refiere al significado de los programas; cmo se comportan cuando son ejecutados.

La sintaxis afecta cmo los programas son escritos por los programadores, cmo son ledos por otros programadores

La semntica determina cmo los programas son compuestos por los programadores, cmo son comprendidos por otros programadores, y cmo son interpretados por el computador

6.. Lenguajes programacin a travs de la historia

FORTRAN: :introdujo las expresiones simblicas, por los subprogramas con parmetros.

Ejemplo : original. Forma primitiva del IF 123456789 ... IS=0

I=1 N=30 10 IF(N-I) 30,20,20 20 IS=IS+I I=I+1 GOTO 10 30 CONTINUE CALL ESTIMAR(IS,IS2)

FORTRAN. El miembro original de la familia, FORTRAN I, naci en 1.954, y fue implementado sobre la computadora IBM 704 en 1.956. Dos aos ms tarde, apareci FORTRAN II. Entre 1.958 y 1.963, FORTRAN se implement sobre varias computadoras. FORTRAN III fue desarrollado durante este perodo, pero debido a que contena demasiadas caractersticas dependientes de la mquina, nunca se implement para uso pblico. En 1.962 FORTRAN IV fue desarrollado para las computadoras IBM 7090/7094. En 1.966 se

estandarizaron las distintas versiones en dos nicas: la Basic FORTRAN y FORTRAN. En 1.977 se aadieron extensiones y se revisaron ambas versiones, apareciendo as el FORTRAN 77, que mantena la compatibilidad para los programas escritos antes con versiones anteriores al nuevo estndar.

COBOL (Common Bussiness Oriented Language) introdujo a finales de 1.950: el concepto de descripcin de datos introduce la idea de un lenguaje con un rea de aplicacin no numrica (comercial)

En su forma original estos dos lenguajes son de bajo nivel: el control de flujo es llevado a cabo por instrucciones jump disfrazadas., se sinti la necesidad de un lenguaje de procesamiento de datos. En mayo de 1.959, los representantes de los fabricantes de computadoras y de los usuarios de la industria y gobierno, se reunieron para formar el Comit CODASYL (Conference on Data Systems Languages), y se desarroll una descripcin de tal lenguaje, cuya revisin, en 1.960, empez a conocerse como COBOL-60. Numerosas extensiones fueron formando nuevas versiones de este lenguaje COBOL inicial, hasta

aprobarse un estndar en 1.974 por la ANS (American National Standard).

PASCAL. La historia de Pascal estara incompleta sin trazar primero la historia del ALGOL, del cual Pascal es una evolucin. La historia del ALGOL comenz en 1.958, cuando un comit de representantes del GAMM (una organizacin europea de cientficos en informtica) y ACM (su contrapartida en USA) se reunieron en Zurc y produjo un informe preliminar sobre un International Algebraic Language, o IAL. Este lenguaje, conocido ms tarde como ALGOL 58, atrajo mucho inters y fue implementado sobre varias computadoras. Los representantes europeos y estadounidenses se reunieron de nuevo en Pars en 1.960 para considerar una versin completamente nueva de este lenguaje, conocida como ALGOL 60. Durante este perodo, ALGOL fue extremadamente popular entre los cientficos informticos, y su definicin rigurosa marc nuevos estndares para el diseo e implementacin de lenguajes. ALGOL se convirti en un lenguaje universal para la definicin de algoritmos publicados en revistas. Con el paso del tiempo, fueron apareciendo nuevas versiones revisadas de ALGOL 60, como ALGOL W (desarrollado por Niklaus Wirth) o ALGOL 68, que fue intencionadamente un lenguaje de propsito general con aplicaciones en un amplio rango de inters, aunque rpidamente se reconoci como un lenguaje demasiado ambicioso para ser prctico. De esta manera, Wirth dise un sucesor ms reducido del ALGOL 60 y lo llam PASCAL. Su primer compilador se implement en 1.970 y una versin revisada fue definida e implementada en 1.973. PASCAL fue claramente diseado para servir como un lenguaje para ensear diseo de algoritmos y metodologa de programacin. Como el ALGOL, PASCAL ha jugado un papel nico como el principal lenguaje usado para publicar algoritmos en las revistas y libros. A pesar de sus fuertes mejoras sobre ALGOL, -especialmente en el rea de entrada-salida, archivos, registros, gestin dinmica de memoria y estructuras de control- PASCAL tambin fue cuestionado por sus deficiencias, y por ello se propusieron sucesores importantes como algunos de los que describimos a continuacin.

PL/I. Es un lenguaje de propsito general, diseado para soportar aplicaciones cientficas, de procesamiento de datos, de procesamiento de textos y de programacin de sistemas a muy alto nivel. La primera versin del PL/I fue presentada por el Comit del proyecto SHARE FORTRAN. Esta versin fue llamada NPL (New Programming Language). Fue implementado por primera vez por IBM en 1.965 bajo el nombre de PL/I. Al principio, PL/I no fue aceptada por su ineficiencia, y no fue considerado una alternativa aceptable a los lenguajes establecidos por entonces, principalmente COBOL y FORTRAN, que hemos explicado anteriormente. A pesar de ello, en 1.975, despus de haber mejorado la eficiencia de sus compiladores, fue publicado un borrador con una propuesta de un PL/I estndar, aceptado en 1.976. Alrededor de 1.981 apareci un refinamiento de PL/I estndar, llamado SUBSET/G, que preservaba la mayora de las caractersticas tiles del PL/I, y suprima las generalizaciones de poco uso y difciles de implementar.

SNOBOL. Fue diseado en 1.962 por un grupo de investigacin de los laboratorios Bell como una ayuda a sus propias aplicaciones sobre manipulacin simblica de frmulas. Una versin mejorada y extendida, llamada SNOBOL3, apareci en 1.966 y fue implementada sobre distintas mquinas. Un potencial sucesor de SNOBOL4, que apareci en 1.969, se conoce como ICON. Aunque contiene muchas de las caractersticas de procesamiento de cadenas del SNOBOL, la sintaxis de ICON es mucho ms parecida a la de los lenguajes convencionales como PASCAL o C, lenguaje de programacin cuya evolucin histrica explicaremos ms adelante.

APL. (A Programming Language) Fue el primero formalmente definido e introducido por Kenneth Iverson, en su libro A Programming Language en 1.962. Es marcadamente el producto de la genialidad de una persona con gran orientacin matemtica. IBM trat de desarrollar APL durante los siguientes siete aos, pero nunca lleg a estandarizarse, ya que requera un conjunto nico de caracteres con un hardware especial, distinto del que soporta el estndar ASCII. Como resultado, APL no ha sido implementado ampliamente sobre las distintas mquinas.

LISP. (List Processor) El lenguaje LISP fue desarrollado por John McCarthy durante el periodo de 1.956 a 1.958, implementndose por primera vez entre 1.959 y 1.962. El trabajo de su autor consista principalmente en representar informacin en un lenguaje formal y desarrollar un programa que razonara haciendo inferencias sobre ella. Las representaciones estaban en la forma de estructuras de listas y el lenguaje era una variante del lambda clculo, tal y como describimos anteriormente con ayuda del diagrama de evolucin. Desde 1.962 se han producido varios dialectos del LISP, incluyendo principalmente al MACLISP e INTERLISP. PROLOG. (Programming in Logic) Se dise principalmente para las aplicaciones de inteligencia artificial, definiendo objetos y relaciones de inferencia entre clases de objetos. Tiene unos fuertes fundamentos tericos en el clculo de proposiciones. Representaba una desviacin tajante de las ideas tradicionales sobre comportamiento de programas, las cuales se basaban todas en las arquitecturas de mquina de von Neumann. PROLOG fue desarrollado a principios de los aos 70 por Philippe Roussel. Su primer intrprete se implement en 1.972. Desde entonces, PROLOG no cambi desde su concepcin, ni se hizo ningn esfuerzo por estandarizarlo.

Ejemplo de Prolog:
Se definen una serie de hechos (persona) sobre varias personas Se define la relacin: es-hermana Se plantea una consulta : para determinar de quin es hermana marta persona (juan, 30, hombre, rosa, luis). persona (marta, 21, mujer, rosa, luis). es-hermana (X,Y) :- persona(X, _, mujer, Madre, Padre), persona(Y, _, _, Madre, Padre). ? es-hermana(marta,Y). Y=juan.

C y C++. La historia de C, y su versin ampliada, C++, la explicaremos ms detenidamente, justo porque son los lenguajes de programacin que nosotros utilizaremos durante el curso, adems de su enorme importancia hoy en da en todos los mbitos de la computacin. C evolucion a partir de dos lenguajes previos, BCPL y B. BCPL fue desarrollado en 1.967 por Martin Richards, como un lenguaje para escribir software y compiladores de sistemas operativos. En el lenguaje B, muchas caractersticas de BCPL fueron modeladas y se utiliz para crear versiones iniciales de lo que se lleg a denominar UNIX. Ambos lenguajes, BCPL y B eran lenguajes sin tipo. Cada elemento de datos ocupaba una palabra en memoria y quedaba a cargo del programador el tratar un elemento de datos como si se tratara de un nmero entero o de un nmero real. El lenguaje C fue derivado de B por Dennis Ritchie de los Laboratorios Bell, implantndose por primera vez en 1.972. C al inicio se populariz como lenguaje de desarrollo del sistema operativo UNIX. Hoy da, virtualmente todos los sistemas estn escritosen C y/o C++. C, independiente del hardware, se ha hecho disponible para la mayor parte de las computadoras a lo largo de las ltimas dcadas. Es posible incluso escribir programas en C que sean porttiles hacia la mayor parte de las computadoras. Hacia finales de los 70, C haba evolucionado a lo que hoy se conoce como C tradicional. La expansin rpida de C sobre varios tipos de computadoras trajo consigo muchas variantes. Estas eran similares, pero no siempre compatibles. Esto provocaba un problema para los programadores, que necesitaban escribir cdigos que pudieran funcionar con distintas mquinas. As se vieron ante la necesidad de una versin estndar de C, que se aprob en 1.989. El documento se conoce como ANSI / ISO 9899: 1.990. Ms tarde, apareci C++, una mejora sobre muchas de las caractersticas de C, y que proporciona capacidades de programacin orientada a objetos que promete mucho para incrementar la productividad, calidad y reutilizacin del software. Los diseadores de C y los responsables de sus primeras puestas en prctica nunca anticiparon que este lenguaje resultara en un fenmeno como ste. Cuando un lenguaje de programacin se torna tan arraigado como C, nuevas necesidades demandan que el lenguaje evolucione, en lugar de que slo sea reemplazado por un nuevo lenguaje, como ya haba ocurrido con muchos otros

lenguajes, tal y como comentamos antes. C++ fue desarrollado por Bjarne Stroustrup en los Laboratorios Bell y originalmente fue llamado C con clases. El nombre C++ incluye el operador de incremento (++) de C, para indicar que C++ es una versin mejorada de C. C++ es un conjunto de C, por lo que, para compilar los programas existentes de C, los programadores pueden utilizar un compilador C++ y posteriormente modificar estos programas a C++. A mediados de los aos noventa, la mayor parte de los entornos de programacin C se convirtieron a C++.

MODULA-2. Podemos considerar, con toda exactitud, al lenguaje MODULA-2 como un descendiente directo y mejorado de su antecesor PASCAL. MODULA, al igual que su ancestro PASCAL, ha sido desarrollado por el profesor iklaus Wirth, del Instituto Tecnolgico de Zurich, como dijimos anteriormente. MODULA-2 naci, de una forma experimental, en 1.975 cuando se hizo necesario disponer de un lenguaje de programacin de propsitos generales y que, adems, fuera lo suficientemente operativo y cualificado para abordar problemas de multiprogramacin, diseo de sistemas, software de base, traductores y compiladores, etc. Como resultado, se realiza la primera implementacin de MODULA-2 al proyecto Lilith del ETH de Zurich, con el objetivo de disear un sistema completo de hardware y software, y para el que era necesario disponer de un lenguaje de desarrollo sencillo y que pudiera abordar, conjuntamente, problemas resolubles con un lenguaje de alto nivel, y necesidades de programacin a bajo nivel o cercana a la estructura de la mquina.

DELPHI. En el ao 1995 se crea el nuevo sucesor de Pascal, al que se llam Delphi, siendo la primera herramienta con un entorno de desarrollo visual construida por Borland. Esta caracterizado por ser un lenguaje orientado a eventos, es decir, que la ejecucin del programa no es secuencial, sino que depende de los eventos que suceden durante la ejecucin de la aplicacin. Delphi es una herramienta de Desarrollo Rpido de Aplicaciones (RAD). Los componentes que incorpora facilitan el acceso a bases de datos, comunicacin

a travs de Internet, calidad en impresiones, desarrollo de aplicaciones multimedia, enlaces DDE, componentes OLE y VBX, etc. Borland ha introducido al mercado varias versiones de Delphi, aportando mejoras notables, entre las que cabe destacar el CodeInsight, un asistente que muestra automticamente las listas de parmetros de procedimientos, mtodos y eventos. En el ao 2001 Borland lanzo al mercado la versin de Delphi 6.0 que funciona bajo Windows y es compatible con todas las versiones anteriores. Junto con esta versin se introdujo en el mercado la primera versin Kylix, una versin de Delphi que funciona bajo Linux. La ultima versin disponible en el mercado es Delphi 7.0. Entre las nuevas carcteristicas se incluye un nuevo compilador que permite construir aplicaciones basadas en la plataforma .NET

JAVA. En 1991 un grupo de ingenieros de Sun Microsystems liderados

por Patrick Naughton y James Gosling comienza el desarrollo de un lenguaje destinado a generar programas independientes de la plataforma en la que se ejecutan. Su objetivo inicial nada tiene que ver con lo que hoy en da es Java, sus creadores buscaban un lenguaje para programar los controladores utilizados en la electrnica de consumo. Existen infinidad de tipos de CPU distintas, y generar cdigo para cada una de ellas requiere un compilador especial y el desarrollo de compiladores sabemos que es caro. Despus de dieciocho meses de desarrollo aparece la primera versin de un lenguaje llamado OAK que ms tarde cambiara de nombre para convertirse en Java. La versin de 1992 est ampliada, cambiada y madurada, y a principios de 1996 sale a la luz la primera versin de Java. Los inicios son difciles, no se encuentran los apoyos necesarios en Sun y el primer producto que sale del proyecto, un mando a distancia muy poderoso y avanzado, no encuentra comprador. Pero el rumbo de Java cambiara debido a una tecnologa completamente ajena a los controladores de

electrodomsticos: Internet.

Mientras Java se estaba desarrollando, el mundo de las comunicaciones creca a una velocidad de vrtigo, Internet y principalmente el mundo World Wide Web dejaban los laboratorios de las universidades y llegaban a todos los rincones del planeta. Se iniciaba una nueva era y Java tuvo la suerte de estar all y aprovechar la oportunidad. En 1993 con el fenmeno Internet en marcha, los desarrolladores de Java dan un giro en su desarrollo al darse cuenta de que el problema de la portabilidad de cdigo de los controladores es el mismo que se produce en Internet, una red heterognea y que crece sin parar, y dirigen sus esfuerzos hacia all. En 1995 se libera una versin de HotJava, un navegador escrito totalmente en Java y es en ese mismo ao cuando se produce el anuncio por parte de Netscape de que su navegador sera compatible con Java. Desde ah otras grandes empresas se unen y Java se expande rpidamente. No obstante, las primeras versiones de Java fueron incompletas, lentas y con errores. Han tenido que pasar varios aos de desarrollo y trabajo para que Java sea un lenguaje perfectamente asentado y lleno de posibilidades. Actualmente es ampliamente utilizado en entornos tanto relacionados con Internet como completamente ajenos a la Red. El mundo Java est en constante desarrollo, las nuevas tecnologas surgen y se desarrollan a gran velocidad haciendo de Java un lenguaje cada da mejor y que cubre prcticamente todas las reas de la computacin y comunicaciones, desde telfonos mviles hasta servidores de aplicaciones.
6.. Generalidades Lenguajes programacin Es posible identificar las siguientes dos tendencias en el desarrollo de los lenguajes de programacin:

La tendencia de los lenguajes programacin puede ser enfocada a conceptos, aunque un cierto tipo de lenguaje no debe tratar de incorporar todos estos conceptos.

La estructura de un lenguaje de programacin implica :< Valores Abstraccin Almacenamiento Encapsulamiento Generics Herencia Polimorfismo Concurrencia Regularidad Es mejor proveer un conjunto bsico de facilidades que puedan ser refinadas usando otros aspectos del lenguaje (tipos de datos abstractos, objetos). Una forma sencilla de obtener mximo poder es permitiendo la combinacin de un nmero de conceptos en una forma regular y sin restricciones innecesarias o con interacciones sorpresivas.

6.1 Principios generales a. Tipos : Todos los tipos de un lenguaje deben tener el mismo estatus ejemplo: <tipo del valor de retorno> funcin ( <tipo de los parmetros> ) b. Abstraccin: Permitir la abstraccin sobre cada clase semnticamente significativa Expresiones funciones Comandos procedimientos Declaraciones generics Tipos tipos parametrizados c. Correspondencia : Para cada forma de declaracin debe existir su correspondiente mecanismo de paso de parmetros y viceversa. ------------------d. Calificacin Incluir un bloque en cada clase sintctica que es semnticamente significativa Bloques de comandos Bloques de expresiones

Bloques de declaraciones e. Sencillez

El lenguaje debe ayudar a resolver problemas. Debe permitir que las soluciones sean expresadas naturalmente. Debe ayudar a descubrir dichas soluciones.

Lenguajes grandes y complicados pertenecen al espacio de problemas en lugar del espacio de soluciones.

Ej. Pascal: sencillo, con pocos conceptos pero muy bien escogidos, fcil y rpido de dominar, suficientemente poderoso para resolver un gran variedad de problemas. Un lenguaje complejo puede obtener las ventajas de uno sencillo si se divide en compartimentos o mdulos. Un programador solo necesita dominar aquellas partes del lenguaje necesarias para resolver su problema. Se deben evitar interacciones inesperadas entre las diferentes partes del lenguaje, pues enviara al programador a territorio desconocido.

Por ejemplo, en PL/I se da el siguiente caso:

Al evaluar 25 + 1 / 3 da 5.3 debido a las reglas sobre el nmero de decimales usados en aritmtica de punto fijo, esto obliga a todos los programadores a conocer las reglas de aritmtica de punto fijo aunque no se parte fundamental del problema que quieren resolver

Un programador que no programa el manejo de excepciones, puede producir entonces comportamiento default en el programa . Una funcin entera usada en un contexto real no produce una conversin (que obligue a conocer cmo lo

hace), sino que produce un mensaje de error en trminos de no poder localizar una funcin sobrecargada. Un lenguaje no debe tratar de anticipar todas las facilidades requeridas. Un lenguaje debe permitir la identificacin e implementacin de las facilidades requeridas. Lo anterior es facilitado por la abstraccin: expresiones, comandos, tipos funciones, procedimientos, clases.

La sintaxis debe ser transparente: debe ser obvio determinar a partir de la forma sintctica a cul concepto semntico se est haciendo referencia. Las formas sintcticas y los conceptos semnticos deben corresponder uno a uno. Contraejemplo La frase var I: T en Pascal puede ser la declaracin de una nueva variable, o la especificacin de un parmetro variable. Una forma sintctica no debe confundir dos conceptos distintos. procedure hacer_caja (x, y, ancho, alto: Integer); hacer_caja (0, 0, 4, 2);

6.2 Estructura:

Valor: cualquier cosa que pueda ser calculada, almacenada, incorporada en una estructura de datos, pasada como argumento a un procedimiento o funcin, retornada como resultado de una funcin Cualquier entidad que existe durante un cmputo

PascalValores primitivos (valores de verdad, caracteres, valores enumerados, enteros, reales)Valores compuestos (registros, arreglos, conjuntos,

archivos)PunterosReferencias (abstracciones

variablesProcedimientos

funciones

Bibliografa consultada:

Allen B. Tucker, Lenguajes de programacin Editorial McGraw Hill 2003 H. M Deitel Cmo programar en C y C++ ,Editorial Prentice Hall, 2000

Вам также может понравиться