SlideShare una empresa de Scribd logo
1 de 20
Descargar para leer sin conexión
Curso: PS263
Lenguajes de programación

HISTORIA Y TIPOS DE LENGUAJE DE
PROGRAMACIÓN

1. Lenguajes de programación: una visión general Lenguajes de

programación: una visión general
Hay, al menos, dos formas fundamentales desde las que pueden verse o
clasificarse los lenguajes de programación: por su nivel y por sus principales
aplicaciones.

Además, estas visiones están condicionadas por la evolución histórica por la que
ha transcurrido el lenguaje. Además, hay cuatro niveles distintos de lenguajes de
Programación:
Lenguajes declarativos
Lenguajes de alto nivel
Lenguajes ensambladores
Lenguajes máquina
Los lenguajes declarativos son los más parecidos al castellano o inglés en su
potencia expresiva y funcionalidad y están en el nivel más alto respecto a los
otros. Son fundamentalmente lenguajes de órdenes, dominados por sentencias
que expresan “lo que hay que hacer” en vez de “cómo hacerlo”. Ejemplos de estos
lenguajes son los lenguajes estadísticos como SAS y SPSS y los lenguajes de
búsqueda en bases de datos, como NATURAL e IMS. Estos lenguajes se
desarrollaron con la idea de que los profesionales pudieran asimilar más
rápidamente el lenguaje y usarlo en su trabajo, sin necesidad de programadores o
prácticas de programación.

Los lenguajes de alto nivel son los más utilizados como lenguajes de
programación.
Aunque no son fundamentalmente declarativos, estos lenguajes permiten que los
algoritmos se expresen en un nivel y estilo de escritura fácilmente legible y
comprensible por otros programadores. Además, los lenguajes de alto nivel suelen
tener la característica de “transportabilidad”. Es decir, están implementados sobre
varias máquinas, de forma que un programa puede ser fácilmente “transportado”
(transferido) de una máquina a otra sin una revisión sustancial. En este sentido, se
llaman “independientes de la máquina”. Ejemplos de estos lenguajes de alto nivel
son PASCAL, APL y FORTRAN (lenguajes de programación utilizados para
aplicaciones científicas), 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 programación
de sistemas) y PL/I (para aplicaciones de propósito general). Todos estos
lenguajes de alto nivel los desarrollaremos más detenidamente en otro apartado
de la presentación.

Los lenguajes ensambladores y los lenguajes máquina son dependientes de la
máquina. Cada tipo de máquina tiene su propio lenguaje máquina distinto y su
lenguaje ensamblador asociado. El lenguaje ensamblador es simplemente una
representación simbólica del lenguaje máquina asociado, lo cual permite una
programación menos tediosa que con el anterior. Sin embargo, es necesario un
conocimiento de la arquitectura mecánica subyacente para realizar una
programación efectiva en cualquiera de estos niveles de lenguajes.
2. Perspectiva histórica de los lenguajes de programación
El programador, diseñador e implementador de un lenguaje de programación
deben comprender la evolución histórica para poder apreciar por qué presentan
características diferentes. La misma historia nos permite ver la evolución de
familias de lenguajes de programación, ver la influencia que ejercen las
arquitecturas y aplicaciones de las computadoras sobre el diseño de lenguajes y
evitar futuros defectos de diseño aprendiendo las lecciones del pasado. En el
siguiente diagrama que presentamos resumimos algunos de los más importantes
avances en el diseño de lenguajes de alto nivel desde sus comienzos hasta finales
de la década de los 80.

Este diagrama representa sólo un pequeña muestra de todos los lenguajes de
programación. Existen en uso, hoy en día, más de 150 lenguajes de programación
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 presentación los hemos elegido debido a su mayor
influencia y amplio uso entre los programadores, así como por sus distintivas
características de diseño e implementación.

El diagrama también contiene las líneas que relacionan a varios lenguajes. Las
líneas continuas muestran ascendencia directa, mientras que las líneas
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 diseño
de PL/I.

Varios lenguajes representados en el diagrama están prefijados por las letras
ANS. Con esto queremos decir que el American National Standards Institute ha
adoptado esa versión del lenguaje como el estándar nacional.
Finalmente, creemos importante denotar algunas influencias anteriores a 1.960 en
el diseño de los lenguajes de programación. Incluimos como importantes la
notación algebraica ordinaria, por ejemplo, que influyó fuertemente en el diseño de
FORTRAN y ALGOL; el inglés como principal influencia en el desarrollo de
COBOL; el lambda cálculo de Church, que dio los fundamentos de la notación
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 evolución de la máquina más
antigua de Turing, es el modelo básico de la mayoría de los diseños de
computadoras hasta hoy en día. Estas máquinas no sólo influyeron en los
primeros lenguajes sino que también suministraron el esqueleto operacional sobre
el que evolucionó la mayoría de la programación de sistemas.

3. Características 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 resolución de problemas al menos para el área
de aplicación del lenguaje
IMPLEMENTABLE: debe ser posible ejecutar todo programa bien formado
en dicho lenguaje; ejemplos de no implementables: notación matemática,
lenguaje natural.
EFICIENTE: depende de la arquitectura de computadora

Los lenguajes de programación buscan hacer cada vez mas expresivo la
simplicidad y eficiencia de los lenguajes
Ejemplo:
Ada y PL/1 fueron diseñados por un grupo grande de personas.
Pascal fue diseñado por una sola persona: Niklaus Wirth
Curso: PS263
Lenguajes de programación

Genealogía de algunos lenguajes de programación
1950
FORTRAN
Algol-60

1960

LISP
COBOL

PL/I
Simula

Algol-68
Pascal

1970

C

Smalltalk
1980

Prolog
ML

Ada
Miranda
Java

Orientados a
objetos

C++

Imperativos

Funcionales

Lógicos
4. Margo de referencia evolución de los lenguajes de programación
AÑO LENGUAJE

INVENTOR

DESCRIPCION

1900s BINARIO

Bool

primer lenguaje

1946 Plankalkul
1949 Short Code
1950 ASM (ensamblador)

Konrad Zuse

creado para jugar al ajedrez
lenguaje traducido a mano
lenguaje ensamblador

1951 A-0

Grace Hopper

fue el primer compilador

1952 AUTOCODE

Alick E. Glennie

compilador muy rudimentario

1956 FORTRAN

IBM

1956 COBOL

sistema de Traducción de Formulas
matemáticas
Compilador

1958 ALGOL 58
1960 LISP
1961 FORTRAN IV

IBM

Interprete orientado a la Inteligencia
Artificial
sistema de Traducción de Formulas
matemáticas

1961 COBOL 61 Extendido
1960 ALGOL 60 Revisado
1964 PASCAL
1964 BASIC

Niklaus Wirth
Universidad de
Dartmouth
(california)

programación estructurada
Beginners All Purpose Symbolic
Instruction Code

1965 SNOBOL
1965 APL

solo anotación

1965 COBOL 65
1966 PL/I
1966 FORTRAN 66

IBM

sistema de Traducción de Formulas
matemáticas

1967 SIMULA 67
1968 ALGOL 68
1968 SNOBOL4
1970s GW-BASIC

antiguo y clásico BASIC

1970 APL/360
1972 SMALLTALK
1972 C

Centro de
Investigación de
pequeño y rápido
Xerox en Palo
Alto
Laboratorios Bell lenguaje con tipos

1974 COBOL 74
1975 PL /I

