Download historia y evolución de los lenguajes de programación

Document related concepts
Transcript
INDICE
Introducción........................................................................1
Definiciones........................................................................2
Historia...............................................................................3
Las tendencias de los lenguajes de programación............4
Lenguajes de Bajo Nivel....................................................8
Clasificación de los lenguajes de programación................9
Algunos lenguajes de programación de alto nivel............14
Evolución de los lenguajes de programación...................24
Bibliografía.......................................................................30
INTRODUCCIÓN
Los ordenadores no hablan nuestro idioma, son maquinas y como tales,
necesitan un lenguaje especifico pensado por el hombre para ellas. Además,
necesitan constantemente interpretar todas las instrucciones que reciben. Dada
la dificultad de comunicación insalvable entre el computador y el programador,
pronto aparecieron lenguajes de programación que hacen posible la
comunicación con el microprocesador, utilizando términos y símbolos
relacionados con el tipo de problema que se debe resolver, mediante el empleo
de herramientas que brinda la informática.
Estos lenguajes permiten, por un lado, escribir las operaciones que son
necesarias realizar para resolver el problema de un modo parecido a como se
escribiría convencionalmente (es decir, redactar adecuadamente el algoritmo
de resolución del problema) y, por el otro, se encarga de traducir el algoritmo al
lenguaje máquina (proceso conocido como compilación) con lo que se le
confiere al programa la capacidad de corre (ser ejecutado) en el ordenador. El
ordenador es en realidad tan sólo una máquina virtual, capaz de resolver todos
los problemas que los usuarios seamos capaces de expresar mediante un
algoritmo (programa).
En la actualidad hay muchos tipos de lenguajes de programación, cada uno de
ellos con su propia gramática, su terminología especial y una sintaxis particular.
Por ejemplo, existen algunos creados especialmente para aplicaciones
científicas o matemáticas generales (BASIC, FORTRAN, PASCAL, etc. ); otros,
en cambio, se orientan al campo empresarial y al manejo de textos y ficheros,
es decir, son en realidad fundamentalmente gestores de información (COBOL,
PL/1, etc. ), o muy relacionados con el lenguaje máquina del ordenador (como
el C y el ASSEMBLER).
Los ordenadores se programaban en lenguaje máquina pero las dificultades
que esto conllevaba, junto con la enorme facilidad de cometer errores, cuya
localización era larga y compleja, hicieron concebir, en la década de los 40, la
posibilidad de usar lenguajes simbólicos. Los primeros en aparecer fueron los
ensambladores, fundamentalmente consistía en dar un nombre (mnemónico) a
cada tipo de instrucción y cada dirección (etiqueta). Al principio sé hacia el
programa sobre papel y, después se traducía a mano con la ayuda de unas
tablas, y se introducían en la máquina en forma numérica, pero pronto
aparecieron programas que se ensamblaban automáticamente.
En este trabajo nos podemos dar cuenta de la importancia que tiene la
programación y la creación de estos lenguajes para sintetizar la información y
agilizar así los procesos sistemáticos de los sistemas que trabajan por medio
de computadoras así como la importancia de que estos lenguajes nos permiten
cada día mas cosas debido a su desarrollo al paso de los años como nos
podemos dar cuenta en este trabajo al igual hace mas fácil el trabajo para el
programador y mas fácil para nosotros los consumistas de tecnología.
1
DEFINICIONES
Es complicado definir qué es y qué no es un lenguaje de programación. Se
asume generalmente que la traducción de las instrucciones a un código que
comprende la computadora debe ser completamente sistemática. Normalmente
es la computadora la que realiza la traducción.
Lenguaje de programación, en informática, cualquier lenguaje
artificial que puede utilizarse para definir una secuencia de instrucciones para
su procesamiento por un ordenador o computadora. Es complicado definir
qué es y qué no es un lenguaje de programación. Se asume generalmente
que la traducción de las instrucciones a un código que comprende la
computadora debe ser completamente sistemática. Normalmente es la
computadora la que realiza la traducción.
Un lenguaje de programación es una notación para escribir programas, a través
de los cuales podemos comunicarnos con el hardware y dar así las ordenes
adecuadas para la realización de un determinado proceso. Un lenguaje esta
definido por una gramática o conjunto de reglas que se aplican a un alfabeto
constituido por el conjunto de símbolos utilizados. Los distintos niveles de
programación existentes nos permiten acceder al hardware, de tal forma que
según utilicemos un nivel u otro, así tendremos que utilizar un determinado
lenguaje ligado a sus correspondientes traductores.
Conjunto de normas “lingüísticas” (palabras y símbolos) que permiten escribir
un programa y que éste sea entendido por el ordenador y pueda ser trasladado
a ordenadores similares para su funcionamiento en otros sistemas.
Conjunto de instrucciones, ordenes y símbolos reconocibles por autómata, a
través de su unidad de programación, que le permite ejecutar la secuencia de
control deseada. Al conjunto de total de estas instrucciones, ordenes y
símbolos que están disponibles se le llamar lenguajes de programación del
autómata. El programa esta formado por un conjunto de instrucciones,
sentencias, bloques funcionales y grafismos que indican las operaciones a
realizar. Las instrucciones representan la tarea más elemental de un programa:
leer una entrada, realizar una operación, activar una salida, etc. La sentencia
representa el mínimo conjunto de instrucciones o sentencias que realizan una
tarea o función compleja: encontrar el valor de una función lógica en
combinación de varias variables, consultar un conjunto de condiciones, etc. El
bloque funcional es el conjunto de instrucciones o sentencias que realizan una
tarea o función compleja: contadores, registros de desplazamientos,
transferencias de información, etc. Todos estos elementos están relacionados
entre sí mediante los símbolos o grafismos.
Es un conjunto de palabras y símbolos que permiten al usuario generar
comandos e instrucciones para que la computadora los ejecute. Los lenguajes
de programación deben tener instrucciones que pertenecen a las categorías ya
2
familiares de entrada/salida, calculo/manipulación, de textos,
logica/comparación, y almacenamiento/recuperación.
HISTORIA
Los primeros lenguajes de programación surgieron de la idea de Charles
Babagge, la cual se le ocurrió a este hombre a mediados del siglo XIX. Era un
profesor matemático de la universidad de Cambridge e inventor ingles, que la
principio del siglo XIX predijo muchas de las teorías en que se basan los
actuales ordenadores. Consistía en lo que él denominaba la maquina analítica,
pero que por motivos técnicos no pudo construirse hasta mediados del siglo
XX. Con él colaboro Ada Lovedby, la cual es considerada como la primera
programadora de la historia, pues realizo programas para aquélla supuesta
maquina de Babagge, en tarjetas perforadas. Como la maquina no llego nunca
a construirse, los programas de Ada, lógicamente, tampoco llegaron a
ejecutarse, pero si suponen un punto de partida de la programación, sobre todo
si observamos que en cuanto se empezó a programar, los programadores
utilizaron las técnicas diseñadas por Charles Babagge, y Ada, que consistían
entre otras, en la programación mediante tarjetas perforadas. A pesar de ello,
Ada ha permanecido como la primera programadora de la historia. Se dice por
tanto que estos dos genios de antaño, se adelantaron un siglo a su época, lo
cual describe la inteligencia de la que se hallaban dotados.
En 1823 el gobierno Británico lo apoyo para crear el proyecto de una máquina
de diferencias, un dispositivo mecánico para efectuar sumas repetidas. Pero
Babagge se dedico al proyecto de la máquina analítica, abandonando la
maquina de diferencias, que se pudiera programar con tarjetas perforadas,
gracias a la creación de Charles Jacquard (francés). Este hombre era un
fabricante de tejidos y había creado un telar que podía reproducir
automáticamente patrones de tejidos, leyendo la información codificada en
patrones de agujeros perforados en tarjetas de papel rígido. Entonces Babagge
intento crear la máquina que se pudiera programar con tarjetas perforadas para
efectuar cualquier cálculo con una precisión de 20 dígitos. Pero la tecnología
de la época no bastaba para hacer realidad sus ideas. Si bien las ideas de
Babagge no llegaron a materializarse de forma definitiva, su contribución es
decisiva, ya que los ordenadores actuales responden a un esquema análogo al
de la máquina analítica. En su diseño, la máquina constaba de cinco unidades
básicas: 1) Unidad de entrada, para introducir datos e instrucciones; 2)
Memoria, donde se almacenaban datos y resultados intermedios; 3) Unidad de
control, para regular la secuencia de ejecución de las operaciones; 4) Unidad
Aritmético-Lógica, que efectúa las operaciones; 5) Unidad de salida, encargada
de comunicar al exterior los resultados. Charles Babbage, conocido como el
"padre de la informática" no pudo completar en aquella época la construcción
del computador que había soñado, dado que faltaba algo fundamental: la
3
electrónica. El camino señalado de Babbage, no fue nunca abandonado y
siguiéndolo, se construyeron los primeros computadores.
Cuando surgió el primer ordenador, el famoso ENIAC (Electronic Numerical
Integrator And Calculator), su programación se basaba en componentes físicos,
o sea, que se programaba, cambiando directamente el Hardware de la
maquina, exactamente lo que sé hacia era cambiar cables de sitio para
conseguir así la programación de la maquina. La entrada y salida de datos se
realizaba mediante tarjetas perforadas.
Al desarrollarse las primeras computadoras electrónicas, se vio la necesidad de
programarlas, es decir, de almacenar en memoria la información sobre la tarea
que iban a ejecutar. Las primeras se usaban como calculadoras simples; se les
indicaban los pasos de cálculo, uno por uno.
John Von Neumann desarrolló el modelo que lleva su nombre, para describir
este concepto de "programa almacenado". En este modelo, se tiene una
abstracción de la memoria como un conjunto de celdas, que almacenan
simplemente números. Estos números pueden representar dos cosas: los
datos, sobre los que va a trabajar el programa; o bien, el programa en sí.
¿Cómo es que describimos un programa como números? Se tenía el problema
de representar las acciones que iba a realizar la computadora, y que la
memoria, al estar compuesta por switches correspondientes al concepto de bit,
solamente nos permitía almacenar números binarios.
La solución que se tomó fue la siguiente: a cada acción que sea capaz de
realizar nuestra computadora, asociarle un número, que será su código de
operación (opcode) . Por ejemplo, una calculadora programable simple podría
asignar los opcodes :
1 = SUMA, 2 = RESTA, 3 = MULTIPLICA, 4 = DIVIDE.
Supongamos que queremos realizar la operación 5 * 3 + 2, en la calculadora
descrita arriba. En memoria, podríamos "escribir" el programa de la siguiente
forma:
Localidad Opcode Significado Comentario 0 5 5 En esta localidad, tenemos el
primer número de la fórmula 1 3 * En esta localidad, tenemos el opcode que
representa la multiplicación. 2 3 3 En esta localidad, tenemos el segundo
número de la fórmula 3 1 + En esta localidad, tenemos el opcode que
representa la suma. 4 2 2 En esta localidad, tenemos el último número de la
fórmula
Podemos ver que con esta representación, es simple expresar las operaciones
de las que es capaz el hardware (en este caso, nuestra calculadora
imaginaria), en la memoria.
4
La descripción y uso de los opcodes es lo que llamamos lenguaje de máquina .
Es decir, la lista de códigos que la máquina va a interpretar como instrucciones,
describe las capacidades de programación que tenemos de ella; es el lenguaje
más primitivo, depende directamente del hardware, y requiere del programador
que conozca el funcionamiento de la máquina al más bajo nivel.
los lenguajes más primitivos fueron los lenguajes de máquina. Esto, ya que el
hardware se desarrolló antes del software, y además cualquier software
finalmente tiene que expresarse en el lenguaje que maneja el hardware.
La programación en esos momentos era sumamente tediosa, pues el
programador tenía que "bajarse" al nivel de la máquina y decirle, paso a pasito,
cada punto de la tarea que tenía que realizar. Además, debía expresarlo en
forma numérica; y por supuesto, este proceso era propenso a errores, con lo
que la productividad del programador era muy limitada. Sin embargo, hay que
recordar que en estos momentos, simplemente aún no existía alternativa.
El primer gran avance que se dio, como ya se comentó, fue la abstracción dada
por el Lenguaje Ensamblador, y con él, el nacimiento de las primeras
herramientas automáticas para generar el código máquina. Esto redujo los
errores triviales, como podía ser el número que correspondía a una operación,
que son sumamente engorrosos y difíciles de detectar, pero fáciles de cometer.
Sin embargo, aún aquí es fácil para el programador perderse y cometer errores
de lógica, pues debe bajar al nivel de la forma en que trabaja el CPU, y
entender bien todo lo que sucede dentro de él.
Con el desarrollo en los 50s y 60s de algoritmos de más elevado nivel, y el
aumento de poder del hardware, empezaron a entrar al uso de computadoras
científicos de otras ramas; ellos conocían mucho de Física, Química y otras
ramas similares, pero no de Computación, y por supuesto, les era sumamente
complicado trabajar con lenguaje Ensamblador en vez de fórmulas. Así, nació
el concepto de Lenguaje de Alto Nivel, con el primer compilador de FORTRAN
(FORmula TRANslation), que, como su nombre indica, inició como un "simple"
esfuerzo de traducir un lenguaje de fórmulas, al lenguaje ensamblador y por
consiguiente al lenguaje de máquina. A partir de FORTRAN, se han
desarrollado innumerables lenguajes, que siguen el mismo concepto: buscar la
mayor abstracción posible, y facilitar la vida al programador, aumentando la
productividad, encargándose los compiladores o intérpretes de traducir el
lenguaje de alto nivel, al lenguaje de computadora.
Hay que notar la existencia de lenguajes que combinan características de los
de alto nivel y los de bajo nivel (es decir, Ensamblador). Mi ejemplo favorito es
C: contiene estructuras de programación de alto nivel, y la facilidad de usar
librerías que también son características de alto nivel; sin embargo, fue
diseñado con muy pocas instrucciones, las cuales son sumamente sencillas,
fáciles de traducir al lenguaje de la máquina; y requiere de un entendimiento
apropiado de cómo funciona la máquina, el uso de la memoria, etcétera. Por
5
ello, muchas personas consideramos a lenguajes como C (que fue diseñado
para hacer sistemas operativos), lenguajes de nivel medio.
LAS TENDENCIAS DE LOS LENGUAJES DE
PROGRAMACIÓN
El estudio de los lenguajes de programación agrupa tres intereses diferentes; el
del programador profesional, el del diseñador del lenguaje y del Implementador
del lenguaje.
Además, estos tres trabajos han de realizarse dentro de las ligaduras y
capacidades de la organización de una computadora y de las limitaciones
fundamentales de la propia "calculabilidad". El termino "el programador" es un
tanto amorfo, en el sentido de que camufla importantes diferencias entre
distintos niveles y aplicaciones de la programación. Claramente el programador
que ha realizado un curso de doce semanas en COBOL y luego entra en el
campo del procesamiento de datos es diferente del programador que escribe
un compilador en Pascal, o del programador que diseña un experimento de
inteligencia artificial en LISP, o del programador que combina sus rutinas de
FORTRAN para resolver un problema de ingeniería complejo, o del
programador que desarrolla un sistema operativo multiprocesador en ADA.
En este trabajo, intentare clarificar estas distinciones tratando diferentes
lenguajes de programación en el contexto de cada área de aplicación diferente.
El "diseñador del lenguaje" es también un termino algo nebuloso. Algunos
lenguajes (como APL y LISP) fueron diseñados por una sola persona con un
concepto único, mientras que otros (FORTRAN y COBOL) son el producto de
desarrollo de varios años realizados por comités de diseño de lenguajes.
El "Implementador del lenguaje" es la persona o grupo que desarrolla un
compilador o interprete para un lenguaje sobre una maquina particular o tipos
de maquinas. Mas frecuentemente, el primer compilador para el lenguaje Y
sobre la maquina X es desarrollada por la corporación que manufactura la
maquina X . Por ejemplo, hay varios compiladores de Fortran en uso; uno
desarrollado por IBM para una maquina IBM, otro desarrollado por DEC para
una maquina DEC, otro por CDC, y así sucesivamente. Las compañías de
software también desarrollan compiladores y también lo hacen los grupos de
investigación de las universidades. Por ejemplo, la universidad de Waterloo
desarrolla compiladores para FORTRAN Y PASCAL, los cuales son útiles en
un entorno de programación de estudiantes debido a su superior capacidad de
diagnostico y velocidad de compilación.
Hay también muchos aspectos compartidos entre los programadores,
diseñadores de un lenguaje implementadores del mismo. Cada uno debe
comprender las necesidades y ligaduras que gobiernan las actividades de los
otros dos.
Hay, al menos, dos formas fundamentales desde las que pueden verse o
clasificarse los lenguajes de programación: por su nivel y por principales
6
aplicaciones. Además, estas visiones están condicionadas por la visión
histórica por la que ha transcurrido el lenguaje. Además, hay cuatro niveles
distintos de lenguaje de programación.
Los "Lenguajes Declarativos" son los mas parecidos al castellano o ingles en
su potencia expresiva y funcionalidad están en el nivel mas alto respecto a los
otros. Son fundamentalmente lenguajes de ordenes, dominados por sentencias
que expresan "Lo que hay que hacer" en ves de "Como hacerlo". Ejemplos de
estos lenguajes son los lenguajes estadísticos como SAS y SPSS y los
lenguajes de búsqueda en base de datos, como NATURAL e IMS. Estos
lenguajes se desarrollaron con la idea de que los profesionales pudieran
asimilar mas rápidamente el lenguaje y usarlo en su trabajo, sin necesidad de
programadores o practicas de programación.
Los lenguajes de " Alto Nivel" son los más utilizados como lenguaje 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 tienen normalmente las características de "
Transportabilidad". Es decir, están implementadas sobre varias maquinas de
forma que un programa puede ser fácilmente " Transportado " (Transferido) de
una maquina a otra sin una revisión sustancial. En ese sentido se llama
"Independientes de la maquina". Ejemplos de estos lenguajes de alto nivel son
PASCAL, APL y FORTRAN (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ósitos generales).
Los "Lenguajes Ensambladores" y los "Lenguajes Maquina" son dependientes
de la maquina. Cada tipo de maquina, tal como VAX de digital, tiene su propio
lenguaje maquina distinto y su lenguaje ensamblador asociado. El lenguaje
Ensamblador es simplemente una representación simbólica del lenguaje
maquina 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 lenguajes.
Los siguientes tres segmentos del programa equivalentes exponen las
distinciones básicas entre lenguajes maquina, ensambladores de alto nivel:
Como muestra este ejemplo, a mas bajo nivel de lenguaje mas cerca esta de
las características de un tipo e maquina particular y más alejado de ser
comprendido por un humano ordinario. Hay también una estrecha relación (
correspondencia 1:1) entre las sentencias en lenguaje ensamblador y sus
formas en lenguaje maquina codificada. La principal diferencia aquí es que los
lenguajes ensambladores se utilizan símbolos (X, Y, Z, A para " sumar", M para
"multiplicar"), mientras que se requieren códigos numéricos (OC1A4, etc.) para
que lo comprenda la maquina.
La programación de un lenguaje de alto nivel o en un lenguaje ensamblador
requiere, por tanto, algún tipo de interfaz con el lenguaje maquina para que el
programa pueda ejecutarse. Las tres interfaces más comunes: un
"ensamblador”, un "compilador" y un "interprete". El ensamblador y el
7
compilador traducen el programa a otro equivalente en el lenguaje X de la
maquina "residente" como un paso separado antes de la ejecución. Por otra
parte, el interprete ejecuta directamente las instrucciones en un lenguaje Y de
alto nivel, sin un paso de procesamiento previo.
La compilación es, en general, un proceso más eficiente que la interpretación
para la mayoría de los tipos de maquina. Esto se debe principalmente a que las
sentencias dentro de un "bucle" deben ser reinterpretadas cada vez que se
ejecutan por un interprete. Con un compilador. Cada sentencia es interpretada
y luego traducida a lenguaje maquina solo una vez.
Algunos lenguajes son lenguajes principalmente interpretados, como APL,
PROLOG y LISP. El resto de los lenguajes -- Pascal, FORTRAN, COBOL, PL/I,
SNOBOL, C, Ada y Modula-2 – son normalmente lenguajes compilados. En
algunos casos, un compilador estará utilizable alternativamente para un
lenguaje interpretado (tal como LISP) e inversamente (tal como el interprete
SNOBOL4 de los laboratorios Bell).
1
Frecuentemente la interpretación es preferible a la compilación en un entorno
de programación experimental o de educación, donde cada nueva ejecución de
un programa implicado un cambio en el propio texto del programa. La calidad
de diagnosis y depuración que soportan los lenguajes interpretados es
generalmente mejor que la de los lenguajes compilados, puesto que los
mensajes de error se refieren directamente a sentencias del texto del programa
original. Además, la ventaja de la eficiencia que se adjudica tradicionalmente a
los lenguajes compilados frente a los interpretados puede pronto ser eliminado,
debido a la evolución de las maquinas cuyos lenguajes son ellos
mismos1lenguajes de alto nivel. Como ejemplo de estos están las nuevas
maquinas LISP, las cuales han sido diseñadas recientemente por Symbolics y
Xerox Corporations.
Los lenguajes de Programación son tomados de diferentes perspectivas. Es
importante para un programador decidir cuales conceptos emitir o cuales incluir
en la programación. Con frecuencia el programador es osado a usar
combinaciones de conceptos que hacen al lenguaje "DURO" de usar, de
entender e implementar. Cada programador tiene en mente un estilo particular
de programación, la decisión de incluir u omitir ciertos tipos de datos que
pueden tener una significativa influencia en la forma en que el Lenguaje es
usado, la decisión de usar u omitir conceptos de programación o modelos.
Existen cinco estilos de programación y son los siguientes:
Orientados a Objetos.
Imperativa : Entrada, procesamiento y salidas de Datos.
Funcional : "Funciones", los datos son funciones, los resultados pueden ser
un valor o una función.
Lógico : {T, F} + operaciones lógicas (Inteligencia Artificial).
Concurrente : Aún esta en proceso de investigación.
El programador, diseñador e implementador de un lenguaje de programación
deben comprender la evolución histórica de los lenguajes para poder apreciar
por que presentan características diferentes. Por ejemplo, los lenguajes "mas
jóvenes" desaconsejan (o prohíben) el uso de las sentencias GOTO como
mecanismo de control inferior, y esto es correcto en el contexto de las filosofías
8
actuales de ingeniería del software y programación estructurada. Pero hubo un
tiempo en que la GOTO, combinada con la IF, era la única estructura de control
disponible; el programador no dispone de algo como la construcción WHILE o
un IF-THEN-ELSE para elegir. Por tanto, cuando se ve un lenguaje como
FORTRAN, el cual tiene sus raíces en los comienzos de la historia de los
lenguajes de programación, uno no debe sorprenderse de ver la antigua
sentencia GOTO dentro de su repertorio.
Lo más importante es que la historia nos permite ver la evolución de familias de
lenguajes de programación, ver la influencia que ejercer las arquitecturas y
aplicaciones de las computadoras sobre el diseño de lenguajes y evitar futuros
defectos de diseño aprendido las lecciones del pasado. Los que estudian se
han elegido debido a su mayor influencia y amplio uso entre los
programadores, así como por sus distintas características de diseño e
implementación. Colectivamente cubren los aspectos más importantes con los
que ha de enfrentarse el diseñado de lenguajes y la mayoría de las
aplicaciones con las que se enfrenta el programador. Para los lectores que
estén interesados en conocer con mas detalle la historia de los lenguajes de
programación recomendamos las actas de una recién conferencia (1981) sobre
este tema, editadas por Richard Wexelblat. Vemos que FORTRAN I es un
ascendente directo de FORTRAN II, mientras que FORTRAN, COBOL, ALGO
60, LISP, SNOBOL y los lenguajes ensambladores, influyeron en el diseño de
PL/I.
También varios lenguajes están prefijados por las letras ANS. Esto significa
que el American National Standards Institute ha adoptado esa versión del
lenguaje como el estándar nacional. Una vez que un lenguaje esta
estandarizado, las maquinas que implementan este lenguaje deben cumplir
todas las especificaciones estándares, reforzando así el máximo de
transportabilidad de programas de una maquina a otra. La policía federal de no
comprar maquinas que no cumplan la versión estándar de cualquier lenguaje
que soporte tiende a "fortalecer" el proceso de estandarización, puesto que el
gobierno es, con mucho, el mayor comprador de computadoras de la nación.
Finalmente, la notación algebraica ordinaria, por ejemplo, influyo fuertemente
en el diseño de FORTRAN y ALGOL. Por otra parte, el ingles influyo en el
desarrollo del COBOL. El lambda calculo de Church dio los fundamentos de la
notación funcional de LISP, mientras que el algoritmo de Markov motivo el
estilo de reconocimiento de formas de SNOBOL. La arquitectura de
computadoras de Von Neumann, la cual fue una evolución de la maquina más
antigua de Turing, es el modelo básico de la mayoría de los diseños de
computadoras de las ultimas tres décadas. Esta maquina no solo influyeron en
los primeros lenguajes sino que también suministraron el esqueleto operacional
sobre el que evoluciono la mayoría de la programación de sistemas.
Una discusión más directa de todos estos primeros modelos no están entre los
objetivos de este texto. Sin embargo, es importante apuntar aquí debido a su
fundamental influencia en la evolución de los primeros lenguajes de
programación, por una parte, y por su estado en el núcleo de la teoría de la
computadora, por otra. Mas sobre este punto, cualquier algoritmo que pueda
describirse en ingles o castellano puede escribirse igualmente como una
maquina de Turing (maquina de Von Neumann), un algoritmo de Markov o una
9
función recursiva. Esta sección, conocida ampliamente como "tesis de Church",
nos permite escribir algoritmos en distintos estilos de programación (lenguajes)
sin sacrificar ninguna medida de generalidad, o potencia de programación, en
la transición.
CLASIFICACION DE LOS
LENGUAJES DE PROGRAMACIÓN
LENGUAJE MÁQUINA:
El lenguaje máquina es el único que entiende directamente la computadora, ya
que esta escrito en lenguajes directamente inteligibles por la máquina
(computadora), utiliza el alfabeto binario, que consta de los dos únicos
símbolos 0 y 1, denominados bits (abreviatura inglesa de dígitos binarios). Sus
instrucciones son cadenas binarias (cadenas o series de caracteres de dígitos
0 y 1) que especifican una operación y, las posiciones (dirección) de memoria
implicadas en la operación se denominan instrucciones de máquina o código
maquina. Fue el primer lenguaje utilizado en la programación de computadoras,
pero dejo de utilizarse por su dificultad y complicación, siendo sustituido por
otros lenguajes más fáciles de aprender y utilizar, que además reducen la
posibilidad de cometer errores. El lenguaje máquina es el conocido código
binario. Generalmente, en la codificación de los programas se empleaba el
sistema hexadecimal para simplificar el trabajo de escritura. Todas las
instrucciones preparadas en cualquier lenguaje máquina tienen por lo menos
dos partes. La primera es el comando u operación, que dice a las
computadoras cual es la función que va a realizar. Todas las computadoras
tienen un código de operación para cada una de las funciones. La segunda
parte de la instrucción es el operando, que indica a la computadora donde
hallar o almacenar los datos y otras instrucciones que se van a manipular, el
número de operándoos de una instrucción varia en distintas computadoras.
Ventajas del lenguaje máquina: posibilidad de cargar (transferir un programa a
la memoria) sin necesidad de traducción posterior, lo que supone una velocidad
de ejecución superior a cualquier otro lenguaje de programación.
Desventajas del lenguaje máquina: dificultad y lentitud en la codificación. Poca
fiabilidad. Gran dificultad para verificar y poner a punto los programas. Los
programas solo son ejecutables en el mismo procesador (CPU). En la
actualidad, las desventajas superan a las ventajas, lo que hace prácticamente
no recomendables a los lenguajes máquina.
LENGUAJES DE BAJO NIVEL:
Son más fáciles de utilizar que los lenguajes máquina, pero al igual que ellos,
dependen de la máquina en particular. El lenguaje de bajo nivel por excelencia
es el ensamblador. El lenguaje ensamblador es el primer intento de sustituir el
lenguaje maquina por otro más similar a los utilizados por las personas. Este
intenta desflexibilizar la representación de los diferentes campos. Esa
flexibilidad se consigue no escribiendo los campos en binario y aproximando la
10
escritura al lenguaje. A principios de la década de los 50 y con el fin de facilitar
la labor de los programadores, se desarrollaron códigos mnemotécnicos para
las operaciones y direcciones simbólicas. Los códigos mnemotécnicas son los
símbolos alfabéticos del lenguaje maquina. La computadora sigue utilizando el
lenguaje maquina para procesar los datos, pero los programas ensambladores
traducen antes los símbolos de código de operación especificados a sus
equivalentes en el lenguaje maquina. En la actualidad los programadores no
asignan números de dirección reales a los datos simbólicos, simplemente
especifican donde quieren que se coloque la primera localidad del programa y
el programa ensamblador se encarga de lo demás, asigna localidades tanto
para las instrucciones como los datos. Estos programas de ensamble o
ensambladores también permiten a la computadora convertir las instrucciones
en lenguaje ensamblador del programador en su propio código maquina. Un
programa de instrucciones escrito en lenguaje ensamblador por un
programador se llama programa fuente. Después de que el ensamblador
convierte el programa fuente en código maquina a este se le denomina
programa objeto. Para los programadores es más fácil escribir instrucciones en
un lenguaje ensamblador que en código de lenguaje maquina pero es posible
que se requieran dos corridas de computadora antes de que se puedan utilizar
las instrucciones del programa fuente para producir las salidas deseadas.
El lenguaje de bajo nivel es el lenguaje de programación que el ordenador
puede entender a la hora de ejecutar programas, lo que aumenta su velocidad
de ejecución, pues no necesita un intérprete que traduzca cada línea de
instrucciones.
Visto a muy bajo nivel, los microprocesadores procesan exclusivamente
señales electrónicas binarias. Dar una instrucción a un microprocesador
supone en realidad enviar series de unos y ceros espaciadas en el tiempo de
una forma determinada. Esta secuencia de señales se denomina código
máquina. El código representa normalmente datos y números e instrucciones
para manipularlos. Un modo más fácil de comprender el código máquina es
dando a cada instrucción un mnemónico, como por ejemplo STORE, ADD o
JUMP. Esta abstracción da como resultado el ensamblador, un lenguaje de
muy bajo nivel que es específico de cada microprocesador.
Los lenguajes de bajo nivel permiten crear programas muy rápidos, pero que
son, a menudo, difíciles de aprender. Más importante es el hecho de que los
programas escritos en un bajo nivel sean altamente específicos de cada
procesador. Si se lleva el programa a otra maquina se debe reescribir el
programa desde el principio.
Ventajas del lenguaje ensamblador frente al lenguaje máquina: mayor facilidad
de codificación y, en general, su velocidad de calculo, ahorran tiempo y
requieren menos atención a detalles. Se incurren en menos errores y los que
se cometen son más fáciles de localizar. Tanto el lenguaje maquina como el
ensamblador gozan de la ventaja de mínima ocupación de memoria y mínimo
tiempo de ejecución en comparación con el resultado de la compilación del
programa equivalente escrito en otros lenguajes. Los programas en lenguaje
11
ensamblador son más fáciles de modificar que los programas en lenguaje
máquina.
Desventajas del lenguaje ensamblador: dependencia total de la maquina lo que
impide la transportabilidad de los programas (posibilidad de ejecutar un
programa en diferentes máquinas). El lenguaje ensamblador del PC es distinto
del lenguaje ensamblador del Apple Machintosh. La formación de los
programadores es más compleja que la correspondiente a los programadores
de alto nivel, ya que exige no solo las técnicas de programación, sino también
el conocimiento del interior de la maquina El programador ha de conocer
perfectamente el hardware del equipo, ya que maneja directamente las
posiciones de memoria, registros del procesador y demás elementos físicos.
Todas las instrucciones son elementales, es decir, en el programa se deben
describir con el máximo detalle todas las operaciones que se han de efectuar
en la maquina para la realización de cualquier proceso.
Los lenguajes ensamblador tienen sus aplicaciones muy reducidas, se centran
básicamente en aplicaciones de tiempo real, control de procesos y de
dispositivos electrónicos.
Vistos a muy bajo nivel, los microprocesadores procesan exclusivamente
señales electrónicas binarias. Dar una instrucción a un microprocesador
supone en realidad enviar series de unos y ceros espaciadas en el tiempo de
una forma determinada. Esta secuencia de señales se denomina código
máquina. El código representa normalmente datos y números e instrucciones
para manipularlos. Un modo más fácil de comprender el código máquina es
dando a cada instrucción un mnemónico, como por ejemplo STORE, ADD o
JUMP. Esta abstracción da como resultado el ensamblador, un lenguaje de
muy bajo nivel que es específico de cada microprocesador.
Los lenguajes de bajo nivel permiten crear programas muy rápidos, pero que
son a menudo difíciles de aprender. Más importante es el hecho de que los
programas escritos en un bajo nivel sean altamente específicos de cada
procesador. Si se lleva el programa a otra máquina se debe reescribir el
programa desde el principio.
Lenguaje ensamblador (le):
Este intenta deflexibilizar la representación de los diferentes campos, esa
flexibilidad se consigue no escribiendo los campos en binario y aproximando
la escritura al lenguaje
LENGUAJES DE ALTO NIVEL:
Estos lenguajes son los mas utilizado por los programadores. Están diseñados
para que las personas escriban y entiendan los programas de un modo mucho
mas fácil que los lenguajes máquina y ensamblador. Un programa escrito en
lenguaje de alto nivel es independiente de la máquina (las instrucciones no
dependen del diseño del hardware o de una computadora en particular), por lo
12
que estos programas son portables o transportables. Los programas escritos
en lenguaje de alto nivel pueden ser ejecutados con poca o ninguna
modificación en diferentes tipos de computadoras. Son lenguajes de
programación en los que las instrucciones enviadas para que el ordenador
ejecute ciertas órdenes son similares al lenguaje humano. Dado que el
ordenador no es capaz de reconocer estas ordenes, es necesario el uso de un
intérprete que traduzca el lenguaje de alto nivel a un lenguaje de bajo nivel que
el sistema pueda entender.
Por lo general se piensa que los ordenadores son máquinas que realizan
tareas de cálculos o procesamiento de texto. La descripción anterior es sólo
una forma muy esquemática de ver una computadora. Hay un alto nivel de
abstracción entre lo que se pide a la computadora y lo que realmente
comprende. Existe también una relación compleja entre los lenguajes de alto
nivel y el código máquina.
Los lenguajes de alto nivel son normalmente fáciles de aprender porque están
formados por elementos de lenguajes naturales, como el inglés. En BASIC, el
lenguaje de alto nivel más conocido, los comandos como “IF CONTADOR=10
THEN STOP” pueden utilizarse para pedir a la computadora que pare si
CONTADOR es igual a diez. Por desgracia para muchas personas esta forma
de trabajar es un poco frustrante, dado que a pesar de que las computadoras
parecen comprender un lenguaje natural, lo hacen en realidad de una forma
rígida y sistemática.
Los lenguajes de alto nivel, también denominados lenguajes evolucionados,
surgen con posterioridad a los anteriores (lenguaje máquina, lenguajes de bajo
nivel o ensamblador) con los siguientes objetivos, entre otros:
Lograr independencia de la maquina, pudiendo utilizar un mismo programa en
diferentes equipos con la única condición de disponer de un programa traductor
o compilador, que es suministrado por el fabricante, para obtener el programa
ejecutable en lenguaje binario de la maquina que se trate. Además, no se
necesita conocer el hardware especifico de dicha maquina. Aproximarse al
lenguaje natural, para que el programa se pueda escribir y leer de una forma
más sencilla, eliminando muchas de las posibilidades de cometer errores que
se daban en el lenguaje maquina, ya que se utilizan palabras (en ingles) en
lugar de cadenas de símbolos sin ningún significado aparente.
Incluir rutinas de uso frecuente, como las de entrada / salida, funciones
matemáticas, manejo de tablas, etc., que figuran en una especie de librería del
lenguaje, de manera que se puedan utilizar siempre que se quiera sin
necesidad de programarlas cada vez.
Ventajas de los lenguajes de alto nivel: el tiempo de formación de los
programadores es relativamente corto comparado con otros lenguajes. La
escritura de programas se basa en reglas sintácticas similares a los lenguajes
humanos, nombres de las instrucciones tales como READ, WRITE, PRINT,
OPEN, etc. Las modificaciones y puestas a punto de los programas son más
fáciles. Reducción del costo de los programas. Transportabilidad. Permiten
tener una mejor documentación. Son más fáciles de mantener.
13
Por lo general se piensa que los ordenadores son máquinas que realizan
tareas de cálculos o procesamiento de textos. La descripción anterior es sólo
una forma muy esquemática de ver una computadora. Hay un alto nivel de
abstracción entre lo que se pide a la computadora y lo que realmente
comprende. Existe también una relación compleja entre los lenguajes de alto
nivel y el código máquina.
Los lenguajes de alto nivel son normalmente fáciles de aprender porque
están formados por elementos de lenguajes naturales, como el inglés. En
BASIC, el lenguaje de alto nivel más conocido, los comandos como "IF
CONTADOR = 10 THEN STOP" pueden utilizarse para pedir a la
computadora que pare si CONTADOR es igual a 10. Por desgracia para
muchas personas esta forma de trabajar es un poco frustrante, dado que a
pesar de que las computadoras parecen comprender un lenguaje natural, lo
hacen en realidad de una forma rígida y sistemática.
Desventajas de los lenguajes de alto nivel: incremento del tiempo de puesta a
punto al necesitarse diferentes traducciones del programa fuente para
conseguir el programa definitivo. No se aprovechan los recursos internos de la
maquina que se explotan mucho mejor en lenguajes máquina y
ensambladores. Aumento de la ocupación de memoria. El tiempo de ejecución
de los programas es mucho mayor.
Se puede decir que el principal problema que presentan los lenguajes de alto
nivel es la gran cantidad de ellos que existen actualmente en uso, además de
las diferentes versiones o dialectos que se han desarrollado de algunos de
ellos. Es difícil establecer una clasificación general de los mismos, ya que en
cualquiera que se realice habrá lenguajes que pertenezcan a mas de uno de
los grupos establecidos. Una clasificación muy extendida, atendiendo a la
forma de trabajar de los programas y a la filosofía con que fueron concebidos,
es la siguiente:

