Lenguajes de Programación

Informática. Software. Evolución histórica computadores. Basic. Beta. COBOL (Common Business Oriented Language). Dialect. Forth. Fortran. Icon. Java. Pascal

  • Enviado por: Fernando
  • Idioma: castellano
  • País: España España
  • 21 páginas

publicidad

LENGUAJES DE PROGRAMACIÓN

Asignatura: Informática Básica

Alumno:

Curso:

Índice

1.- Introducción

  • ¿Qué son? ¿Para qué sirven?

  • Relación con las computadoras

  • Tipos

2.- Historia de los ordenadores

3.- Historia de los lenguajes

4.- Relación de los principales lenguajes

5.- Tendencias de cara al futuro

6.- Bibliografía

7.- Glosario

Introducción

· ¿Qué son? ¿Para qué sirven?

        Al igual que los idiomas sirven de vehículo de comunicación entre los seres humanos, existen lenguajes que realizan la comunicación entre los seres humanos y las computadoras. Estos lenguajes permiten expresar los programas o el conjunto de instrucciones que el operador humano desea que la computadora ejecute.

        Los lenguajes de computadoras toman diferentes formas; los de las primeras computadoras, como la ENIAC y la EDSAC, se componían en el lenguaje real de las máquinas mismas. La dificultad de programar las máquinas de esta manera limitaba drásticamente su utilidad y proporcionaba un fuerte incentivo para que se desarrollaran lenguajes de programación más orientados hacia la expresión de soluciones con la notación de los problemas mismos.

        Los primeros lenguajes de programación se conocieron como Lenguajes Ensambladores, un ejemplo es: TRANSCODE, desarrollado para la computadora FERUT. En los lenguajes ensambladores se define un código especial llamado mnemónico para cada una de las operaciones de la máquina y se introduce una notación especial para especificar el dato con el cual debe realizarse la operación.

         A mediados de los años 60's aparecieron los primeros lenguajes de propósito general, que son en los que se basa este trabajo, como FORTRAN, FORTRAN IV, ALGOL, COBOL, BASIC, PL/I, ADA, C, C++, PASCAL, etc. pero el desarrollo de nuevas tecnologías, tanto en arquitectura de computadoras como en lenguajes de programación, continúa a paso acelerado, cada vez con mayor velocidad, el panorama está cambiando de una etapa de sistemas y lenguajes especialmente desarrollados para aplicaciones individuales. Los lenguajes de programación actuales son los conocidos como Lenguajes visuales, como por ejemplo Visual Fox, Visual Basic, Visual C.

· Relación con las computadoras

A la vez que los lenguajes de programación iban evolucionando, las computadoras también lo hacían. Aunque los lenguajes de programación, en la actualidad, tiendan a desligarse de las máquinas en las que se van a usar para ser mas universales, todo su desarrollo se ha basado en la capacidad de las máquinas, en este caso los ordenadores, para poder soportar estos lenguajes. De no haber evolucionado las computadoras, los lenguajes no hubieran sido capaces de salvar por si solos las limitaciones que implica el hardware.

Es por ello, por lo que en este trabajo se va a ver también la evolución histórica de las computadoras, ya que creo conveniente el poder tener en cuenta a la hora de estudiar los lenguajes de programación el marco en el cual han sido desarrollados.

· Tipos

Hay varias formas de clasificar los lenguajes de programación, y una de ellas sería por la cercanía o lejanía a la máquina. De este modo podemos distinguir tres tipos de lenguajes:

- Lenguajes de bajo nivel: Son aquellos que se encuentran mas cerca de la máquina que del hombre. Esto significa que se acercan al lenguaje usado por el ordenador, ceros y unos. Por ejemplo: Ensamblador, Código máquina, etc...

- Lenguajes de medio nivel: Se encuentran a medio camino de la máquina y el hombre. Aglutinan las instrucciones complejas a etiquetas o nombres y que están compuestas por instrucciones sencillas.

- Lenguajes de alto nivel: La abstracción es mucho mayor, las instrucciones son muy complejas, estando mas cerca del entendimiento humano que de la máquina, y a diferencia del medio y bajo nivel son independientes de la plataforma.

Otra forma sería por su potencia:

- Primera Generación: Lenguaje máquina, no requiere traducción alguna, el compilador es capaz de leerlo directamente.

- Segunda Generación: Lenguaje ensamblador dependiente de la máquina, que requiere de una traducción, aunque esta es muy simple porque cada instrucción corresponde a un código solamente.

- Tercera Generación: Lenguajes de alto nivel, están diseñados para ser usados por unos programadores profesionales y requieren especificaciones, con todas las posibles funciones, de cómo realizar una tarea. Estos requieren de un número grande de instrucciones con códigos que pueden ser difíciles de leer, entender, mantener y depurar. Están originalmente desarrollados para operaciones por lote y orientados a archivos. Requieren de traducción y cada instrucción es convertida a varias instrucciones de máquina. Con ellos el programador solo debe trabajar con el código fuente desarrollado por el y no al código objeto resultante.

