Download Historia de la computación y Conceptos Informáticos

Document related concepts
no text concepts found
Transcript
Historia de la computación y Conceptos Informáticos
Introducción
Algunas veces se ha preguntado, ¿cuál fue uno de los primeros procesadores de
Intel, siempre han sido así de poderosos? O puede ser que alguna vez le haya
surgido la duda de donde vienen las computadoras.
En éste trabajo se da un breve relato de la historia de las computadoras así
también
como
las
historias
de
los
lenguajes
de
programación
y
de
los
microprocesadores.
A mi criterio a éste trabajo le puede llamar como una referencia rápida de los
temas más comunes en el mundo de la informática y de las computadoras. Esta es
una buena oportunidad para que usted de un vistazo rápido de lo que tratan las
ciencias de la computación y sistemas. Insisto en que usted lea esta breve
referencia del mundo de las computadoras, y usted vera que la próxima vez que le
hablen del tema usted se sentirá familiarizado con el mismo.
Historia de la Computación
Del Abaco a la tarjeta perforada
EL ABACO; quizá fue el primer dispositivo mecánico de contabilidad que existió. Se
ha calculado que tuvo su origen hace al menos 5000 años y su efectividad ha
soportado la prueba del tiempo.
LA PASCALINA; El inventor y pintor Leonardo Da Vinci (1452-1519) trazó las
ideas para una sumadora mecánica. Siglo y medio después, el filósofo y
matemático francés Blaise Pascal (1623-1662) por fin inventó y construyó la
primera sumadora mecánica. Se le llamo Pascalina y funcionaba como maquinaria a
base de engranes y ruedas. A pesar de que Pascal fue enaltecido por toda Europa
debido a sus logros, la Pascalina, resultó un desconsolador fallo financiero, pues
para esos momentos, resultaba más costosa que la labor humana para los cálculos
aritméticos.
LA LOCURA DE BABBAGE, Charles Babbage (1793-1871), visionario inglés y
catedrático
de
Cambridge,
hubiera
podido
acelerar
el
desarrollo
de
las
computadoras si él y su mente inventiva hubieran nacido 100 años después.
Adelantó la situación del hardware computacional al inventar la "máquina de
diferencias", capaz de calcular tablas matemáticas. En 1834, cuando trabajaba en
los avances de la máquina de diferencias Babbage concibió la idea de una "máquina
analítica". En esencia, ésta era una computadora de propósitos generales.
Conforme con su diseño, la máquina analítica de Babbage podía suma r, substraer,
multiplicar y dividir en secuencia automática a una velocidad de 60 sumas por
minuto. El diseño requería miles de engranes y mecanismos que cubrirían el área
de un campo de fútbol y necesitaría accionarse por una locomotora. Los escépticos
le pusieron el sobrenombre de "la locura de Babbage". Charles Babbage trabajó en
su máquina analítica hasta su muerte. Los trazos detallados de Babbage describían
las características incorporadas ahora en la moderna computadora electrónica. Si
Babbage hubiera vivido en la era de la tecnología electrónica y las partes de
precisión, hubiera adelantado el nacimiento de la computadora electrónica por
varías décadas. Irónicamente, su obra se olvidó a tal grado, que algunos pioneros
en el desarrollo de la computadora electrónica ignoraron por completo sus
conceptos sobre memoria, impresoras, tarjetas perforadas y control de programa
secuencial.
LA PRIMERA TARJETA PERFORADA; El telar de tejido, inventado en 1801 por el
Francés Joseph-Marie Jackard (1753-1834), usado todavía en la actualidad, se
controla por medio de tarjetas perforadas. El telar de Jackard opera de la manera
siguiente: las tarjetas se perforan estratégicamente y se acomodan en cierta
secuencia para indicar un diseño de tejido en particular. Charles Babbage quiso
aplicar el concepto de las tarjetas perforadas del telar de Jackard en su motor
analítico. En 1843 Lady Ada Augusta Lovelace sugirió la idea de que las tarjetas
perforadas pudieran adaptarse de manera que propiciaran que el motor de Babbage
repitiera
ciertas
operaciones.
Debido
a
esta
sugerencia
algunas
personas
consideran a Lady Lovelace la primera programadora.
Herman Hollerit (1860-1929) La oficina de censos estadounidense no terminó el
censo de 1880 sino hasta 1888. La dirección de la oficina ya había llegado a la
conclusión de que el censo de cada diez años tardaría mas que los mismo 10 años
para terminarlo. La oficina de censos comisionó al estadístico Herman Hollerit para
que aplicara su experiencia en tarjetas perforadas y llevara a cabo el censo de
1890. Con el procesamiento de las tarjetas perforadas y el tabulador de tarjetas
perforadas de Hollerit, el censo se terminó en sólo 3 años y la oficina se ahorró
alrededor de $5,000,000 de dólares. Así empezó el procesamiento automatizado de
datos. Hollerit no tomó la idea de las tarjetas perforadas del invento de Jackard,
sino de la "fotografía de perforación" Algunas líneas ferroviarias de la época
expedían boletos con descripciones físicas del pasajero; los conductores hacían
orificios en los boletos que describían el color de cabello, de ojos y la forma de nariz
del pasajero. Eso le dio a Hollerit la idea para hacer la fotografía perforada de cada
persona que se iba a tabular. Hollertih fundó la Tabulating Machine Company y
vendió sus productos en todo el mundo. La demanda de sus máquinas se extendió
incluso hasta Rusia. El primer censo llevado a cabo en Rusia en 1897, se registró
con el Tabulador de Hollerith. En 1911, la Tabulating Machine Company, al unirse
con otras Compañías, formó la Computing-Tabulating-Recording-Company.
LAS
MAQUINAS
ELECTROMECANICAS
DE
CONTABILIDAD
(MEC)
Los
resultados de las máquinas tabuladoras tenían que llevarse al corriente por medios
manuales, hasta que en 1919 la Computing-Tabulating-Recording-Company.
Anunció la aparición de la impresora/listadora. Esta innovación revolucionó la
manera en que las Compañías efectuaban sus operaciones. Para reflejar mejor el
alcance de sus intereses comerciales, en 1924 la Compañía cambió el nombre por
el de international Bussines Machines Corporation (IBM) Durante décadas, desde
mediados de los cincuentas la tecnología de las tarjetas perforadas se perfeccionó
con la implantación de más dispositivos con capacidades más complejas. Dado que
cada tarjeta contenía en general un registro (Un nombre, dirección, etc.) el
procesamiento de la tarjeta perforada se conoció también como procesamiento de
registro unitario.
La
familia
de
eloctromechanical
las
máquinas
accounting
electromecánicas
machine
de
de
dispositivos
contabilidad
de
tarjeta
(EAM)
perforada
comprende: la perforadora de tarjetas, el verificador, el reproductor, la perforación
sumaria, el intérprete, el clasificador, el cotejador, el calculador y la máquina de
contabilidad. El operador de un cuarto de máquinas en una instalación de tarjetas
perforadas tenía un trabajo que demandaba mucho esfuerzo físico. Algunos cuartos
de máquinas asemejaban la actividad de una fábrica; las tarjetas perforadas y las
salidas impresas se cambiaban de un dispositivo a otro en carros manuales, el ruido
que producía eran tan intenso como el de una planta ensambladora de automóviles.
Pioneros de la computación
ATANASOFF Y BERRY Una antigua patente de un dispositivo que mucha gente creyó
que era la primera computadora digital electrónica, se invalidó en 1973 por orden
de un tribunal federal, y oficialmente se le dio el crédito a John V. Atanasoff como
el inventor de la computadora digital electrónica. El Dr. Atanasoff, catedrático de la
Universidad Estatal de Iowa, desarrolló la primera computadora digital electrónica
entre los años de 1937 a 1942. Llamó a su invento la computadora Atanasoff-Berry,
ó solo ABC (Atanasoff Berry Computer). Un estudiante graduado, Clifford Berry, fue
una útil ayuda en la construcción de la computadora ABC.
Algunos autores consideran que no hay una sola persona a la que se le pueda
atribuir el haber inventado la computadora, sino que fue el esfuerzo de muchas
personas. Sin embargo en el antiguo edificio de Física de la Universidad de Iowa
aparece una placa con la siguiente leyenda: "La primera computadora digital
electrónica de operación automática del mundo, fue construida en este edificio en
1939 por John Vincent Atanasoff, matemático y físico de la Facultad de la
Universidad, quien concibió la idea, y por Clifford Edward Berry, estudiante
graduado de física."
Mauchly y Eckert, después de varias conversaciones con el Dr. Atanasoff, leer
apuntes que describían los principios de la computadora ABC y verla en persona, el
Dr. John W. Mauchly colaboró con J.Presper Eckert, Jr. para desarrollar una
máquina que calculara tablas de trayectoria para el ejército estadounidense. El
producto final, una computadora electrónica completamente operacional a gran
escala, se terminó en 1946 y se llamó ENIAC (Electronic Numerical Integrator And
Computer), ó Integrador numérico y calculador electrónico. La ENIAC construida
para aplicaciones de la Segunda Guerra mundial, se terminó en 30 meses por un
equipo de científicos que trabajan bajo reloj.
La ENIAC, mil veces más veloz que sus predecesoras electromecánicas, irrumpió
como un importante descubrimiento en la tecnología de la computación. Pesaba 30
toneladas y ocupaba un espacio de 450 mts cuadrados, llenaba un cuarto de 6 m x
12 m y contenía 18,000 bulbos, tenía que programarse manualmente conectándola
a 3 tableros que contenían más de 6000 interruptores. Ingresar un nuevo programa
era un proceso muy tedioso que requería días o incluso semanas. A diferencia de
las computadoras actuales que operan con un sistema binario (0,1) la ENIAC
operaba con uno decimal (0,1,2..9).
La ENIAC requería una gran cantidad de electricidad. La leyenda cuenta que la
ENIAC, construida en la Universidad de Pensilvania, bajaba las luces de Filadelfia
siempre que se activaba. La imponente escala y las numerosas aplicaciones
generales de la ENIAC señalaron el comienzo de la primera generación de
computadoras.
En 1945, John von Neumann, que había trabajado con Eckert y Mauchly en la
Universidad de Pensilvania, publicó un artículo acerca del almacenamiento de
programas. El concepto de programa almacenado permitió la lectura de un
programa dentro de la memoria de la computadora, y después la ejecución de las
instrucciones del mismo sin tener que volverlas a escribir. La primera computadora
en usar el citado concepto fue la la llamada EDVAC (Eletronic Discrete-Variable
Automatic Computer, es decir computadora automática electrónica de variable
discreta), desarrollada por Von Neumann, Eckert y Mauchly.
Los programas almacenados dieron a las computadoras una flexibilidad y
confiabilidad tremendas, haciéndolas más rápidas y menos sujetas a errores que los
programas mecánicos. Una computadora con capacidad de programa almacenado
podría ser utilizada para varias aplicaciones cargando y ejecutando el programa
apropiado.
Hasta este punto, los programas y datos podría ser ingresados en la computadora
sólo con la notación binaria, que es el único código que las computadoras
"entienden". El siguiente desarrollo importante en el diseño de las computadoras
fueron los programas intérpretes, que permitían a las personas comunicarse con las
computadoras utilizando medios distintos a los números binarios.
En 1952 Grace Murray Hoper una oficial de la Marina de E.U., desarrolló el primer
compilador, un programa que puede traducir enunciados parecidos al inglés en un
código binario comprensible para la maquina llamado COBOL (Common BusinessOriented Languaje).
Generaciones de computadoras
Primera Generación de Computadoras (de 1951 a 1958)
Las computadoras de la primera Generación emplearon bulbos para procesar
información. Los operadores ingresaban los datos y programas en código especial
por medio de tarjetas perforadas. El almacenamiento interno se lograba con un
tambor que giraba rápidamente, sobre el cual un dispositivo de lectura/escritura
colocaba marcas magnéticas. Esas computadoras de bulbos eran mucho más
grandes y generaban más calor que los modelos contemporáneos. Eckert y Mauchly
contribuyeron al desarrollo de computadoras de la 1era Generación formando una
Cia. privada y construyendo UNIVAC I, que el Comité del censó utilizó para evaluar
el de 1950. La IBM tenía el monopolio de los equipos de procesamiento de datos
basándose en tarjetas perforadas y estaba teniendo un gran auge en productos
como rebanadores de carne, básculas para comestibles, relojes y otros artículos;
sin embargo no había logrado el contrato para el Censo de 1950.
Comenzó entonces a construir computadoras electrónicas y su primera entrada fue
con la IBM 701 en 1953. Después de un lento pero excitante comienzo la IBM 701
se convirtió en un producto comercialmente viable. Sin embargo en 1954 fue
introducido el modelo IBM 650, el cual es la razón por la que IBM disfruta hoy de
una gran parte del mercado de las computadoras. La administración de la IBM
asumió un gran riesgo y estimó una venta de 50 computadoras. Este número era
mayor que la cantidad de computadoras instaladas en esa época en E.U. De hecho
la IBM instaló 1000 computadoras. El resto es historia. Aunque caras y de uso
limitado las computadoras fueron aceptadas rápidamente por las Compañías
privadas y de Gobierno. A la mitad de los años 50 IBM y Remington Rand se
consolidaban como líderes en la fabricación de computadoras.
- Segunda Generación (1959-1964) Transistor
Compatibilidad limitada
El invento del transistor hizo posible una nueva generación de computadoras, más
rápidas, más pequeñas y con menores necesidades de ventilación. Sin embargo el
costo seguía siendo una porción significativa del presupuesto de una Compañía. Las
computadoras de la segunda generación también utilizaban redes de núcleos
magnéticos en lugar de tambores giratorios para el almacenamiento primario. Estos
núcleos contenían pequeños anillos de material magnético, enlazados entre sí, en
los cuales podían almacenarse datos e instrucciones.
Los programas de computadoras también mejoraron. El COBOL desarrollado
durante la 1era generación estaba ya disponible comercialmente. Los programas
escritos para una computadora podían transferirse a otra con un mínimo esfuerzo.
El escribir un programa ya no requería entender plenamente el hardware de la
computación. Las computadoras de la 2da Generación eran sustancialmente más
pequeñas y rápidas que las de bulbos, y se usaban para nuevas aplicaciones, como
en los sistemas para reservación en líneas aéreas, control de tráfico aéreo y
simulaciones
para
uso
general.
Las
empresas
comenzaron
a
aplicar
las
computadoras a tareas de almacenamiento de registros, como manejo de
inventarios, nómina y contabilidad.
La marina de E.U. utilizó las computadoras de la Segunda Generación para crear el
primer simulador de vuelo. (Whirlwind I). HoneyWell se colocó como el primer
competidor durante la segunda generación de computadoras. Burroughs, Univac,
NCR, CDC, HoneyWell, los más grandes competidores de IBM durante los 60s se
conocieron como el grupo BUNCH (siglas).
Tercera Generación (1964-1971) Circuitos integrados
Compatibilidad con equipo mayor, Multiprogramación, Minicomputadora
Las computadoras de la tercera generación emergieron con el desarrollo de los
circuitos integrados (pastillas de silicio) en las cuales se colocan miles de
componentes electrónicos, en una integración en miniatura. Las computadoras
nuevamente se hicieron más pequeñas, más rápidas, desprendían menos calor y
eran energéticamente más eficientes.
Antes del advenimiento de los circuitos integrados, las computadoras estaban
diseñadas para aplicaciones matemáticas o de negocios, pero no para las dos
cosas. Los circuitos integrados permitieron a los fabricantes de computadoras
incrementar la flexibilidad de los programas, y estandarizar sus modelos. La IBM
360 una de las primeras computadoras comerciales que usó circuitos integrados,
podía realizar tanto análisis numéricos como administración ó procesamiento de
archivos.
Los clientes podían escalar sus sistemas 360 a modelos IBM de mayor tamaño y
podían todavía correr sus programas actuales. Las computadoras trabajaban a tal
velocidad que proporcionaban la capacidad de correr más de un programa de
manera simultánea (multiprogramación).
Por ejemplo la computadora podía estar calculando la nómina y aceptando pedidos
al mismo tiempo.
Minicomputadoras, Con la introducción del modelo 360 IBM acaparó el 70% del
mercado, para evitar competir directamente con IBM la empresa Digital Equipment
Corporation DEC redirigió sus esfuerzos hacia computadoras pequeñas. Mucho
menos costosas de comprar y de operar que las computadoras grandes, las
minicomputadoras se desarrollaron durante la segunda generación pero alcanzaron
su mayor auge entre 1960 y 70.
La cuarta Generación (1971 a la fecha) - Microprocesador - Chips de
memoria.
- Microminiaturización
Dos mejoras en la tecnología de las computadoras marcan el inicio de la cuarta
generación: el reemplazo de las memorias con núcleos magnéticos, por las de chips
de silicio y la colocación de muchos más componentes en un Chip: producto de la
microminiaturización
de
los
circuitos
electrónicos.
El
tamaño
reducido
del
microprocesador de chips hizo posible la creación de las computadoras personales.
(PC)
Hoy en día las tecnologías LSI (Integración a gran escala) y VLSI (integración a
muy gran escala) permiten que cientos de miles de componentes electrónicos se
almacenan en un chip. Usando VLSI, un fabricante puede hacer que una
computadora pequeña rivalice con una computadora de la primera generación que
ocupara un cuarto completo.
Lenguajes de Programación
a.) Historia de los lenguajes; Los lenguajes de programación cierran el abismo
entre las computadoras, que sólo trabajan con números binarios, y los humanos,
que preferimos utilizar palabras y otros sistemas de numeración.
Mediante los programas se indica a la computadora qué tarea debe realizar y como
efectuarla, pero para ello es preciso introducir estas ordenes en un lenguaje que el
sistema pueda entender. En principio, el ordenador sólo entiende las instrucciones
en código máquina, es decir, el específico de la computadora. Sin embargo, a partir
de éstos se elaboran los llamados lenguajes de alto y bajo nivel.
b.
Generaciones de los lenguajes
LENGUAJES DE BAJO NIVEL:
Utilizan códigos muy cercanos a los de la máquina, lo que hace posible la
elaboración de programas muy potentes y rápidos, pero son de difícil aprendizaje.
LENGUAJES DE ALTO NIVEL:
Por el contrario, son de uso mucho más fácil, ya que en ellos un solo comando o
instrucción puede equivaler a millares es código máquina. El programador escribe
su programa en alguno de estos lenguajes mediante secuencias de instrucciones.
Antes de ejecutar el programa la computadora lo traduce a código máquina de una
sola vez (lenguajes compiladores) o interpretándolo instrucción por instrucción
(lenguajes intérpretes). Ejemplos de lenguajes de alto nivel: Pascal, Cobol, Basic,
Fortran, C++ Un Programa de computadora, es una colección de instrucciones que,
al ser ejecutadas por el CPU de una máquina, llevan a cabo una tarea ó función
específica. Este conjunto de instrucciones
que forman
los programas son
almacenados en archivos denomina dos archivos ejecutables puesto que, al teclear
su nombre (o hacer clic sobre el icono que los identifica) logras que la computadora
los cargue y corra, o ejecute las instrucciones del archivo. El contenido de un
archivo ejecutable no puede ser entendido por el usuario, ya que no está hecho
para que la gente lo lea, sino para que la computadora sea quien lo lea.
Los archivos de programas ejecutables contienen el código máquina, que la CPU
identifica como sus instrucciones. Son lo que conocemos como Programas Objeto.
Dado que sería muy difícil que los programadores crearan programas directamente
en código de máquina, usan lenguajes más fáciles de leer, escribir y entender para
la gente.
El programador teclea instrucciones en un editor, que es un programa parecido a
un simple procesador de palabras, estas instrucciones son almacenadas en archivos
denominados programas fuentes (código fuente). Si los programadores necesitan
hacer cambios al programa posteriormente vuelven a correr el editor y cargan el
programa fuente para modificarlo.
El proceso de conversión de programas fuente a programas objeto se realiza
mediante un programa denominado compilador. El compilador toma un programa
fuente y lo traduce a programa objeto y almacena este último en otro archivo.
PROGRAMA FUENTE: Es el programa escrito en alguno de los lenguajes y que no
ha sido traducido al lenguaje de la maquina, es decir el programa que no está en
código de máquina y que por lo tanto no puede ser ejecutable.
PROGRAMA OBJETO: Es aquel programa que se encuentra en lenguaje máquina y
que ya es ejecutable por esta.
C.) Programación Orientada a Objetos: La programación orientada a objetos no
es un concepto nuevo, sus inicios y técnicas de programación se iniciaron a
principios de los 70. Se puede definir programación orientada a objetos (OOPS)
como una técnica de programación que utiliza objetos como bloque esencial de
construcción. La OOPS, es un tipo de programación más cercana al razonamiento
humano. La OOPS surge como una solución a la programación de grandes
programas, y para solventar el mantenimiento de dichas aplicaciones, ya que en la
programación estructura el más mínimo cambio supone la modificación de muchas
funciones relacionadas, en cambio con la OOPS solo es cuestión de añadir o
modificar métodos de una clase o mejor, crear una nueva clase a partir de otra
(Herencia). Dos lenguajes destacan sobre el resto para programar de esta forma,
Smalltalk y C++.
Concepto de Objeto: Desde un punto de vista general un Objeto es una
estructura de datos de mayor o menor complejidad con las funciones que procesan
estos datos. Dicho de otra forma, sería Datos más un Código que procesa estos
datos. A los datos se les denomina miembros dato y a las funciones miembro o
miembro funciones. Los datos están ocultos y sólo se puede acceder a ellos
mediante las funciones miembro.
Clases: Las Clases son como plantillas o modelos que describen como se
construyen ciertos tipos de Objeto. Cada vez que se construye un Objeto de una
Clase, se crea una instancia de esa Clase("instance"). Una Clase es una colección
de Objetos similares y un Objeto es una instancia de una Clase. Se puede definir
una Clase como un modelo que se utiliza para describir uno o más Objetos del
mismo tipo.
Herencia: Una característica muy importante de los Objetos y las Clases es la
Herencia, una propiedad que permite construir nuevos Objetos (Clases) a partir de
unos ya existentes. Esto permite crear "Sub-Clases" denominadas Clases Derivadas
que comparten las propiedades de la Clase de la cual derivan (Clase base). Las
Clases derivadas heredan código y datos de la clase base, asimismo incorporan su
propio código y datos especiales. Se puede decir que la herencia permite definir
nuevas Clases a partir de las Clases ya existentes.
Polimorfismo: En un sentido literal, Polimorfismo significa la cualidad de tener
más de una forma. En el contexto de POO, el Polimorfismo se refiere al hecho de
que una simple operación puede tener diferente comportamiento en diferentes
objetos. En otras palabras, diferentes objetos reaccionan al mismo mensaje de
modo diferente. Los primeros lenguajes de POO fueron interpretados, de forma que
el Polimorfismo se contemplaba en tiempo de ejecución. Por ejemplo, en C++, al
ser un lenguaje compilado, el Polimorfismo se admite tanto en tiempo de ejecución
como en tiempo de compilación
Decimos entonces que:
El tema de la Programación Orientada a Objetos (Object Oriented Programming OO-P) sigue siendo para el que escribe un territorio inquietante, interesante y en
gran medida desconocido, como parece ser también para la gran mayoría de los
que estamos en el campo de la programación. Sin tratar de excluir a aquellos que
han afrontado este desarrollo desde el punto de vista académico y formal
(maestrías y doctorados) el tema se antoja difícil para los no iniciados. Con este
breve artículo me dirigiré en particular a la gran base de programadores prácticos
que andamos en búsqueda de mejores herramientas de desarrollo de programas,
que faciliten el trabajo de nuestros usuarios y a la vez disminuyan la gran cantidad
de considerandos que aparecen al empeñarnos en un proyecto de cómputo.
Como muchos de ustedes, me topé con el concepto de O-O-P como parte de esa
búsqueda y al explorarlo apareció el gusanillo de la curiosidad. A lo largo de mi
actividad como programador, y cuando se dio la necesidad, no tuve ningún
problema en convertir mis habilidades de programación en FORTRAN de IBM 1130
al BASIC de la PDP, pues sólo era cuestión de aprender la sintaxis del lenguaje, ya
que las estrategias de programación y los algoritmos eran iguales. Posteriormente,
al manejar el PASCAL se requirió un importante esfuerzo en entender la filosofía de
las estructuras, lo cual modificaba la manera de ver (conceptualizar) a los datos y a
las partes constitutivas de un programa.
Posteriormente
aparece
el
QuickBasic,
que
adopté
inmediatamente
por
la
familiaridad con el BASIC (ley del menor esfuerzo). Ofrecía estructuras de datos
(tipos y
registros
complejos), además de
estructuras
de instrucciones
en
procedimientos y módulos; editor "inteligente" que revisa la sintaxis y ejecución de
las instrucciones mientras se edita el programa, generación de ejecutable una vez
terminado (.EXE), existencia de bibliotecas externas y enlace con módulos objeto
generados en otro lenguaje. ¿Qué más podía yo pedir?
Pero la necesidad de estar en la ola de moda es más fuerte que el sentido común.
Las
aplicaciones
en
Windows
siempre
han
despertado
la
envidia
de
los
programadores, al hacer ver sus programas pálidos e insulsos por comparación.
Solución: programar en Windows.
Originalmente programar en Windows representaba un largo y tedioso camino para
dominar las complejas herramientas de desarrollo. Sólo recientemente han
aparecido desarrolladores de aplicaciones para Windows que le permiten al
programador pintar sus ventanas y realizar los enlaces entre los objetos con
programación tradicional, evitando en gran medida involucrarse con los conceptos
complicados de los objetos. Sin embargo no dejaron de inquietarme algunos
conceptos marcados por O-O-P, según los cuales serán los pilares del futuro de la
programación de componentes y de objetos distribuidos en redes, en donde la
actual programación cliente/servidor pareciera por comparación el FORTRAN o el
COBOL de ahora.
Pidiendo perdón de antemano a los puristas de las definiciones y conceptos de O-OP, expondré el resultado de mis propias indagaciones sobre este campo, esperando
que al paciente lector y posible programador le resulte menos complicado que a mí
asimilar los elementos básicos de O-O-P.
Los principales conceptos que se manejan en la Programación Orientada a Objetos
son: 1. encapsulado, 2. herencia y 3. Polimorfismo.
Según esto, la encapsulación es la creación de módulos autosuficientes que
contienen los datos y las funciones que manipulan dichos datos. Se aplica la idea de
la caja negra y un letrero de "prohibido mirar adentro". Los objetos se comunican
entre sí intercambiando mensajes. De esta manera, para armar aplicaciones se
utilizan los objetos cuyo funcionamiento está perfectamente definido a través de los
mensajes que es capaz de recibir o mandar. Todo lo que un objeto puede hacer
está representado por su interfase de mensajes. Para crear objetos, el programador
puede recurrir a diversos lenguajes como el C++, el Smalltalk, el Visual Objects y
otros. Si se desea solamente utilizar los objetos y enlazarlos en una aplicación por
medio de la programación tradicional se puede recurrir al Visual Basic, al CARealizer, al Power Builder, etc.
El concepto de herencia me pareció sencillo de entender una vez que capté otro
concepto de O-O-P: las clases. En O-O-P se acostumbra agrupar a los objetos en
clases. Esto es muy común en la vida diaria. Todos nosotros tendemos a clasificar
los objetos comunes por clases. Manejamos la clase mueble, la clase mascota, la
clase alimento, etc. Obviamente en el campo de la programación esta clasificación
es más estricta. ¿Cuál es el sentido de las clases? Fundamentalmente evitar definir
los objetos desde cero y facilitar su rehuso. Si trabajamos con clases, al querer
definir un nuevo objeto, partimos de alguna clase definida anteriormente, con lo
que el objeto en cuestión hereda las características de los objetos de su clase.
Imaginemos que creamos una clase "aves" y describimos las características de las
aves (plumas, pico, nacen de huevo, etc.). Más adelante necesitamos una clase
"pingüino". Como pertenece a "aves" no requerimos volver a declarar lo descrito
sino marcamos que "pingüino" es una subclase de "aves" con lo que "pingüino"
hereda todas sus características. A continuación sólo declaramos los detalles que
determinan lo que distingue a "pingüino" de "aves". Asimismo podemos declarar
"emperador" como una subclase de "pingüino", con lo que "emperador" heredará
todas
las
características
de
las
superclases
"pingüino"
y
"aves"
más
las
características que nosotros declaremos en particular para "emperador". En un
programa (imaginario por supuesto) yo puedo utilizar estas clases (aves, pingüino y
emperador). El hecho de colocar a un individuo en particular en estas clases es lo
que se llama objeto y se dice que es una instancia de una clase. Así, si yo coloco a
Fredy (un pingüino emperador) en mi programa, se dice que el objeto Fredy es una
instancia de la clase emperador. Fredy aparecerá en mi programa con todas las
características (herencia) de aves, de pingüino y de emperador.
Por otra parte, entender el concepto de Polimorfismo implicó un buen número de
horas de indagación y búsqueda de ejemplos. Espero que éste resulte claro:
supóngase que declaramos un objeto llamado Suma. Este objeto requiere dos
parámetros (o datos) como mensaje para operar. En la programación tradicional
tendríamos que definir el tipo de datos que le enviamos, como por ejemplo dos
números enteros, dos números reales, etc. En O-O-P el tipo de dato se conoce
hasta que se ejecuta el programa.
E.) COMPILADOR: Es un programa que traduce un lenguaje de alto nivel al
lenguaje máquina. Un programa compilado indica que ha sido traducido y está listo
para ser ejecutado. La ejecución de los programas compilados es más rápida que la
de los interpretados, ya que el interprete debe traducir mientras está en la fase de
ejecución (saca todos los errores). Un compilador es un programa que traduce el
programa fuente (conjunto de instrucciones de un lenguaje de alto nivel, por
ejemplo BASIC o Pascal) a programa objeto (instrucciones en lenguaje máquina
que la computadora puede interpretar y ejecutar). Se requiere un compilador para
cada lenguaje de programación. Un compilador efectúa la traducción, no ejecuta el
programa. Una vez compilado el programa, el resultado en forma de programa
objeto será directamente ejecutable. Presentan la ventaja considerable frente a los
intérpretes de la velocidad de ejecución, por lo que su uso será mejor en aquellos
programas probados en los que no se esperan cambios y que deban ejecutarse
muchas veces. En caso de que se opte por un interpretador se debe considerar que
el intérprete resida siempre en memoria.
INTERPRETE: Traductor de lenguajes de programación de alto nivel, los interpretes
ejecutan un programa línea por línea. El programa siempre permanece en su forma
original(programa fuente) y el interprete proporciona la traducción al momento de
ejecutar cada una de la s instrucciones. Un intérprete es un programa que procesa
los programas escritos en un lenguaje de alto nivel, sin embargo, está diseñado de
modo que no existe independencia entre la etapa de traducción y la etapa de
ejecución. Un intérprete traduce cada instrucción o sentencia del programa escrito
a un lenguaje máquina e inmediatamente se ejecuta. Encuentran su mayor ventaja
en la interacción con el usuario, al facilitar el desarrollo y puesta a punto de
programas, ya que los errores son fáciles de detectar y sobre todo de corregir.
LENGUAJE MÁQUINA: Lenguaje original de la computadora, un programa debe
estar escrito en el lenguaje de la máquina para poder ser ejecutado. Este es
generado por software y no por el programador. El programador escribe en un
lenguaje de programación, el cual es traducido al lenguaje de máquina mediante
interpretes y compiladores.
E.) Case: (Computer-Aided Software Engineering o Computer- Aided Systems
Engineering) Ingeniería de Software Asistida por Computadora o Ingeniería de
Sistemas Asistida por computadora Software que se utiliza en una cualquiera o en
todas las fases del desarrollo de un sistema de información, incluyendo análisis,
diseño y programación. Por ejemplo, los diccionarios de datos y herramientas de
diagramación ayudan en las fases de análisis y diseño, mientras que los
generadores de aplicaciones aceleran la fase de programación.
Las herramientas CASE proporcionan
métodos automáticos para
diseñar y
documentar las técnicas tradicionales de programación estructurada. La meta
última de CASE es proveer un lenguaje para describir el sistema completo, que sea
suficiente para generar todos los programas necesarios.
Sistemas Operativos
Un sistema Operativo (SO) es en sí mismo un programa de computadora. Sin
embargo, es un programa muy especial, quizá el más complejo e importante en
una computadora. El SO despierta a la computadora y hace que reconozca a la
CPU, la memoria, el tecla do, el sistema de vídeo y las unidades de disco. Además,
proporciona la facilidad para que los usuarios se comuniquen con la computadora y
sirve de plataforma a partir de la cual se corran programas de aplicación.
Cuando enciendes una computadora, lo primero que ésta hace es llevar a cabo un
autodiagnóstico llamado autoprueba de encendido (Power On Self Test, POST).
Durante la POST, la computadora identifica su memoria, sus discos, su teclado, su
sistema de vídeo y cualquier otro dispositivo conectado a ella. Lo siguiente que la
computadora hace es buscar un SO para arrancar (boot).
Una vez que la computadora ha puesto en marcha su SO, mantiene al menos parte
de éste en su memoria en todo momento. Mientras la computadora esté encendida,
el SO tiene 4 tareas principales:
1.
Proporcionar ya sea una interfaz de línea de comando o una interfaz
gráfica al usuario, para que este último se pueda comunicar con la
computadora. Interfaz de línea de comando: tú introduces palabras y
símbolos desde el teclado de la computadora, ejemplo, el MS-DOS. Interfaz
gráfica del Usuario (GUI), seleccionas las acciones mediante el uso de un
Mouse para pulsar sobre figuras llamadas iconos o seleccionar opciones de
los menús.
2.
Administrar los dispositivos de hardware en la computadora · Cuando
corren los programas, necesitan utilizar la memoria, el monitor, las unidades
de disco, los puertos de Entrada/Salida (impresoras, módems, etc). El SO
sirve de intermediario entre los programas y el hardware.
3.
Administrar y mantener los sistemas de archivo de disco · Los SO agrupan
la información dentro de compartimientos lógicos para almacenarlos en el
disco. Estos grupos de información son llamados archivos. Los archivos
pueden contener instrucciones de programas o información creada por el
usuario. El SO mantiene una lista de los archivos en un disco, y nos
proporciona las herramientas necesarias para organizar y manipular estos
archivos.
4.
Apoyar a otros programas. Otra de las funciones importantes del SO es
proporcionar servicios a otros programas. Estos servicios son similares a
aquellos que el SO proporciona directamente a los usuarios. Por ejemplo,
listar los archivos, grabarlos a disco, eliminar archivos, revisar espacio
disponible,
etc.
Cuando
los
programadores
escriben
programas
de
computadora, incluyen en sus programas instrucciones que solicitan los
servicios del SO. Estas instrucciones son conocidas como "llamadas del
sistema"
El Kernel y el Shell.
Las funciones centrales de un SO son controladas por el núcleo (kernel) mientras
que la interfaz del usuario es controlada por el entorno (shell). Por ejemplo, la
parte más importante del DOS es un programa con el nombre "COMMAND.COM"
Este programa ti ene dos partes. El kernel, que se mantiene en memoria en todo
momento, contiene el código máquina de bajo nivel para manejar la administración
de hardware para otros programas que necesitan estos servicios, y para la segunda
parte del COMMAND.COM el shell, el cual es el interprete de comandos.
Las funciones de bajo nivel del SO y las funciones de interpretación de comandos
están separadas, de tal forma que puedes mantener el kernel DOS corriendo, pero
utilizar una interfaz de usuario diferente. Esto es exactamente lo que sucede
cuando carga s Microsoft Windows, el cual toma el lugar del shell, reemplazando la
interfaz de línea de comandos con una interfaz gráfica del usuario. Existen muchos
shells diferentes en el mercado, ejemplo: NDOS (Norton DOS), XTG, PCTOOLS, o
inclusive el mismo SO MS-DOS a partir de la versión 5.0 incluyó un Shell llamado
DOS SHELL.
A.) Categorías de Sistemas Operativos
A.1) MULTITAREA: El término multitarea se refiere a la capacidad del SO para
correr mas de un programa al mismo tiempo. Existen dos esquemas que los
programas de sistemas operativos utilizan para desarrollar SO multitarea, el
primero requiere de la cooperación entre el SO y los programas de aplicación.
Los programas son escritos de tal manera que periódicamente inspeccionan con el
SO para ver si cualquier otro programa necesita a la CPU, si este es el caso,
entonces dejan el control del CPU al siguiente programa, a este método se le llama
multitarea cooperativa y es el método utilizado por el SO de las computadoras de
Machintosh y DOS corriendo Windows de Microsoft. El segundo método es el
llamada multitarea con asignación de prioridades. Con este esquema el SO
mantiene una lista de procesos (programas) que están corriendo. Cuando se inicia
cada proceso en la lista el SO le asigna una prioridad. En cualquier momento el SO
puede intervenir y modificar la prioridad de un proceso organizando en forma
efectiva la lista de prioridad, el SO también mantiene el control de la cantidad de
tiempo que utiliza con cualquier proceso antes de ir al siguiente. Con multitarea de
asignación de prioridades el SO puede sustituir en cualquier momento el proceso
que esta corriendo y reasignar el tiempo a una tarea de mas prioridad. Unix OS-2 y
Windows NT emplean este tipo de multitarea.
A.2) MULTIUSUARIO: Un SO multiusuario permite a mas de un solo usuario
accesar una computadora. Claro que, para llevarse esto a cabo, el SO también debe
ser capaz de efectuar multitareas. Unix es el Sistema Operativo Multiusuario más
utilizado. Debido a que Unix fue originalmente diseñado para correr en una
minicomputadora, era multiusuario y multitarea desde su concepción.
Actualmente se producen versiones de Unix para PC tales como The Santa Cruz
Corporation Microport, Esix, IBM,y Sunsoft. Apple también produce una versión de
Unix para la Machintosh llamada: A/UX.Unix
Unix proporciona tres maneras de permitir a múltiples personas utilizar la misma PC
al mismo tiempo.
1.) Mediante Módems.
1.
Mediante conexión de terminales a través de puertos seriales
3.) Mediante Redes.
A.3) MULTIPROCESO: Las computadoras que tienen mas de un CPU son llamadas
multiproceso. Un sistema operativo multiproceso coordina las operaciones de la
computadoras multiprocesadoras. Ya que cada CPU en una computadora de
multiproceso puede estar ejecutando una instrucción, el otro procesador queda
liberado para procesar otras instrucciones simultáneamente.
Al usar una computadora con capacidades de multiproceso incrementamos su
velocidad de respuesta y procesos. Casi todas las computadoras que tienen
capacidad de multiproceso ofrecen una gran ventaja.
Los primeros Sistemas Operativos Multiproceso realizaban lo que se conoce como:
·
Multiproceso asimétrico: Una CPU principal retiene el control global de la
computadora, así como el de los otros procesadores. Esto fue un primer
paso hacia el multiproceso pero no fue la dirección ideal a seguir ya que la
CPU principal podía convertirse en un cuello de botella.
·
Multiproceso simétrico: En un sistema multiproceso simétrico, no existe
una CPU controladora única. La barrera a vencer al implementar el
multiproceso simétrico es que los SO tienen que ser rediseñados o diseñados
desde el principio para trabajar en u n ambiente multiproceso. Las
extensiones de Unix, que soportan multiproceso asimétrico ya están
disponibles y las extensiones simétricas se están haciendo disponibles.
Windows NT de Microsoft soporta multiproceso simétrico.
B.) Lista de los Sistemas Operativos más comunes.
B.1) MS-DOS: Es el más común y popular de todos los Sistemas Operativos para
PC. La razón de su continua popularidad se debe al aplastante volumen de software
disponible y a la base instalada de computadoras con procesador Intel.
Cuando Intel liberó el 80286, D OS se hizo tan popular y firme en el mercado que
DOS y las aplicaciones DOS representaron la mayoría del mercado de software para
PC. En aquel tiempo, la compatibilidad IBM, fue una necesidad para que los
productos tuvieran éxito, y la "compatibilidad IBM" significaba computadoras que
corrieran DOS tan bien como las computadoras IBM lo hacían.
B.2) OS/2: Después de la introducción del procesador Intel 80286, IBM y Microsoft
reconocieron la necesidad de tomar ventaja de las capacidades multitarea de esta
CPU. Se unieron para desarrollar el OS/2, un moderno SO multitarea para los
microprocesadores Intel. < BR>Sin embargo, la sociedad no duró mucho. Las
diferencias en opiniones técnicas y la percepción de IBM al ver a Windows como
una amenaza para el OS/2 causó una desavenencia entre las Compañías que al
final las llevó a la disolución de la sociedad.
IBM continuó el desarrollo y promoción del OS/2.
Es un sistema operativo de multitarea para un solo usuario que requiere un
microprocesador Intel 286 o mejor. Además de la multitarea, la gran ventaja de la
plataforma OS/2 es que permite manejar directamente hasta 16 MB de la RAM ( en
comparación con 1 MB en el caso del MS-DOS ). Por otra parte, el OS/2 es un
entorno muy complejo que requiere hasta 4 MB de la RAM. Los usuarios del OS/2
interactuan con el sistema mediante una interfaz gráfica para usuario llamada
Administrador de presentaciones. A pesar de que el OS/2 rompe la barrera de 1 MB
del MS-DOS, le llevo tiempo volverse popular. Los vendedores de software se
muestran renuentes a destinar recursos a la creación de un software con base en el
OS/2 para un mercado dominado por el MS-DOS. Los usuarios se rehusan a
cambiar al OS/2 debido a la falta de software que funcione en la plata forma del
OS/2 y a que muchos tendrían que mejorar la configuración de su PC para que
opere con el OS/2.
B.3) UNIX: Unix es un SO multiusuario y multitarea, que corre en diferentes
computadoras,
desde
supercomputadoras,
Mainframes,
Minicomputadoras,
computadoras personales y estaciones de trabajo.
Es un sistema operativo que fue creado a principios de los setentas por los
científicos en los laboratorios Bell. Fue específicamente diseñado para proveer una
manera
de
manejar
científica
y
especializadamente
las
aplicaciones
computacionales. Este SO se adapto a los sistemas de computo personales así que
esta aceptación reciente lo convierte en un sistema popular.
. Unix es más antiguo que todos los demás SO de PC y de muchas maneras sirvió
como modelo para éstos. Aun cuando es un SO extremadamente sólido y capaz, la
línea de comandos Unix, no es apta para cardiacos, debido a que ofrece
demasiados comandos.
B.4) SISTEMA OPERATIVO DE MACINTOSH: La Macintosh es una máquina
netamente gráfica. De hecho, no existe una interfaz de línea de comando
equivalente para ésta. Su estrecha integración de SO, GUI y área de trabajo la
hacen la favorita de la gente que no quiere saber nada de interfaces de línea de
comando.
Las capacidades gráficas de la Macintosh hicieron de esa máquina la primera
precursora en los campos gráficos computarizados como la autoedición por
computadora.
La familia de microcomputadoras de Apple Macintosh y su sistema operativo define
otra plataforma importante. Las PC de Macintosh, que se basan en la familia de
microprocesadores de Motorola, usan la arquitectura de Bus de 32 bits. La
plataforma para Macintosh incluye muchas capacidades sofisticadas que comprende
la multitarea, una GUI, la memoria virtual y la capacidad para emular la plataforma
MS-DOS. Las PC de Macintosh también tiene la capacidad integrada de compartir
archivos y comunicarse con o tras PC de Macintosh en una red.
B.5) WINDOWS NT DE MICROSOFT: Con Windows NT, Microsoft ha expresado
su dedicación a escribir software no sólo para PC de escritorio sino también para
poderosas estaciones de trabajo y servidores de red y bases de datos. Microsoft
Windows NT no es necesariamente un sustituto de DOS ni una nueva versión de
éste; es, en conjunto, un nuevo SO diseñado desde sus bases para las máquinas
más modernas y capaces disponibles.
Windows NT de Microsoft ofrece características interconstruidas que ningún otro SO
para PC ofrece, con excepción de Unix.
Además de las características tradicionales de estricta seguridad de sistema, red
interconstruida, servicios de comunicación y correo electrónico interconstruidos,
herramientas de administración y desarrollo de sistema y una GUI, Windows NT
puede correr directamente aplicaciones de Windows de Microsoft y de Unix.
Windows NT, al igual que el OS/2 ver 2.0 y algunas versiones de Unix, es un SO de
32 bits, que puede hacer completo uso de los procesadores de estas características.
Además de ser multitarea, está diseñado para tomar ventaja del multiproceso
simétrico.
La computadora no es un invento de alguien en particular, sino el resultado evolutivo de ideas
y realizaciones de muchas personas relacionadas con áreas tales como la electrónica, la
mecánica, los materiales semiconductores, la lógica, el álgebra y la programación.
1820