Lenguajes imperativos. Utilizan instrucciones como unidad de trabajo
de los programas (Cobol, Pascal, C, Ada).

Lenguajes declarativos. Los programas se construyen mediante
descripciones de funciones o expresiones lógicas (Lisp, Prolog).

Lenguajes orientados a objetos. El diseño de los programas se basa
mas en los datos y su estructura. La unidad de proceso es el objeto y en
el se incluyen los datos (variables) y las operaciones que actúan sobre
ellos (Smalltalk, C++).

Lenguajes orientados al problema. Diseñados para problemas
específicos, principalmente de gestión, suelen ser generadores de
aplicaciones.

Lenguajes naturales. Están desarrollándose nuevos lenguajes con el
principal objetivo de aproximar el diseño y construcción de programas al
lenguaje de las personas.
14
Otra clasificación que se puede hacer es la de atendiendo al desarrollo de los
lenguajes desde la aparición de las computadoras, que sigue un cierto
paralelismo con las generaciones establecidas en la evolución de las mismas:

Primera generación. Lenguajes maquina y ensambladores.

Segunda generación. Primeros lenguajes de alto nivel imperativo
(FROTRAN,
COBOL).

Tercera generación. Lenguajes de alto nivel imperativo. Son los mas
utilizados y siguen vigentes en la actualidad (ALGOL 8, PL/I, PASCAL,
MODULA).