- Cuarta Generación: Lenguajes, más avanzados que los de alto nivel, que requieren la especificación de la tarea a realizar y es el mismo sistema el que determina cómo efectuarla. Ofrecen opciones predeterminadas que ya no se tienen que especificar lo que facilita que el programador no se enfrente a ningún código ya que siempre usa la interface. Requieren de traducción y cada instrucción es convertida en muchas instrucciones en lenguaje máquina. Los errores son fáciles de localizar.

También se podrían clasificar mediante su orientación:

- Programación orientada a eventos: programación de aplicación que responde a las entradas del usuario (seleccionando menús, botones, formularios, etc...) o de otras aplicaciones a tiempos regulares.

- Programación orientada a procedimientos: Método de programación que requiere de una disciplina como FORTRAN, COBOL, BASIC; C, Pascal y Xbase,. El programador escribe el código en cierto orden para resolver el problema, basado en sus conocimientos del proceso y de la programación. La aplicación resultante fuerza al usuario a seguir un camino predefinido desde el paso A al paso B. Un ejemplo típico es el ingreso de datos.

- Lenguaje orientado a problemas: Lenguaje de computación diseñado para manejar un problema particular. Ejemplos: FORTRAN fue diseñado para ingeniería, COBOL para negocios y GPSS para simulaciones.

- Programación visual: Programas basados en herramientas visuales como menús, botones, y cualquier elemento gráfico, que se puede seleccionar de una paleta, se arrastra y se suelta donde se desea sobre la pantalla. Esto también puede referirse a poder conseguir el código fuente interactuando con diagramas de flujo y gráficos lógicos asociados a códigos. Ej.: Visual BASIC, Visual FoxPRO, Visual C++...

- Programación Orientada a Objetos (POO): Su objetivo es el aumentar la productividad del programador incrementando la extensibilidad y reutilizando el software, controlando la complejidad y el costo de mantenimiento. Ejemplos: C++, Turbo PASCAL, Power Builder...

y por último los podríamos clasificar por su aplicación:

- Científicos: Son aquellos cuya aplicación mas inmediata es resolver problemas de cálculo. Históricamente son los primeros lenguajes evolucionados ya que la formulación matemática permite una fácil formación del lenguaje. Los primeros fueron el SHORT CODE, creado por el Dr. Mandy en 1949, para UNIVAC y el SPEED CODING desarrollado en 1953 por Backus y Saldon para IBM. Los mas usados: FORTRAN, PASCAL, BASIC, LOGO, y APL, pero antes de llegar ellos aparecieron otras como: MATH MATIC, UNICODE, IT, GAT y FORTRANSIT.

- De gestión: Son lenguajes orientados a la solución de problemas de tratamiento de datos para la gestión, por lo que predominan las instrucciones dedicadas a procesar instrucciones de entrada y salida. El primero fue el FLOW-MATIC desarrollado en 1955 por el Dr. Hopper para UNIVAC. El lenguaje mas característico de entre los de gestión es el COBOL, seguido por el RPG-II.

- Polivalentes o aplicación general: Son el resultado de intentar obtener un lenguaje que cubriera el área científica y la de gestión de forma equilibrada. El primero fue JOVIAL, desarrollado por la Strategic Air Control System. El mas conocido de estos lenguajes es el PL/1 creado en 1964. No obstante es obligatorio apuntar en esta parte que casi la totalidad de los lenguajes científicos han evolucionado hacia la gestión incluyendo entre sus estructuras otras extraídas de los lenguajes clásicos de gestión. De este modo, lenguajes como FORTRAN, PASCAL o BASIC pueden resolver cualquiera de los problemas de gestión, en principio vedados a estos lenguajes.

- Especiales: Son lenguajes con algún propósito muy especifico, como lenguajes para expresiones algebraicas formales, lenguajes para manejo de archivos y bancos de datos o lenguajes para el control de maquinaria, equipos y herramientas.

Historia de los ordenadores

Una computadora digital moderna es en gran medida un conjunto de interruptores electrónicos, los cuales se utilizan para representar y controlar el recorrido de datos denominados dígitos binarios (o bits).

El desarrollo del transistor fue uno de los inventos muy importantes para la revolución de la computadora personal. El transistor fue inventado en 1948 por los ingenieros John Bardeen, Walter Brattain Y William Shockley de los laboratorios Bell. Funciona como un interruptor de estado sólido, sustituyó al bulbo que era mucho menos adaptable.

La conversión a transistores provoco la tendencia hacia la miniaturización que continua hasta el día de hoy.

En 1959, los ingenieros de Texas Instruments inventaron el CI (circuito integrado o chip), un semiconductor que contiene mas de un transistor sobre la misma base y que conecta los transistores sin necesidad de cables. El primer CI tenía seis transistores.

En comparación, el microprocesador Pentium Pro de Intel, que se usa en muchos de los sistemas mas avanzados, tiene mas de 5.5 millones de transistores, y la memoria caché integral que incluyen algunos de estos procesadores contiene hasta 32 millones de transistores adicionales Actualmente, muchos chips tienen transistores que pueden contarse en varios millones.

Cuando en las computadoras se habla de historia se debe comprender que ni siquiera ha transcurrido medio siglo desde que se invento la primera, por lo que hay que considerar otras unidades de medida de su desempeño.

