Este documento describe la historia del software y los sistemas operativos entre 1971 y 1987. Durante este período surgieron los microprocesadores, lo que permitió el desarrollo de las computadoras personales. También se desarrollaron sistemas operativos como Mac OS, OS/2, MVS, UNIX y los sistemas operativos de Microsoft como MS-DOS y las primeras versiones de Windows. Los sistemas operativos evolucionaron hacia arquitecturas de red, multiprocesamiento y distribuidas.
1. Historia del software en computación aplicado a la informática educativa. 103
cambiaban los requisitos de los usuarios o adaptados a nuevos dispositivos hardware
que se hubieran adquirido. Estas actividades se llamaron colectivamente
mantenimiento del software. El esfuerzo gastado en el mantenimiento del software
comenzó a absorber recursos en una medida alarmante.
Para salir de la crisis algunos investigadores como C. A. R. Hoare y N. Wirth, se
apartaron del WG 2.1 ocupado en la definición de ALGOL 68 y crearon un nuevo grupo,
el WG 2.3, sobre metodología de la programación. Para obtener una metodología
adecuada para la concepción de programas se impuso un periodo de reflexión antes de
hacerlos. El problema era que las metodologías estaban aún por hacer. Para salir de la
crisis necesitaban lenguajes más simples cuyas construcciones fueran completamente
comprendidas, y sistemas de tipos más exigentes que eliminaran la mayor cantidad de
errores posibles durante la compilación.
3.6.4. Cuarta era (1971-1987).
Con el desarrollo de los circuitos integrados a gran escala (LSI), chips que
contienen miles de transistores en un cm2 de silicio, nació la era de la computación
personal. El chip microprocesador permitía que cada usuario tuviese su propia
computadora. Las computadoras personales empleadas por universidades, empresas e
instalaciones del gobierno se denominan estaciones de trabajo, sin embargo no son
nada más que computadoras personales grandes conectadas mediante una red. El
aumento de la disponibilidad de la potencia de cómputo interactiva influyó a la hora
de realizar software para los computadores personales. Un gran porcentaje de este
software estaba destinado a usuarios que no sabían nada de computación y no iban a
aprender, a diferencia de las eras anteriores.
Sistemas operativos. [19][37][49][50]
Esta etapa se caracteriza por el desarrollo de los sistemas operativos de red, de
multiprocesamiento simétrico o SMP (Symetric Multiprocessing) y sistemas operativos
distribuidos.
Los sistemas operativos de multiprocesamiento simétrico (Fig. 58) se ejecutan en
computadores con múltiples procesadores, cada uno de ellos realiza las mismas
funciones y comparten la misma memoria principal y facilidades de E/S e
interconectados por un bus u otro sistemas de conexión.
Los sistemas operativos SMP dan la apariencia al usuario de que solo dispone de un
procesador sin embargo distribuye y planifica los trabajos en distintos procesadores,
interconectándolos entre sí.
Daniel Merchán López. 2013
2. 104 Historia del software en computación aplicado a la informática educativa.
Fig. 58. Sistema operativo de procesamiento simétrico.
En un sistema de red (Fig. 59) los usuarios son conscientes de que existen múltiples
computadoras pudiendo ingresar en máquinas remotas y copiar los archivos de una a
otra. No se diferencian de los sistemas operativos convencionales pues se pueden
considerar como una ampliación de éstos con programas de control de interfaz con la
red. También disponen de software de bajo nivel para operarlo y programas para
realizar inicios de sesión
remotos, además de
programas de acceso a
archivos remotos. Un sistema
de red cree que está actuando
con una única memoria
principal, un único sistema de
archivos y una única unidad de
disco, aunque realmente todos
esos elementos se encuentran
en distintos computadores.
Fig. 59. Sistema operativo de red.
Un sistema operativo distribuido (Fig. 60) permite trabajar a los usuarios como su
tuviera un solo procesador, sin embargo, está compuesto por múltiples procesadores.
Los usuarios no se enteran dónde están almacenados sus archivos o dónde están
ejecutándose sus programas para ello el sistema operativo dispone de un sistemas de
gestión de archivos distribuido y sofisticados algoritmos de planificación que paralizan
correctamente el trabajo a realizar.
A diferencia de los sistemas operativos de red, éstos sistemas no se tienen que
preocupar de que no haya retardos en la red pues el sistema operativo tiene toda la
información sobre el estado del sistema.
Daniel Merchán López. 2013
3. Historia del software en computación aplicado a la informática educativa. 105
Fig. 60. Sistema operativo distribuido.
Varios sistemas operativos nacen en Esta era como el Mac OS, OS/2, MVS,UNIX y los
sistemas operativos de Microsoft .
Mac OS.
El Mac OS (Fig. 61) es un sistema
operativo creado por Apple para
su línea de computadoras
Macintosh. Es el precursor de los
sistemas operativos con interfaz
gráfica compuesta por la
interacción del mouse con
ventanas, icono y menús. Fue
desarrollado por Bill Atkinson, Jef
Raskin y Andy Hertzfeld y la
primera versión vio la luz en 1985.
Fig. 61. Interfaz del Mac OS de 1985.
El Mac OS original estaba basado parcialmente en el Lisa OS, previamente
comercializado por Apple para la computadora Lisa en 1983. La primera versión se
llamaba simplemente System. Aparte del núcleo del sistema encontramos el Finder,
una aplicación usada para administrar archivos, que también mostraba el escritorio.
Los dos archivos estaban contenidos en una carpeta etiquetada como System Folder
(carpeta del sistema), que contenía otros archivos necesarios, como por ejemplo el
controlador de la impresora, necesarios para interactuar con el System. Hasta 1987
Apple lanza al mercado nuevas versiones con mejoras como el agregado Mountain
scene, About box, Clean Up Command y actualizaciones del finder y el System. También
se corrigen algunos errores de versiones anteriores.
Daniel Merchán López. 2013
4. 106 Historia del software en computación aplicado a la informática educativa.
OS/2.
El sistema operativo OS/2 (Fig. 62) creado a partir de 1982, y lanzado en 1987,
fue desarrollado de forma conjunta por IBM e Intel. Era de 16 bits y trabajaba
exclusivamente en el modo protegido del procesador Intel 80286. Es un sistema
operativo monousuario y
multiprogramación.
En la versión 1.1, lanzada
posteriormente, incorporaba la
primera versión del Presentation
Manager, el gestor de ventanas de
OS/2, con una apariencia idéntica a la
del todavía inexistente Windows 3.0.
Dos versiones nuevas aparecieron
poco después, la 1.2 y 1.3, también
de 16 bits. Fig.62. Interfaz del OS/2 de 1987.
MVS.
El MVS fue lanzado al mercado por primera vez en 1974 desarrollado por IBM
para grandes computadores como System/370 y System/390. Es de tipo
multiprogramación, multiusuario, funcionando tanto de manera interactiva como por
lotes, y con memoria virtual. Todo esto hace que sea uno de los sistemas operativos
más sofisticados. Este sistema se usa típicamente en aplicaciones comerciales y
bancarias, y que como se ha señalado están normalmente escritas en COBOL.
Sistemas operativos Microsoft.
Los sistemas operativos de Microsoft son los más extendidos en el mercado de
microcomputadores. El primer sistema operativo que lanzó fue el MS-DOS (Fig. 63).
Debe su difusión a que fue adoptado por
IBM al inicio de la década de los 80 como
el sistema operativo estándar para el IBM-
PC. El MS-DOS inicial era un sistema
operativo para microprocesadores de 16
bits (de intel), monousuario y tenía una
interfaz de usuario de línea de órdenes.
Constaba de 4.000 líneas de código fuente
en lenguaje ensamblador.
Fig. 63. Imagen del sistema operativo MS-DOS.
Daniel Merchán López. 2013
5. Historia del software en computación aplicado a la informática educativa. 107
Microsoft lanzó al mercado una nueva versión del MS-DOS en 1983 porque IBM
desarrolló un computador personal basado en disco duro, el PC TX. Éste tenía soporte
para disco duro y ofrecía directorios jerárquicos. Esta versión permitía que los
directorios pudiesen tener tanto subdirectorios como archivos. En cuanto a las
capacidades que se le añadieron estaban algunas de tipo UNIX, como el
redireccionamiento de E/S (capacidad de cambiar la identidad de la entrada o la salida
de una aplicación) y la impresión subordinada (background). Las nuevas versiones del
DOS, MS-DOS 3.0 y MS-DOS 5.0, trataban de competir con Macintosh, cuyo sistema
operativo era insuperable en cuanto a facilidad de uso.
Tras la aparición del Apple
Macintosh en 1984,el público se
interesó por la interfaz de usuario
gráfica o GUI (Graphical User
Interface).Muchos programas
crearon sus propias interfaces
gráficas, como Microsoft Word para
DOS, XTree (Fig. 64) y el Norton Shell.
Sin embargo, esto exigía duplicar
esfuerzos y no proporcionaba mucha
consistencia, lo que hizo crear
entornos GUI completos.
Fig. 64. Ejemplo del GUI XTREE para MS-DOS.
Aparece en 1985 Windows 1.0. Es una interfaz gráfica de usuario (GUI) para MS-DOS
(incluido en el IBM PC y compatibles desde 1981) intentando imitar el MacOS de
Apple. Esta GUI estaba muy limitada debido a los recursos legales de Apple, que no
permitía imitaciones de sus interfaces de usuario. Por ejemplo, las ventanas sólo
podían disponerse en mosaico sobre la pantalla; esto es, nunca podían solaparse u
ocultarse unas a otras. Tampoco disponía de la papelera de reciclaje debido a que
Apple creía que ellos tenían la patente de este paradigma o concepto aunque ambas
limitaciones fueron eliminadas cuando el recurso de Apple fue rechazado en los
tribunales. Por otro lado, los programas incluidos en la primera versión eran
aplicaciones "de juguete" con poco atractivo para los usuarios profesionales. En 1987
salió una nueva versión que incluía aplicaciones que se podían cargar desde MS-DOS,
ejecutando Windows a la vez que el programa, y cerrando Windows al salir de ellas.
Sistemas operativos UNIX.
Como se ha indicado, en la Era anterior el sistema operativo UNIX nace de una
versión de MULTICS para minicomputadoras. La primera versión de UNIX estaba
escrita en el lenguaje ensamblador de la PDP-11/20. Contaba con un programa para
Daniel Merchán López. 2013
6. 108 Historia del software en computación aplicado a la informática educativa.
dar formato a los textos (runoff) y un editor de texto. Tanto el runoff como el editor
fueron adoptados por el departamento de patentes de los Laboratorios Bell como
procesador de texto. Runoff evolucionó a troff, el primer programa de edición
electrónica con capacidad de composición tipográfica. En 1973, Ritchie y Thompson
volvieron a escribir el núcleo en el lenguaje de programación C. Este cambio significaba
que UNIX podría ser fácilmente modificado para funcionar en otras computadoras (de
esta manera, se volvía portable) y desarrollar variaciones por otros programadores.
Ahora, el código era más conciso y compacto, lo que se tradujo en un aumento en la
velocidad de desarrollo de UNIX. Hacia 1974 comenzó a utilizarse generalizadamente
en los Laboratorios Bell la cuarta edición de UNIX. Estas versiones conocidas como
ediciones se fueron desarrollando hasta 1979, en la que salió la edición UNIX. Esta
última versión fusiona las versiones más populares del UNIX y los sistemas BSD, Xenix y
SunOS, ajustándose a los estándares importantes definidos para el sistema por
diversas organizaciones como el IEEE, el ANSI, etc.
AT&T puso UNIX a disposición
de universidades y compañías,
incluido el gobierno de los
Estados Unidos, a través de
licencias por un coste simbólico.
Una de estas licencias se otorgó
a la Universidad de Berkeley en
California haciendo el más
importante de los sistemas UNIX
no desarrollados por AT&T.
Fig. 65. Terminal de UNIX en 1970.
Los estudiantes graduados Bill Joy y Chuck Haley junto con Ken Thompson en su año
sabático de 1975 transportaron la sexta edición de UNIX a un PDP-11/70. Bill y Joy
diseñaron un editor denominado ex y desarrollaron un compilador de Pascal. Esta
versión de 1977 es conocida como UNIX BSD. Otras innovaciones dignas de mencionar
es el shell C y el editor orientado a pantalla vi. Una de las variantes más importantes
del sistema BSD es el sistema operativo de Sun (SunOS), desarrollado por Sun
Microsystems en 1984, una compañía cofundada por Joy. SunOS añadió características
de red como el sistema de archivos de red NFS.
Otra variante de UNIX es el Sistema XENIX diseñado para ejecutarse sobre
microcomputadoras. Salió al mercado en 1980. El sistema XENIX se basó originalmente
en la séptima edición de UNIX y la 4.1 BSD. Se ha portado a diferentes
microprocesadores, entre los que se encuentran la familia Intel 8086 y la familia
Motorola 68000. De todas las variantes, el Sistema XENIX consiguió el mayor número
de máquinas instaladas.
Daniel Merchán López. 2013
7. Historia del software en computación aplicado a la informática educativa. 109
Fig. 66. Evolución del sistema operativo UNIX.
El UNIX System V introducido en 1983 mantuvo una compatibilidad ascendente en
sus futuras versiones. La primera versión incorporó el editor de pantalla vi y la
biblioteca de manejo de pantalla curses de la Universidad de Berkeley. La versión 2
introdujo protección de archivos durante cortes de potencia, bloqueo de archivos y
registros para uso exclusivo por un programa, característica de control de trabajos y
administración ampliada del sistema. En 1987, AT&T introdujo la versión 3.0 que
incluía un enfoque de redes simple y consistente.
Una de las características más importantes de UNIX es que puede funcionar en
multitud de computadores, desde los ordenadores personales hasta los
supercomputadores. Por ello es considerado como un auténtico sistema operativo
estándar. Su mayor uso es en estaciones de trabajo para usuario CAD y CAM de Sun
Microsystems o Silicon Graphics entre otras. Es un sistema operativo de
multiprogramación, multiusuario y multiprocesamiento, pudiéndose utilizar también
en tiempo real. El problema de este sistema operativo es que resulta más difícil de
aprender y de usar que los MS-Windows y Mac.
Desde un punto de vista técnico UNIX es considerado como un conjunto de familias
de sistemas operativos que comparten ciertos criterios de diseño e interoperabilidad.
En 1983 Richard Stallman fundó el proyecto GNU, con el fin de crear sistemas
operativos parecidos a UNIX y compatibles con POSIX. Dos años más tarde creó la
"Fundación del Software Libre" y escribió la GNU, General Public License, para
posibilitar el software libre en el sistema de copyright.
Lenguajes de programación. [12][47][11]
En esta era aparece un lenguaje de muy alta difusión hasta bien entrados los
90, el C. Tiene su origen en los laboratorios Bell utilizado por primera vez para escribir
Daniel Merchán López. 2013
8. 110 Historia del software en computación aplicado a la informática educativa.
el núcleo del sistema operativo UNIX. Aunque es un lenguaje de programación para
usos generales, se le ha asociado con actividades de programación de sistemas. Hoy
día C es utilizado en muchos cursos de iniciación a la programación.
El primer compilador de C lo desarrolló Dennis Ritchie en 1973 para un PDP-11 de 24K
de memoria, lo que nos hace pensar la simplicidad del mismo. El diseño de C se inspiró
en un lenguaje precursor llamado B, diseñado por Ken Thompson. La gran diferencia
entre el B y el C es que C tenía algunos tipos mientras que B no. Un ejemplo de que
faltan algunos tipos es el booleano, pues C no tiene booleanos sino que los valores
enteros 0 y distinto de 0 hacen las veces de falso y cierto. Los punteros son tratados
como enteros, lo que permite acceder a cualquier zona de la memoria sin ninguna
protección por parte del compilador. Los programas tienen una estructura como la de
FORTRAN, dispone de dos niveles, el global y el local a una función. Fue un
ensamblador de alto nivel con mucho éxito debido a la gran portabilidad entre
máquinas que tenía, tanto del núcleo UNIX como de su inmensa librería de utilidades.
Programa "Hola mundo" escrito en C:
#include <stdio.h>
int main()
{
printf("¡Hola, mundo!n");
return 0;
}
El lenguaje se empezó a difundir a partir del manual escrito por Kernighan y Ritchie en
1978 y de la conversión de Unix en un producto comercial. Posteriormente, una de las
características más utilizadas de C ha sido su preprocesador. El preprocesador es un
programa que se ejecuta como un paso previo a la compilación y que permite al
programador la definición de macros y la compilación condicional de secciones del
programa, en función de ciertos parámetros suministrados en el momento de la
compilación.
En años posteriores C evolucionó mejorando la seguridad con más tipos de datos. En
1989, la nueva versión del lenguaje fue estandarizada por la ANSI con el objetivo de
disponer de una referencia estable para la certificación de compiladores.
Otro avance metodológico de esta Era es la abstracción de datos. La abstracción es
utilizada por la mayoría de las ciencias de manera continua. A grandes rasgos, se trata
de disminuir el número de detalles del objeto bajo estudio. Hasta ahora la única
abstracción, por decirlo de alguna manera, que había eran los tipos de datos
predefinidos. Como ejemplo, un programador podía operar con números racionales sin
preocuparse de cómo eran representados internamente por el computador. Entre
1972 y 1974 se publican varios trabajos que van a dar a luz un nuevo concepto, el tipo
abstracto de datos. Las ideas principales de este concepto son las siguientes:
Daniel Merchán López. 2013
9. Historia del software en computación aplicado a la informática educativa. 111
Es un tipo cuyo comportamiento puede describirse independientemente de su
posible representación en términos de tipos de más bajo nivel.
Un tipo abstracto se puede representar de varios modos, sin dejar de ser del
mismo tipo.
El lenguaje debe permitir asociar la definición de una representación de un tipo
abstracto a la definición de sus operaciones de manipulación. La
representación debe quedar oculta al resto del programa con el fin de impedir
usos ilegales.
El primer lenguaje creado con este tipo de datos es el CLU, desarrollado por Barbara
Liskov en 1974. Otro lenguaje importante es el Modula diseñado por Nuklaus Wirth en
1977. Sin embargo el lenguaje que recoge la mayoría de estas aportaciones es el ADA.
En los años setenta, el Departamento de Defensa de los Estados Unidos quería
proyectar un lenguaje individual para usarlo en sistemas en tiempo real. Su gestación
se extiende desde 1975 hasta 1980. Para desarrollar ADA se realizaron una serie de
documentos (Strawman, Woodeman, Tinman, Ironman, Steelman, Pebbleman y
Stoneman) en los que se especificaban los requisitos, lo que era necesario porque el
Departamento de Defensa disponía de multitud de lenguajes y no podía transportar
fácilmente las herramientas de unos sistemas a otros. El DOD (Department of Defense)
preveía que tardarían 20 años en terminar el lenguaje, para acortarlo otorgaron varios
contratos y el resultado de la competencia fue estudiado con detenimiento. De todas
las propuestas presentadas se eligieron cuatro y, de estas, se eligió el diseño de Jean
Ichbiah, francés, en 1979. El nombre de ADA es en honor a Ada Lovelace, colaboradora
de Charles Babbage y primera programadora de la historia. El lenguaje se estandarizó
en 1983, a la vez cómo un estándar comercial y militar de Estados Unidos y un
estándar internacional.
Programa "Hola mundo" escrito en ADA:
with Ada.Text_IO;
procedure Hola_Mundo is
begin
Ada.Text_IO.Put("¡Hola, mundo!");
end Hola_Mundo;
Principalmente, ADA se basa en PASCAL, aunque difiere en numerosos aspectos. Ada
es un lenguaje más grande y complejo y entre las principales innovaciones se
encuentra la construcción package, que es el mecanismo principal de ocultamiento y
modularidad. Este mecanismo se distingue entre su parte visible o interfaz con sus
usuarios y la parte oculta o body. Tiene más facilidades para la programación genérica
que PASCAL pues tanto los módulos package como los procedimientos pueden estar
Daniel Merchán López. 2013
10. 112 Historia del software en computación aplicado a la informática educativa.
parametrizados por tipos, operaciones o constantes. La compilación está separada del
lenguaje a diferencia de otros lenguajes, amplía el concepto de subtipo y de los
criterios de compatibilidad de tipos, introduce la sobrecarga definida por el
programador y trata de forma elaborada las excepciones.
Para asegurar que los traductores seguían el estándar el Departamento de Defensa
creó la ADA Joint Program Office, allí se realizaban una serie de pruebas que un
traductor de ADA debía pasar satisfactoriamente para ser considerado como
implementación del lenguaje. Los primeros traductores no aparecieron hasta 1987.
Dentro del campo de la POO (Programación orientada a objetos) surgen en esta Era
una serie de programas como el Smalltalk, C++ y Java que cambiaran el panorama de la
programación.
El Smalltalk difiere de otros lenguajes en que fue proyectado como un lenguaje total y
no solo como una notación para desarrollar programas donde la orientación a objetos
fue un concepto integrado inicialmente, en oposición a la adición de herencia a los
mecanismos en ADA.
Fue desarrollado por Alan Kay, del Centro de Investigación en Palo Alto de Xerox
Corporation, saliendo su primera versión pública en 1982. Alan Kay se basó
principalmente en el sistema Sketchpad, primer sistema gráfico interactivo de la
historia, y el lenguaje Simula 67, cuyo compilador hubo que estudiar para poder
hacerlo funcionar en una IBM 1108.
Kay tenía un gran interés en temas educativos por lo que concibió la idea de un
ordenador personal mínimo, llamado Dynabook, dotado de una pantalla gráfica y un
teclado, y con el tamaño de un libro. Para Kay todo eran objetos, como ejemplo, un
fichero o un periférico se representaba en una pantalla con la forma de un icono
gráfico sobre el que se situaba el cursor. Por ello, las pantallas de la época limitadas a
caracteres les resultaba insuficientes. Kay dotó a sus computadores de pantallas
gráficas basadas en pixeles y, en diseños posteriores dedicó un procesador para la
tarea de gobernar los gráficos de la pantalla. Se puede decir que Kay y su grupo fueron
los padres de los sistemas operativos basados en ventanas gráficas e iconos
desarrollados a partir de 1985.
Programa "Hola mundo" escrito en Smalltalk:
Transcript show: '¡Hola, mundo!'
Otro lenguaje orientado a objetos es el C++. C++ es el que más usuarios ha tenido y
fue desarrollado por Bjarne Stroustrup. El primer compilador de C++ aparece en 1983
tomando las ideas de Simula 67 pues el autor quería unir en él las ideas de este
lenguaje junto con la eficiencia de C. Previamente a C++, desarrolló C con clases en el
Daniel Merchán López. 2013
11. Historia del software en computación aplicado a la informática educativa. 113
que generó una librería de clases con las que resultaba sencillo definir clases y
subclases con protección de la representación de los objetos y la incorporación de
funciones de construcción y destrucción de los mismos. C con clases permitía objetos
no apuntados por punteros. La razón principal de añadir clases a C fue la de tratar de
mejorar la comprobación de tipos en tiempo de compilación (estática) y capturar así
más errores a bajo coste.
Programa "Hola mundo" escrito en C++:
#include <iostream>
int main()
{
std::cout << "Hola mundon";
return 0 ;
}
El objetivo de Stroustrup era que C++ fuera un lenguaje que pudiese coexistir con
otros lenguajes y sistemas y así llamar desde C++ programas escritos en otros
lenguajes y viceversa. La primera versión de C++ añadía sobre C con clases la
posibilidad de funciones virtuales y de operaciones sobrecargadas definidas por el
programador. Una función virtual es una operación cuyo tipo se define en una clase
pero no se implementa en ella, sino que difiere su implementación a las subclases de
esa clase. Las funciones virtuales ya existían en las clases abstractas de Smalltalk
mientras que la sobrecarga ya estaba presente en Ada. En las versiones posteriores se
añadieron las clases abstractas, los miembros estáticos y la herencia múltiple. En 1990
se inició la estandarización por ANSI (American National Standards Institute) e ISO
(Organización Internacional de Normalización) y su autor incluyó dos nuevas
características más: las plantillas y el tratamiento de excepciones.
En esta Era también surge otro tipo de programación que no mencionada hasta
ahora, la programación lógica. Pertenece a los lenguajes llamados declarativos, es
decir, aquel tipo de lenguajes en los que los programadores expresan las propiedades
que han de estar satisfechas por el cómputo, pero no el orden exacto en que han de
realizarse las acciones dentro del ordenador. En estos lenguajes el compilador decide
el orden de ejecución. Otra novedad de estos lenguajes es que no incluyen las
instrucciones if, while, repeat y los puntos y coma de los lenguajes imperativos para
controlar la secuencia de operaciones. La repetición de cómputos se suele realizar
mediante recursividad.
Un programa lógico consta de un conjunto de fórmulas lógicas que expresan
propiedades satisfechas por un cierto problema. Normalmente estas fórmulas
pertenecen a un subconjunto de la lógica de predicados de primer orden conocido
como cláusulas de Horn. Estas cláusulas expresan que un predicado A siempre será
cierto cuando lo sean todos los predicados de B. Un programa lógico expresa
Daniel Merchán López. 2013
12. 114 Historia del software en computación aplicado a la informática educativa.
propiedades supuestamente ciertas en un cierto dominio. A diferencia de otros
paradigmas, con mirar si una afirmación lógica es correcta, podemos averiguar si las
demás lo son. Cuando las propiedades ya están escritas, el mecanismo de ejecución
infiere nuevas propiedades ciertas que se deducen de las escritas por el programador.
Esta característica se le denomina no determinismo.
El lenguaje representativo de este tipo de programación es el Prolog. Su desarrollo se
inició en 1970 por Alain Coulmerauer y Philippe Rousel finalizándolo en 1972 usando el
compilador de ALGOL W de Wirth, aunque los aspectos básicos del lenguaje actual se
concluyeron en 1973. Un programa Prolog consiste en una secuencia de cláusulas de
Horn, seguida de una pregunta. Hay que tener en consideración el orden de las
cláusulas y que los literales de cada una tienen influencia en la ejecución. La pregunta
consiste en una secuencia de literales con variables, a los que denomina objetivos.
Prolog selecciona en todo momento el primer objetivo de la lista de objetivos
pendientes, a la que denomina resolvente. Una vez seleccionado, busca la primera
cláusula del programa cuya cabeza unifique con él. La unificación consiste en un encaje
de patrones bidireccional mediante el cual alginas variables del objetivo se reemplazan
por términos del objetivo. Cuando el usuario indique que desea más soluciones, Prolog
vuelve a la situación que resolvió el último objetivo y busca una manera distinta de
satisfacerlo.
Prolog tuvo un mayor impacto en los grupos de investigación dedicados a la
inteligencia artificial. Uno de ellos fue la Universidad de Edimburgo, en la que se
encontraba David Warren. En 1977 diseñó una versión compilada de Prolog que
generaba código para una máquina abstracta, conocida posteriormente como la
máquina de Warren. Este compilador corría en un computadora DEC-10 y se distribuyó
libremente a muchas universidades. Se conoció como Prolog-10, o Prolog de
Edimburgo, y constituyó un estándar de facto para las implementaciones posteriores.
Bases de datos. [45][44][51]
Por lo que respecta a las bases de datos en la década de 1970 Edgar Frank Codd
(1923-2003), científico informático inglés, definió en su artículo “Un modelo relacional
de datos para grandes bancos de datos compartidos” el modelo relacional, y las formas
no procedimentales de consultar los datos en el modelo relacional, naciendo así las
bases de datos relacionales.
Más adelante, Codd (Fig. 67) recibió el prestigioso premio Turing de la ACM
(Associaton of Computing Machinery, asociación de maquinaria informática) por su
trabajo. Este hecho dio paso al nacimiento de la segunda generación de los Sistemas
Gestores de Bases de Datos (SGBD).
Daniel Merchán López. 2013
13. Historia del software en computación aplicado a la informática educativa. 115
El modelo relacional no se utilizó en sus inicios debido a sus inconvenientes en cuanto
a rendimiento; las bases de datos relacionales no podían igualar el rendimiento de las
bases de datos de red y las bases de datos jerárquicas existentes, pero en los primeros
años ochenta éstas bases de datos llegaron a ser competitivas. En las bases de datos
jerárquicas y de red los programadores trataban muchos detalles de la
implementación de bajo nivel y codificaban sus consultas de forma experimental
aparte de que debían tener presente el
rendimiento durante el diseño de los programas,
lo que suponía un gran esfuerzo. En cambio en las
bases de datos relacionales, la gran mayoría de
estas tareas de bajo nivel las realiza de manera
automática el sistema de base de datos, lo que
permite al programador centrarse en el nivel
lógico. En 1978 el comité ANSI comienza a
certificar y estandarizar la gestión de datos. En
1979 es el comité ISO el que inicia su proyecto de
base de datos. En 1982 el comité ANSI divide el
proyecto de bases de datos en dos: NDL (lenguaje
de bases de datos en red) y SQL; en 1983 toma esa
misma decisión el ISO.
Fig. 67. Edgar Frank Codd.
Lawrence J. Ellison, más conocido como Larry Ellison, a partir del trabajo de Edgar F.
Codd sobre los sistemas de bases de datos relacionales, desarrolló el Relational
Software System, lo que actualmente se conoce como Oracle Corporation,
desarrollando así un sistema de gestión de bases de datos relacional con el mismo
nombre que dicha compañía.
El prototipo de System R completamente funcional condujo al primer producto de
bases de datos relacionales de IBM: SQL/DS. El SQL contiene tablas, consultas,
actualizaciones y mantenimiento del sistema. Es un lenguaje de consultas o lenguaje
declarativo de acceso a bases de datos relacionales que permite efectuar consultas con
el fin de recuperar información de interés de una base de datos y hacer cambios sobre
la base de datos de forma sencilla; además de analizar grandes cantidades de
información y permitir especificar diversos tipos de operaciones frente a la misma
información. Su nivel de programación era sencillo y relativamente bajo.
Los primeros sistemas comerciales de bases de datos relacionales, como DB2 de IBM,
Oracle, Ingres y Rdb de DEC, desempeñaron un papel importante en el desarrollo de
técnicas para el proceso eficiente de de las consultas declarativas. Informix, Sybase y el
proyecto Ingres dieron nacimiento al Postgres que consiste en agregar más
Daniel Merchán López. 2013
14. 116 Historia del software en computación aplicado a la informática educativa.
características Orientadas a Objetos al modelo relacional. Después se transformó en
PostgreSQL.
Fig. 68. Diferencias entre los tres modelos de bases de datos más importantes.
Daniel Merchán López. 2013