La primera calculadora de producción masiva se distribuyó por Charles Thomas de
Colmar. Originalmente se les vendió a casas del seguro Parisienses, el aritmómetro de
Colmar operaba usando una variación de la rueda de Leibniz. Más de mil aritmómetros
se vendieron y eventualmente recibió una medalla a la Exhibición Internacional en
Londres en 1862.
1822

Charles Babbage completó su Artefacto de la diferencia, una máquina que se puede
usar para ejecutar cálculos de tablas simples. El Artefacto de la Diferencia era un
ensamble complejo de ruedas, engranajes, y remaches. Babbage diseñó su "Artefacto
Analítico", un aparato de propósito general que era capaz de ejecutar cualquier tipo de
cálculo matemático. Los diseños del artefacto analítico eran la primera
conceptualización clara de una máquina que podría ejecutar el tipo de cálculos
computacionales que ahora se consideran el corazón de informática. Babbage nunca
construyó su artefacto analítico, pero su plan influyó en toda computadora digital
subsiguiente, incluidas las modernas. El artefacto analítico fue finalmente construido
por un equipo moderno de ingenieros, en 1989, cien años después de la muerte de
Babbage en 1871. Por su discernimiento, Babbage hoy se conoce como el "Padre de las
Computadoras Modernas".
1837