Lo anterior significa que la corta historia de las computadoras debe medirse no tanto en términos de años sino más bien en su función de sus avances tecnológicos.

¿Cómo se miden los avances tecnológicos de las computadoras?

Una computadora esta formada por dos componentes estructurales con el mismo nivel de importancia: el equipo físico (hardware) y los programas con los que funciona (software), lo cual significa que su grande avance debe considerarse en esas dos direcciones. Es decir, el desarrollo de las computadoras se da en estos dos aspectos:

· Por sus características constructivas (circuitos, arquitectura global del sistema, tecnología electrónica).

· Por los programas básicos con los que opera. Es decir, como se entabla comunicación con ella (lenguajes, sistema operativo, interfaces).

Desde la invención de la primera de ellas, las computadoras han tenido un avance que se puede estudiar en términos de "generaciones".

Primera generación

Abarca desde los inicios de los años 50 hasta unos diez años después, y en la cual la tecnología electrónica era a base de bulbos o tubos de vacío, y la comunicación era en términos de nivel mas bajo que puede existir, que se conoce como lenguaje de máquina. Estas máquinas eran así:

· Estaban construidas con electrónica de bulbos

· Se programaban en lenguaje de máquina

Un programa es un conjunto de instrucciones para que la máquina efectúe alguna tarea, y que el lenguaje mas simple en el que puede especificarse un programa se llama lenguaje de máquina (porque el programa debe escribirse mediante algún conjunto de códigos binarios). La primera generación de computadoras y a sus antecesores, se describen en la siguiente lista de los principales modelos de que constó:

1947 ENIAC. Primera computadora digital electrónica de la historia. No fue modelo de producción, sino una maquina experimental. Tampoco era programable en el sentido actual. Se trataba de un enorme aparato que ocupa todo un sótano en la universidad. Constaban de 18 000 bulbos, consumía varios KW de potencia eléctrica y pesaba algunas toneladas. Era capaz de efectuar cinco mil sumas por segundo. Fue echa por un equipo de ingenieros y científicos encabezados por los doctores John W. Mauchly y J. Prester Eckert en la universidad de Pennsylvania, en los Estados Unidos.

1949 EDVAC. Primera computadora programable. También fue un prototipo de laboratorio, pero ya incluía en sí diseño las ideas centrales que conforman a las computadoras actuales. Incorporaba las ideas del doctor John von Neumann.


1951 UNIVAC I. Primera computadora comercial. Los doctores Mauchly y Eckert fundaron la compañía Universal Computer (Univac ), y su primer producto fue esta máquina. El primer cliente fue la oficina del censo de Estados Unidos

1953 IBM 701. Para introducir los datos, estos equipos empleaban el concepto de tarjetas perforadas, que había, sido inventada en los años de la revolución industrial (finales del siglo XVIII) por el francés Jacquard y perfeccionado por el estadounidense Hermand Hollerith en 1890. La IBM 701 fue la primera de una larga serie de computadoras de esta compañía, que luego se convertiría en la número 1 por su volumen de ventas.

1954 - IBM continuo con otros modelos, que incorporaban un mecanismo de 1960 almacenamiento masivo llamado tambor magnético, que con los años evolucionaría y se convertiría en disco magnético.

Segunda generación

No fue sino hacia finales de los años 50 que los transistores reemplazaron a los bulbos en los circuitos de las computadoras.

Las computadoras de la llamada segunda generación ya no son de bulbos, sino con transistores son mas pequeñas y consumen menos electricidad que las anteriores, la forma de comunicación con estas nuevas computadoras es mediante lenguajes mas avanzados que el lenguaje de máquina, y que reciben el nombre de "lenguajes de alto nivel" o lenguajes de programación.