Cuarta generación. Orientados básicamente a las aplicaciones de
gestión y al manejo de bases de datos (NATURAL, SQL).

Quinta generación. Orientados a la inteligencia artificial y al
procesamiento de los lenguajes naturales (LISP, PROLOG).
Para la mejor compresión se harán unas definiciones:
Programa: es un conjunto de instrucciones escritas en un lenguaje de
programación que indican a la computadora la secuencia de pasos, para
resolver un problema.
Código fuente: esta creado en algún lenguaje de alto nivel, por lo que es
entendido 100% por el ser humano. Este debe estar complementado por su
documentación o manuales donde se indica el desarrollo lógico del mismo.
Código objeto: es creado por los compiladores y nos sirve como enlace entre
el programa fuente y el ejecutable.
Intérpretes y compiladores
La traducción de una serie de instrucciones en lenguaje ensamblador (el código
fuente) a un código máquina (o código objeto) no es un proceso muy
complicado y se realiza normalmente por un programa especial llamado
compilador. La traducción de un código fuente de alto nivel a un código
máquina también se realiza con un compilador, en este caso más complejo, o
mediante un intérprete. Un compilador crea una lista de instrucciones de código
máquina, el código objeto, basándose en un código fuente. El código objeto
resultante es un programa rápido y listo para funcionar, pero que puede hacer
que falle el ordenador si no está bien diseñado. Los intérpretes, por otro lado,
son más lentos que los compiladores ya que no producen un código objeto,
sino que recorren el código fuente una línea cada vez. Cada línea se traduce a
código máquina y se ejecuta. Cuando la línea se lee por segunda vez, como en
el caso de los programas en que se reutilizan partes del código, debe
compilarse de nuevo. Aunque este proceso es más lento, es menos susceptible
de provocar fallos en la computadora.
15
ALGUNOS LEGUAJES DE
PROGRAMACIÓN DE ALTO NIVEL
A continuación se presentan varios de los mas conocidos y utilizados,
lenguajes de alto nivel.
Ensamblador
Cuando abstraemos los opcodes y los sustituimos por una palabra que sea una
clave de su significado, a la cual comúnmente se le conoce como mnemónico ,
tenemos el concepto de Lenguaje Ensamblador . Así, podemos definir
simplemente al Lenguaje Ensamblador de la siguiente forma:
Lenguaje Ensamblador es la primera abstracción del Lenguaje de Máquina ,
consistente en asociar a los opcodes palabras clave que faciliten su uso por
parte del programador
Como se puede ver, el Lenguaje Ensamblador es directamente traducible al
Lenguaje de Máquina, y viceversa; simplemente, es una abstracción que facilita
su uso para los seres humanos. Por otro lado, la computadora no entiende
directamente al Lenguaje Ensamblador; es necesario traducirle a Lenguaje de
Máquina. Originalmente, este proceso se hacía a mano, usando para ello hojas
donde se escribían tablas de programa similares al ejemplo de la calculadora
que vimos arriba . Pero, al ser tan directa la traducción, pronto aparecieron los
programas Ensambladores, que son traductores que convierten el código
fuente (en Lenguaje Ensamblador) a código objeto (es decir, a Lenguaje de
Máquina).
Una característica que hay que resaltar, es que al depender estos lenguajes del
hardware, hay un distinto Lenguaje de Máquina (y, por consiguiente, un distinto
Lenguaje Ensamblador) para cada CPU. Por ejemplo, podemos mencionar tres
lenguajes completamente diferentes, que sin embargo vienen de la aplicación
de los conceptos anteriores:
1.Lenguaje Ensamblador de la familia Intel 80x86 2.Lenguaje Ensamblador de
la familia Motorola 68000 3.Lenguaje Ensamblador del procesador POWER,
usado en las IBM RS/6000.
Tenemos 3 fabricantes distintos, compitiendo entre sí y cada uno aplicando
conceptos distintos en la manufactura de sus procesadores, su arquitectura y
programación; todos estos aspectos, influyen en que el lenguaje de máquina y
ensamblador cambie bastante.
16
Ventajas y desventajas del Lenguaje Ensamblador
Una vez que hemos visto la evolución de los lenguajes, cabe preguntarse: ¿En
estos tiempos "modernos", para qué quiero el Lenguaje Ensamblador?
El proceso de evolución trajo consigo algunas desventajas, que ahora veremos
como las ventajas de usar el Lenguaje Ensamblador, respecto a un lenguaje de
alto nivel:
1.Velocidad
2.Eficiencia de tamaño
3.Flexibilidad
Por otro lado, al ser un lenguaje más primitivo, el Ensamblador tiene ciertas
desventajas respecto a los lenguajes de alto nivel:
1.Tiempo de programación 2.Programas fuente grandes 3.Peligro de afectar
recursos inesperadamente 4.Falta de portabilidad
Velocidad
El proceso de traducción que realizan los intérpretes, implica un proceso de
cómputo adicional al que el programador quiere realizar. Por ello, nos
encontraremos con que un intérprete es siempre más lento que realizar la
misma acción en Lenguaje Ensamblador, simplemente porque tiene el costo
adicional de estar traduciendo el programa, cada vez que lo ejecutamos.
De ahí nacieron los compiladores, que son mucho más rápidos que los
intérpretes, pues hacen la traducción una vez y dejan el código objeto, que ya
es Lenguaje de Máquina, y se puede ejecutar muy rápidamente. Aunque el
proceso de traducción es más complejo y costoso que el de ensamblar un
programa, normalmente podemos despreciarlo, contra las ventajas de codificar
el programa más rápidamente.
Sin embargo, la mayor parte de las veces, el código generado por un
compilador es menos eficiente que el código equivalente que un programador
escribiría. La razón es que el compilador no tiene tanta inteligencia, y requiere
ser capaz de crear código genérico, que sirva tanto para un programa como
para otro; en cambio, un programador humano puede aprovechar las
características específicas del problema, reduciendo la generalidad pero al
mismo tiempo, no desperdicia ninguna instrucción, no hace ningún proceso que
no sea necesario.
Para darnos una idea, en una PC, y suponiendo que todos son buenos
programadores, un programa para ordenar una lista tardará cerca de 20 veces
17
más en Visual Basic (un intérprete), y 2 veces más en C (un compilador), que el
equivalente en Ensamblador.
Por ello, cuando es crítica la velocidad del programa, Ensamblador se vuelve
un candidato lógico como lenguaje.
Ahora bien, esto no es un absoluto; un programa bien hecho en C puede ser
muchas veces más rápido que un programa mal hecho en Ensamblador; sigue
siendo sumamente importante la elección apropiada de algoritmos y
estructuras de datos. Por ello, se recomienda buscar optimizar primero estos
aspectos, en el lenguaje que se desee, y solamente usar Ensamblador cuando
se requiere más optimización y no se puede lograr por estos medios.
Tamaño
Por las mismas razones que vimos en el aspecto de velocidad, los
compiladores e intérpretes generan más código máquina del necesario; por
ello, el programa ejecutable crece. Así, cuando es importante reducir el tamaño
del ejecutable, mejorando el uso de la memoria y teniendo también beneficios
en velocidad, puede convenir usar el lenguaje Ensamblador. Entre los
programas que es crítico el uso mínimo de memoria, tenemos a los virus y
manejadores de dispositivos (drivers). Muchos de ellos, por supuesto, están
escritos en lenguaje Ensamblador.
Flexibilidad
Las razones anteriores son cuestión de grado: podemos hacer las cosas en
otro lenguaje, pero queremos hacerlas más eficientemente. Pero todos los
lenguajes de alto nivel tienen limitantes en el control; al hacer abstracciones,
limitan su propia capacidad. Es decir, existen tareas que la máquina puede
hacer, pero que un lenguaje de alto nivel no permite. Por ejemplo, en Visual
Basic no es posible cambiar la resolución del monitor a medio programa; es
una limitante, impuesta por la abstracción del GUI Windows. En cambio, en
ensamblador es sumamente sencillo, pues tenemos el acceso directo al
hardware del monitor.
Resumiendo, la flexibilidad consiste en reconocer el hecho de que
Todo lo que puede hacerse con una máquina, puede hacerse en el lenguaje
ensamblador de esta máquina; los lenguajes de alto nivel tienen en una u otra
forma limitantes para explotar al máximo los recursos de la máquina.
Tiempo de programación
Al ser de bajo nivel, el Lenguaje Ensamblador requiere más instrucciones para
realizar el mismo proceso, en comparación con un lenguaje de alto nivel. Por
otro lado, requiere de más cuidado por parte del programador, pues es
18
propenso a que los errores de lógica se reflejen más fuertemente en la
ejecución.
Por todo esto, es más lento el desarrollo de programas comparables en
Lenguaje Ensamblador que en un lenguaje de alto nivel, pues el programador
goza de una menor abstracción.
Programas fuente grandes
Por las mismas razones que aumenta el tiempo, crecen los programas fuentes;
simplemente, requerimos más instrucciones primitivas para describir procesos
equivalentes. Esto es una desventaja porque dificulta el mantenimiento de los
programas, y nuevamente reduce la productividad de los programadores.
Peligro de afectar recursos inesperadamente
Tenemos la ventaja de que todo lo que se puede hacer en la máquina, se
puede hacer con el Lenguaje Ensamblador (flexibilidad). El problema es que
todo error que podamos cometer, o todo riesgo que podamos tener, podemos
tenerlo también en este Lenguaje. Dicho de otra forma, tener mucho poder es
útil pero también es peligroso.
En la vida práctica, afortunadamente no ocurre mucho; sin embargo, al
programar en este lenguaje verán que es mucho más común que la máquina
se "cuelgue", "bloquee" o "se le vaya el avión"; y que se reinicialize. ¿Por qué?,
porque con este lenguaje es perfectamente posible (y sencillo) realizar
secuencias de instrucciones inválidas, que normalmente no aparecen al usar
un lenguaje de alto nivel.
En ciertos casos extremos, puede llegarse a sobreescribir información del
CMOS de la máquina (no he visto efectos más riesgosos); pero, si no la
conservamos, esto puede causar que dejemos de "ver" el disco duro, junto con
toda su información.
Falta de portabilidad
Como ya se mencionó, existe un lenguaje ensamblador para cada máquina;
por ello, evidentemente no es una selección apropiada de lenguaje cuando
deseamos codificar en una máquina y luego llevar los programas a otros
sistemas operativos o modelos de computadoras. Si bien esto es un problema
general a todos los lenguajes, es mucho más notorio en ensamblador: yo
puedo reutilizar un 90% o más del código que desarrollo en "C", en una PC, al
llevarlo a una RS/6000 con UNIX, y lo mismo si después lo llevo a una
Macintosh, siempre y cuando esté bien hecho y siga los estándares de "C", y
los principios de la programación estructurada. En cambio, si escribimos el
programa en Ensamblador de la PC, por bien que lo desarrollemos y muchos
estándares que sigamos, tendremos prácticamente que reescribir el 100 % del
código al llevarlo a UNIX, y otra vez lo mismo al llevarlo a Mac.
19
FORTRAN
Abreviatura de FORmula TRANslator (traductor de formulas), fue definido
alrededor del año 1955 en Estados Unidos por la compañía IBM. Es él más
antiguo de los lenguajes de alto nivel. Antes de él, todos los programas se
escribían en lenguaje ensamblador o en lenguaje máquina. Es un lenguaje
especializado en aplicaciones técnicas y científicas. Se caracteriza por su
potencia en los cálculos matemáticos, pero esta limitado en las aplicaciones de
gestión, manejo de archivos, tratamiento de cadenas de caracteres y edición de
informes. Es un lenguaje notorio, por la facilidad con que permite expresar una
ecuación. Muchas de sus características fueron incorporadas mas tarde en el
primer lenguaje BASIC. Una de sus ventajas es que es un lenguaje compacto y
es también ampliamente utilizado para aplicaciones en los negocios que no
requieren manejo de grandes archivos de datos. Hasta 1961 se mantuvo como
monopolio de IBM, pero posteriormente se fue implementando en ordenadores
de otros fabricantes. A lo largo de su existencia han aparecido diferentes
versiones, entre las que destaca la adoptada en 1966 por el ANSI (American
National Standards Institute), en la que se definieron nuevas reglas del
lenguaje y se logro la independencia del mismo con respecto a la máquina; es
decir, comenzo la portabilidad del lenguaje. Esta versión se denominó
FORTRAN IV o FORTRAN 66, y el idioma se hizo tan popular en los años 60,
que FORTRAN 66 se volvió el primer idioma en ser regularizado oficialmente
en 1972. En 1977 apareció una nueva versión mas evolucionada que se llamo
FORTRAN V o FORTRAN 77. Está reflejada en el documento ANS X3.9-1978:
Programming Language FORTRAN y define dos niveles del lenguaje
denominados FORTRAN 77 completo y FORTRAN 77 básico, siendo el
segundo un subconjunto del primero. Incluye, además, instrucciones para el
manejo de cadenas de caracteres y de archivos, así como otras para la
utilización de técnicas de programación estructurada. Estas características
hacer que el lenguaje también sea valido para determinadas aplicaciones de
gestión. A mediados de los años setenta se proporcionaron virtualmente cada
computadora, mini o mainframe, con un sistema FORTRAN 66 normal. Era por
consiguiente posible escribir programas en FORTRAN en cualquier sistema y
estar bastante seguro que estos pudieran moverse para trabajar en cualquier
otro sistema bastante fácil. Esto, y el hecho que pudieran procesarse
programas de FORTRAN muy eficazmente. La ultima normalización del
lenguaje, FRONTRAN 90, se encuentra en el documento ANS X3.198-1991 en
la que se incluyen características como la recursividad, tratamiento paralelo de
tablas y uso de memoria dinámica. Permite expresar los programas de
maneras que se satisfacen mas a un ambiente de la informática moderna y han
quedado obsoletos muchos de los mecanismos que eran apropiados en
FROTRAN 77. En FROTRAN 90 algunos rasgos de FROTRAN 77 han sido
reemplazados por rasgos mejores, mas seguros y más eficaces, muchos de
estos fueron quitados del idioma FORTRAN 95. El FRONTRAN tiene la ventaja
de ser un lenguaje compacto que sirve muy bien para satisfacer las
necesidades de los científicos y los estadísticos de los negocios.
COBOL
20
Es el lenguaje mas utilizado en las aplicaciones de gestión, creado en 1960 por
un comité denominado CODASYL (COnference on DAta SYstems Languages),
patrocinado por el Departamento de Defensa de Estados Unidos, a fin de
disponer de un lenguaje universal para aplicaciones comerciales, como
expresa su nombre (COmmnon Business Oriented Language).
A lo largo de su existencia ha sufrido diversas actualizaciones. Su primer
estándar fue aprobado por el ANSI en 1968. Posteriormente, en 1974, se
adopta la norma ANS X3.23-1974, que ha perdurado hasta su ultima versión,
COBOL ANS-85, que facilita el diseño estructurado de los programas.
Sus características más destacables son las siguientes: se asemeja al lenguaje
natural (inglés), es autodocumentado y ofrece grandes facilidades en el manejo
de archivos, así como en la edición de informes escritos. Puede emplear
términos comúnmente utilizados en los negocios.
Entre sus inconvenientes están sus rígidas reglas de formatos de escritura, la
necesidad de escribir todos los elementos al máximo detalle, la extensión
excesiva en sus sentencias, e incluso duplicación en algunos casos, y la
inexistencia de funciones matemáticas.
No obstante, se puede afirmar que en la actualidad continua siendo el lenguaje
mas utilizado en las aplicaciones de gestión.
PL/I
Fue creado a comienzos de los años sesenta por IBM para ser usado en sus
equipos del sistema 360. Inspirándose en los lenguajes ALGOL, COBOL y
FORTRAN se desarrollo el PL/I (Programming Language/I) tomando las
mejores características de los anteriores y añadiendo algunas nuevas, con el
objetivo de obtener un lenguaje lo mas general posible en cuanto a su
implementación, útil para aplicaciones técnico-científicas, comerciales, de
proceso de textos, de bases de datos y de programación de sistemas. Se trata
de un lenguaje de programación complejo. Compilado y estructurado, es capaz
de gestionar errores y de procesar multitareas, y se emplea en entornos
académicos y de investigación.
Entre sus novedades esta su gran libertad en el formato de escritura de los
programas: soporta la programación estructurada y diseño modular. Es un
lenguaje flexible y sofisticado. No obstante, no ha superado a sus progenitores
en sus aplicaciones especificas, debido en parte a su amplitud y, por ello, al
tamaño de su compilador que hasta ahora solo se podía instalar en grandes
equipos. El elemento básico de este programa es el enunciado que termina en
punto y coma. Los enunciados se combinan en procedimientos. Un
procedimiento puede representar por completo a un programa pequeño o un
“bloque de construcción” o modulo de un programa más complejo.
BASIC
El lenguaje BASIC fue diseñado por los profesores John G. Kemeny y Thomas
E. Kurtz del Dartmouth College (Estados Unidos) en 1965, con el objetivo
principal de proporcionar a los principiantes un lenguaje fácil de aprender,
como se indica en su nombre Beginner's All-purpose Symbolic Instruction Code
(Código de instrucciones simbólico de propósito general para principiantes). Es
un lenguaje interactivo muy popular que tiene una aceptación debido a la
21
facilidad de su uso, es un idioma simple para aprender y fácil de traducir. Que
sé interactivo, permite la comunicación directa entre el usuario y el sistema de
computo durante la preparación y uso de los programas.
Entre sus principales novedades están las de ser un lenguaje interpretado y de
uso conversacional, útil para aplicaciones técnicas y de gestión. Esto, unido a
la popularización de las microcomputadoras y computadoras personales, ha
hecho que su utilización sea haya extendido enormemente, a la vez que ha
propiciado el surgimiento de una gran diversidad de diversiones que extienden
y se adaptan a necesidades particulares el lenguaje original. Existen multitud
de interpretes y compiladores del lenguaje.
VISUAL BASIC
En mayo de 1991 anuncia de un de un nuevo lenguaje de programación
llamado “visual Basic”, el cual produce rápida y efectivamente aplicaciones de
Windows. Cuando la versión 1.0 salió al mercado este fue diseñado para ser un
ambiente de programación íntegramente visual utilizando un editor, compilador
y “debugger”. La meta era habilitar programas producidos por lenguajes
tradicionales a rápidas aplicaciones Windows de calidad con poco trabajo.
Combinando herramientas gráficas y un sistema abierto, el visual Basic ofrecía
a los programadores lo que ahora se llama “programación visual”
Ventajas:
-1)provee una rápida vía para dar prototipos a las ideas de
programadores
-2)hace todo el trabajo de interfase(GUI)por el programador
-3)reduce
increíblemente
la
complejidad
y
requerido por las aplicaciones Windows
los
tamaño
Aplicaciones:
-Bas: un modulo código
-Vbx: un archivo de control definido
-Frm: una forma
-Mak: un archivo de proyecto
-Frx: un archivo de información binaria
Q BASIC
Q Basic es un lenguaje de alto nivel, el cual consiste en instrucciones que los
humanos pueden relacionar y entender. El compilador de Qbasic se encarga de
traducir el mismo a lenguaje de máquina.
Un programa es una secuencia de instrucciones. El proceso de ejecutar esas
instrucciones se llama correr el programa. Los programas contienen las
funciones de entrada, procesamiento y salida. La persona que resuelve
problemas mediante escribir programas en la computadora se conoce como
22
programador. Después de analizar el problema y desarrollar un plan para
solucionarlo, escribe y prueba el programa que instruye a la computadora como
llevar a cabo el plan. El procedimiento que realiza el programador se define
como "problem solving". Pero es necesario especificar que un programador y
un usuario no son lo mismo. Un usuario es cualquier persona que use el
programa.
Ejemplo de qbasic, para hacer una calculadora
DIM total AS DOUBLE
DIM number AS DOUBLE
DIM secondNumber AS DOUBLE
DIM more AS STRING
DIM moreNumbers AS STRING
DIM operation AS STRING
total = 0
more = "y"
moreNumbers = "c"
CLS
WHILE more = "y"
INPUT "Enter the first number"; number
total = number
WHILE moreNumbers = "c"
COLOR 14
PRINT "The total is:"; total
COLOR 7
PRINT "Select an operation"
COLOR 2
PRINT "(+)"
23
COLOR 5
PRINT "(-)"
COLOR 1
PRINT "(x)"
COLOR 4
INPUT "(/)"; operation
COLOR 7
CLS
IF operation = "+" THEN
REM where we do additions
PRINT "Enter the number to Add to"; total
INPUT secondNumber
total = secondNumber + total
COLOR 14
PRINT "The total is now:"; total
COLOR 7
ELSE
IF operation = "-" THEN
REM subtraction
PRINT "Enter the number to Subtract from"; total
INPUT secondNumber
total = total - secondNumber
COLOR 14
PRINT "The total is now:"; total
24
COLOR 7
ELSE
IF operation = "x" THEN
REM multiplication
PRINT "Enter the number to Multiply"; total; "by"
INPUT secondNumber
total = secondNumber * total
REM * is the multiplication sign in programs
COLOR 14
PRINT "The total is now:"; total
COLOR 7
ELSE
IF operation = "/" THEN
REM division
PRINT "Enter the number to Divide"; total; "by"
INPUT secondNumber
IF secondNumber = 0 THEN
COLOR 4
PRINT "You cannot divide by zero"
COLOR 7
ELSE
total = total / secondNumber
REM / is the division sign in programs
END IF
25
COLOR 14
PRINT "The total is now:"; total
COLOR 7
ELSE
PRINT "you must select an operation"
END IF
END IF
END IF
END IF
INPUT "Do you wish to continue (c) or start with new numbers
(n)";moreNumbers
CLS
WEND
COLOR 14
PRINT "The grand total is:"; total
COLOR 7
INPUT "Do you wish to make more calculations (y - n)"; more
moreNumbers = "c"
REM if we don't put "moreNumbers" back to y, it will always
REM come back to "Do you wish to make more calculations" and never REM
ask
for numbers again
REM (try it)
total = 0
REM if we don't reset the total to 0, it will just
26
REM keep on adding to the total
WEND
END
PASCAL
Fue creado por el matemático suizo Nicklaus Wirth en 1970, basándose en el
lenguaje ALGOL, en cuyo diseño había participado en los años sesenta. Su
nombre proviene del filosofo y matemático francés del siglo XVII, Blaise Pascal,
que invento la primera maquina tipo mecánico para sumar. Fue el primer gran
lenguaje creado después de haber sido ampliamente diseminados los
conceptos asociados con la programación estructurada.
Aunque en principio la idea del diseñador era proporcionar un lenguaje
adecuado para la enseñanza de los conceptos y técnicas de programación, con
el tiempo ha llegado a ser un lenguaje ampliamente utilizado en todo tipo de
aplicaciones, que posee grandes facilidades para la programación de sistemas
y diseño grafico.
Aporta los conceptos de tipo de datos, programación estructurada y diseño
descendente, entre otros, además de haberse convertido en predecesor de
otros lenguajes más modernos, como MODULA-2 y ADA.
C
Este lenguaje fue creado en 1972 por Dennis Ritchie a partir del trabajo
elaborado por su colega de los laboratorios Bell Telephone, Ken Thompson.
Estos habían diseñado con anterioridad el sistema operativo UNIX, y su
intención al desarrollar el lenguaje C fue la de conseguir un lenguaje idóneo
para la programación de sistemas que fuese independiente de la maquina, con
el cual escribir su sistema UNIX.
Aunque, como acabo de decir, fue diseñado inicialmente para la programación
de sistemas, posteriormente su uso se ha extendido a ablaciones técnicocientíficas, de bases de datos, de proceso de textos, etc.
En 1980 Bjarne Stroustrup, inspirado en el lenguaje Simula67 adicionó las
características de la programación orientada a objetos incluyendo la ventaja de
una biblioteca de funciones orientadas a objetos) y lo denomino C con clases.
Para 1983 dicha denominación cambio a la de C++. Con este nuevo enfoque
surge la nueva metodología que aumenta las posibilidades de la programación
bajo nuevos conceptos.
La utilización optima de este lenguaje se consigue dentro de su entorno natural,
que ese el sistema operativo UNIX, y entre sus características destaca el uso
de programación estructurada para resolver tareas de bajo nivel, así como la
amplia librería de rutinas de que dispone. El lenguaje C reúne características
de programación intermedia entre los lenguajes ensambladores y los lenguajes
de alto nivel; con gran poderío basado en sus operaciones a nivel de bits
(propias de ensambladores) y la mayoría de los elementos de la programación
estructurada de los lenguajes de alto nivel, por lo que resulta ser el lenguaje
27
preferido para el desarrollo de software de sistemas y aplicaciones
profesionales de la programación de computadoras.
C es un lenguaje de programación diseñado por Dennis Ritchie, de los
Laboratorios Bell, y se instaló en un PDP-11 en 1972; se diseñó para ser el
lenguaje de los Sistemas Operativos UNIX1. A su vez, UNIX es un Sistema
Operativo desarrollado por Ken Thompson, quién utilizó el lenguaje
ensamblador y un lenguaje llamado B para producir las versiones originales de
UNIX, en 1970. C se inventó para superar las limitaciones de B.
C es un lenguaje maduro de propósitos generales que se desarrolló a partir de
estas raíces; su definición aparece en 1978 en el apéndice ``C Reference
Manual'' del libro The C Programming Language, de Brian W. Kernighan y
Dennis M. Ritchie (Englewood Cliffs, Nueva Jersey, Prentice-Hall 1978), pero el
estándar recomendable más reciente apareció en junio de 1983, en el
documento de los Laboratorios Bell titulado The C Programming LanguageReference Manual, escrito por Dennis M. Ritchie generalizando, un programa
en C consta de tres secciones. La primera sección es donde van todos los
``headers''. Estos ``headers'' son comúnmente los ``#define'' y los ``#include''.
Como segunda sección se tienen las ``funciones''. Al igual que Pascal, en C
todas las funciones que se van a ocupar en el programa deben ir antes que la
función principal (main()). Declarando las funciones a ocupar al principio del
programa, se logra que la función principal esté antes que el resto de las
funciones. Ahora, solo se habla de funciones ya que en C no existen los
procedimientos.
Y como última sección se tiene a la función principal, llamada main. Cuando se
ejecuta el programa, lo primero que se ejecuta es esta función, y de ahí sigue
el resto del programa.
Los símbolos { y } indican ``begin'' y ``end'' respectivamente. Si en una función
o en un ciclo while, por ejemplo, su contenido es de solamente una línea, no es
necesario usar ``llaves'' ({ }), en caso contrario es obligación usarlos.
Ejemplo de un programa en C :
/*Programa ejemplo que despliega el contenido de "ROL" en pantalla*/
#include <stdio.h>
#define ROL "9274002-1"
despliega_rol() {
printf("Mi rol es : \%s\n", ROL);
}
28
void main() {
despliega_rol();
}
/* Fin programa */
MODULA-2
El lenguaje MODULA fue diseñado en 1977 bajo la dirección de Nicklaus Wirth,
creador también el lenguaje PASCAL, con la intención de incluir las
necesidades de la programación de sistemas y dar respuestas a las criticas
recibidas respecto de las carencias del lenguaje PASCAL. En 1979 se realiza
una versión que pasa a denominarse MODULA-2 y que perdura en la
actualidad.
Además de incluir las características de su predecesor, este nuevo lenguaje
incorpora las principales carencias de aquel, como la posibilidad de
compilación separada, creación de librerías, programación concurrente, mejora
el manejo de cadenas de caracteres, los procedimientos de entrada/salida y la
gestión de la memoria, etc. además, posee grandes facilidades para la
programación de sistemas.
También, debido a sus cualidades didácticas, ha sido ampliamente aceptado
por la comunidad universitaria como herramienta idónea para la enseñanza de
la programación.
ADA
Es él ultimo intento de obtener un único lenguaje para todo tipo de
aplicaciones, e incluso los últimos avances de técnicas de programación. Su
diseño fue encargado por el Departamento de Defensa de Estados Unidos,
para su uso en servicios militares, a la empresa Honeywell-Bull después de
una selección rigurosa entre varias propuestas realizadas sobre una serie de
requerimientos del lenguaje y de haber evaluado negativamente veintitrés
lenguajes existentes. De estos, se seleccionaron como base para la creación
del nuevo lenguaje el PASCAL, el ALGOL y el PL/I.
La estandarización del lenguaje se publico en 1983 con el nombre de ADA, en
honor de la considerada primera programadora de la historia, Augusta Ada
Byron, condesa de Lovelace.
Entre las características del lenguaje se encuentran la compilación separada,
los tipos abstractos de datos, programación concurrente, programación
estructurada, libertad de formatos de escritura, etc. Como principal
inconveniente presenta su gran extensión. Los escritores lo llamaron inflexible
e ineficiente, en tanto que sus favorecedores lo consideraban un gran avance
en la tecnología del software.
LISP
En informática, acrónimo de List Processing. Un lenguaje de programación
para ordenadores o computadoras orientado a la generación de listas,
29
desarrollado en 1959-1960 por John McCarthy y usado principalmente para
manipular listas de datos o de símbolos. El lenguaje LISP constituyó un
cambio radical con respecto a los lenguajes procedurales (FORTRAN,
ALGOL) que se desarrollaban por entonces. El LISP es un lenguaje
interpretado, en el que cada expresión es una lista de llamadas a funciones.
Este lenguaje se sigue utilizando con frecuencia en investigación y en
círculos académicos, y fue considerado durante mucho tiempo el lenguaje
modelo para la investigación de la inteligencia artificial (IA), aunque el Prolog
ha ganado terreno durante los últimos años.
LOGO
En informática, lenguaje de programación de ordenadores o computadoras,
desarrollado en 1968 por Seymour Papert en el MIT, que se usa
frecuentemente en la enseñanza de lenguaje de programación a niños. Una
característica importante de Logo son los gráficos de tortuga, que permiten al
programador hacer dibujos simples dirigiendo los movimientos de la tortuga en
la pantalla hacia adelante, hacia la derecha o la izquierda. Una vez que
dominan el entorno sencillo del dibujo, el programador (normalmente un niño o
una niña) empieza a descubrir las características más sofisticadas del lenguaje,
que están basadas fundamentalmente en el lenguaje de programación LISP.
Logo está considerado como un lenguaje para la formación, a pesar de que
algunas empresas intentaron que tuviera una mayor aceptación en los círculos
profesionales de programación.
MACRO
En aplicaciones de ordenador o computadora, un conjunto de pulsaciones de
teclas, acciones o instrucciones grabadas y ejecutadas mediante una simple
pulsación de tecla o una instrucción. Así se evita la introducción repetitiva de
instrucciones, se minimizan los errores tipográficos y se permite a los
usuarios que no conozcan el programa reproducir conjuntos de instrucciones
previamente grabados por alguien más experto en la aplicación. Si la
aplicación incluye también un lenguaje de macros que responda a variables e
instrucciones condicionales, el usuario puede también controlar el resultado
de un procedimiento, haciendo que la macro responda de forma diferente
bajo condiciones diversas. En un lenguaje de programación, tal como el
lenguaje C o ensamblador, una macro es un nombre que define un conjunto
de instrucciones que serán sustituidas por la macro cuando el nombre de ésta
aparezca en un programa (proceso denominado expansión de macros) en el
momento de compilar o ensamblar el programa. Las instrucciones de macros
se pueden guardar en el programa mismo o en un archivo separado que el
programa pueda identificar.
RPG
Report Program Operator fue introducido en 1960 como un lenguaje para
duplicar rápidamente el enfoque de proceso utilizado con un equipo de tarjeta
perforada. Este lenguaje fue desarrollado por IBM en 1964. Su uso esta aun
limitado sobre todo para las aplicaciones de negocios que son procesadas en
30
pequeñas computadoras, generar informes comerciales o de negocios. Como
su nombre lo sugiere, el RPG esta diseñado para generar los reportes de salida
que resultan del proceso de aplicaciones de negocios.
A pesar de las aplicaciones de actualización de archivos, el RPG es un
lenguaje de propósito limitado porque los programas objeto generados por el
compilador de RPG siguen sin desviación, un ciclo de procesamiento básico.
Una ventaja del RPG es la relativa facilidad para aprenderlo y usarlo. Dado que
la lógica de la programación es fija, existen menos reglas formales que en otros
lenguajes.
ALGOL
El ALGOL (ALGOritmic Language) fue presentado en 1958. Fue el primer
lenguaje de programación de proceso estructurado de alto nivel. Fue orientado
al uso de quienes participan en proyectos científicos y matemáticos. Un grupo
internacional de matemáticos europeos y americanos, pretendían crear un
lenguaje común normalizado que les permitiera el intercambio de algoritmos,
aunque esta en desuso, fue el primero que incorporo conceptos claves para la
programación actual.
APL
Sus siglas significan (A Programming Language). Un Lenguaje de
Programación. Este programa fue desarrollado por Kenneth Inverson en el año
1961 para resolver problemas matemáticos. Este lenguaje se caracteriza por su
brevedad y por su capacidad de generación de matrices y se utiliza en el
desarrollo de modelos matemáticos.
PILOT
Programmend Inquiry
Language Or Teaching (Consulta, lenguaje o
aprendizaje de investigación programada) creado en 1969.
Este lenguaje de programación es utilizado fundamentalmente para crear
aplicaciones destinadas a instrucciones asistidas por computadoras.
Se
caracteriza por utilizar un mínimo de sintaxis.
SMALLTALK
SMALLTALK, Lenguaje de Programación orientado a objetos integrados con un
entorno de desarrollo multiventana. SMALLTALK no es solo un hermoso
lenguaje de computación orientado a objetos. El entorno de desarrollo merece
similar valoración y ha sido copiado muchas veces, desde el Sistema Operativo
de Apple MS Windows y Borland Pascal (en una memoria extensión). Muchos
conceptos de SMALLTALK como los browsers y las técnicas de browsing han
encontrado hoy su rumbo en muchas herramientas de desarrollo de la
generación X, desarrollado por SMALLTALK poseen un factor “divertido-deusar”. Los cambios se graban instantáneamente y los mismos pueden probarse
rápidamente.
SMALLTALK fue desarrollado dentro del Grupo de Investigación del
Aprendizaje en el Centro de Investigación de Xerox en palo Alto a comienzos
de los 70. Las principales ideas de SMALLTALK se le atribuyen generalmente
a Alan kay con raíces en Simula, LISP y SketchPad. Dan Ingalls escribió el
31
código de las primeras ventanas solapables, los pop-up menús y la clase BitBlt.
Adele Goldberg y Dave Robson escribieron los manuales de referencia para
SMALLTALK y fueron miembros clave del equipo de desarrollo. Un programa
de licenciamiento de Xerox y Xerox Special Information Systems. Sin embargo
la distribución generalizada a la comunidad de desarrollo no sucedió hasta la
fundación de una nueva compañía llamada ParcPlace Systems Inc. , Dirigida
por Adele Goldberg.
Un segundo SMALLTALK (SMALLTALK 4) fue desarrollado por Digitalk en los
Angeles California. Este SMALLTALK estaba dirigido a cubrir la necesidad de
un producto pequeño, de alta velocidad, basado en PC.
Object Technology International Inc. (OTI) desarrolló un conjunto de
herramientas para proveer el control de inversiones y el manejo de
configuraciones en grandes proyectos. IBM desarrolló la familia de productos
VisualAge para SMALLTALK en colaboración con Object Technology
(antiguamente ParcPlase-Digitalk) e IBM permanecen como los distribuidores
dominantes de entornos de desarrollos en SMALLTALK. Algunos nuevos
SMALLTALK se hallan en etapa de desarrollo.
FORTH
Lenguaje de cuarta generación, creado en 1970, es un lenguaje estructurado e
interpretado de fácil ampliación y ofrece una alta funcionalidad en un espacio
reducido. Es un lenguaje de alto nivel del cual derivan en la actualidad casi
todos los lenguajes empleados en los robots.
LENGUAJE C++
Se pronuncia “ce plus plus”. Fue desarrollada por Bjarme Stroustrup en los Bell
Laboratories a principios de la década de los 80. C++ introduce la
programación orientada al objeto en C. Es un lenguaje extremadamente
poderoso y eficiente. C++ es un súper conjunto de C, para aprender C++
significa aprender todo de C, luego aprender programación orientada al objeto
y el uso de éstas con C++.
SIGNOS DE PROGRAMACIÓN C++.
A. ELEMENTOS SINTACTICOS.
Las palabras claves son aquellas que tienen un significado especial como:
BREAK, DOUBLE, IF, STUCT , CASE, ELSE, INT, SWITCH. CHAR, ENUM,
LONG, TYPEDEF, CONST, FLOAT, RETURN, VOID, DEFAULT, FOR, SIZE
OF, WJHILE,
Los identificadores son nombres que permiten hacer referencia a los diferentes
objetos tratados en el programa y que no son palabras clave. Un identificador
debe comenzar por una letra o el carácter ( ) y puede ir seguido por dígitos,
letras. Se distingue entre mayúsculas y minúsculas.
32
Los delimitadores son signos especiales que permiten separar y reconocer las
diferentes unidades sintácticas del lenguaje. Los principales signos
delimitadores son:
; se considera el terminador, que es necesario cuando finaliza cada una
de las sentencias o declaraciones.
,
separa dos elementos consecutivos de la lista.
()
enmarca una lista de parámetros.
[]
enmarca la dimensión o el subíndice de una tabla.
{}
enmarca un bloque de instrucciones o una lista de valores iniciales.
B. OPERADORES ARITMÉTICOS:
Operan sobre datos numéricos y son :
- Resta
+ suma
++ incremento
* producto
/ división
% modulo
-- decremento.
C. OPRADORES RELACIONALES.
Operan sobre elementos de diferentes tipos y evalúan un tipo lógico. Son
los siguientes:
 mayor que