Fue inicialmente descrita la máquina analítica de Charles Babbage. Es el diseño de un
computador moderno de propósito general. La idea que tuvo Charles Babbage sobre
un computador nació debido a que la elaboración de las tablas matemáticas era un
proceso tedioso y muy propenso a errores.
1843

Lady Ada Augusta Lovelace sugirió la idea de que las tarjetas perforadas se adaptaran
de manera que causaran que el motor de Babbage repitiera ciertas operaciones.
Debido a esta sugerencia algunos consideran a Lady Lovelace la primera
programadora.
1854

1869
El desarrollo del Álgebra de Boole fue publicado por el lógico inglés George Boole. El
sistema de Boole redujo a argumentos lógicos las permutaciones de tres operadores
básicos algebraicos: y, o, y no. A causa del desarrollo del álgebra de Boole, Boole es
considerado por muchos como el padre de la teoría de la informática.

La primera máquina lógica en usar el álgebra de Boole para resolver problemas más
rápido que humanos, fue inventada por William Stanley Jevons. La máquina, llamada
el Piano lógico, usó un alfabeto de cuatro términos lógicos para resolver silogismos
complicados.
1878


Un comité de la Asociación Británica para el avance de la ciencia recomendó no
construir la máquina analítica, por lo que Babbage no tuvo acceso a fondos del
gobierno.
Ramon Verea, quien vivía en la ciudad de Nueva York, inventó una calculadora con una
tabla interna de multiplicación; esto fue mucho más rápido que usar acarreos u otro
método digital de aquel tiempo. Él no se interesó en poner su obra en producción, sólo
quiso mostrar que un español podía inventar tanto como un americano.
1879