Las características de las computadoras de la segunda generación son entonces:

  • Estaban construidas con electrónica de transistores

  • Se programaban en lenguajes de alto nivel

  • Esta segunda generación duro pocos años, porque pronto hubo nuevos avances en los dos factores estructurales.

    Tercera generación


    Esta nueva generación fue inaugurada con la presentación comercial de la llamada "serie 360" de IBM.


    IBM se dedicó a los aspectos de ingeniería, comercialización y mercadotecnia de sus equipos, en corto tiempo la noción de las computadoras salió de los laboratorios y las universidades y se instaló como un componente imprescindible de la sociedad industrial moderna.


    Las computadoras de la tercera generación tienen ventajas cualitativamente importantes, debido a dos factores fundamentales: por un lado, están hechas a base de agrupamientos de transistores miniaturizados en paquetes conocidos como circuitos integrados; por el otro, aunque se siguen programando en lenguajes de alto nivel, ahora un método de comunicación con el programador que resulta mas fácil de emplear que el anterior.


    Es decir, la electrónica de las computadoras de la tercera generación (circuitos integrados) es más compacta, rápida y densa que la anterior, y la comunicación se establece mediante una interfaz (un intermediario) conocida como sistema operativo.

    Así, los dos criterios de definición para las computadoras de la tercera generación son:


    · Están construidas con electrónica de circuitos integrados.

    · La comunicación es mediante la ayuda de los sistemas operativos .

    Historia de los lenguajes de programación

    En los años 50 se realizaron varios compiladores primitivos y fue en 1957 cuando apareció el primer compilador de FORTRAN. El compilador de FORTRAN (FORmula TRANslator) estaba diseñado para traducir a lenguaje máquina expresiones y operaciones matemática, e incluso permitía la manipulación de matrices. La aparición del FORTRAN fue un gran cambio para los programadores que no todos aceptaron de buen grado. No les gustaba que sus programas fueran tratados por el ordenador como meros datos, y argumentaban que el código máquina generado por el compilador nunca podría ser tan eficiente como el escrito por ellos directamente. Esto no era generalmente así, puesto que el FORTRAN no fue diseñado pensando en crear un lenguaje bien estructurado sino pensando en crear un traductor de expresiones aritméticas a código máquina muy eficiente. Por ello, el diseño lógico del ordenador IBM 704 para el que fue creado casi puede deducirse del lenguaje FORTRAN. En diferentes versiones, cada vez más estructuradas, el lenguaje FORTRAN se ha utilizado extensivamente desde que apareció hasta hoy en día, y puede considerarse el lenguaje estándar del cálculo científico.

    Unos años después de aparecer el FORTRAN apareció el lenguaje ALGOL 60 (Algorithm Language), que fue diseñado para ser independiente del ordenador con una gramática bien definida. También de aquella época es el COBOL (Common Business Oriented Language) que se diseño para las manipulaciones de datos normales en aplicaciones de negocios y con un uso mayor del lenguaje inglés en sus frases. Las versiones modernas del COBOL siguen usándose en la actualidad y es el lenguaje estándar en aplicaciones informáticas bancarias.

    Desde entonces han aparecido diversos lenguajes de alto nivel entre los que podemos mencionar el BASIC (Beginners All-purpose Symbolic Instructional Code), PL/I , APL, PASCAL, ADA, MODULA , C , RPG, PROLOG, LISP, ... etc. Alguno de estos lenguajes han sido diseñados para un tipo concreto de aplicaciones. Por ejemplo, el ADA para aplicaciones relacionadas con defensa, o el RPG para transacciones usuales en los bancos. La evolución de los lenguajes de programación ha estado guiada por la evolución de:

    • Los ordenadores y sus sistemas operativos.

    • Las aplicaciones.

    • Los métodos de programación.

    • Los fundamento teóricos.

    • La importancia dada a la estandarización.

    Un resumen de la evolución de los lenguajes de programación sería:

    Periodo 1950 - 55

    · Influencias

    Ordenadores primitivos

    · Lenguajes

    Lenguajes ensamblador

    Lenguajes experimentales de alto nivel

    Periodo 1956 - 60

    · Influencias

    Ordenadores pequeños, caros y lentos

    Cintas magnéticas

    Compiladores e interpretes

    Optimización del código

    · Lenguajes:

    FORTRAN

    COBOL

    LISP

    ALGOL 58 y 60

    Periodo 1961 - 65

    · Influencias

    Ord. grandes y caros

    Discos Magnéticos

    Sistemas operativos

    Lenguajes de propósito general

    · Lenguajes

    FORTRAN IV

    COBOL 61 Extendido

    SNOBOL

    ALGOL 60 Revisado

    APL (como notación sólo)

    Periodo 1966 - 70

    · Influencias

    Ordenadores de diferentes tamaños, velocidades, costes

    Sistemas de almacenamiento masivo de datos (caros)

    Sistemas Operativos multitarea e interactivos

    Compiladores con optimización

    Lenguajes estándar, flexibles y generales

    · Lenguajes

    PL/I

    FORTRAN 66 (estándar)

    COBOL 65 (estándar)

    ALGOL 68

    SNOBOL4

    SIMULA 67

    BASIC

    APL/360

     

    Periodo 1971 - 75

    · Influencias

    Micro ordenadores

    Sistemas de almacenamiento masivo de datos pequeños y baratos

    Programación estructurada

    Ingeniería del software

    Lenguajes sencillos

    · Lenguajes

    COBOL 74

    PL /I

    PASCAL

    Periodo 1976 - 80

    · Influencias

    Ordenadores baratos y potentes

    Sistemas distribuidos

    Programación tiempo-real

    Programación interactiva

    Abstracción de datos

    Programación con fiabilidad y fácil mantenimiento

    · Lenguajes

    ADA

    FORTRAN 77

    PROLOG

    C

    Relación de los principales lenguajes de programación

    ABC

    ABC es el resultado de un proyecto del CWI (un centro de investigación holandés de carácter oficial). En el sitio web de CWI hay intérpretes ABC para distintas plataformas (Unix, Macintosh, MS-DOS y Atari-ST). También está disponible el código fuente de la versión Unix.

    ABC pretende ser un sustituto de BASIC. Como éste, fue pensado para principiantes, aunque su evolución posterior lo hace también adecuado para programadores avanzados. Es muy fácil de aprender y de usar, y el código es compacto pero legible (al menos eso dicen). Tiene tipos de datos de muy alto nivel: números (enteros exactos de cualquier tamaño y números no exactos), textos (strings de cualquier longitud), listas (sus elementos tienen que ser del mismo tipo y siempre están ordenados), compuestos (equivalentes a registros sin nombres de campo) y tablas (son listas con índices o claves). Como sucede con otros intérpretes, ABC es, además de un lenguaje de programación, un entorno interactivo de trabajo.

    Un defecto de ABC es que los textos no pueden contener más que los caracteres US-ASCII (nada de acentos, eñes, etc.). También se le ha criticado la falta de extensibilidad (algo común a muchos lenguajes, me parece).

    El intérprete va acompañado de alguna información, pero el verdadero manual se vende como libro independiente.


    Ada

    El lenguaje Ada fue el resultado de un concurso convocado por el Ministerio de Defensa de los Estados Unidos para disponer de un solo lenguaje para todas sus necesidades. Este lenguaje debía ser útil para fines muy diversos, como programación de sistemas, inteligencia artificial, y sobre todo, aplicaciones en tiempo real (programas que controlan desde el tráfico hasta la trayectoria de un misil) y sistemas incrustados (en inglés, embedded; pequeños ordenadores contenidos en vehículos u otros aparatos). La primera documentación de Ada data de 1979, y el primer estándar, de 1983 (Ada 83). El último estándar, Ada 95, incorpora OOP e interfaces para C, Fortran y Cobol.

    Ada es un sucesor de Pascal, y el código fuente tiene un aspecto parecido, aunque es mucho más potente y flexible. El estándar 95 cumple todos los principios de ingeniería de software ampliamente reconocidos hoy en día (fiabilidad, portabilidad, modularidad, eficiencia, tipos de datos abstractos, programación concurrente, programación orientada a objetos, etc.).

    El nombre del lenguaje es un homenaje a Ada Lovelace, hija de Lord Byron y ayudante de Charles Babbage, quien es considerada como la primera programadora (hombre o mujer) de la historia.

    APL y J

    El profesor canadiense Ken Iverson, cuando trabajaba en la Universidad de Harvard, inventó una notación personal para describir procedimientos matemáticos (inicialmente, por tanto, no pretendía ser un lenguaje de programación). Esta notación, concisa y sin ambigüedad, fue descrita por el propio Iverson en 1962 en el libro A Programming Language, (de ahí las iniciales APL) y durante la década de los 60, IBM desarrolló el primer intérprete.

    APL es sobre todo conocido por su concisión. Por ejemplo, la sentencia 10 ? 10 muestra por pantalla los números del 1 al 10 ordenados aleatoriamente:

    Otro de los puntos fuertes de APL es su capacidad para manejar conjuntos de datos como un todo, evitando en muchos casos la necesidad de bucles. Normalmente se trata de un lenguaje interpretado, proporcionando un entorno interactivo y flexible.

    APL ha sido criticado por su falta de legibilidad, lo que hace difícil modificar programas antiguos (hace, por ejemplo, amplio uso del goto, es decir, de su forma particular). Otro defecto importante deriva del uso de símbolos propios (letras griegas y otros caracteres aún menos convencionales), lo que, además de dificultar la escritura (al no aparecer en los teclados normales), hace que el código sea poco portable, ya que cada versión concreta de APL almacena a su modo el código fuente (y eso, sin contar, con las habituales diferencias de una implementación a otra). El propio Iverson, junto con Roger Hui, ha creado un nuevo lenguaje (J), derivado de APL, que usa sólo caracteres ASCII.

    AWK

    AWK (a menudo escrito enteramente en minúsculas: awk), es un lenguaje descrito en un libro de Aho, Kernighan y Weinberger (de los cuales toma las iniciales). Está especialmente indicado para el análisis y procesamiento de textos de acuerdo con patrones, haciendo uso de expresiones regulares.

    Perl se puede considerar un descendiente suyo, heredando todas sus capacidades (e incluyendo muchas otras) y parte de su sintaxis. A pesar de eso, hay algunas razones que pueden inclinarnos a usar AWK en vez de Perl, como su mayor simplicidad, la mayor regularidad de su sintaxis y su menor tamaño.

    BASIC

    El lenguaje BASIC fue creado en 1964 por los norteamericanos John Kemeny y Thomas Kurtz, en el Dartmouth College. Su intención era diseñar un lenguaje adecuado para principiantes. No tenía, por tanto, pretensiones de gran potencia, pero era sencillo de aprender y permitía abordar pronto pequeños proyectos. BASIC son las iniciales de Beginner's All-purpose Symbolic Instruction Code.

    El BASIC tuvo un gran éxito; se usó ampliamente en la enseñanza y también en la programación profesional. Sin embargo, el BASIC original era poco estructurado, lo que hizo que recibiera muchas críticas, especialmente como lenguaje de aprendizaje, por favorecer malos hábitos de programación. Lo curioso es que en lugar de desaparecer, fueron surgiendo versiones nuevas de BASIC, con características más próximas a los lenguajes modernos, y hoy en día Visual Basic (de Microsoft) es uno de los lenguajes más utilizados en Windows.

    BETA

    BETA es un lenguaje de programación orientado a objetos, desarrollado inicialmente en varias universidades escandinavas. Está relacionado con Simula (también de origen escandinavo), que fue el primer lenguaje orientado a objetos.

    C y C++

    C fue creado en los Bell Telephone Laboratories al principio de los 70, por Dennis M. Ritchie. Su nacimiento estuvo ligado al del sistema operativo Unix, que se desarrolló paralelamente. Sus características debían ser: eficiencia (o sea, rapidez en la ejecución de los programas), potencia (permite explotar a fondo las posibilidades de la máquina) y portabilidad. Unix fue reescrito en C, lo cual supuso un gran éxito de este lenguaje, a partir del cual se convirtió en uno de los más extendidos..

    A C se le ha criticado que los programas suelen ser poco legibles y propensos a errores. Por contra, casi nadie le discute su potencia y su gran implantación, que a menudo lo convierten en la elección inevitable para proyectos colectivos.

    A partir de 1979, Bjarne Stroustrup, de AT&T, empezó a trabajar en un descendiente de C con soporte de orientación a objetos y otras mejoras, que sería conocido como C++ (la primera versión, interna de AT&T, data de 1983).

    COBOL

    COBOL (COmmon Business Oriented Language, lenguaje común orientado a los negocios) fue desarrollado en 1959 por un comité de CODASYL (Conference on Data Systems Languages). A pesar del tiempo transcurrido, sigue siendo bastante usado en el ámbito de la gestión empresarial. Como es habitual en los lenguajes que perduran después de mucho tiempo ha sufrido distintas modificaciones de acuerdo con las nuevas tendencias.

    COBOL es considerado un lenguaje de fácil aprendizaje. Los programas deben contener cuatro secciones: identificación, entorno, datos y procedimientos. Una herencia de sus lejanos orígenes es el uso de una convención basada en las columnas (por ejemplo, las sentencias deben estar entre las columnas 12 y 72), aunque versiones modernas pueden usarse de otra forma.

    Dialect

    Dialect es un lenguaje diseñado por la empresa Aristar, especializada en aplicaciones para centros médicos. Creado en principio como una versión de Basic, comparte con éste la facilidad de uso, pero es mucho más avanzado. Tiene tipos de alto nivel, como los frames o tablas con claves (como ABC) o arrays (listas heterogéneas y dinámicas como en Lisp) y soporta programación orientada a objetos. También tiene soporte para desarrollar aplicaciones GUI.

    Euphoria

    Euphoria es un lenguaje interpretado (en realidad, seudo compilado) de gran velocidad. Sus características más importantes son la sencillez de aprendizaje y facilidad de uso. Su sintaxis es parecida a Pascal, aunque es más flexible y simple. Utiliza ampliamente un tipo de datos parecido a la lista de Lisp o Logo, llamado secuencia (sequence). Euphoria es propiedad de la empresa canadiense RDS (Rapid Deployment Software).

    Forth

    Forth fue creado por Charles Moore en los años 60 desarrollando herramientas especializadas para varias aplicaciones. Fue formalizado como lenguaje para la automatización de telescopios cuando Moore trabajaba en el National Radio Astronomy Observatory, en 1970. Forth suele considerarse un lenguaje para aplicaciones científicas, sin alejarse mucho del campo en que se fraguó. Se considera especialmente adecuado para sistemas incrustados (en inglés, embedded).

    Forth cuenta entre sus ventajas el ser pequeño (ocupa poca memoria), rápido y extensible. Y entre sus puntos débiles, que tiene una sintaxis extraña que lo hace difícil de aprender y posiblemente de usar (aunque sobre esto hay, como es natural, distintas opiniones). Una característica importante es que es un lenguaje basado en el uso de una pila (stack). Por ejemplo, la sentencia equivalente a PRINT 5-3 (de BASIC) es 5 3 - ., donde 5 pone el número 5 en la cima de la pila, 3 pone el número 3 arriba del 5, - resta el elemento de la cima del que está debajo, elimina ambos operandos y pone en la pila el resultado, y . muestra el número de la cima y lo elimina.

    Como ejemplo de las posibilidades de Forth, lo siguiente es la definición de una función para calcular el máximo común divisor de dos números, basada en el algoritmo de Euclides

    Fortran

    FORTRAN (de FORmula TRANslation) fue creado por John Backus a mediados de la década de los 50 para la IBM, convirtiéndose en el primer lenguaje de programación de alto nivel. Fue pensado para aplicaciones matemáticas y científicas y sigue siendo muy usado en ese terreno.

    Los dos estándares principales son FORTRAN 77 y Fortran 90 (a partir de esta versión se empezó a usar el término con minúsculas). El estándar 90 incorporó novedades importantes, como notación de vectores, localización dinámica de memoria, tipos derivados y sobrecarga de operadores, la mayoría de las modernas estructuras de control, etc.

    Haskell

    Haskell es un lenguaje funcional de muy alto nivel, con un código conciso y claro. Pone énfasis en el qué más que en el cómo, permitiendo una programación rápida. No es adecuado para aplicaciones en las que es necesaria una gran velocidad de ejecución así como cuando hay poca disponibilidad de memoria o hace falta implementar algoritmos a bajo nivel.

    Icon

    Icon es un lenguaje de muy alto nivel, diseñado hace unos veinte años por Ralph E. Griswold y colaboradores en el Department of Computer Science de la Universidad de Arizona. Griswold ya tenía experiencia previa en el diseño de lenguajes de alto nivel, pues fue uno de los creadores de SNOBOL, y de él tomó algunas características para Icon.

    Icon destaca en el tratamiento de textos, permitiendo una programación rápida y concisa. Entre otros objetivos, puede ser usado para análisis y formateo de textos, inteligencia artificial, matemáticas simbólicas y programación de prototipos. Las últimas versiones incluyen también gráficos y facilidades GUI.

    Java

    Java es un lenguaje muy moderno (se presentó en 1995) desarrollado por la empresa Sun Microsistems al parecer su historia es bastante curiosa, iniciándose como un lenguaje para el control de electrodomésticos (con el nombre de Oak). Cuando el proyecto estaba prácticamente abandonado, Bill Joy, cofundador de Sun, viendo Internet como el terreno idóneo para competir con Microsoft, retomó este lenguaje, que con los cambios pertinentes se transformó en Java.

    Java es famoso por las applets, pequeñas aplicaciones gráficas que se insertan dentro de una página web. Uno de sus puntos fuertes es su capacidad multiplataforma, que permite que el mismo código seudo compilado se ejecute en cualquier sistema (cualquier sistema con soporte Java, claro).

    En cuanto al lenguaje en sí, es un descendiente de C++, aunque intenta corregir muchos de sus defectos. Está totalmente orientado a objetos e incluye numerosas bibliotecas estándar.

    Lisp

    Lisp fue diseñado a finales de los años 50 por el pionero de la Inteligencia Artificial John McCarthy. Aunque (a diferencia de otros lenguajes posteriores, como Prolog) no contiene mecanismos de inferencia intrínsecos, éstos son fáciles de implementar. La estructura de datos esencial en Lisp es la lista, una secuencia ordenada de elementos que pueden ser átomos (funciones, nombres o números) u otras listas. Las listas son esenciales en IA debido a su flexibilidad. Y desde luego son esenciales en Lisp, cuyo nombre deriva, precisamente de «List Processing».

    El Lisp original sólo tenía unas cuantas funciones de manipulación de listas con las cuales se debía ir construyendo otras funciones, cada vez de mayor complejidad. Las versiones actuales contienen muchas más funciones que facilitan la programación. Aunque existen muchas variantes, la llamada Commom Lisp sirve normalmente de referencia.

    Logo

    Logo es un lenguaje derivado de Lisp desarrollado a finales de los años 60 por Daniel Bobrow y Wallace Feurzeig, de Bolt, Beranek and Newman, Inc. y por Seymour Papert del Massachusetts Institute of Technology. Está concebido como un lenguaje apropiado para el aprendizaje y fue muy usado cuando se empezaron a introducir ordenadores en los centros de enseñanza. Su característica más conocida es el uso de los llamados «gráficos de tortuga», un sistema muy intuitivo de realizar gráficos.

    Además de su interés como lenguaje educativo, Logo es apropiado para una amplia variedad de aplicaciones de inteligencia artificial y simulaciones. Comparte con Lisp el ser interactivo e interpretado, basado en funciones y en listas y usar ampliamente la recursividad. Por contra, elimina el uso exagerado de paréntesis anidados propio de Lisp y es más fácil de aprender.

    Modula-2

    A finales de los setenta, Niklaus Wirth, autor de Pascal, diseñó un nuevo lenguaje de programación llamado Modula-2. Modula-2 tiene muchos puntos en común con Pascal y corrige algunos de sus defectos. Como su nombre sugiere está basado en la programación modular. Es adecuado para el aprendizaje de la programación y también para proyectos reales de cualquier tamaño.

    Modula-3

    Modula-3 es otro miembro de la familia de lenguajes derivados de Pascal, creado a finales de los ochenta por las compañías DEC (Digital Equipment Corporation) y Olivetti. Incorpora nuevas facilidades para el manejo de excepciones, programación concurrente, programación orientada a objetos y recolección automática de basura.

    Pascal

    Pascal fue creado inicialmente por Niklaus Wirth como un lenguaje para la enseñanza de la programación al final de los años 60. Es un descendiente de Algol y a su vez influyó mucho en otros lenguajes posteriores, como Ada. Destaca por la claridad del código y por promover «buenos hábitos» de programación.

    Pascal alcanzó una gran popularidad cuando la empresa Borland lanzó Turbo Pascal, un compilador para IBM-PC rápido y barato, que además introducía mejoras importantes al lenguaje. Su sucesor, también de gran éxito, es Delphi, una herramienta de programación visual basada en Object Pascal, una versión de Pascal con objetos.

    Perl

    Perl es un lenguaje de alto nivel escrito por Larry Wall y miles de voluntarios. La primera versión es del año 1988. Hereda características de lenguajes dispares, como AWK (del que puede considerarse sucesor), C o el shell de Unix. Aunque es muy potente y extenso, normalmente sólo hace falta usar una parte mínima de sus posibilidades, siendo fácil de aprender. Puede usarse para muchas tareas, siendo especialmente adecuado para el análisis y generación de textos y la administración de sistemas.

    Perl se ha hecho famoso por ser muy usado en Internet, ejecutándose continuamente en miles de servidores. Es fácil encontrar montones de recursos sobre este lenguaje, que hoy en día está casi tan de moda como Java.

    Prolog

    Prolog parte de los trabajos, a principios de los 70, de Robert A. Kowalski, de la Universidad de Edimburgo, y Alain Colmerauer, de la Universidad de Aix-Marseille. Forma parte de un conjunto de lenguajes llamados lógicos, ya que implementan una lógica formal. Se dice que Prolog es adecuado para buscar soluciones de problemas que no sabemos resolver, mientras que la mayoría de los demás lenguajes (llamados imperativos) son más útiles cuando conocemos de antemano la solución (que hay que «explicar» con detalle según la gramática del lenguaje).

    Prolog se extendió rápidamente por Europa y Estados Unidos, pero quizá lo que le dio más fama fue su elección en 1982 por parte de un programa japonés de investigación sobre ordenadores de quinta generación. Normalmente se considera un lenguaje ligado a la investigación sobre Inteligencia Artificial, aunque hoy en día se utiliza también en campos diversos, incluyendo finanzas, defensa o ingeniería.

    Scheme

    Scheme es un dialecto de Lisp creado a mediados de los 70 por Guy Lewis Steele Jr. y Gerald Jay Sussman, del MIT. Pone énfasis en la elegancia y simplicidad y es mucho más pequeño que la mayoría de versiones de Lisp. Es muy usado en ambientes académicos y de investigación.

    Smalltalk

    Smalltalk fue desarrollado en Xerox Parc (Palo Alto Research Center) bajo el impulso de Alan Kay durante la década de los 70. Inicialmente debía ser un lenguaje para un ordenador personal llamado Dynabook dirigido a todo tipo de usuarios, incluyendo niños. Debía ser, por tanto, un sistema con un entorno intuitivo y fácil de programar. Aunque el proyecto Dynabook nunca se completó, el lenguaje tomó vida propia y continuó su camino.

    Es poco conocida la gran importancia que tuvo este desarrollo en la evolución de la informática. De él parten muchas de las ideas de los modernos interfaces de usuario, como el uso de gráficos, ratón, ventanas y menús desplegables. Se puede leer más sobre esto al principio de este documento.

    Smalltalk es un lenguaje orientado a objetos puro (el mismo término, si no el concepto, fue inventado por Alan Kay) e incluye todos los conceptos claves, como clases, métodos, mensajes y herencia. Todo el programa es una cadena de mensajes enviados a objetos.

    SNOBOL

    SNOBOL fue diseñado en los Bell Laboratories por D. J. Farber, R. E. Griswold y F. P. Polensky a principios de los años 60. Se trata de un lenguaje de muy alto nivel orientado a la manipulación de cadenas de caracteres con rasgos muy avanzados. A pesar de que ejerció una influencia bastante importante (por ejemplo, en la formación del concepto de expresión regular), hoy en día apenas se utiliza y puede considerarse como un lenguaje histórico. R. E. Griswold desarrolló posteriormente Icon, que hereda algunas características de SNOBOL.

    Tendencias de cara al futuro

    Todos los lenguajes de programación actuales coinciden en una tendencia clara hacia las comunicaciones, ya que Internet es el objetivo claro de todas las empresas y usuarios particulares. Teniendo en cuenta que la programación esta orientada a dar servicio a estas dos áreas, que son las que más dinero mueven, podemos observar como cada vez los lenguajes de programación e Internet están más ligados.

    Al igual que los lenguajes de programación dependen de la demanda de empresas y usuarios, estos dependen de los servicios que les proporcione la programación. Con esto solo quiero indicar que se ha formado un circulo vicioso (aunque cabria decir beneficioso) que hace rodar a todo el conjunto en un avance continuo, ya que cuando uno de los elementos queda “atascado” son los otros los que tiran de el con fuerza.

    La entrada de los usuarios en este “grupo” ha venido dada por la implantación masiva de los ordenadores personales en los domicilios particulares. Hace unos años (no muchos, como hemos podido ver en la Historia de los ordenadores), la demanda de programación era casi exclusiva de empresas, gobierno y universidades, puesto que los ordenadores eran muy caros y los programas eran inaccesibles. Pero esto en nuestros días ha cambiado, y mucho, cualquier persona tiene acceso a un ordenador, y la gran mayoría lo tiene en propiedad. Quiere esto decir que la programación, y con ella los lenguajes de programación, debe estar atenta a las necesidades de este área de consumidores, que aunque de uno en uno no supongan gran demanda, en grupo si.

    Por lo tanto, tenemos que reconocer que ha habido mucha evolución el los lenguajes de programación desde su concepción hasta nuestros días, pero lo que es innegable es que esta evolución no ha terminado sino que continua, y yo aun diría más, cada vez se acelera más.

    Bibliografía

    • Apuntes tomados en la asignatura de Informática Básica.

    Profesor: Jesús Mainar.

    • Apuntes del curso de apoyo de Informática Básica.

    Profesor: Luis López Ortiz.

    • Internet:

    Glosario