< menor que
>= mayor o igual que
<= menor igual que
==igual que
!= distinto que
D. OPERADORES LÓGICOS.
Operan sobre tipos lógicos. Pueden ser los siguientes:
“ Y
O
!! NO
E. FUNCIONES.
También podemos encontrar las funciones matemáticas:
Sin (x)
Cos (x)
33
Tan (x)
Exp (x)
Log (x)
Pow(x,y)
Sqrt (x)
Los ángulos para las funciones trigonométricas están dados en radianes.
El C se encuentra en la jerarquía de lenguajes en un nivel intermedio entre
Pascal y el Ensamblador. Pretende ser un lenguaje de alto nivel con la
versatilidad del bajo nivel.
Se diseñó junto con el sistema operativo UNIX y está muy orientado a
trabajar en su entorno.
En su desarrollo se siguieron una serie de líneas generales tales como:
El compilador debe ser lo más pequeño y eficiente posible. Pocas
palabras reservadas, esto es, un conjunto reducido de
sentencias. No
existe anidamiento de procedimientos.
La entrada/salida no se considera parte del lenguaje en sí, sino que se
suministra a través de funciones de librería. La misma política se sigue con
cualquier otro tipo complejo de instrucciones.
Para escribir un programa se debe poder escribir poco texto. Para
lograr esto se reduce el número de palabras claves.
Con ello se llegó a un compilador con un poderoso juego de instrucciones,
que permite aumentar la productividad/día de los programadores.
A pesar de ello el C es un lenguaje rápido de aprender, que deriva en
compiladores sencillos de diseñar, robustos, y que generan objetos pequeños
y eficientes.
Una de las características más apreciadas de C es su gran portabilidad,
gracias a que deja en manos de librerías las funciones dependientes de la
máquina, ¡y todo ello sin restringir el acceso a dicha máquina!
Estas y otras características lo hacen adecuado para la programación en
áreas tales como:
- programación de sistemas
- estructuras de datos y sistemas de bases de datos
- aplicaciones científicas
- software gráfico
- análisis numérico
34
DELPHI
Es un sistema de desarrollo de aplicaciones para Windows introducido por
“INPRISE”en 1995. Basado en el “objeto-orientado”, objeto del lenguaje pascal,
incluye herramientas de programación visual y genera programas
ejecutables(archivos .EXE ) incluye un sistema de base de datos Borland, la
cual permite acceder a las bases de datos; dBASE, PARADOX y ODBC. Delphi
también utiliza controles de Visual Basic (VBXS).
El cliente del Delphi mejora sus soportes con las bases de datos como;
ORACLE, SYBASE e INFORMIX, del jefe cliente/servidor.
Es un entorno de programación visual orientado a objetos para desarrollo
rápido de aplicaciones (RAD) de propósito general, incluyendo aplicaciones
cliente/servidor.
Delphi es la versión de Delphi para 32 bits (delphi 3), es decir son casi los
mismos, con la única diferencia que Delphi 3 es mucho más mejorado, por
ejemplo contiene un TeeChart, que sirve para los gráficos de negocio.
Delphi tiene las siguiente características:







Rendimiento - con el mejor y más rápido compilador del mundo.
Empresa e Internet - soluciones cliente y servicio
Desarrollo de aplicaciones rápidas (RAD).
Reusabilidad de componentes, un verdadero entorno orientado a objetos.
Manejo de Base de Datos escalables.
Arquitectura multinivel abierta y dimensionable.
Diseminación de información de base de datos en la Web a una gran
velocidad.
JAVA
Es un lenguaje de programación para crear programas seguros, portátiles,
orientados a objetos interactivos, para mejorar la entrega de información a
través de Internet, etc.
Java nació como un lenguaje para sistemas embebidos (equipos de propósito
específico
controlados
por
microchips
y
software)
James Gosling, a principios de los 90 y empleado de Sun Microsystems, tenía
en mente un lenguaje independiente de plataforma, que pudiera correr bajo
cualquier CPU, que fuera sencillo y permitiera desarrollar software libre de
errores.
Trato de adecuar inicialmente el lenguaje C++ para estos propósitos, pero no
cumplió con las expectativas. Se desarrolló entonces oak (el primer nombre
para
Java)
y
se
probó
en
un
pequeño
control
remoto.
A mediados de 1.994, con el auge de la Web, el equipo de trabajo de Gosling
trabajó en el desarrollo de un Browser basado en Java. WebRunner fué
terminado para finales de 1.994 y se vislumbraron las ventajas de esta nueva
tecnología.
Después de esto la carrera en el mundo Java ha sido vertiginosa:
 Mayo de 1.995. Sun anuncia Java y HotJava al mundo