A los 19 años de edad, Herman Hollerith fue contratado como asistente en las oficinas
del censo estadounidense y desarrolló un sistema de cómputo mediante tarjetas
perforadas en las que los agujeros representaban el sexo, la edad, raza, entre otros.
Gracias a la máquina tabuladora de Hollerith el censo de 1890 se realizó en dos años y
medio, cinco menos que el censo de 1880.Se tardaba tanto en hacer el censo debido a
la llegada masiva de inmigrantes.
1884

Dorr Felt desarrolló su "Comptómetro", el cual fue la primera calculadora que se
operaba con sólo presionar teclas en vez de, por ejemplo, deslizar ruedas.
1893

La primera máquina exitosa de multiplicación automática se desarrolló por Otto
Steiger. "El Millonario", como se le conocía, automatizó la invención de Leibniz de
1673, y fue fabricado por Hans W. Egli de Zurich. Originalmente hecha para negocios,
la ciencia halló inmediatamente un uso para el aparato, y varios miles de ellos se
vendieron en los cuarenta años que siguieron.
Siglo XX [editar]
1906

1919
El primer tubo de vacío fue inventado por el americano, Lee De Forest. El "Audion",
como se llamaba, tenía tres elementos dentro de una bombilla del vidrio evacuada.
Los elementos eran capaces de hallar y amplificar señales de radio recibidas de una
antena. El tubo al vacío encontraría uso en varias generaciones tempranas de
computadoras, a comienzos de 1930.