Lenguaje sencillo
1977 FORTRAN 77

IBM

1980s SMALLTALK/V

Digitalk

1980 C con clases

Laboratorios Bell
Ministerio
Japonés de
Comercio
Internacional e
Industria (MITI)
Ministerio de
Defensa de los
EE.UU
AT&T Bell
Laboratories
(Bjarne
Stroustrup)

1981 PROLOG

1982 ADA

1984 C++
1985 CLIPPER

sistema de Traducción de Formulas
matemáticas
pequeño y rápido
lenguaje con clases
Lenguaje estándar para la Inteligencia
Artificial

lenguaje muy seguro

compilador
compilador para bases de datos

1985 QuickBASIC 1.0

Microsoft®

compilador de BASIC

1986 QuickBASIC 2.0

Microsoft®

soporte de tarjeta gráfica EGA

1987 QuickBASIC 3.0

Microsoft®

43 lineas con la tarjeta EGA

1987 QuickBASIC 4.0
CLIPPER SUMMER
1987
'87
1988 QuickBASIC 4.5

Microsoft®

tarjetas Hercules, VGA

Microsoft®

tarjeta SVGA

1989 QuickBASIC 7.1

Microsoft®

ultima versión de QuickBASIC

compilador para bases de datos

1989 ASIC v5.0

interprete tipo QBASIC shareware

1990s VISUAL C++
1990s VISUAL BASICScript

Microsoft®

1990 HTML

1990s WML

Tim Berners-Lee para internet
C. M. Sperbergpara internet
McQueen
Charles F.
para internet
Goldfarb
para internet

1990s ASP

Microsoft®

1993 XML
1993 SGML

1990s PHP
1995 JAVA

para internet
para internet

Sun
Microsystems

1995 CLIPPER 5.01
1995 GNAT ADA95

lenguaje de script

para internet y propósito general
compilador para bases de datos

Ministerio de
Defensa de los
EE.UU

lenguaje muy seguro
1995 FORTRAN 95

IBM

1991 VISUAL BASIC 1.0

Microsoft®

1992 VISUAL BASIC 2.0

Microsoft®

1993 VISUAL BASIC 3.0

Microsoft®

1994 VISUAL BASIC 4.0

Microsoft®

1995 VISUAL BASIC 5.0

Microsoft®

1998 VISUAL BASIC 6.0

sistema de Traducción de Formulas
matemáticas

Microsoft®

1990s C#
2001 VISUAL BASIC .NET

Microsoft®

La evolución de Visual Basic

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

5. Sintaxis y semántica

La sintaxis se refiere a la forma de los programas; cómo los diferentes
componentes del lenguaje son agregados para formar programas.
La semántica se refiere al significado de los programas; cómo se comportan
cuando son ejecutados.

La sintaxis afecta cómo los programas son escritos por los programadores,
cómo son leídos por otros programadores

La semántica determina cómo los programas son compuestos por los
programadores, cómo son comprendidos por otros programadores, y cómo son
interpretados por el computador

6.. Lenguajes programación a través de la historia

FORTRAN: :introdujo las expresiones simbólicas, por los subprogramas con
parámetros.

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 años más tarde,
apareció FORTRAN II. Entre 1.958 y 1.963, FORTRAN se implementó sobre
varias computadoras. FORTRAN III fue desarrollado durante este período, pero
debido a que contenía demasiadas características dependientes de la máquina,
nunca se implementó para uso público. 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 añadieron extensiones y se revisaron ambas
versiones, apareciendo así el FORTRAN 77, que mantenía la compatibilidad
para los programas escritos antes con versiones anteriores al nuevo estándar.