35


Verano de 1.995. Los primeros desarrolladores interesados obtienen de
Sun la versión Alpha del ambiente de desarrollo
Septiembre de 1.995. Tiene lugar el primer Java contest. Sun libera el
primer pre-beta
Ventajas de Java:
Java como lenguaje de programación presenta un conjunto de ventajas sobre
las demás alternativas en lenguajes de desarrollo:
1. Simple y poderoso
2. Seguro
3. Orientado por Objetos
4. Robusto
5. Interactivo
6. Independiente de arquitectura de hardware
7. Interpretado y rápido
8. Fácil de aprender
9. Herramientas poderosas: threads, excepciones, APIs, RMI, Beans, ...

 Diciembre 7, 1.995. Microsoft pide la licencia para desarrollar productos
bajo el lenguaje Java
JAVASCRIPT
Este lenguaje de programación originalmente fue llamado LIVESCRIPT, pero
luego fue renombrado con el nombre de JAVASCRIPT, con la idea de
capitalizar la fama de Java, lenguaje desarrollado por Sun Microsystems. Éste
es un complemento ideal del lenguaje HTML, al permitir a la página realizar
algunas tareas por si misma, sin necesidad de estar sobrecargando el servidor
del cual depende; JAVASCRIPT es un lenguaje diseñado especialmente para
ejecutarlo en internet.
Entre estas tareas, puede estar, por ejemplo, realizar algunos cálculos simples,
formatear un texto para que sea leído por distintas personas de manera
distinta, proveer de un medio de configurar la visualización de una página,
realizar un prechequeo de validación en formulario antes de enviarlo, etc.
HTML (hyper text markup language)
El lenguaje HTML, sirve para realizar esas atractivas páginas Web. Se trata de
un sistema de marcas que permite enlazar al mismo tiempo texto, sonidos y
gráficos dentro del mismo documento, con otros dentro del servidor o incluso
con otros servidores WWW. Es decir, es un editor para combinar textos,
imágenes e incluso sonido y ahora también imágenes en movimiento. Es, en
definitiva, la forma de manejar y presentar la información en la red.
Para escribir documentos de hipertexto se ha desarrollado un nuevo formato de
datos o lenguaje llamado Hyper Text Markup Language (HTML). Este lenguaje
permite dar indicaciones precisas al programa cliente de cómo debe
presentarse el documento en pantalla o al ser impreso.
36
es el formato usado en la “world wide web”. Las paginas webs son construidas
con etiquetas y códigos htlm incrustadas en el texto. Htlm define las fuentes y
los elementos gráficos como los que conectan con otros documentos en la red.
Cada conexión o link contiene un URL o dirección de una pagina web residente
en el mismo servidor o cualquier servidor de el mundo, de ahí “world wide” web.
Las versiones mas avanzadas del HTLM ya traen la capacidad de incluir
formas interactivas, fondos predefinidos y tablas de contenido.
El problema de este lenguaje es que no es tan completo como el JAVA o el
JAVASCRIPT, solo puede ser considerado como un lenguaje de presentación,
incluso, el HTLM es un derivado del SGLM(estándar generalize markup
lenguage) el cual es ampliamente utilizado para publicar documentos. El HTLM
es un documento SGLM con un set de etiquetas arreglado.
El lenguaje HTML es el usado actualmente para escribir textos Hypermediales
en el web.
Tres normas fundamentales:
1.- HTML simplemente texto
Lo primero es saber que un documento HTML es un archivo de texto simple,
luego, se puede editar con cualquier editor de textos.
2.- No importan los Tabs ni los saltos de línea
Los interpretes HTML no toman en cuenta las tabulaciones, los saltos de líneas
ni los espacios en blanco extra. Esto tiene ventajas o desventajas. La principal
ventaja es que permite obtener resultados uniformes y de buena presentación
37
de manera bastante fácil.
La principal desventaja es que un documento
HTML, por lo menos se debe usar los comandos <P>... </P> o <BR> para
evitar que quede todo el texto en una sola línea.
3.- Existen 3 caracteres especiales:
 < menor que, se usa para indicar el comienzo de un comando HTML
 >mayor que, se usa para indicar el término de un comando HTML.
 & Ampersand, se usa para escribir caracteres especiales (símbolos
matemáticos, comerciales, así como el signo menor que y el mayor que
entre otros) en un documento.
Lo primero es conocer los comandos que debe contener todo documento
HTML de más de una línea de largo:
EL COMANDO PÁRRAFO:
El comando <P>... </P> se utiliza como un delimitador de párrafo en HTML.
Inserta automáticamente un quiebre de línea al final del párrafo, y produce un
espaciamiento conveniente entre los diferentes párrafos de un documento.
También en forma adicional permite alinear el texto al centro, a la izquierda o a
la derecha.
EL COMANDO QUIEBRE DE LÍNEAS:
El comando <
BR> permite hacer un quiebre (salto)de línea.
LOS COMANDOS DE ENCABEZADO:
Los textos en HTML poseen seis niveles de encabezado. Por ejemplo el nivel 1
se usa para las divisiones mayores de texto, el nivel de encabezado 6 se usa
para las divisiones más chicas de texto.
ESTRUCTURA DE HYPERTEXTO:
Existen dos partes fundamentales de un documento HTML.
ENCABEZADO:
Se inicia mediante el comando<HEAD> y se termina con </HEAD>. Por lo
general se incluyen aquí el título del documento, mediante el comando
<TITLE>... </TITLE>.
CUERPO:
Se inicia mediante el comando <BODY> y se termina con el comando. Dentro
del cuerpo del documento se incluyen cualquier carácter imprimible. Además es
importante incluir el comando<ADDRESS>... </ADDRESS> al final del cuerpo
pero dentro de él. Dentro del ADDRESS se escribe el nombre del autor del
documento, la organización a la que pertenece, su dirección del correo
electrónico y otra información que se considere relevante.
HYPERTALK
"HyperTalk" es el lenguaje desarrollado por Dan Winkler para Bill Atkinson, el
creador del "HyperCard" para Apple-Macintosh. Está orientado a la creación de
38
aplicaciones conforme al sistema de "hiperarchivos" (sistemas de fichas
interrelacionadas donde se facilita el "navegar" de un archivo a otro).
HyperTalk es un buen ejemplo de lenguaje orientado a objetos. Este tipo de
lenguaje combina la lógica declarativa con los algoritmos (Vea "PROLOG"). Un
programa ya no es una secuencia de instrucciones sino un conjunto de objetos
agrupados en conjuntos, definidos mediante atributos y a los cuales pueden
asociarse instrucciones. Así, en HyperCard, existen archivos ("stacks" o "pilas")
que agrupan fichas ("cards"), y cada una de éstas contiene campos de datos y
botones. Todos son "objetos" que -si bien mantienen entre sí una relación
jerárquica- tienen asociados paquetes de instrucciones ("scripts")
independientes unos de otros. Cada objeto pertenece a un conjunto (como
fichas o botones) que tiene "atributos" propios comunes a todos sus miembros,
y cada atributo tendrá un valor común o específico para cada caso. Para dar o
buscar dicho valor intervienen "facetas" que son instrucciones (procedimientos)
asociadas.
Perl
Es un lenguaje especializado en el procesamiento de textos, particularmente
extraer y validar las respuestas a cuestionarios incluidos en páginas web.
PHP
Lenguaje que se acopla al HTML (páginas web) para definir procedimientos
que ha de realizar el servidor de web, por ejemplo procesar un formulario,
enviar o extraer datos de una base de datos (acoplándose también con un
lenguaje de tipo SQL), enviar una u otra página web según determinadas
condiciones prefijadas por el programador, etc.
PROLOG
Los primeros años de la década del 70 son conocidos como un período de
"crisis del software", en que se descubrió que la creación de buenos programas
involucraba costos mayores que los del hardware que los ejecuta. También se
hacía patente una creciente necesidad de procesar "conocimientos" (algo
mucho más amplio y complejo que los datos cuantitativos o meras "secuencias
de caracteres" a los cuales se reducen muchos lenguajes de programación).
Esta crisis llevó a investigar numerosas alternativas, entre las cuales nuevos
lenguajes no basados en instrucciones algorítmicas o procedimientos. Si el
hombre "procesa" más información por inferencia lógica que por cálculo, ¿no
podría la máquina hacer lo mismo?
PROLOG ("PROgramación en LOGica") es una respuesta a esta crisis,
producto del avance de la lógica moderna (de tipo funcional). Lo crearon A.
Colmenauer y Ph. Roussel, con la colaboración de R. Kowalski,
simultáneamente en la Universidad de Aix-Marseille (Francia) y Edimburgo
(Gran Bretaña). Se basa en el cálculo de predicados de primer orden y en el
principio de resolución de Robinson. En vez de ser algorítmico ("procedural" en
inglés, término sin traducción), es decir concebido como un conjunto de
instrucciones que la máquina debe ejecutar en forma secuencial, es
"declarativo", es decir basado en definiciones (de "hechos" o "reglas", como se
explica más abajo).
39
SQL
Lenguaje desarrollado especialmente para facilitar la consulta de bases de
datos (BD), acotando progresivamente la búsqueda (de ahí el nombre de
"Sequential Query Language").
Existen hoy numerosas aplicaciones de administración de bases de datos que
recurren al SQL (Las más conocidas, potentes - y caras - son Oracle e
Informix).
Hoy se pueden acoplar las bases de datos a hipertextos (páginas web), para lo
cual las buenas aplicaciones ya traen módulos que hacen la conexión. El
lenguaje PHP del cual hablamos más arriba también sirve para definir
procedimientos de inserción y de consulta de datos en BD que funcionan con
SQL.
ASP
Su nombre es Active Server Pages. Es un lenguaje independiente, diseñado
por Microsoft para la codificación eficiente de los scripts de los servidores, que
fueron diseñados para ser ejecutados por un servidor Web en respuesta a la
petición de un URL de un usuario. Los scripts de ASP son similares a otros
scripts de servidores con los que puedes estar familiarizado, que son utilizados
en otras plataformas, como Perl, Python, etc.
Power Builder
Realizado por POWERSOFT. Este sistema de desarrollo de aplicaciones para
un ambiente cliente/servidor de Windows. Soporta varias bases de datos,
incluyendo DB2 y ORACLE, y además asta empaquetada con la base de datos
WATCON SQL. El power builder provee herramientas de programación
visuales igual que el lenguaje de programación POWERSCRIPT. El soporte
para Macintosh, Windows NT y UNIX, también esta provisto.
Unix
Ejemplo de Unix:
No todo el "árbol" de directorios está compuesto por directorios de usuario.
Existen muchos de ellos que son de uso general o del propio sistema y con los
que habrá que familiarizarse. Los más importantes son:
/
El raíz, del que "cuelgan" todos.
/bin y /usr/bin
Contienen comandos UNIX ejecutables.
40
/etc
Es quizá el directorio más importante. Contiene ficheros de datos y
configuración del sistema, el fichero de password, configuración de terminales,
red, etc (de ahí su nombre).
/dev
Ficheros de dispositivos E/S.
/usr/man
Manual
/tmp
Directorio para arreglos temporales. TODOS los usuarios pueden leer y escribir
en él.
Linux
Linux es una implementación del sistema operativo UNIX (uno más de entre los
numerosos clónicos del histórico Unix), pero con la originalidad de ser gratuito y
a la vez muy potente, que sale muy bien parado (no pocas veces victorioso) al
compararlo con las versiones comerciales para sistemas de mayor
envergadura y por tanto teóricamente superiores. Comenzó como proyecto
personal del –entonces estudiante- Linus Torvalds, quien tomó como punto de
partida otro viejo conocido, el Minix de Andy. S. Tanenbaum (profesor de
sistemas operativos que creó su propio sistema operativo Unix en PCs XT para
usarlo en su docencia). Actualmente Linus lo sigue desarrollando, pero a estas
alturas el principal autor es la red Internet, desde donde una gigantesca familia
de programadores y usuarios aportan diariamente su tiempo aumentando sus
prestaciones y dando información y soporte técnico mútuo. La versión original y aun predominante- comenzó para PCs compatibles (Intel 386 y superiores),
existiendo también en desarrollo versiones para prácticamente todo tipo de
plataformas:
PowerPC <http://www.cs.us.es/archive/linuxppc/>,
Sparc <http://www.geog.ubc.ca/sparclinux.html>,
Alpha <http://www.azstarnet.com/~axplinux>,
Mips <http://www.fnet.fr/linux-mips/>, etc.
41
De todas ellas la más reciente en este momento es la versión para PowerMac
<http://www.mklinux.org> (el PowerPC de Apple) basada en el microkernel
Mach 3.0 y de la que ya hay una distribución para desarrolladores avalada
directamente por Apple y OSF pero conservando el espíritu (gratuito, de libre
distribución, etc) de la version original. Un servidor la acaba de probar hace
unos días y se ha llevado una grata sorpresa (aún tendrá muuuchos fallos, pero
para ser una primerísima versión y el poco tiempo que lleva en marcha, ha
avanzado más de lo que me esperaba).
EVOLUCION DE
PROGRAMACIÓN
LOS
LENGUAJES
DE
Basado en el cálculo numérico:
Lenguaje
Época de creación
Creador
FORTRAN
1955-1957
Backus
IAL , ALGOL
1960-1962
Naur
1963
IBM
Época de creación
Creador
1959-1962
Depto. de defensa (EE.
UU. AA.)
Época de creación
Creador
1950 -1959
McCarthy
NPL, MPPL, PL/I
Orientado a negocios:
Lenguaje
COBOL
Para Inteligencia Artificial:
Lenguaje
LISP
COMIT
SNOBOL
Yngve
Laboratorios Bell
Prolog
Para sistemas:
42
Lenguaje
Época de creación
Creador
1970
Ritchie
C
Periodo Influencias
Lenguajes
1950 - 55 Ordenadores primitivos
Lenguajes ensamblador
Lenguajes experimentales
de alto nivel
1956 - 60 Ordenadores pequeños,
FORTRAN
caros y lentos
ALGOL 58 y 60
Cintas magnéticas
COBOL
Compiladores e interpretes
LISP
Optimización del código
1961 - 65 Ord. grandes y caros
FORTRAN IV
Discos Magnéticos
COBOL 61 Extendido
Sistemas operativos
ALGOL 60 Revisado
Leng. de propósito general
SNOBOL
APL ( como notación sólo)
1966 - 70 Ordenadores de diferentes
PL/I
tamaños, velocidades, costes FORTRAN 66 (estandard)
Sistemas de almacenamiento COBOL 65 (estandard)
masivo de datos (caros)
ALGOL 68
S.O. multitarea e
SNOBOL4
interactivos
SIMULA 67
Compil. con optimización
BASIC
Leng. estandard ,
APL/360
flexibles y generales
1971 - 75 Micro ordenadores
Sistemas de almacenamiento PASCAL
masivo de datos pequeños
COBOL 74
y baratos
PL /I
43
Progr. estructurada
Ingeniería del software
Leng. sencillos
1976 - 80 Ord. baratos y potentes
ADA
Sistemas distribuidos
FORTRAN 77
Prog. tiempo-real
PROLOG
Prog. interactiva
C
Abstracción de datos
Prog. con fiabilidad
y fácil mantenimiento
Todo este desarrollo de las computadoras y de los lenguajes de programación,
suele divisarse por generaciones y el criterio que se determinó para determinar
el cambio de generación no está muy bien definido, pero resulta aparente que
deben cumplirse al menos los siguientes requisitos:
 La forma en que están construidas.
 Forma en que el ser humano se comunica con ellas.
Primera Generación
En esta generación había un gran desconocimiento de las capacidades de las
computadoras, puesto que se realizó un estudio en esta época que determinó
que con veinte computadoras se saturaría el mercado de los Estados Unidos
en el campo de procesamiento de datos.
Esta generación abarco la década de los cincuenta. Y se conoce como la
primera generación. Estas máquinas tenían las siguientes características:
 Estas máquinas estaban construidas por medio de tubos de vacío.
 Eran programadas en lenguaje de máquina.
En esta generación las máquinas son grandes y costosas (de un costo
aproximado de ciento de miles de dólares). En 1951 aparece la UNIVAC
(NIVersAl Computer), fue la primera computadora comercial, que disponía de
mil palabras de memoria central y podían leer cintas magnéticas, se utilizó para
procesar el censo de 1950 en los Estados Unidos.
En las dos primeras generaciones, las unidades de entrada utilizaban tarjetas
perforadas, retomadas por Herman Hollerith (1860 - 1929), quien además
fundó una compañía que con el paso del tiempo se conocería como IBM
(International Bussines Machines).
Después se desarrolló por IBM la IBM 701 de la cual se entregaron 18
unidades entre 1953 y 1957.
Posteriormente, la compañía Remington Rand fabricó el modelo 1103, que
competía con la 701 en el campo científico, por lo que la IBM desarrollo la 702,
la cual presentó problemas en memoria, debido a esto no duró en el mercado.
44
La computadora más exitosa de la primera generación fue la IBM 650, de la
cual se produjeron varios cientos. Esta computadora que usaba un esquema de
memoria secundaria llamado tambor magnético, que es el antecesor de los
discos actuales.
Otros modelos de computadora que se pueden situar en los inicios de la
segunda generación son: la UNIVAC 80 y 90, las IBM 704 y 709, Burroughs
220 y UNIVAC 1105.
Segunda Generación
Cerca de la década de 1960, las computadoras seguían evolucionando, se
reducía su tamaño y crecía su capacidad de procesamiento. También en esta
época se empezó a definir la forma de comunicarse con las computadoras, que
recibía el nombre de programación de sistemas.
Las características de la segunda generación son las siguientes:
 Están construidas con circuitos de transistores.
 Se programan en nuevos lenguajes llamados lenguajes de alto nivel.
En esta generación las computadoras se reducen de tamaño y son de menor
costo. Aparecen muchas compañías y las computadoras eran bastante
avanzadas para su época como la serie 5000 de Burroughs y la ATLAS de la
Universidad de Manchester.
Algunas de estas computadoras se programaban con cintas perforadas y otras
más por medio de cableado en un tablero. Los programas eran hechos a la
medida por un equipo de expertos: analistas, diseñadores, programadores y
operadores que se manejaban como una orquesta para resolver los problemas
y cálculos solicitados por la administración. El usuario final de la información no
tenía contacto directo con las computadoras. Esta situación en un principio se
produjo en las primeras computadoras personales, pues se requería saberlas
"programar" (alimentarle instrucciones) para obtener resultados; por lo tanto su
uso estaba limitado a aquellos audaces pioneros que gustaran de pasar un
buen número de horas escribiendo instrucciones, "corriendo" el programa
resultante y verificando y corrigiendo los errores o bugs que aparecieran.
Además, para no perder el "programa" resultante había que "guardarlo"
(almacenarlo) en una grabadora de astte, pues en esa época no había discos
flexibles y mucho menos discos duros para las PC; este procedimiento podía
tomar de 10 a 45 minutos, según el programa. El panorama se modificó
totalmente con la aparición de las computadoras personales con mejore
circuitos, más memoria, unidades de disco flexible y sobre todo con la aparición
de programas de aplicación general en donde el usuario compra el programa y
se pone a trabajar. Aparecen los programas procesadores de palabras como el
célebre Word Star, la impresionante hoja de cálculo (spreadsheet) Visicalc y
otros más que de la noche a la mañana cambian la imagen de la PC. El
sortware empieza a tratar de alcanzar el paso del hardware. Pero aquí aparece
un nuevo elemento: el usuario.
El usuario de las computadoras va cambiando y evolucionando con el tiempo.
De estar totalmente desconectado a ellas en las máquinas grandes pasa la PC
a ser pieza clave en el diseño tanto del hardware como del software. Aparece
el concepto de human interface que es la relación entre el usuario y su
computadora. Se habla entonces de hardware ergonómico (adaptado a las
45
dimensiones humanas para reducir el cansancio), diseños de pantallas
antirreflejos y teclados que descansen la muñeca. Con respecto al software se
inicia una verdadera carrera para encontrar la manera en que el usuario pase
menos tiempo capacitándose y entrenándose y más tiempo produciendo. Se
ponen al alcance programas con menús (listas de opciones) que orientan en
todo momento al usuario (con el consiguiente aburrimiento de los usuarios
expertos); otros programas ofrecen toda una artillería de teclas de control y
teclas de funciones (atajos) para efectuar toda suerte de efectos en el trabajo
(con la consiguiente desorientación de los usuarios novatos). Se ofrecen un
sinnúmero de cursos prometiendo que en pocas semanas hacen de cualquier
persona un experto en los programas comerciales. Pero el problema
"constante" es que ninguna solución para el uso de los programas es
"constante". Cada nuevo programa requiere aprender nuevos controles, nuevos
trucos, nuevos menús. Se empieza a sentir que la relación usuario-PC no está
acorde con los desarrollos del equipo y de la potencia de los programas. Hace
falta una relación amistosa entre el usuario y la PC.
Las computadoras de esta generación fueron: la Philco 212 (esta compañía se
retiró del mercado en 1964) y la UNIVAC M460, la Control Data Corporation
modelo 1604, seguida por la serie 3000, la IBM mejoró la 709 y sacó al
mercado la 7090, la National Cash Register empezó a producir máquinas para
proceso de datos de tipo comercial, introdujo el modelo NCR 315.
La Radio Corporation of America introdujo el modelo 501, que manejaba el
lenguaje COBOL, para procesos administrativos y comerciales. Después salió
al mercado la RCA 601.
Tercera generación
Con los progresos de la electrónica y los avances de comunicación con las
computadoras en la década de los 1960, surge la tercera generación de las
computadoras. Se inaugura con la IBM 360 en abril de 1964.3
Las características de esta generación fueron las siguientes:
 Su fabricación electrónica esta basada en circuitos integrados.
 Su manejo es por medio de los lenguajes de control de los sistemas
operativos.
La IBM produce la serie 360 con los modelos 20, 22, 30, 40, 50, 65, 67, 75, 85,
90, 195 que utilizaban técnicas especiales del procesador, unidades de cinta de
nueve canales, paquetes de discos magnéticos y otras características que
ahora son estándares (no todos los modelos usaban estas técnicas, sino que
estaba dividido por aplicaciones).
El sistema operativo de la serie 360, se llamó OS que contaba con varias
configuraciones, incluía un conjunto de técnicas de manejo de memoria y del
procesador que pronto se convirtieron en estándares.
2
En 1964 CDC introdujo la serie 6000 con la computadora 6600 que se
consideró durante algunos años como la más rápida.
En la década de 1970, la IBM produce la serie 370 (modelos 115, 125, 135,
145, 158, 168). UNIVAC compite son los modelos 1108 y 1110, máquinas en
gran escala; mientras que CDC produce su serie 7000 con el modelo 7600.
Estas computadoras se caracterizan por ser muy potentes y veloces.
46
A finales de esta década la IBM de su serie 370 produce los modelos 3031,
3033, 4341. Burroughs con su serie 6000 produce los modelos 6500 y 6700 de
avanzado diseño, que se reemplazaron por su serie 7000. Honey - Well
participa con su computadora DPS con varios modelos.
A mediados de la década de 1970, aparecen en el mercado las computadoras
de tamaño mediano, o minicomputadoras que no son tan costosas como las
grandes (llamadas también como mainframes que significa también, gran
sistema), pero disponen de gran capacidad de procesamiento. Algunas
minicomputadoras fueron las siguientes: la PDP - 8 y la PDP - 11 de Digital
Equipment Corporation, la VAX (Virtual Address eXtended) de la misma
compañía, los modelos NOVA y ECLIPSE de Data General, la serie 3000 y
9000 de Hewlett - Packard con varios modelos el 36 y el 34,
la Wang y Honey - Well -Bull, Siemens de origen alemán, la ICL fabricada en
Inglaterra. En la Unión Soviética se utilizó la US (Sistema Unificado, Ryad) que
ha pasado por varias generaciones.
Cuarta Generación
Aquí aparecen los microprocesadores que es un gran adelanto de la
microelectrónica, son circuitos integrados de alta densidad y con una velocidad
impresionante. Las microcomputadoras con base en estos circuitos son
extremadamente pequeñas y baratas, por lo que su uso se extiende al mercado
industrial. Aquí nacen las computadoras personales que han adquirido
proporciones enormes y que han influido en la sociedad en general sobre la
llamada "revolución informática".
En 1976 Steve Wozniak y Steve Jobs inventan la primera microcomputadora de
uso masivo y más tarde forman la compañía conocida como la Apple que fue la
segunda compañía más grande del mundo, antecedida tan solo por IBM; y esta
por su parte es aún de las cinco compañías más grandes del mundo.
En 1981 se vendieron 800 00 computadoras personales, al siguiente subió a 1
400 000. Entre 1984 y 1987 se vendieron alrededor de 60 millones de
computadoras personales, por lo que no queda duda que su impacto y
penetración han sido enormes.
Con el surgimiento de las computadoras personales, el software y los sistemas
que con ellas de manejan han tenido un considerable avance, porque han
hecho más interactiva la comunicación con el usuario. Surgen otras
aplicaciones como los procesadores de palabra, las hojas electrónicas de
cálculo, paquetes gráficos, etc. También las industrias del Software de las
computadoras personales crecen con gran rapidez, Gary Kildall y William Gates
se dedicaron durante años a la creación de sistemas operativos y métodos
para lograr una utilización sencilla de las microcomputadoras (son los
creadores de CP/M y de los productos de Microsoft).
No todo son microcomputadoras, por su puesto, las minicomputadoras y los
grandes sistemas continúan en desarrollo. De hecho las máquinas pequeñas
rebasaban por mucho la capacidad de los grandes sistemas de 10 o 15 años
antes, que requerían de instalaciones costosas y especiales, pero sería
equivocado suponer que las grandes computadoras han desaparecido; por el
contrario, su presencia era ya ineludible en prácticamente todas las esferas de
control gubernamental, militar y de la gran industria. Las enormes
47
computadoras de las series CDC, CRAY, Hitachi o IBM por ejemplo, eran
capaces de atender a varios cientos de millones de operaciones por segundo.
Quinta Generación
En vista de la acelerada marcha de la microelectrónica, la sociedad industrial
se ha dado a la tarea de poner también a esa altura el desarrollo del software y
los sistemas con que se manejan las computadoras. Surge la competencia
internacional por el dominio del mercado de la computación, en la que se
perfilan dos líderes que, sin embargo, no han podido alcanzar el nivel que se
desea: la capacidad de comunicarse con la computadora en un lenguaje más
cotidiano y no a través de códigos o lenguajes de control especializados.
Japón lanzó en 1983 el llamado "programa de la quinta generación de
computadoras", con los objetivos explícitos de producir máquinas con
innovaciones reales en los criterios mencionados. Y en los Estados Unidos ya
está en actividad un programa en desarrollo que persigue objetivos
semejantes, que pueden resumirse de la siguiente manera:
 Procesamiento en paralelo mediante arquitecturas y diseños especiales
y circuitos de gran velocidad.
 Manejo de lenguaje natural y sistemas de inteligencia artificial.
El futuro previsible de la computación es muy interesante, y se puede esperar
que esta ciencia siga siendo objeto de atención prioritaria de gobiernos y de la
sociedad en conjunto.
BIBLIGRAFIA
Los documentos empleados para la realización de este trabajo han sido
obtenidos de:
WWW.GEOCITIES.COM
WWW.LYCOS.ES
WWW.LAWEBDELPROGRAMADOR.ES
WWW.GOOGLE.COM
WWW.PROGRAMANDO.COM
WWW.TERRA.ES
WWW.YA.COM
INFORMATICA BASICA
48
CURSO DE PROGRAMACIÓN COBOL
Peter Abel. IBM PC Assembly Language and Programming. Fourth Edition.
Prentice Hall. 1997.
http://sunsite.dcc.uchile.cl/webmastercl/mirrors/javatutor/
http://highland.dit.upm.es:8000/UNIX/movs1/2dirsist.html
http://docs.inf.utfsm.cl/pub/DI/labsw/manual_c/node1.html
http://docs.inf.utfsm.cl/pub/DI/labsw/manual_c/node2.html
http://docs.inf.utfsm.cl/pub/DI/labsw/manual_c/node3.html
http://www.fing.edu.uy/~yemurenk/indexsort.html
http://www.cs.us.es/archive/LinuxFocus/Castellano/May1998/article11.html
Llaccua y Vasquez, Programando con Objetos en Borland Pascal. Ed. San
Marcos
Schildt , Turbo C/C++, manual de referencia. , Osborne/McGraw-Hill.
Watt , David A. Programming Languaje Concepts and Paradigms. University
of Glasgow, Uk. Prentice Hall.
49