El primer circuito multivibrador o biestable (en léxico electrónico flip-flop) fue
desarrollado por los inventores americanos W.H. Eccles y F.W. Jordan. El flip-flop
permitió diseñar circuitos electrónicos que podían tener dos estados estables,
alternativamente, pudiendo representar así el 0 como un estado y el otro con un 1.
Esto formó la base del almacenamiento y proceso del bit binario, estructura que
utilizan las actuales computadoras.
1924

Walther Bothe construyó una puerta lógica AND para usarla en experimentos físicos,
por lo cual recibió el premio Nobel de física en 1954.
1925

Se fundan los laboratorios Bell.
1930

Vannevar Bush construyó una máquina diferencial parcialmente electrónica, capaz de
resolver ecuaciones diferenciales.
1931

Kurt Gödel publicó un documento sobre los lenguajes formales basados en
operaciones aritméticas. Lo usó para codificar arbitrariamente sentencias y pruebas
formales, y mostró que los sistemas formales, como las matemáticas tradicionales, son
inconsistentes en un cierto sentido, o que contienen sentencias improbables pero
ciertas. Sus resultados son fundamentales en las ciencias teóricas de la computación.
1936

Alan Turing describe la máquina de Turing, la cual formaliza el concepto de algoritmo.
1940

Samuel Williams y George Stibitz completaron en los laboratorios Bell una calculadora
que podía manejar números complejos.
1941