COBOL (Common Bussiness Oriented Language) introdujo a finales de 1.950:
el concepto de descripción de datos introduce la idea de un lenguaje con un
área de aplicación no numérica (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 descripción de tal lenguaje, cuya revisión, en
1.960, empezó a conocerse como COBOL-60. Numerosas extensiones fueron
formando nuevas versiones de este lenguaje COBOL inicial, hasta
aprobarse un estándar en 1.974 por la ANS (American National Standard).

PASCAL. La historia de Pascal estaría incompleta sin trazar primero la historia
del ALGOL, del cual Pascal es una evolución. La historia del ALGOL comenzó
en 1.958, cuando un comité de representantes del GAMM (una organización
europea de científicos en informática) 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 más tarde como ALGOL
58, atrajo mucho interés y fue implementado sobre varias computadoras. Los
representantes europeos y estadounidenses se reunieron de nuevo en París en
1.960 para considerar una versión completamente nueva de este lenguaje,
conocida como ALGOL 60. Durante este período, ALGOL fue extremadamente
popular entre los científicos informáticos, y su definición rigurosa marcó nuevos
estándares para el diseño e implementación de lenguajes. ALGOL se convirtió
en un lenguaje universal para la definición 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 propósito general con aplicaciones en un
amplio rango de interés, aunque rápidamente se reconoció como un lenguaje
demasiado ambicioso para ser práctico. De esta manera, Wirth diseñó un
sucesor más reducido del ALGOL 60 y lo llamó PASCAL. Su primer compilador
se implementó en 1.970 y una versión revisada fue definida e implementada en
1.973. PASCAL fue claramente diseñado para servir como un lenguaje para
enseñar diseño de algoritmos y metodología de programación. 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,
gestión dinámica de memoria y estructuras de control- PASCAL también fue
cuestionado por sus deficiencias, y por ello se propusieron sucesores
importantes como algunos de los que describimos a continuación.
PL/I. Es un lenguaje de propósito general, diseñado para soportar aplicaciones
científicas, de procesamiento de datos, de procesamiento de textos y de
programación de sistemas a muy alto nivel. La primera versión del PL/I fue
presentada por el Comité del proyecto SHARE FORTRAN. Esta versión 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, después de haber
mejorado la eficiencia de sus compiladores, fue publicado un borrador con una
propuesta de un PL/I estándar, aceptado en 1.976. Alrededor de 1.981
apareció un refinamiento de PL/I estándar, llamado SUBSET/G, que
preservaba la mayoría de las características útiles del PL/I, y suprimía las
generalizaciones de poco uso y difíciles de implementar.

SNOBOL. Fue diseñado en 1.962 por un grupo de investigación de los
laboratorios Bell como una ayuda a sus propias aplicaciones sobre
manipulación simbólica de fórmulas. Una versión mejorada y extendida,
llamada SNOBOL3, apareció en 1.966 y fue implementada sobre distintas
máquinas. Un potencial sucesor de SNOBOL4, que apareció en 1.969, se
conoce como ICON. Aunque contiene muchas de las características de
procesamiento de cadenas del SNOBOL, la sintaxis de ICON es mucho más
parecida a la de los lenguajes convencionales como PASCAL o C, lenguaje de
programación cuya evolución histórica explicaremos más 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
orientación matemática. IBM trató de desarrollar APL durante los siguientes
siete años, pero nunca llegó a estandarizarse, ya que requería un conjunto
único de caracteres con un hardware especial, distinto del que soporta el
estándar ASCII.
Como resultado, APL no ha sido implementado ampliamente sobre las distintas
máquinas.
LISP. (List Processor) El lenguaje LISP fue desarrollado por John McCarthy
durante el periodo de 1.956 a 1.958, implementándose por primera vez entre
1.959 y 1.962. El trabajo de su autor consistía principalmente en representar
información 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 cálculo, tal y
como describimos anteriormente con ayuda del diagrama de evolución. 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 teóricos en
el cálculo de proposiciones. Representaba una desviación tajante de las ideas
tradicionales sobre comportamiento de programas, las cuales se basaban
todas en las arquitecturas de máquina de von Neumann. PROLOG fue
desarrollado a principios de los años 70 por Philippe Roussel. Su primer
intérprete se implementó en 1.972. Desde entonces, PROLOG no cambió
desde su concepción, ni se hizo ningún esfuerzo por estandarizarlo.

•

Ejemplo de Prolog:
Se definen una serie de hechos (persona) sobre varias personas
Se define la relación: es-hermana
Se plantea una consulta : para determinar de quién 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 versión ampliada, C++, la explicaremos más
detenidamente, justo porque son los lenguajes de programación que nosotros
utilizaremos durante el curso, además de su enorme importancia hoy en día en
todos los ámbitos de la computación. 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 características 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 número entero o de un número
real. El lenguaje C fue derivado de B por Dennis Ritchie de los Laboratorios
Bell, implantándose por primera vez en 1.972. C al inicio se popularizó como
lenguaje de desarrollo del sistema operativo UNIX. Hoy día, virtualmente todos
los sistemas están 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 décadas. Es posible incluso escribir programas en C que sean
portátiles hacia la mayor parte de las computadoras. Hacia finales de los 70, C
había evolucionado a lo que hoy se conoce como C “tradicional”. La expansión
rápida 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 códigos que
pudieran funcionar con distintas máquinas. Así se vieron ante la necesidad de
una versión estándar de C, que se aprobó en 1.989.
El documento se conoce como ANSI / ISO 9899: 1.990. Más tarde, apareció
C++, una mejoría sobre muchas de las características de C, y que proporciona
capacidades de programación orientada a objetos que promete mucho para
incrementar la productividad, calidad y reutilización del software. Los
diseñadores de C y los responsables de sus primeras puestas en práctica
nunca anticiparon que este lenguaje resultaría en un fenómeno como éste.
Cuando un lenguaje de programación se torna tan arraigado como C, nuevas
necesidades demandan que el lenguaje evolucione, en lugar de que sólo sea
reemplazado por un nuevo lenguaje, como ya había 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 versión 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 años noventa, la mayor parte de los entornos de programación
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 Tecnológico de Zurich, como dijimos anteriormente.
MODULA-2 nació, de una forma experimental, en 1.975 cuando se hizo
necesario disponer de un lenguaje de programación de propósitos generales y
que, además, fuera lo suficientemente operativo y cualificado para abordar
problemas de multiprogramación, diseño de sistemas, software de base,
traductores y compiladores, etc. Como resultado, se realiza la primera
implementación de MODULA-2 al proyecto Lilith del ETH de Zurich, con el
objetivo de diseñar 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 programación a bajo nivel o cercana a la estructura de la
máquina.

DELPHI. En el año 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 ejecución del programa no es secuencial, sino que
depende de los eventos que suceden durante la ejecución de la aplicación.
Delphi es una herramienta de Desarrollo Rápido de Aplicaciones (RAD). Los
componentes que incorpora facilitan el acceso a bases de datos, comunicación
a través 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 automáticamente las listas de parámetros de procedimientos, métodos
y eventos.
En el año 2001 Borland lanzo al mercado la versión de Delphi 6.0 que funciona
bajo Windows y es compatible con todas las versiones anteriores. Junto con
esta versión se introdujo en el mercado la primera versión Kylix, una versión de
Delphi que funciona bajo Linux. La ultima versión 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 día es Java, sus creadores buscaban un lenguaje para programar
los controladores utilizados en la electrónica de consumo. Existen
infinidad de tipos de CPU distintas, y generar código para cada una de
ellas requiere un compilador especial y el desarrollo de compiladores
sabemos que es caro. Después de dieciocho meses de desarrollo
aparece la primera versión de un lenguaje llamado OAK que más tarde
cambiaría de nombre para convertirse en Java.
La versión de 1992 está ampliada, cambiada y madurada, y a principios
de 1996 sale a la luz la primera versión de Java. Los inicios son difíciles,
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 cambiaría debido a una
tecnología

completamente

electrodomésticos: Internet.

ajena

a

los

controladores

de
Mientras Java se estaba desarrollando, el mundo de las comunicaciones
crecía a una velocidad de vértigo, 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
fenómeno Internet en marcha, los desarrolladores de Java dan un giro en
su desarrollo al darse cuenta de que el problema de la portabilidad de
código de los controladores es el mismo que se produce en Internet, una
red heterogénea y que crece sin parar, y dirigen sus esfuerzos hacia allí.
En 1995 se libera una versión de HotJava, un navegador escrito
totalmente en Java y es en ese mismo año cuando se produce el anuncio
por parte de Netscape de que su navegador sería compatible con Java.
Desde ahí otras grandes empresas se unen y Java se expande
rápidamente. No obstante, las primeras versiones de Java fueron
incompletas, lentas y con errores. Han tenido que pasar varios años 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
tecnologías surgen y se desarrollan a gran velocidad haciendo de Java
un lenguaje cada día mejor y que cubre prácticamente todas las áreas de
la computación y comunicaciones, desde teléfonos móviles hasta
servidores de aplicaciones.
6.. Generalidades Lenguajes programación
Es posible identificar las siguientes dos tendencias en el desarrollo de los
lenguajes de programación:

La tendencia de los lenguajes programación 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 programación implica :< Valores
Abstracción
Almacenamiento
Encapsulamiento
Generics
Herencia
Polimorfismo
Concurrencia
Regularidad
Es mejor proveer un conjunto básico de facilidades que puedan ser refinadas
usando otros aspectos del lenguaje (tipos de datos abstractos, objetos).
Una forma sencilla de obtener máximo poder es permitiendo la combinación de
un número 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>

función ( <tipo de los parámetros> )

b. Abstracción:
Permitir la abstracción sobre cada clase semánticamente significativa
Expresiones
Comandos

funciones
procedimientos

Declaraciones
Tipos

generics

tipos parametrizados

c. Correspondencia :
Para cada forma de declaración debe existir su correspondiente mecanismo de
paso de parámetros y viceversa.
------------------d. Calificación
Incluir un bloque en cada clase sintáctica que es semánticamente 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, fácil y
rápido 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 módulos.
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 enviaría 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 número
de decimales usados en aritmética de punto fijo, esto obliga a
todos los programadores a conocer las reglas de aritmética 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 función entera usada
en un contexto real no produce una conversión (que obligue a conocer cómo lo
hace), sino que produce un mensaje de error en términos de no poder localizar
una función sobrecargada.

Un lenguaje no debe tratar de anticipar todas las facilidades
requeridas.
Un lenguaje debe permitir la identificación e implementación de
las facilidades requeridas.

Lo anterior es facilitado por la abstracción: expresiones, comandos, tipos
funciones, procedimientos, clases.

La sintaxis debe ser transparente: debe ser obvio determinar a partir de la
forma sintáctica a cuál concepto semántico se está haciendo referencia.
Las formas sintácticas y los conceptos semánticos deben corresponder uno a
uno.
Contraejemplo
La frase “var I: T” en Pascal puede ser la declaración de una nueva variable,
o la especificación de un parámetro variable.
Una forma sintáctica 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
función, retornada como resultado de una función
“ Cualquier entidad que existe durante un cómputo”

PascalValores primitivos (valores de verdad, caracteres, valores enumerados,
enteros,

reales)Valores

compuestos

(registros,

arreglos,

conjuntos,
archivos)PunterosReferencias

a

variablesProcedimientos

y

funciones

(abstracciones

Bibliografía consultada:

Allen B. Tucker, “Lenguajes de programación” Editorial McGraw Hill 2003
H. M Deitel “Cómo programar en C y C++” ,Editorial Prentice Hall, 2000

Más contenido relacionado

La actualidad más candente

Diapositivas lenguaje de programación gladys
Diapositivas lenguaje de programación gladysDiapositivas lenguaje de programación gladys
Diapositivas lenguaje de programación gladysgladys
 
5 características del lenguaje cobol
5 características del lenguaje cobol5 características del lenguaje cobol
5 características del lenguaje cobolGili Freire
 
Evolución lenguajes de programacón
Evolución lenguajes de programacónEvolución lenguajes de programacón
Evolución lenguajes de programacónAngel Alonso
 
Evolucion historica del lenguaje de programacion
Evolucion historica del lenguaje de programacionEvolucion historica del lenguaje de programacion
Evolucion historica del lenguaje de programacionSergio Maidana
 
Evolución y clasificación de los lenguajes de programación
Evolución y clasificación de los lenguajes de programaciónEvolución y clasificación de los lenguajes de programación
Evolución y clasificación de los lenguajes de programaciónjuanbryanc
 
Lenguaje de programacion presentacion.
Lenguaje de programacion presentacion.Lenguaje de programacion presentacion.
Lenguaje de programacion presentacion.Fj Lezama
 
Historia de los lenguajes de programacion
Historia de los lenguajes de programacionHistoria de los lenguajes de programacion
Historia de los lenguajes de programacionJANIIER
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacionKarol
 
Lenguajes de Programacion según su Generación
Lenguajes de Programacion según su GeneraciónLenguajes de Programacion según su Generación
Lenguajes de Programacion según su GeneraciónGuissela Guerrero
 
Lenguajes de programación.ppt
Lenguajes de programación.pptLenguajes de programación.ppt
Lenguajes de programación.pptEliezer Cordova
 
TIPOS DE LENGUAJES DE PROGRAMACION
TIPOS DE LENGUAJES DE PROGRAMACIONTIPOS DE LENGUAJES DE PROGRAMACION
TIPOS DE LENGUAJES DE PROGRAMACIONPEDRO Borja
 
Clasificación de lenguajes
Clasificación de lenguajesClasificación de lenguajes
Clasificación de lenguajesmafer3388
 
Clasificación de los lenguajes de programación
Clasificación de los lenguajes de programaciónClasificación de los lenguajes de programación
Clasificación de los lenguajes de programaciónd3m3nt3
 
Clase lenguaje de programacion
Clase lenguaje de programacionClase lenguaje de programacion
Clase lenguaje de programacionLuis Lara
 
Lenguajes de programación
Lenguajes de programaciónLenguajes de programación
Lenguajes de programaciónanderson03230812
 
Cronologia de los Lenguajes de Programación
Cronologia de los Lenguajes de ProgramaciónCronologia de los Lenguajes de Programación
Cronologia de los Lenguajes de ProgramaciónIris Coronado
 

La actualidad más candente (20)

Diapositivas lenguaje de programación gladys
Diapositivas lenguaje de programación gladysDiapositivas lenguaje de programación gladys
Diapositivas lenguaje de programación gladys
 
5 características del lenguaje cobol
5 características del lenguaje cobol5 características del lenguaje cobol
5 características del lenguaje cobol
 
Evolución lenguajes de programacón
Evolución lenguajes de programacónEvolución lenguajes de programacón
Evolución lenguajes de programacón
 
Evolucion historica del lenguaje de programacion
Evolucion historica del lenguaje de programacionEvolucion historica del lenguaje de programacion
Evolucion historica del lenguaje de programacion
 
Evolución y clasificación de los lenguajes de programación
Evolución y clasificación de los lenguajes de programaciónEvolución y clasificación de los lenguajes de programación
Evolución y clasificación de los lenguajes de programación
 
Lenguaje de programacion presentacion.
Lenguaje de programacion presentacion.Lenguaje de programacion presentacion.
Lenguaje de programacion presentacion.
 
Historia de los lenguajes de programacion
Historia de los lenguajes de programacionHistoria de los lenguajes de programacion
Historia de los lenguajes de programacion
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacion
 
Lenguajes de Programacion según su Generación
Lenguajes de Programacion según su GeneraciónLenguajes de Programacion según su Generación
Lenguajes de Programacion según su Generación
 
Lenguajes de programación.ppt
Lenguajes de programación.pptLenguajes de programación.ppt
Lenguajes de programación.ppt
 
TIPOS DE LENGUAJES DE PROGRAMACION
TIPOS DE LENGUAJES DE PROGRAMACIONTIPOS DE LENGUAJES DE PROGRAMACION
TIPOS DE LENGUAJES DE PROGRAMACION
 
Clasificación de lenguajes
Clasificación de lenguajesClasificación de lenguajes
Clasificación de lenguajes
 
lenguajes de programacion
lenguajes de programacionlenguajes de programacion
lenguajes de programacion
 
Clasificación de los lenguajes de programación
Clasificación de los lenguajes de programaciónClasificación de los lenguajes de programación
Clasificación de los lenguajes de programación
 
Lenguaje de programacion
Lenguaje de programacionLenguaje de programacion
Lenguaje de programacion
 
Clase lenguaje de programacion
Clase lenguaje de programacionClase lenguaje de programacion
Clase lenguaje de programacion
 
Exposición de Lenguajes de Programación
Exposición de Lenguajes de ProgramaciónExposición de Lenguajes de Programación
Exposición de Lenguajes de Programación
 
Lenguaje de programacion
Lenguaje de programacionLenguaje de programacion
Lenguaje de programacion
 
Lenguajes de programación
Lenguajes de programaciónLenguajes de programación
Lenguajes de programación
 
Cronologia de los Lenguajes de Programación
Cronologia de los Lenguajes de ProgramaciónCronologia de los Lenguajes de Programación
Cronologia de los Lenguajes de Programación
 

Destacado (20)

Decalogo navideño
Decalogo navideñoDecalogo navideño
Decalogo navideño
 
Entremes marzo
Entremes marzo Entremes marzo
Entremes marzo
 
20572
2057220572
20572
 
Primer Gobierno Patrio
Primer Gobierno PatrioPrimer Gobierno Patrio
Primer Gobierno Patrio
 
Cerveza
CervezaCerveza
Cerveza
 
La televisión
La televisiónLa televisión
La televisión
 
Presentacion blog
Presentacion blogPresentacion blog
Presentacion blog
 
Presentacionrealnetwork
PresentacionrealnetworkPresentacionrealnetwork
Presentacionrealnetwork
 
Copia de presentación2
Copia de presentación2Copia de presentación2
Copia de presentación2
 
Los cuadrilateros
Los cuadrilaterosLos cuadrilateros
Los cuadrilateros
 
Trabajo de grupo: EL JUEGO
Trabajo de grupo: EL JUEGOTrabajo de grupo: EL JUEGO
Trabajo de grupo: EL JUEGO
 
Schmuck Neu 17.10.2014.pdf
Schmuck Neu 17.10.2014.pdfSchmuck Neu 17.10.2014.pdf
Schmuck Neu 17.10.2014.pdf
 
Relación con los medios
Relación con los mediosRelación con los medios
Relación con los medios
 
El origen del hombre
El origen del hombreEl origen del hombre
El origen del hombre
 
Toledo la leyenda del beso
Toledo la leyenda del besoToledo la leyenda del beso
Toledo la leyenda del beso
 
Análisis funcional
Análisis funcionalAnálisis funcional
Análisis funcional
 
Watermarked10
Watermarked10Watermarked10
Watermarked10
 
Learning Management System
Learning Management SystemLearning Management System
Learning Management System
 
Innovacion tecnológica
Innovacion  tecnológicaInnovacion  tecnológica
Innovacion tecnológica
 
Schmuck.pdf
Schmuck.pdfSchmuck.pdf
Schmuck.pdf
 

Similar a Lenguajes programación historia tipos

Marina aguilar historiay_tiposdelenguajesdeprogramacion
Marina aguilar historiay_tiposdelenguajesdeprogramacionMarina aguilar historiay_tiposdelenguajesdeprogramacion
Marina aguilar historiay_tiposdelenguajesdeprogramacionJesus Cocom
 
Evolucion de los lenguajes de programación
Evolucion de los lenguajes de programaciónEvolucion de los lenguajes de programación
Evolucion de los lenguajes de programaciónfercho-nava
 
Lenguaje de programacion
Lenguaje de programacionLenguaje de programacion
Lenguaje de programacionCarenPC
 
Clasificasion de los lenguajes
Clasificasion de los lenguajesClasificasion de los lenguajes
Clasificasion de los lenguajesagustinbilmer
 
Tipos y caracteristicas de lenguajes de programacion. ( adolfo elias).
Tipos y caracteristicas de lenguajes de programacion. ( adolfo elias).Tipos y caracteristicas de lenguajes de programacion. ( adolfo elias).
Tipos y caracteristicas de lenguajes de programacion. ( adolfo elias).Alejandro Perez
 
Lenguajes De Programacion
Lenguajes De ProgramacionLenguajes De Programacion
Lenguajes De ProgramacionROSA859
 
Lenguajes de alto_nivel
Lenguajes de alto_nivelLenguajes de alto_nivel
Lenguajes de alto_nivelANALI GOMEZ
 
LENGUAJES DE PROGRAMACIÓN
LENGUAJES DE PROGRAMACIÓN LENGUAJES DE PROGRAMACIÓN
LENGUAJES DE PROGRAMACIÓN Esteban Torres
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacionJANIIER
 
Los lenguajes de programación son herramientas que nos permiten crear program...
Los lenguajes de programación son herramientas que nos permiten crear program...Los lenguajes de programación son herramientas que nos permiten crear program...
Los lenguajes de programación son herramientas que nos permiten crear program...edwin6886
 
Organizacion de sistemas
Organizacion de sistemasOrganizacion de sistemas
Organizacion de sistemaskarinaportilla
 
Lenguajes de programacion22
Lenguajes de programacion22Lenguajes de programacion22
Lenguajes de programacion22soto0106
 
Lenguaje de programación
Lenguaje de programaciónLenguaje de programación
Lenguaje de programaciónmarco
 
LENGUAJES DE PROGRAMACION
LENGUAJES DE PROGRAMACIONLENGUAJES DE PROGRAMACION
LENGUAJES DE PROGRAMACIONjose mendoza
 
Lenguaje de programacion
Lenguaje de programacionLenguaje de programacion
Lenguaje de programacionElder Giron
 

Similar a Lenguajes programación historia tipos (20)

Marina aguilar historiay_tiposdelenguajesdeprogramacion
Marina aguilar historiay_tiposdelenguajesdeprogramacionMarina aguilar historiay_tiposdelenguajesdeprogramacion
Marina aguilar historiay_tiposdelenguajesdeprogramacion
 
Evolucion de los lenguajes de programación
Evolucion de los lenguajes de programaciónEvolucion de los lenguajes de programación
Evolucion de los lenguajes de programación
 
Lenguaje de programacion
Lenguaje de programacionLenguaje de programacion
Lenguaje de programacion
 
Clasificasion de los lenguajes
Clasificasion de los lenguajesClasificasion de los lenguajes
Clasificasion de los lenguajes
 
Lenguajes
LenguajesLenguajes
Lenguajes
 
Lenguajes
LenguajesLenguajes
Lenguajes
 
Tipos y caracteristicas de lenguajes de programacion. ( adolfo elias).
Tipos y caracteristicas de lenguajes de programacion. ( adolfo elias).Tipos y caracteristicas de lenguajes de programacion. ( adolfo elias).
Tipos y caracteristicas de lenguajes de programacion. ( adolfo elias).
 
Lenguajes De Programacion
Lenguajes De ProgramacionLenguajes De Programacion
Lenguajes De Programacion
 
Lenguajes de alto_nivel
Lenguajes de alto_nivelLenguajes de alto_nivel
Lenguajes de alto_nivel
 
Lenguaje de programación
Lenguaje de programaciónLenguaje de programación
Lenguaje de programación
 
LENGUAJES DE PROGRAMACIÓN
LENGUAJES DE PROGRAMACIÓN LENGUAJES DE PROGRAMACIÓN
LENGUAJES DE PROGRAMACIÓN
 
Tipos de lenguaje
Tipos de lenguajeTipos de lenguaje
Tipos de lenguaje
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacion
 
Los lenguajes de programación son herramientas que nos permiten crear program...
Los lenguajes de programación son herramientas que nos permiten crear program...Los lenguajes de programación son herramientas que nos permiten crear program...
Los lenguajes de programación son herramientas que nos permiten crear program...
 
Organizacion de sistemas
Organizacion de sistemasOrganizacion de sistemas
Organizacion de sistemas
 
Lenguajes de programacion22
Lenguajes de programacion22Lenguajes de programacion22
Lenguajes de programacion22
 
Lenguaje de programación
Lenguaje de programaciónLenguaje de programación
Lenguaje de programación
 
Libro numero 2
Libro numero 2Libro numero 2
Libro numero 2
 
LENGUAJES DE PROGRAMACION
LENGUAJES DE PROGRAMACIONLENGUAJES DE PROGRAMACION
LENGUAJES DE PROGRAMACION
 
Lenguaje de programacion
Lenguaje de programacionLenguaje de programacion
Lenguaje de programacion
 

Último

Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointValerioIvanDePazLoja
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024u20211198540
 
Nomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de NóminaNomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de Nóminacuellosameidy
 
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guiaORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guiaYeimys Ch
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar24roberto21
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosAlbanyMartinez7
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfKarinaCambero3
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfcristianrb0324
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
PROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y masPROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y maslida630411
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDAVIDROBERTOGALLEGOS
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptxHugoGutierrez99
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerenciacubillannoly
 
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdfBetianaJuarez1
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 

Último (20)

Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power Point
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
 
El camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVPEl camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVP
 
Nomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de NóminaNomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de Nómina
 
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guiaORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos Juridicos
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdf
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdf
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
PROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y masPROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y mas
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptx
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerencia
 
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 

Lenguajes programación historia tipos

  • 1. Curso: PS263 Lenguajes de programación HISTORIA Y TIPOS DE LENGUAJE DE PROGRAMACIÓN 1. Lenguajes de programación: una visión general Lenguajes de programación: una visión general Hay, al menos, dos formas fundamentales desde las que pueden verse o clasificarse los lenguajes de programación: por su nivel y por sus principales aplicaciones. Además, estas visiones están condicionadas por la evolución histórica por la que ha transcurrido el lenguaje. Además, hay cuatro niveles distintos de lenguajes de Programación: Lenguajes declarativos Lenguajes de alto nivel Lenguajes ensambladores Lenguajes máquina Los lenguajes declarativos son los más parecidos al castellano o inglés en su potencia expresiva y funcionalidad y están en el nivel más alto respecto a los otros. Son fundamentalmente lenguajes de órdenes, dominados por sentencias que expresan “lo que hay que hacer” en vez de “cómo hacerlo”. Ejemplos de estos lenguajes son los lenguajes estadísticos como SAS y SPSS y los lenguajes de búsqueda en bases de datos, como NATURAL e IMS. Estos lenguajes se desarrollaron con la idea de que los profesionales pudieran asimilar más
  • 2. rápidamente el lenguaje y usarlo en su trabajo, sin necesidad de programadores o prácticas de programación. Los lenguajes de alto nivel son los más utilizados como lenguajes de programación. Aunque no son fundamentalmente declarativos, estos lenguajes permiten que los algoritmos se expresen en un nivel y estilo de escritura fácilmente legible y comprensible por otros programadores. Además, los lenguajes de alto nivel suelen tener la característica de “transportabilidad”. Es decir, están implementados sobre varias máquinas, de forma que un programa puede ser fácilmente “transportado” (transferido) de una máquina a otra sin una revisión sustancial. En este sentido, se llaman “independientes de la máquina”. Ejemplos de estos lenguajes de alto nivel son PASCAL, APL y FORTRAN (lenguajes de programación utilizados para aplicaciones científicas), 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 programación de sistemas) y PL/I (para aplicaciones de propósito general). Todos estos lenguajes de alto nivel los desarrollaremos más detenidamente en otro apartado de la presentación. Los lenguajes ensambladores y los lenguajes máquina son dependientes de la máquina. Cada tipo de máquina tiene su propio lenguaje máquina distinto y su lenguaje ensamblador asociado. El lenguaje ensamblador es simplemente una representación simbólica del lenguaje máquina asociado, lo cual permite una programación menos tediosa que con el anterior. Sin embargo, es necesario un conocimiento de la arquitectura mecánica subyacente para realizar una programación efectiva en cualquiera de estos niveles de lenguajes. 2. Perspectiva histórica de los lenguajes de programación
  • 3. El programador, diseñador e implementador de un lenguaje de programación deben comprender la evolución histórica para poder apreciar por qué presentan características diferentes. La misma historia nos permite ver la evolución de familias de lenguajes de programación, ver la influencia que ejercen las arquitecturas y aplicaciones de las computadoras sobre el diseño de lenguajes y evitar futuros defectos de diseño aprendiendo las lecciones del pasado. En el siguiente diagrama que presentamos resumimos algunos de los más importantes avances en el diseño de lenguajes de alto nivel desde sus comienzos hasta finales de la década de los 80. Este diagrama representa sólo un pequeña muestra de todos los lenguajes de programación. Existen en uso, hoy en día, más de 150 lenguajes de programación 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 presentación los hemos elegido debido a su mayor influencia y amplio uso entre los programadores, así como por sus distintivas características de diseño e implementación. El diagrama también contiene las líneas que relacionan a varios lenguajes. Las líneas continuas muestran ascendencia directa, mientras que las líneas 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 diseño de PL/I. Varios lenguajes representados en el diagrama están prefijados por las letras ANS. Con esto queremos decir que el American National Standards Institute ha adoptado esa versión del lenguaje como el estándar nacional.
  • 4. Finalmente, creemos importante denotar algunas influencias anteriores a 1.960 en el diseño de los lenguajes de programación. Incluimos como importantes la notación algebraica ordinaria, por ejemplo, que influyó fuertemente en el diseño de FORTRAN y ALGOL; el inglés como principal influencia en el desarrollo de COBOL; el lambda cálculo de Church, que dio los fundamentos de la notación 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 evolución de la máquina más antigua de Turing, es el modelo básico de la mayoría de los diseños de computadoras hasta hoy en día. Estas máquinas no sólo influyeron en los primeros lenguajes sino que también suministraron el esqueleto operacional sobre el que evolucionó la mayoría de la programación de sistemas. 3. Características 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 resolución de problemas al menos para el área de aplicación del lenguaje IMPLEMENTABLE: debe ser posible ejecutar todo programa bien formado en dicho lenguaje; ejemplos de no implementables: notación matemática, lenguaje natural. EFICIENTE: depende de la arquitectura de computadora Los lenguajes de programación buscan hacer cada vez mas expresivo la simplicidad y eficiencia de los lenguajes Ejemplo: Ada y PL/1 fueron diseñados por un grupo grande de personas. Pascal fue diseñado por una sola persona: Niklaus Wirth
  • 5. Curso: PS263 Lenguajes de programación Genealogía de algunos lenguajes de programación 1950 FORTRAN Algol-60 1960 LISP COBOL PL/I Simula Algol-68 Pascal 1970 C Smalltalk 1980 Prolog ML Ada Miranda Java Orientados a objetos C++ Imperativos Funcionales Lógicos
  • 6. 4. Margo de referencia evolución de los lenguajes de programación AÑO LENGUAJE INVENTOR DESCRIPCION 1900s BINARIO Bool primer lenguaje 1946 Plankalkul 1949 Short Code 1950 ASM (ensamblador) Konrad Zuse creado para jugar al ajedrez lenguaje traducido a mano lenguaje ensamblador 1951 A-0 Grace Hopper fue el primer compilador 1952 AUTOCODE Alick E. Glennie compilador muy rudimentario 1956 FORTRAN IBM 1956 COBOL sistema de Traducción de Formulas matemáticas Compilador 1958 ALGOL 58 1960 LISP 1961 FORTRAN IV IBM Interprete orientado a la Inteligencia Artificial sistema de Traducción de Formulas matemáticas 1961 COBOL 61 Extendido 1960 ALGOL 60 Revisado 1964 PASCAL 1964 BASIC Niklaus Wirth Universidad de Dartmouth (california) programación estructurada Beginners All Purpose Symbolic Instruction Code 1965 SNOBOL 1965 APL solo anotación 1965 COBOL 65 1966 PL/I 1966 FORTRAN 66 IBM sistema de Traducción de Formulas matemáticas 1967 SIMULA 67 1968 ALGOL 68 1968 SNOBOL4 1970s GW-BASIC antiguo y clásico BASIC 1970 APL/360 1972 SMALLTALK 1972 C Centro de Investigación de pequeño y rápido Xerox en Palo Alto Laboratorios Bell lenguaje con tipos 1974 COBOL 74 1975 PL /I Lenguaje sencillo
  • 7. 1977 FORTRAN 77 IBM 1980s SMALLTALK/V Digitalk 1980 C con clases Laboratorios Bell Ministerio Japonés de Comercio Internacional e Industria (MITI) Ministerio de Defensa de los EE.UU AT&T Bell Laboratories (Bjarne Stroustrup) 1981 PROLOG 1982 ADA 1984 C++ 1985 CLIPPER sistema de Traducción de Formulas matemáticas pequeño y rápido lenguaje con clases Lenguaje estándar para la Inteligencia Artificial lenguaje muy seguro compilador compilador para bases de datos 1985 QuickBASIC 1.0 Microsoft® compilador de BASIC 1986 QuickBASIC 2.0 Microsoft® soporte de tarjeta gráfica EGA 1987 QuickBASIC 3.0 Microsoft® 43 lineas con la tarjeta EGA 1987 QuickBASIC 4.0 CLIPPER SUMMER 1987 '87 1988 QuickBASIC 4.5 Microsoft® tarjetas Hercules, VGA Microsoft® tarjeta SVGA 1989 QuickBASIC 7.1 Microsoft® ultima versión de QuickBASIC compilador para bases de datos 1989 ASIC v5.0 interprete tipo QBASIC shareware 1990s VISUAL C++ 1990s VISUAL BASICScript Microsoft® 1990 HTML 1990s WML Tim Berners-Lee para internet C. M. Sperbergpara internet McQueen Charles F. para internet Goldfarb para internet 1990s ASP Microsoft® 1993 XML 1993 SGML 1990s PHP 1995 JAVA para internet para internet Sun Microsystems 1995 CLIPPER 5.01 1995 GNAT ADA95 lenguaje de script para internet y propósito general compilador para bases de datos Ministerio de Defensa de los EE.UU lenguaje muy seguro
  • 8. 1995 FORTRAN 95 IBM 1991 VISUAL BASIC 1.0 Microsoft® 1992 VISUAL BASIC 2.0 Microsoft® 1993 VISUAL BASIC 3.0 Microsoft® 1994 VISUAL BASIC 4.0 Microsoft® 1995 VISUAL BASIC 5.0 Microsoft® 1998 VISUAL BASIC 6.0 sistema de Traducción de Formulas matemáticas Microsoft® 1990s C# 2001 VISUAL BASIC .NET Microsoft® La evolución de Visual Basic Fuente: http://iabot.iespana.es/ciencia/software/historia_lenguajes_programacion.htm 5. Sintaxis y semántica La sintaxis se refiere a la forma de los programas; cómo los diferentes componentes del lenguaje son agregados para formar programas. La semántica se refiere al significado de los programas; cómo se comportan cuando son ejecutados. La sintaxis afecta cómo los programas son escritos por los programadores, cómo son leídos por otros programadores La semántica determina cómo los programas son compuestos por los programadores, cómo son comprendidos por otros programadores, y cómo son interpretados por el computador 6.. Lenguajes programación a través de la historia FORTRAN: :introdujo las expresiones simbólicas, por los subprogramas con parámetros. Ejemplo : original. Forma primitiva del IF 123456789 ... IS=0
  • 9. 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 años más tarde, apareció FORTRAN II. Entre 1.958 y 1.963, FORTRAN se implementó sobre varias computadoras. FORTRAN III fue desarrollado durante este período, pero debido a que contenía demasiadas características dependientes de la máquina, nunca se implementó para uso público. 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 añadieron extensiones y se revisaron ambas versiones, apareciendo así el FORTRAN 77, que mantenía la compatibilidad para los programas escritos antes con versiones anteriores al nuevo estándar. COBOL (Common Bussiness Oriented Language) introdujo a finales de 1.950: el concepto de descripción de datos introduce la idea de un lenguaje con un área de aplicación no numérica (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 descripción de tal lenguaje, cuya revisión, en 1.960, empezó a conocerse como COBOL-60. Numerosas extensiones fueron formando nuevas versiones de este lenguaje COBOL inicial, hasta
  • 10. aprobarse un estándar en 1.974 por la ANS (American National Standard). PASCAL. La historia de Pascal estaría incompleta sin trazar primero la historia del ALGOL, del cual Pascal es una evolución. La historia del ALGOL comenzó en 1.958, cuando un comité de representantes del GAMM (una organización europea de científicos en informática) 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 más tarde como ALGOL 58, atrajo mucho interés y fue implementado sobre varias computadoras. Los representantes europeos y estadounidenses se reunieron de nuevo en París en 1.960 para considerar una versión completamente nueva de este lenguaje, conocida como ALGOL 60. Durante este período, ALGOL fue extremadamente popular entre los científicos informáticos, y su definición rigurosa marcó nuevos estándares para el diseño e implementación de lenguajes. ALGOL se convirtió en un lenguaje universal para la definición 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 propósito general con aplicaciones en un amplio rango de interés, aunque rápidamente se reconoció como un lenguaje demasiado ambicioso para ser práctico. De esta manera, Wirth diseñó un sucesor más reducido del ALGOL 60 y lo llamó PASCAL. Su primer compilador se implementó en 1.970 y una versión revisada fue definida e implementada en 1.973. PASCAL fue claramente diseñado para servir como un lenguaje para enseñar diseño de algoritmos y metodología de programación. 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, gestión dinámica de memoria y estructuras de control- PASCAL también fue cuestionado por sus deficiencias, y por ello se propusieron sucesores importantes como algunos de los que describimos a continuación.
  • 11. PL/I. Es un lenguaje de propósito general, diseñado para soportar aplicaciones científicas, de procesamiento de datos, de procesamiento de textos y de programación de sistemas a muy alto nivel. La primera versión del PL/I fue presentada por el Comité del proyecto SHARE FORTRAN. Esta versión 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, después de haber mejorado la eficiencia de sus compiladores, fue publicado un borrador con una propuesta de un PL/I estándar, aceptado en 1.976. Alrededor de 1.981 apareció un refinamiento de PL/I estándar, llamado SUBSET/G, que preservaba la mayoría de las características útiles del PL/I, y suprimía las generalizaciones de poco uso y difíciles de implementar. SNOBOL. Fue diseñado en 1.962 por un grupo de investigación de los laboratorios Bell como una ayuda a sus propias aplicaciones sobre manipulación simbólica de fórmulas. Una versión mejorada y extendida, llamada SNOBOL3, apareció en 1.966 y fue implementada sobre distintas máquinas. Un potencial sucesor de SNOBOL4, que apareció en 1.969, se conoce como ICON. Aunque contiene muchas de las características de procesamiento de cadenas del SNOBOL, la sintaxis de ICON es mucho más parecida a la de los lenguajes convencionales como PASCAL o C, lenguaje de programación cuya evolución histórica explicaremos más 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 orientación matemática. IBM trató de desarrollar APL durante los siguientes siete años, pero nunca llegó a estandarizarse, ya que requería un conjunto único de caracteres con un hardware especial, distinto del que soporta el estándar ASCII. Como resultado, APL no ha sido implementado ampliamente sobre las distintas máquinas.
  • 12. LISP. (List Processor) El lenguaje LISP fue desarrollado por John McCarthy durante el periodo de 1.956 a 1.958, implementándose por primera vez entre 1.959 y 1.962. El trabajo de su autor consistía principalmente en representar información 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 cálculo, tal y como describimos anteriormente con ayuda del diagrama de evolución. 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 teóricos en el cálculo de proposiciones. Representaba una desviación tajante de las ideas tradicionales sobre comportamiento de programas, las cuales se basaban todas en las arquitecturas de máquina de von Neumann. PROLOG fue desarrollado a principios de los años 70 por Philippe Roussel. Su primer intérprete se implementó en 1.972. Desde entonces, PROLOG no cambió desde su concepción, ni se hizo ningún esfuerzo por estandarizarlo. • Ejemplo de Prolog: Se definen una serie de hechos (persona) sobre varias personas Se define la relación: es-hermana Se plantea una consulta : para determinar de quién 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.
  • 13. C y C++. La historia de C, y su versión ampliada, C++, la explicaremos más detenidamente, justo porque son los lenguajes de programación que nosotros utilizaremos durante el curso, además de su enorme importancia hoy en día en todos los ámbitos de la computación. 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 características 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 número entero o de un número real. El lenguaje C fue derivado de B por Dennis Ritchie de los Laboratorios Bell, implantándose por primera vez en 1.972. C al inicio se popularizó como lenguaje de desarrollo del sistema operativo UNIX. Hoy día, virtualmente todos los sistemas están 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 décadas. Es posible incluso escribir programas en C que sean portátiles hacia la mayor parte de las computadoras. Hacia finales de los 70, C había evolucionado a lo que hoy se conoce como C “tradicional”. La expansión rápida 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 códigos que pudieran funcionar con distintas máquinas. Así se vieron ante la necesidad de una versión estándar de C, que se aprobó en 1.989. El documento se conoce como ANSI / ISO 9899: 1.990. Más tarde, apareció C++, una mejoría sobre muchas de las características de C, y que proporciona capacidades de programación orientada a objetos que promete mucho para incrementar la productividad, calidad y reutilización del software. Los diseñadores de C y los responsables de sus primeras puestas en práctica nunca anticiparon que este lenguaje resultaría en un fenómeno como éste. Cuando un lenguaje de programación se torna tan arraigado como C, nuevas necesidades demandan que el lenguaje evolucione, en lugar de que sólo sea reemplazado por un nuevo lenguaje, como ya había ocurrido con muchos otros
  • 14. 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 versión 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 años noventa, la mayor parte de los entornos de programación 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 Tecnológico de Zurich, como dijimos anteriormente. MODULA-2 nació, de una forma experimental, en 1.975 cuando se hizo necesario disponer de un lenguaje de programación de propósitos generales y que, además, fuera lo suficientemente operativo y cualificado para abordar problemas de multiprogramación, diseño de sistemas, software de base, traductores y compiladores, etc. Como resultado, se realiza la primera implementación de MODULA-2 al proyecto Lilith del ETH de Zurich, con el objetivo de diseñar 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 programación a bajo nivel o cercana a la estructura de la máquina. DELPHI. En el año 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 ejecución del programa no es secuencial, sino que depende de los eventos que suceden durante la ejecución de la aplicación. Delphi es una herramienta de Desarrollo Rápido de Aplicaciones (RAD). Los componentes que incorpora facilitan el acceso a bases de datos, comunicación
  • 15. a través 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 automáticamente las listas de parámetros de procedimientos, métodos y eventos. En el año 2001 Borland lanzo al mercado la versión de Delphi 6.0 que funciona bajo Windows y es compatible con todas las versiones anteriores. Junto con esta versión se introdujo en el mercado la primera versión Kylix, una versión de Delphi que funciona bajo Linux. La ultima versión 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 día es Java, sus creadores buscaban un lenguaje para programar los controladores utilizados en la electrónica de consumo. Existen infinidad de tipos de CPU distintas, y generar código para cada una de ellas requiere un compilador especial y el desarrollo de compiladores sabemos que es caro. Después de dieciocho meses de desarrollo aparece la primera versión de un lenguaje llamado OAK que más tarde cambiaría de nombre para convertirse en Java. La versión de 1992 está ampliada, cambiada y madurada, y a principios de 1996 sale a la luz la primera versión de Java. Los inicios son difíciles, 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 cambiaría debido a una tecnología completamente electrodomésticos: Internet. ajena a los controladores de
  • 16. Mientras Java se estaba desarrollando, el mundo de las comunicaciones crecía a una velocidad de vértigo, 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 fenómeno Internet en marcha, los desarrolladores de Java dan un giro en su desarrollo al darse cuenta de que el problema de la portabilidad de código de los controladores es el mismo que se produce en Internet, una red heterogénea y que crece sin parar, y dirigen sus esfuerzos hacia allí. En 1995 se libera una versión de HotJava, un navegador escrito totalmente en Java y es en ese mismo año cuando se produce el anuncio por parte de Netscape de que su navegador sería compatible con Java. Desde ahí otras grandes empresas se unen y Java se expande rápidamente. No obstante, las primeras versiones de Java fueron incompletas, lentas y con errores. Han tenido que pasar varios años 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 tecnologías surgen y se desarrollan a gran velocidad haciendo de Java un lenguaje cada día mejor y que cubre prácticamente todas las áreas de la computación y comunicaciones, desde teléfonos móviles hasta servidores de aplicaciones. 6.. Generalidades Lenguajes programación Es posible identificar las siguientes dos tendencias en el desarrollo de los lenguajes de programación: La tendencia de los lenguajes programación puede ser enfocada a conceptos, aunque un cierto tipo de lenguaje no debe tratar de incorporar todos estos conceptos.
  • 17. La estructura de un lenguaje de programación implica :< Valores Abstracción Almacenamiento Encapsulamiento Generics Herencia Polimorfismo Concurrencia Regularidad Es mejor proveer un conjunto básico de facilidades que puedan ser refinadas usando otros aspectos del lenguaje (tipos de datos abstractos, objetos). Una forma sencilla de obtener máximo poder es permitiendo la combinación de un número 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> función ( <tipo de los parámetros> ) b. Abstracción: Permitir la abstracción sobre cada clase semánticamente significativa Expresiones Comandos funciones procedimientos Declaraciones Tipos generics tipos parametrizados c. Correspondencia : Para cada forma de declaración debe existir su correspondiente mecanismo de paso de parámetros y viceversa. ------------------d. Calificación Incluir un bloque en cada clase sintáctica que es semánticamente significativa Bloques de comandos Bloques de expresiones
  • 18. 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, fácil y rápido 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 módulos. 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 enviaría 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 número de decimales usados en aritmética de punto fijo, esto obliga a todos los programadores a conocer las reglas de aritmética 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 función entera usada en un contexto real no produce una conversión (que obligue a conocer cómo lo
  • 19. hace), sino que produce un mensaje de error en términos de no poder localizar una función sobrecargada. Un lenguaje no debe tratar de anticipar todas las facilidades requeridas. Un lenguaje debe permitir la identificación e implementación de las facilidades requeridas. Lo anterior es facilitado por la abstracción: expresiones, comandos, tipos funciones, procedimientos, clases. La sintaxis debe ser transparente: debe ser obvio determinar a partir de la forma sintáctica a cuál concepto semántico se está haciendo referencia. Las formas sintácticas y los conceptos semánticos deben corresponder uno a uno. Contraejemplo La frase “var I: T” en Pascal puede ser la declaración de una nueva variable, o la especificación de un parámetro variable. Una forma sintáctica 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 función, retornada como resultado de una función “ Cualquier entidad que existe durante un cómputo” PascalValores primitivos (valores de verdad, caracteres, valores enumerados, enteros, reales)Valores compuestos (registros, arreglos, conjuntos,
  • 20. archivos)PunterosReferencias a variablesProcedimientos y funciones (abstracciones Bibliografía consultada: Allen B. Tucker, “Lenguajes de programación” Editorial McGraw Hill 2003 H. M Deitel “Cómo programar en C y C++” ,Editorial Prentice Hall, 2000