La computadora Z3 fue creada por Konrad Zuse. Fue la primera máquina programable
y completamente automática.
1942

1944
John Vincent Atanasoff y Clifford Edward Berry completaron una calculadora de
propósito especial para resolver sistemas de ecuaciones lineales simultáneas, la cual
fue llamada la "ABC" ("Atanasoff Berry Computer").

Se construyó en la Universidad de Harvard, la Mark I, diseñada por un equipo
encabezado por Howard H. Aiken.
1945

El primer caso de malfuncionamiento en la computadora causado por la intrusión de
una polilla al sistema fue documentado por los diseñadores del Mark II. Erróneamente
se cree que de allí proviene el uso del término "bug", que significa insecto o polilla en
inglés. Sin embargo este término ya se usaba mucho antes para referirse a
malfuncionamientos de aparatos mecánicos, eléctricos y electrónicos. El "Oxford
English Dictionary " documenta este uso de la palabra desde 1889.

Vannevar Bush desarrolló la teoría de Memex, un dispositivo de hipertexto ligado a
una librería de libros y películas.
1946
ENIAC

Se construye en la Universidad de Pennsylvania la ENIAC (Electronic Numerical
Integrator And Calculator), que fue la primer computadora electrónica de propósito
general. Esta máquina ocupaba todo un sótano de la Universidad, tenía más de 18.000
tubos de vacío, consumía 200KW de energía eléctrica y requería todo un sistema de
aire acondicionado; tenía la capacidad para realizar cinco mil operaciones aritméticas
por segundo.
1947

Se inventa el transistor, en Laboratorios Bell por John Bardeen, Walter H. Brattain, y
William Shockley.
1949

1950
Fue desarrollada la primera memoria, por Jay Forrester, la cual reemplazó los no
confiables tubos al vacío como la forma predominante de memoria por los próximos
diez años.

Alan Turing expone un artículo que describe lo que ahora conocemos como la prueba
de Turing. Su publicación explora el desarrollo natural y potencial de la inteligencia y
comunicación humana y de computadoras.
1951

Comienza a operar la EDVAC, a diferencia de la ENIAC, no era decimal, sino binaria y
tuvo el primer programa diseñado para ser almacenado.

Eckert y Mauchly entregan a la Oficina del Censo su primer computador: el UNIVAC I.

El Sistema A-0 fue inventado por Grace Murray Hopper. Fue el compilador
desarrollado para una computadora electrónica.
1952

Shannon desarrolla el primer ratón eléctrico capaz de salir de un laberinto,
considerada la primera red neural.
1953

IBM fabricó su primer computadora escala industrial, la IBM 650

Se amplía el uso del lenguaje ensamblador para la programación de las computadoras.

Se crean memorias a base de magnetismo (conocidas como memorias de núcleos).
1954

Se desarrolla el lenguaje de programación de alto nivel FORTRAN.
1956

Darthmouth da una conferencia en a partir de la que nace el concepto de inteligencia
artificial.

Edsger Dijkstra inventa un algoritmo eficiente para descubrir las rutas más cortas en
grafos como una demostración de las habilidades de la computadora ARMAC.
1957

Es puesta a la venta por parte de IBM la primer impresora de matriz de puntos.
1958

Comienza la segunda generación de computadoras, caracterizados por usar circuitos
transistorizados en vez de válvulas al vacío.

El primer circuito integrado se construyó por Jack S. Kilby.

La organización ARPA es creada como consecuencia tecnológica de la llamada Guerra
Fría.
1960

Se desarrolla COBOL, el primer lenguaje de programación de alto nivel transportable
entre modelos diferentes de computadoras.

Aparece Algol, el primer lenguaje de programación estructurado y orientado a los
procedimientos.

Se crea el primer compilador de compilador.

C. Antony R. Hoare desarrolla el algoritmo de ordenamiento o clasificación llamado
quicksort.
1961


Kenneth Iverson inventa el lenguaje de programación APL en IBM.
Aparece el concepto de paginación de memoria, descrito por T. Kilburn y D. J. Howart.
1962

Los primeros programas gráficos que dejan que el usuario dibuje interactivamente en
una pantalla fueron desarrollados por Iván Sutherland en MIT.

El primer compilador autocontenido, es decir, capaz de compilar su propio código
fuente fue el creado para Lisp por Hart y Levin en el MIT.

Un equipo de la Universidad de Manchester completa la computadora ATLAS. Esta
máquina introdujo muchos conceptos modernos como interrupciones, pipes
(tuberías), memoria entrelazada, memoria virtual y memoria paginada. Fue la máquina
más poderosa del mundo en ese año.

El estudiante del MIT Steve Russell escribe el primer juego de computadora, llamado
Spacewar!.
1963
Caracteres ASCII imprimibles, del 32 al 126.

Un comité Industria-Gobierno define el código estándar de caracteres ASCII.

El primer minicomputador comercialmente exitoso es distribuido por DEC (Digital
Equipment Corporation).
1964

La aparición del IBM 360 marca el comienzo de la tercera generación. Las placas de
circuito impreso con múltiples componentes elementales pasan a ser reemplazadas
con placas de circuitos integrados.

Aparece el CDC 6600, la primera supercomputadora comercialmente disponible.
1965




Gordon Moore publica la famosa Ley de Moore.
La lógica difusa, diseñada por Lofti Zadeh, se usó para procesar datos aproximados.
J. B. Dennis introduce por primera vez el concepto de segmentación de memoria.
Los algoritmos de exclusión mutua (sistemas operativos) fueron tratados por primera
vez en los clásicos documentos de Dijkstra.
1966

La mayoría de ideas y conceptos que existían sobre redes fueron aplicadas a ARPANET.

Aparecen los primeros ensayos que más tarde definirían lo que hoy es la programación
estructurada.
1967

Los primeros programas exitosos de ajedrez fueron desarrollados por Richard
Greenblatt en el MIT.

Es inventado el diskette (disco flexible) en IBM por David Noble, bajo la dirección de
Alan Shugart.
1968

Robert Noyce y Gordon Moore fundan la corporación Intel.
1969

El protocolo de comunicaciones NCP fue creado para controlar la red ARPANET.

La primera minicomputadora de 16-bit es distribuida por la Data General Corporation.

Se desarrolla en los laboratorios Bell el lenguaje de programación B cuyos aportes
fueron mayoritariamente de Ken Thompson y Dennis Ritchie.

Nace el sistema operativo UNICS en los laboratorios Bell de AT&T por un grupo de
empleados de dicho laboratorio, entre los que se encuentran Ken Thompson, Dennis
Ritchie y Douglas Mcllroy.
1970






El sistema UNICS, es renombrado como Unix.
El primer cable de fibra óptica fue comercialmente producido por Corning Glass
Works, Inc.
Se publica el primer modelo de base de datos relacional, por E.F. Codd.
El profesor suizo Niklaus Wirth desarrolla el lenguaje de programación Pascal.
Brinch Hansen utiliza por primera vez la comunicación interprocesos en el sistema RC
400.
Intel crea la primera memoria dinámica RAM. Se le llamó 1103 y tenía una capacidad
de 1024 bits (1Kbits).
1971

Se presenta el primer procesador comercial y a la vez el primer chip microprocesador,
el Intel 4004.

Ray Tomlinson crea el primer programa para enviar correo electrónico, como
consecuencia, la arroba se usa por primera vez con fines informáticos.

Un grupo de investigadores del MIT presentaron la propuesta del primer "Protocolo
para la transmisión de archivos en Internet" (FTP).

Texas Instruments vende la primera calculadora electrónica portátil.
1972






Aparecen los disquetes de 5 1/4 pulgadas.
Se reconoce el primer virus informático, creado por Robert Thomas Morris. Atacó a
una máquina IBM Serie 360 y fue llamado Creeper.
Ken Thompson y Dennis M. Ritchie crean el lenguaje de programación C en los
Laboratorios Bell.
Nolan Bushnell y Ted Dabney fundan la Atari.
Intel desarrolla y pone a la venta el procesador 8008.
El concepto de región crítica fue sugerido por C. A. R. Hoare y Per Brinch Hansen.
1973

ARPA cambia su nombre por DARPA.
1974

Es creado el protocolo TCP por Vint Cerf y Robert Kahn.

Se crea el sistema Ethernet para enlazar a través de un cable único a las computadoras
de una red local (LAN).

Gary Kildall crea el sistema operativo CP/M, en base al cual se desarrolla
posteriormente, de manera polémica, MS-DOS, suponiendo una violación a los
derechos de autor (copyright) del CP/M.
1975

En enero la revista Popular Electronics hace el lanzamiento del Altair 8800, el primer
microcomputador personal reconocible como tal.

Se funda la empresa Microsoft.
1976

Se funda la empresa Apple.
1977

Se hace popular el ordenador Apple II, desarrollado por Steve Jobs y Steve Wozniak en
un garaje.
1978

Se desarrolla el famoso procesador de textos WordStar, originalmente para plataforma
CP/M (Control Program for Microcomputer).
1979

Dan Bricklin crea la primera hoja de cálculo, más tarde sería denominada VisiCalc.

Aparece el juego Pacman creado por Toru Iwatani de la empresa Namco.
1980

Surge el primer prototipo de Computadora de Instrucción Reducida (RISC),
desarrollado por un grupo de investigación en IBM.

La empresa Mycron lanza la primera microcomputadora de 16 bits, llamada Mycron
2000.

Se desarrolla el primer microprocesador de 32-bit en un solo chip en Laboratorios Bell,
llamado Bellmac-32.
1981

Se lanza al mercado el IBM PC, que se convertiría en un éxito comercial, marcaría una
revolución en el campo de la computación personal y definiría nuevos estándares.

Se termina de definir el protocolo TCP/IP.

Apple presenta el primer computador personal que se vende a gran escala, el apple II.

Sony crea los disquetes de 3 1/2 pulgadas.
1982

La Asociación Internacional MIDI publica el MIDI.

Se funda Compaq Computer Corporation, una compañía de computadoras personales,
por Rod Canion, Jim Harris y Bill Murto.
1983
Logo de GNU

Microsoft ofrece la versión 1.0 del procesador de textos Word para DOS.

Compaq (Compaq Computer Corporation) fabrica el primer clon PC IBM compatible, el
Compaq portable.

ARPANET se separa de la red militar que la originó, de modo que, ya sin fines militares,
se puede considerar esta fecha como el nacimiento de Internet.

Se anuncia públicamente el proyecto GNU iniciado por Richard Stallman.

Aparece el lenguaje de programación C++ diseñado por Bjarne Stroustrup.

Nace el primer sistema operativo de Sun llamado SunOS.

Aparece el famoso Lotus 1-2-3, un programa de hoja de cálculo realizado por la
compañía Lotus Software.

El sistema DNS consistía de 1000 hosts.

Se funda Borland.
1984

IBM presenta el PC-AT, con procesador Intel 80286, bus de expansión de 16 bits y 6
Mhz de velocidad. Tenía hasta 512 KB de memoria RAM, un disco duro de 20 MB y un
monitor monocromático. Su precio en ese momento era de 5.795 dólares.

Apple Computer presenta su Macintosh 128K con el sistema operativo Mac OS, el cual
introduce la interfaz gráfica ideada en Xerox.

Las compañías Philips y Sony crean los CD-Roms para computadores.

Se desarrolla el sistema de ventanas X bajo el nombre X1 para dotar de una interfaz
gráfica a los sistemas Unix.

Aparece el lenguaje LaTeX para procesamiento de documentos.

Hewlett-Packard lanza su popular impresora LaserJet.
1985

Microsoft presenta el sistema operativo Windows 1.0.

Compaq saca a la venta la Compaq Deskpro 286, una PC IBM Compatible de 16-bits
con microprocesador Intel 80286 corriendo a 6 MHz y con 7MB de RAM, fue
considerablemente más rápida que una PC IBM. Fue la primera de la línea de
computadoras Compaq Deskpro.

Bertrand Meyer crea el lenguaje de programación Eiffel.

Adobe crea el PostScript.

El ruso Alexey Pazhitnov crea el juego Tetris.
1986

ISO estandariza SGML, lenguaje en que posteriormente se basaría XML.

Compaq lanza el primer computador basado en el procesador de 32 bits Intel 80386,
adelantándose a IBM.

El lenguaje SQL es estandarizado por ANSI.

Aparece el programa de cálculo algebraico de computadora MathCad.

Se registra la primera patente base de codificación de lo que hoy conocemos como
MP3.

Compaq pone en venta la PC compatible Compaq Portable II, mucho más ligera y
pequeña que su predecesora, usaba microprocesador de 8 MHz y 10MB de disco duro,
y fue 30% más barata que la IBM PC/AT con disco rígido.
1987

Se desarrolla la primera versión del actual protocolo X11.

Larry Wall crea el lenguaje de programación Perl.

El proyecto GNU crea el conjunto de compiladores llamado "GNU Compiler Collection".

Compaq introdujo la primera PC basada en el nuevo microprocesador de Intel; el
80386 de 32 bits, con la Compaq Portable 386 y la Compaq Portable III. Aún IBM no
estaba usando este procesador. Compaq marcaba lo que se conocería como la era de
los clones de PC.
1988

Soft Warehouse desarrolla el programa de álgebra computacional llamado Derive.

Stephen Wolfram y su equipo sacan al mercado la primera versión del programa
Mathematica.

Aparece el primer documento que describe lo que hoy se conoce como firewalls.

Aparece el estándar XMS.
1989


Creative Labs presenta la reconocida tarjeta de sonido Sound Blaster.
T. E. Anderson estudia las cuestiones sobre el rendimiento de las hebras o hilos en
sistemas operativos (threads).
1990

Tim Berners-Lee ideó el hipertexto para crear el World Wide Web (www) una nueva
manera de interactuar con Internet. También creó las bases del protocolo de
transmisión HTTP, el lenguaje de documentos HTML y el concepto de los URL.

Se construye el primer prototipo de procesador óptico en AT&T (Laboratorios de Bell).

Guido van Rossum crea el lenguaje de programación Python.
1991
Tux (Logo de Linux)

Linus Torvalds decidió escribir su propio núcleo de sistema operativo compatible con
Unix, y lo llamó Linux.

Comienza a popularizarse la programación orientada a objetos.

Surge la primera versión del estándar Unicode.

Aparece la primera versión de Adobe Premiere.

Compaq puso a la venta al por menor con la Compaq Presario, y fue uno de los
primeros fabricantes en los mediados de los 90's en vender una PC de menos de
$1,000. Compaq se convirtió en una de los primeros fabricantes en usar micros de
AMD y Cyrix.
1992

Es indroducida la arquitectura de procesadores Alpha diseñada por DEC bajo el
nombre AXP, como reemplazo para la serie de microcomputadores VAX que
comúnmente utilizaban el sistema operativo VMS y que luego originaría el openVMS.
El procesador Alpha 21064 de 64 bits y 200MHz es declarado como el más rápido del
mundo.

Microsoft lanza Windows 3.1.

Aparece la primera versión del sistema operativo Solaris.
1993

Un grupo de investigadores descubrieron que un rasgo de la mecánica cuántica,
llamado entrelazamiento, podía utilizarse para superar las limitaciones de la teoría del
cuanto (quantum) aplicada a la construcción de computadoras cuánticas y a la
teleportación (teleportation).

Microsoft lanza al mercado la primera versión del sistema operativo multiusuario de
32 bits (cliente-servidor) Windows NT.

Se crea la lista TOP500 que recopila los 500 ordenadores más poderosos de la tierra.
1994

Marc Andreessen crea el famoso navegador web Netscape Navigator.

Es diseñado el PHP, originalmente en lenguaje Perl, seguidos por la escritura de un
grupo de CGI binarios escritos en el lenguaje C por el programador danés-canadiense
Rasmus Lerdorf.
1995

Lanzamiento de Windows 95 por parte de Microsoft.

Aparece la primera versión de MySQL.

Inicia el desarrollo del servidor Apache.

La implementación original y de referencia del compilador, la máquina virtual y las
librerías de clases de Java fueron desarrollados por Sun Microsystems.

Se presenta públicamente el lenguaje de programación Ruby.

Se especifica la versión 1.5 del DVD, base actual del DVD.
1996

Se crea Internet2, más veloz que la Internet original.

Se publica la primera versión del navegador web Opera.

Se inicia el proyecto KDE.

La tecnología de DjVu fue originalmente desarrollada en los laboratorios de AT&T.

Aparece la primera versión de SuperCollider.

Sabeer Bhatia y Jack Smith fundan HotMail.
1997

Es creado reproductor multimedia Winamp, cuya distribución es realizada
gratuitamente por la empresa estadounidense Nullsoft.

Aparece la primera versión pública de FlightGear.

Spencer Kimball y Peter Mattis crean la inicial librería GTK+.
1998

La W3C publica la primer versión de XML.

Es lanzado al mercado el sistema Windows 98 por parte de Microsoft.

Compaq adquirió Digital Equipment Corporation, la compañía líder en la anterior
generación de las computadoras durante los años 70 y principios de los 80. Esta
adquisición convertiría a Compaq en el segundo más grande fabricante de
computadoras, en términos de ingresos.
1999
GNOME

Aparece el entorno de escritorio GNOME.

Se publica la primera versión de MSN Messenger.

Surge Mac OS 9.
2000

Es presentado el prototipo de computador cuántico construido por un equipo de
investigadores de IBM.

Es lanzado el sistema operativo Windows 2000 por Microsoft.

Es lanzado el sistema operativo Windows Me por Microsoft.

Lanzamiento de Mac OS X.
Siglo XXI [editar]
2001

Microsoft desarrolla como parte de su plataforma .NET el lenguaje de programación
C#, que después fue aprobado como un estándar por la ECMA e ISO.

Lanzamiento de Windows XP.
2002

Lanzamiento del navegador web Mozilla Firefox, llamado en un primer momento
Phoenix.

Puesta en marcha del supercomputador Earth Simulator que sería el ordenador más
potente según el TOP500.
2005

Los usuarios de Internet con conexión de banda ancha superan a los usuarios de
internet con conexión vía módem en la mayoría de países desarrollados.

El programa Google Earth es lanzado.

Lanzamiento de Windows XP Media Center Edition

Puesta en funcionamiento del supercomputador MareNostrum en el BSC.
2006

Lanzamiento de Windows Vista

Sony lanza el Playstation 3.

Nintendo lanza el Wii.

Entra en servicio el supercomputador Magerit perteneciente al CeSViMa.

Microsoft lanza la nueva generación de Xbox llamada Xbox 360
2007

La empresa Dell lanza al mercado la primera computadora portátil (laptop) con la
distribución Linux Ubuntu preinstalada.

La empresa de Steve Jobs, Apple, lanza al mercado la nueva versión el Mac OS X
Leopard 10.5
2008

Apple lanza al mercado la MacBook Air la cual al parecer es la laptop más delgada del
mundo.

Apple lanza el móvil más revolucionario de la historia el iPhone 3G en toda Europa y
América

Google, contrarresta a Apple lanzando el G1 con su nuevo sistema Android para
moviles

Lanzamiento del navegador Google Chrome

Lanzamiento de KDE 4.0.

El supercomputador Roadrunner es el primero en superar el PetaFLOP alcanzando el
número 1 en la lista TOP500.

Sony lanza PSP-3000
2009

Debian GNU/Linux 5.0


KDE 4.2 RC
Lanzamiento de Windows 7
Unidad I: Historia y descripción funcional de un Sistema de Cómputo
1.1 Origen y desarrollo de las computadoras.
1.2 Clasificación de las computadoras por su objetivo por su tipo por su
capacidad.
1.3 Estructura física de un computador. Unidad central de procesamiento
1.4 Unidad Aritmética y lógica
1.5 Unidad de control
1.6 Memoria central, tipos de memoria
1.7 Unidades de entrada y salida
1.8 Funcionamiento de las computadoras: hardware y Software
1.9 Fundamentos de programación
 Arquitectura de Von Newman
 Lenguaje de Programación
 Lenguaje Ensamblador
 Lenguaje de Máquina
 Compilador
 Intérpretes
 Algoritmo
 Programa y aplicación
 Programa Fuente
 Programa Objeto
 Sistema Operativo
 Paradigmas de Programación
1.10 Evolución de los lenguajes de programación
 Generación
 Paradigma
 Área de aplicación
 Nivel de abstracción
 Forma de ejecución