Вы находитесь на странице: 1из 26

Historia de las computadoras (generaciones)

Uno de los primeros dispositivos mecnicos para contar fue el baco,


cuya historia se remonta a las antiguas civilizaciones griega y romana. Este
dispositivo es muy sencillo, consta de cuentas ensartadas en varillas que a su vez
estn montadas en un marco rectangular. Al desplazar las cuentas sobre varillas,
sus posiciones representan valores almacenados, y es mediante dichas
posiciones que este representa y almacena datos. A este dispositivo no se le
puede llamar computadora por carecer del elemento fundamental llamado
programa.
Otro de los inventos mecnicos fue la Pascalina inventada por Blaise Pascal (1623
- 1662) de Francia y la de Gottfried Wilhelm von Leibniz (1646 - 1716)
de Alemania. Con estas mquinas, los datos se representaban mediante las
posiciones de los engranajes, y los datos se introducan manualmente
estableciendo dichas posiciones finales de las ruedas, de manera similar a como
leemos los nmeros en el cuentakilmetros de un automvil.

La

primera

computadora

fue

la mquina

analtica creada

por

Charles

Babbage, profesor matemtico de la Universidad de Cambridge en el siglo XIX. La


idea que tuvo Charles Babbage sobre un computador naci debido a que la
1

elaboracin de las tablas matemticas era un proceso tedioso y propenso a


errores. En 1823 el gobierno Britnico lo apoyo para crear el proyecto de una
mquina de diferencias, un dispositivo mecnico para efectuar sumas repetidas.
Mientras tanto Charles Jacquard (francs), fabricante de tejidos, haba creado un
telar que poda reproducir automticamente patrones de tejidos leyendo
la informacin codificada en patrones de agujeros perforados en tarjetas de papel
rgido. Al enterarse de este mtodo Babbage abandon la mquina de diferencias
y se dedic al proyecto de la mquina analtica que se pudiera programar con
tarjetas perforadas para efectuar cualquier clculo con una precisin de 20 dgitos.
La tecnologa de la poca no bastaba para hacer realidad sus ideas.
El mundo no estaba listo, y no lo estara por cien aos ms.
En 1944 se construy en la Universidad de Harvard, la Mark I, diseada por un
equipo encabezado por Howard H. Aiken. Esta mquina no est considerada
como computadora electrnica debido a que no era de propsito general y su
funcionamiento estaba basado en dispositivos electromecnicos llamados
relevadores.

En 1947 se construy en la Universidad de Pennsylvania la ENIAC (Electronic


Numerical Integrator And Calculator) que fue la primera computadora electrnica,
el equipo de diseo lo encabezaron los ingenieros John Mauchly y John Eckert.
Esta mquina ocupaba todo un stano de la Universidad, tena ms de 18 000
2

tubos de vaco, consuma 200 KW de energa elctrica y requera todo


un sistema de aire acondicionado, pero tena la capacidad de realizar cinco mil
operaciones aritmticas en un segundo.
El proyecto, auspiciado por el departamento de Defensa de los Estados Unidos,
culmin dos aos despus, cuando se integr a ese equipo el ingeniero y
matemtico hngaro John von Neumann (1903 - 1957). Las ideas de von
Neumann resultaron tan fundamentales para su desarrollo posterior, que es
considerado el padre de las computadoras.
La EDVAC (Electronic Discrete Variable Automatic Computer) fue diseada por
este nuevo equipo. Tena aproximadamente cuatro mil bulbos y usaba un tipo
de memoria basado

en

tubos

llenos

de mercurio por

donde

circulaban seales elctricas sujetas a retardos.


La idea fundamental de von Neumann fue: permitir que en la memoria coexistan
datos

con

instrucciones,

para

que

entonces la

computadora pueda

ser

programada en un lenguaje, y no por medio de alambres que elctricamente


interconectaban varias secciones de control, como en la ENIAC.
Todo este desarrollo de las computadoras suele divisarse por generaciones y el
criterio que se determin para determinar el cambio de generacin no est muy
bien definido, pero resulta aparente que deben cumplirse al menos los siguientes
requisitos:

La forma en que estn construidas.

Forma en que el ser humano se comunica con ellas.

Primera Generacin
(1946-1958)

En esta generacin haba una gran desconocimiento de las capacidades de las


computadoras, puesto que se realiz un estudio en esta poca que determin que
con veinte computadoras se saturara el mercado de los Estados Unidos en el
campo de procesamiento de datos. Esta generacin abarco la dcada de los
cincuenta. Y se conoce como la primera generacin. Estas mquinas tenan las
siguientes caractersticas:

Estas mquinas estaban construidas por medio de tubos de vaco.

Eran programadas en lenguaje de mquina.


En

esta

generacin

las

mquinas

son

grandes

costosas

(de

un costo aproximado de ciento de miles de dlares).

En 1951 aparece la UNIVAC (NIVersAl Computer), fue la primera computadora


comercial, que dispona de mil palabras de memoria central y podan leer cintas
magnticas, se utiliz para procesar el censo de 1950 en los Estados Unidos. En
las dos primeras generaciones, las unidades de entrada utilizaban tarjetas
perforadas, retomadas por Herman Hollerith (1860 - 1929), quien adems fund
una compaa que con el paso del tiempo se conocera como IBM (International
Bussines Machines). Despus se desarroll por IBM la IBM 701 de la cual se
entregaron 18 unidades entre 1953 y 1957. Posteriormente, la compaa
Remington Rand fabric el modelo 1103, que competa con la 701 en el campo
4

cientfico, por lo que la IBM desarrollo la 702, la cual present problemas en


memoria, debido a esto no dur en el mercado.
La computadora ms exitosa de la primera generacin fue la IBM 650, de la cual
se produjeron varios cientos. Esta computadora que usaba un esquema de
memoria secundaria llamado tambor magntico, que es el antecesor de los discos
actuales.
Otros modelos de computadora que se pueden situar en los inicios de la segunda
generacin son: la UNIVAC 80 y 90, las IBM 704 y 709, Burroughs 220 y UNIVAC
1105.

Segunda Generacin
(1958-1964)
Cerca de la dcada de 1960, las computadoras seguan evolucionando, se reduca
su tamao y creca su capacidad de procesamiento. Tambin en esta poca se
empez a definir la forma de comunicarse con las computadoras, que reciba el
nombre

de programacin de sistemas.

Las

caractersticas

de

la

segunda

generacin son las siguientes:

Estn construidas con circuitos de transistores.

Se programan en nuevos lenguajes llamados lenguajes de alto nivel.


En esta generacin las computadoras se reducen de tamao y son de menor
costo. Aparecen muchas compaas y las computadoras eran bastante avanzadas
para su poca como la serie 5000 de Burroughs y la ATLAS de la Universidad de
Manchester.
Algunas de estas computadoras se programaban con cintas perforadas y otras
ms por medio de cableado en un tablero. Los programas eran hechos a la
medida por un equipo de expertos: analistas, diseadores, programadores y
operadores que se manejaban como una orquesta para resolver los problemas y
5

clculos solicitados por la administracin. El usuario final de la informacin no


tena contacto directo con las computadoras. Esta situacin en un principio se
produjo en las primeras computadoras personales, pues se requera saberlas
"programar" (alimentarle instrucciones) para obtener resultados; por lo tanto su
uso estaba limitado a aquellos audaces pioneros que gustaran de pasar un buen
nmero de horas escribiendo instrucciones, "corriendo" el programa resultante y
verificando y corrigiendo los errores o bugs que aparecieran. Adems, para no
perder el "programa" resultante haba que "guardarlo" (almacenarlo) en una
grabadora de astte, pues en esa poca no haba discos flexibles y mucho
menos discos duros para las PC; este procedimiento poda tomar de 10 a 45
minutos, segn el programa. El panorama se modific totalmente con la aparicin
de las computadoras personales con mejore circuitos, ms memoria, unidades de
disco flexible y sobre todo con la aparicin de programas de aplicacin general en
donde el usuario compra el programa y se pone a trabajar. Aparecen los
programas procesadores de palabras como el clebre Word Star, la impresionante
hoja de clculo (spreadsheet) Visicalc y otros ms que de la noche a la maana
cambian la imagen de la PC. El software empieza a tratar de alcanzar el paso del
hardware. Pero aqu aparece un nuevo elemento, el usuario.
El usuario de las computadoras va cambiando y evolucionando con el tiempo. De
estar totalmente desconectado a ellas en las mquinas grandes pasa la PC a ser
pieza clave en el diseo tanto del hardware como del software. Aparece
el concepto de human interface que es la relacin entre el usuario y su
computadora. Se habla entonces de hardware ergonmico (adaptado a las
dimensiones humanas para reducir el cansancio), diseos de pantallas
antirreflejos y teclados que descansen la mueca. Con respecto al software se
inicia una verdadera carrera para encontrar la manera en que el usuario pase
menos tiempo capacitndose y entrenndose y ms tiempo produciendo. Se
ponen al alcance programas con mens (listas de opciones) que orientan en todo
momento al usuario (con el consiguiente aburrimiento de los usuarios expertos);
otros programas ofrecen toda una artillera de teclas de control y teclas

de funciones (atajos) para efectuar toda suerte de efectos en el trabajo (con la


consiguiente desorientacin de los usuarios novatos). Se ofrecen un sinnmero de
cursos prometiendo que en pocas semanas hacen de cualquier persona un
experto en los programas comerciales. Pero el problema "constante" es que
ninguna solucin para el uso de los programas es "constante". Cada nuevo
programa requiere aprender nuevos controles, nuevos trucos, nuevos mens. Se
empieza a sentir que la relacin usuario-PC no est acorde con los desarrollos del
equipo y de la potencia de los programas. Hace falta una relacin amistosa entre
el usuario y la PC.}
Las computadoras de esta generacin fueron: la Philco 212 (esta compaa se
retir del mercado en 1964) y la UNIVAC M460, la Control Data Corporation
modelo 1604, seguida por la serie 3000, la IBM mejor la 709 y sac al mercado la
7090, la National Cash Register empez a producir mquinas para proceso de
datos de tipo comercial, introdujo el modelo NCR 315.
La Radio Corporation of America introdujo el modelo 501, que manejaba el
lenguaje COBOL, para procesos administrativos y comerciales. Despus sali al
mercado la RCA 601.

Tercera generacin
(1964-1971)
La IBM produce la serie 360 con los modelos 20, 22, 30, 40, 50, 65, 67, 75, 85, 90,
195 que utilizaban tcnicas especiales del procesador, unidades de cinta de nueve
canales, paquetes de discos magnticos y otras caractersticas que ahora son
estndares (no todos los modelos usaban estas tcnicas, sino que estaba dividido
por aplicaciones).

IBN INTRODUCE SISTEMA 360

Con los progresos de la electrnica y los avances de comunicacin con las


computadoras en la dcada de los 1960, surge la tercera generacin de las
computadoras. Se inaugura con la IBM 360 en abril de 1964. Las caractersticas
de esta generacin fueron las siguientes:

Su fabricacin electrnica est basada en circuitos integrados.

Su manejo es por medio de los lenguajes de control de los sistemas


operativos.
El sistema operativo de la serie 360, se llam OS que contaba con varias
configuraciones, inclua un conjunto de tcnicas de manejo de memoria y del
procesador que pronto se convirtieron en estndares. En 1964 CDC introdujo la
serie 6000 con la computadora 6600 que se consider durante algunos aos como
la ms rpida.
En la dcada de 1970, la IBM produce la serie 370 (modelos 115, 125, 135, 145,
158, 168). UNIVAC compite son los modelos 1108 y 1110, mquinas en
gran escala; mientras que CDC produce su serie 7000 con el modelo 7600. Estas
computadoras se caracterizan por ser muy potentes y veloces.
A finales de esta dcada la IBM de su serie 370 produce los modelos 3031, 3033,
4341. Burroughs con su serie 6000 produce los modelos 6500 y 6700 de

avanzado diseo, que se reemplazaron por su serie 7000. Honey - Well participa
con su computadora DPS con varios modelos.
A mediados de la dcada de 1970, aparecen en el mercado las computadoras de
tamao mediano, o minicomputadoras que no son tan costosas como las grandes
(llamadas tambin como mainframes que significa tambin, gran sistema), pero
disponen de gran capacidad de procesamiento. Algunas minicomputadoras fueron
las siguientes: la PDP - 8 y la PDP - 11 de Digital Equipment Corporation, la VAX
(Virtual Address eXtended) de la misma compaa, los modelos NOVA y ECLIPSE
de Data General, la serie 3000 y 9000 de Hewlett - Packard con varios modelos el
36 y el 34, la Wang y Honey - Well -Bull, Siemens de origen alemn, la ICL
fabricada en Inglaterra. En la Unin Sovitica se utiliz la US (Sistema Unificado,
Ryad) que ha pasado por varias generaciones.

Cuarta Generacin
(1971-1983)

1971-CHIP INTEL 4004

Aqu

aparecen

microelectrnica,

los microprocesadores que


son

circuitos

es

integrados
9

un
de

gran

adelanto

alta densidad y

de

la
con

una velocidad impresionante. Las microcomputadoras con base en estos circuitos


son extremadamente pequeas y baratas, por lo que su uso se extiende al
mercado industrial. Aqu nacen las computadoras personales que han adquirido
proporciones enormes y que han influido en la sociedad en general sobre la
llamada "revolucin informtica".
En 1976 Steve Wozniak y Steve Jobs inventan la primera microcomputadora de
uso masivo y ms tarde forman la compaa conocida como la Apple que fue la
segunda compaa ms grande del mundo, antecedida tan solo por IBM; y est
por su parte es an de las cinco compaas ms grandes del mundo.
En 1981 se vendieron 800 00 computadoras personales, al siguiente subi a 1 400
000. Entre 1984 y 1987 se vendieron alrededor de 60 millones de computadoras
personales, por lo que no queda duda que su impacto y penetracin han sido
enormes.
Con el surgimiento de las computadoras personales, el software y los sistemas
que con ellas de manejan han tenido un considerable avance, porque han hecho
ms interactiva la comunicacin con el usuario. Surgen otras aplicaciones como
los procesadores de palabra, las hojas electrnicas de clculo, paquetes grficos,
etc. Tambin las industrias del Software de las computadoras personales crece
con gran rapidez, Gary Kildall y William Gates se dedicaron durante aos a la
creacin de sistemas operativos y mtodos para lograr una utilizacin sencilla de
las

microcomputadoras

(son

los

creadores

de

CP/M

de

los productos de Microsoft).


No todo son microcomputadoras, por supuesto, las minicomputadoras y los
grandes sistemas continan en desarrollo. De hecho las mquinas pequeas
rebasaban por mucho la capacidad de los grandes sistemas de 10 o 15 aos
antes, que requeran de instalaciones costosas y especiales, pero sera
equivocado suponer que las grandes computadoras han desaparecido; por el
contrario, su presencia era ya ineludible en prcticamente todas las esferas de
control gubernamental, militar y de la gran industria. Las enormes computadoras
de las series CDC, CRAY, Hitachi o IBM por ejemplo, eran capaces de atender a
varios cientos de millones de operaciones por segundo.

10

Quinta Generacin
(1984 -1999)

En vista de la acelerada marcha de la microelectrnica, la sociedad industrial se


ha dado a la tarea de poner tambin a esa altura el desarrollo del software y los
sistemas

con

que

se

manejan

las

computadoras.

Surge

la competencia internacional por el dominio del mercado de la computacin, en la


que se perfilan dos lderes que, sin embargo, no han podido alcanzar el nivel que
se desea: la capacidad de comunicarse con la computadora en un lenguaje ms
cotidiano y no a travs de cdigos o lenguajes de control especializados.
Japn lanz en 1983 el llamado "programa de la quinta generacin de
computadoras",

con

los objetivos explcitos

de

producir

mquinas

con

innovaciones reales en los criterios mencionados. Y en los Estados Unidos ya est


en actividad un programa en desarrollo que persigue objetivos semejantes, que
pueden resumirse de la siguiente manera:

Procesamiento en paralelo mediante arquitecturas y diseos especiales y


circuitos de gran velocidad.

Manejo de lenguaje natural y sistemas de inteligencia artificial.


El futuro previsible de la computacin es muy interesante, y se puede esperar que
esta ciencia siga siendo objeto de atencin prioritaria de gobiernos y de la
sociedad en conjunto.
MODELO DE VON NEUMANN
Las computadoras digitales actuales se ajustan al modelo propuesto por el
matemtico John Von Neumann. De acuerdo con l, una caracterstica importante
11

de este modelo es que tanto los datos como los programas, se almacenan en la
memoria antes de ser utilizados.

Funcionamiento de la CPU
La unidad central de procesamiento o unidad de procesamiento central (conocida
por las siglas CPU, del ingls: central processing unit), es el hardware dentro de
una computadora u

otros

dispositivos

programables,

que

interpreta

las instrucciones de un programa informtico mediante la realizacin de las


operaciones bsicas aritmticas, lgicas y de entrada/salida del sistema. El
trmino en s mismo y su acrnimo han estado en uso en la industria de la
Informtica por lo menos desde el principio de los aos 1960. La forma, el diseo
de CPU y la implementacin de las CPU ha cambiado drsticamente desde los
primeros ejemplos, pero su operacin fundamental sigue siendo la misma.
Una

computadora

puede

tener

ms

de

una

CPU;

esto

se

llama multiprocesamiento. Todas las CPU modernas son microprocesadores, lo


que significa que contienen un solo circuito integrado (chip). Algunos circuitos
integrados pueden contener varias CPU en un solo chip; estos son denominados
procesadores multi ncleo. Un circuito integrado que contiene una CPU tambin
puede contener los dispositivos perifricos, y otros componentes de un sistema
informtico; a esto se llama un sistema en un chip (SoC).

12

Vista superior de una CPU Intel80486DX2.

Vista posterior de una Intel 80486DX2

Dos componentes tpicos de una CPU son la unidad aritmtico lgica (ALU), que
realiza operaciones aritmticas y lgicas, y la unidad de control (CU), que extrae
instrucciones de la memoria, las decodifica y las ejecuta, llamando a la ALU
cuando sea necesario.
No todos los sistemas computacionales se basan en una unidad central de
procesamiento. Una matriz de procesador o procesador vectorial tiene mltiples
elementos cmputo paralelo, sin una unidad considerada el "centro". En el modelo
de computacin distribuido, se resuelven problemas mediante un conjunto
interconectado y distribuido de procesadores.

Operacin
La operacin fundamental de la mayora de las CPU es ejecutar una secuencia de
instrucciones almacenadas llamadas programa. El programa es representado
por una serie de nmeros que se mantienen en una cierta clase de memoria de
ordenador. Hay cuatro pasos que casi todos las CPU de arquitectura de von
Neumann usan en su operacin: fetch, decode, execute, y writeback, (leer,
decodificar, ejecutar y escribir).

Diagrama mostrando como es decodificada una instruccin del MIPS32. (MIPS


Technologies 2005)

Fetch

13

El primer paso, leer, implica el recuperar una instruccin, (que es representada por
un nmero o una secuencia de nmeros), de la memoria de programa. La
localizacin en la memoria del programa es determinada por un contador de
programa (PC), que almacena un nmero que identifica la direccin de la siguiente
instruccin que se debe buscar. Despus se lee una instruccin, el PC es
incrementado por la longitud de la instruccin en trminos de unidades de
memoria de modo que contendr la direccin de la siguiente instruccin en la
secuencia. Frecuentemente, la instruccin a ser leda debe ser recuperada de
memoria relativamente lenta, haciendo detener al CPU mientras espera que la
instruccin sea devuelta. Esta cuestin se trata en gran medida en los
procesadores modernos por los cachs y las arquitecturas pipeline.

Decode
En el paso de decodificacin, la instruccin es dividida en partes que tienen
significado para otras unidades de la CPU. La manera en que el valor de la
instruccin numrica es interpretado est definida por la arquitectura del conjunto
de instrucciones (el ISA) de la CPU. A menudo, un grupo de nmeros en la
instruccin, llamados opcode, indica qu operacin realizar. Las partes restantes
del nmero usualmente proporcionan informacin requerida para esa instruccin,
como por ejemplo, operandos para una operacin de adicin. Tales operandos se
pueden dar como un valor constante (llamado valor inmediato), o como un lugar
para localizar un valor, que segn lo determinado por algn modo de direccin,
puede ser un registro o una direccin de memoria. En diseos ms viejos las
unidades del CPU responsables de decodificar la instruccin eran dispositivos de
hardware fijos. Sin embargo, en CPUs e ISAs ms abstractos y complicados, es
frecuentemente usado un microprograma para ayudar a traducir instrucciones en
varias seales de configuracin para el CPU. Este microprograma es a veces
reescribible de tal manera que puede ser modificado para cambiar la manera en
que el CPU decodifica instrucciones incluso despus de que haya sido fabricado.

14

Execute

Diagrama de bloques de un CPU simple.

Despus de los pasos de lectura y decodificacin, es llevado a cabo el paso de


la ejecucin de la instruccin. Durante este paso, varias unidades del CPU son
conectadas de tal manera que ellas pueden realizar la operacin deseada. Si, por
ejemplo, una operacin de adicin fue solicitada, una unidad aritmtico
lgica (ALU) ser conectada a un conjunto de entradas y un conjunto de salidas.
Las entradas proporcionan los nmeros a ser sumados, y las salidas contendrn la
suma final. La ALU contiene la circuitera para realizar operaciones simples de
aritmtica y lgica en las entradas, como adicin y operaciones de bits (bitwise). Si
la operacin de adicin produce un resultado demasiado grande para poder ser
manejado por el CPU, tambin puede ser ajustada una bandera (flag)
de desbordamiento aritmtico localizada en un registro de banderas (ver abajo la
seccin sobre rango de nmeros enteros).

Writeback
El paso final, la escritura, simplemente escribe los resultados del paso de
ejecucin a una cierta forma de memoria. Muy a menudo, los resultados son
escritos a algn registro interno del CPU para acceso rpido por subsecuentes
instrucciones. En otros casos los resultados pueden ser escritos a una memoria
15

principal ms lenta pero ms barata y ms grande. Algunos tipos de instrucciones


manipulan el contador de programa en lugar de directamente producir datos de
resultado. Estas son llamadas generalmente "saltos" (jumps) y facilitan
comportamientos como bucles, la ejecucin condicional de programas (con el uso
de saltos condicionales), y funciones en programas. Muchas instrucciones tambin
cambiarn el estado de dgitos en un registro de "banderas". Estas banderas
pueden ser usadas para influenciar cmo se comporta un programa, puesto que a
menudo indican el resultado de varias operaciones. Por ejemplo, un tipo de
instruccin de "comparacin" considera dos valores y fija un nmero, en el registro
de banderas, de acuerdo a cul es el mayor. Entonces, esta bandera puede ser
usada por una posterior instruccin de salto para determinar el flujo de programa.
Despus de la ejecucin de la instruccin y la escritura de los datos resultantes, el
proceso entero se repite con el siguiente ciclo de instruccin, normalmente
leyendo la siguiente instruccin en secuencia debido al valor incrementado en el
contador de programa. Si la instruccin completada era un salto, el contador de
programa ser modificado para contener la direccin de la instruccin a la cual se
salt, y la ejecucin del programa contina normalmente. En CPUs ms
complejos que el descrito aqu, mltiples instrucciones pueden ser ledas,
decodificadas, y ejecutadas simultneamente. Esta seccin describe lo que es
referido generalmente como el "entubado RISC clsico" (Classic RISC pipeline),
que de hecho es bastante comn entre los CPU simples usados en muchos
dispositivos electrnicos, a menudo llamados micro controladores.
Lenguaje C (lenguaje de programacin)

C es un lenguaje de programacin originalmente desarrollado por Dennis M.


Ritchie entre 1969 y 1972 en los Laboratorios Bell, como evolucin del anterior
lenguaje B, a su vez basado en BCPL.
Al igual que B, es un lenguaje orientado a la implementacin de Sistemas
Operativos, concretamente Unix. C es apreciado por la eficiencia del cdigo que

16

produce y es el lenguaje de programacin ms popular para crear software de


sistemas, aunque tambin se utiliza para crear aplicaciones.
Se trata de un lenguaje de tipos de datos estticos, dbilmente tipificado, de medio
nivel pero con muchas caractersticas de bajo nivel. Dispone de las estructuras
tpicas de los lenguajes de alto nivel pero, a su vez, dispone de construcciones del
lenguaje que permiten un control a muy bajo nivel. Los compiladores suelen
ofrecer extensiones al lenguaje que posibilitan mezclar cdigo ensamblador con
cdigo C o acceder directamente a memoria o dispositivos perifricos.
La primera estandarizacin del lenguaje C fue en ANSI, con el estndar X3.1591989. El lenguaje que define este estndar fue conocido vulgarmente como ANSI
C.

Posteriormente,

en

1990,

fue

ratificado

como

estndar ISO (ISO/IEC

9899:1990). La adopcin de este estndar es muy amplia por lo que, si los


programas creados lo siguen, el cdigo es portable entre plataformas y/o
arquitecturas.
Desarrollo inicial
El desarrollo inicial de C se llev a cabo en los Laboratorios Bell de AT&T entre
1969 y 1973; segn Ritchie, el periodo ms creativo tuvo lugar en 1972. Se le dio
el nombre "C" porque muchas de sus caractersticas fueron tomadas de un
lenguaje anterior llamado "B".
Hay muchas leyendas acerca del origen de C y el sistema operativo con el que
est ntimamente relacionado, Unix. Algunas de ellas son:
El desarrollo de C fue el resultado del deseo de los programadores de jugar
con Space Travel. Haban estado jugando en el mainframe de su compaa, pero
debido a su poca capacidad de proceso y al tener que soportar 100 usuarios,
Thompson y Ritchie no tenan suficiente control sobre la nave para evitar
colisiones con los asteroides. Por ese motivo decidieron portar el juego a un PDP7 de la oficina que no se utilizaba; pero esa mquina no tena sistema operativo,
as que decidieron escribir uno. Finalmente decidieron portar el sistema operativo
del PDP-11 que haba en su oficina, pero era muy costoso, pues todo el cdigo

17

estaba escrito en lenguaje ensamblador. Entonces decidieron usar un lenguaje de


alto nivel y porttil para que el sistema operativo se pudiera portar fcilmente de
un ordenador a otro. Consideraron usar B, pero careca de las funcionalidades
necesarias para aprovechar algunas caractersticas avanzadas del PDP-11.
Entonces empezaron a crear un nuevo lenguaje, C.
La justificacin para obtener el ordenador original que se us para desarrollar Unix
fue crear un sistema que automatizase el archivo de patentes. La versin original
de Unix se desarroll en lenguaje ensamblador. Ms tarde, el lenguaje C se
desarroll para poder reescribir el sistema operativo.
En 1973, el lenguaje C se haba vuelto tan potente que la mayor parte
del kernel Unix, originalmente escrito en el lenguaje ensamblador PDP-11/20, fue
reescrita en C. ste fue uno de los primeros ncleos de sistema operativo
implementados en un lenguaje distinto al ensamblador. (Algunos casos anteriores
son el sistema Multics, escrito en PL/I, y Master Control Program para el B5000 de
Burroughs, escrito en ALGOL en 1961).

El C de Kernighan y Ritchie
En 1978, Ritchie y Brian Kernighan publicaron la primera edicin de El lenguaje de
programacin C, tambin conocido como La biblia de C. Este libro fue durante
aos laespecificacin informal del lenguaje. El lenguaje descrito en este libro
recibe habitualmente el nombre de "el C de Kernighan y Ritchie" o simplemente
"K&R C" (La segunda edicin del libro cubre el estndar ANSI C, descrito ms
abajo).
Kernighan y Ritchie introdujeron las siguientes caractersticas al lenguaje:

El tipo de datos struct .


El tipo de datos long int .
El tipo de datos unsigned int .

18

Los

operadores =+ y =- fueron

sustituidos

por += y -= para

eliminar

la

ambigedad sintctica de expresiones como i=-10 , que se podra interpretar bien


como i =- 10 o bien como i = -10 .
El C de Kernighan y Ritchie es el subconjunto ms bsico del lenguaje que un
compilador debe de soportar. Durante muchos aos, incluso tras la introduccin
del ANSI C, fue considerado "el mnimo comn denominador" en el que los
programadores deban programar cuando deseaban que sus programas fueran
transportables, pues no todos los compiladores soportaban completamente ANSI,
y el cdigo razonablemente bien escrito en K&R C es tambin cdigo ANSI C
vlido.
En las primeras versiones del lenguaje, la definicin de funciones se haca
mediante un 'prototipo de funcin' (function prototype), el cual indicaba al
compilador el tipo de retorno de la funcin. Aunque este mtodo tiene una gran
desventaja respecto al nuevo, debido a que no comprueba el nmero ni el tipo en
la lista de argumentos; en otras palabras, es mucho ms fcil cometer errores al
hacer una llamada a una funcin con argumentos incorrectos.
Ejemplo del "viejo estilo":
int power(); /* Podria haberse omitido (*) */
power()
int a, b;
{
int n;
for (n = 1; b > 0; --b)
n *= a;
return n;
}

Ejemplo de la nueva definicin:


int power(int a, int b) {
int n;
for (n = 1; b > 0; --b)
n *= a;
return n;
}
19

Por defecto, el tipo de retorno en C es int, por lo que la declaracin entera int
power(); podra haberse omitido.
En los aos siguientes a la publicacin del C de Kernighan y Ritchie, se aadieron
al lenguaje muchas caractersticas no oficiales, que estaba soportadas por los
compiladores de AT&T, entre otros. Algunas de estas caractersticas eran:

Funciones void y el tipo de datos void * .


Funciones que retornaban tipos de datos struct o union (en lugar de

punteros).
Asignacin de tipos de datos struct .
Calificador const , que hace que un objeto sea de slo lectura.
Una biblioteca estndar, que incorporaba la mayora de las funcionalidades
implementadas por varios desarrolladores de compiladores.

ANSI C e ISO
A finales de la dcada de 1970, C empez a sustituir a BASIC como lenguaje de
programacin de microcomputadores predominante. Durante la dcada de 1980
se empez a usar en los IBM PC, lo que increment su popularidad
significativamente. Al mismo tiempo, Bjarne Stroustrup empez a trabajar con
algunos compaeros de Bell Labs para aadir funcionalidades de programacin
orientada a objetos a C. El lenguaje que crearon, llamado C++, es hoy en da el
lenguaje de

programacin de aplicaciones ms comn

en el sistema

operativo Microsoft Windows; mientras que C sigue siendo ms popular en el


entorno Unix. Otro lenguaje que se desarroll en esa poca, Objective C, tambin
aadi caractersticas de programacin orientada a objetos a C. Aunque hoy en
da

no

es

tan

popular

como

C++,

se

usa

para

desarrollar

aplicaciones Cocoa para Mac OS X.


En 1983, el Instituto Nacional Estadounidense de Estndares organiz un comit,
X3j11, para establecer una especificacin estndar de C. Tras un proceso largo y
arduo, se complet el estndar en 1989 y se ratific como el "Lenguaje de

20

Programacin C" ANSI X3.159-1989. Esta versin del lenguaje se conoce a


menudo como ANSI C, o a veces como C89 (para distinguirla de C99).
En 1990, el estndar ANSI (con algunas modificaciones menores) fue adoptado
por la Organizacin Internacional para la Estandarizacin (ISO) en el estndar
ISO/IEC 9899:1990. Esta versin se conoce a veces como C90. No obstante,
"C89" y "C90" se refieren en esencia al mismo lenguaje.
Uno de los objetivos del proceso de estandarizacin del ANSI C fue producir una
extensin al C de Kernighan y Ritchie, incorporando muchas funcionalidades no
oficiales. Sin embargo, el comit de estandarizacin incluy tambin muchas
funcionalidades nuevas, como prototipos de funcin, y un preprocesador
mejorado. Tambin se cambi la sintaxis de la declaracin de parmetros para
hacerla semejante a la empleada habitualmente en C++:
main(argc, argv)
int argc;
char **argv;
{
...
}

Pas a ser
int main(int argc, char *argv[]) {
...
}

ANSI C est soportado hoy en da por casi la totalidad de los compiladores. La


mayora del cdigo C que se escribe actualmente est basado en ANSI C.
Cualquier programa escrito slo en C estndar sin cdigo que dependa de un
hardware determinado funciona correctamente en cualquier plataforma que
disponga de una implementacin de C compatible. Sin embargo, muchos
programas han sido escritos de forma que slo pueden compilarse en una cierta
plataforma, o con un compilador concreto, esto puede ser debido a diversos
motivos:

La utilizacin de bibliotecas no estndar, como interfaces grficas de


usuario.

21

El uso de compiladores que no cumplen las especificaciones del estndar.


El uso de tipos de datos suponiendo que tendrn el mismo tamao u orden
de los bits en todas las plataformas.

La macro __STDC__ puede usarse para dividir el cdigo en secciones ANSI y


K&R para el compilador.
# if __STDC__
extern int getopt(int, char * const *, const char *);
# else
extern int getopt();
# endif

Algunos programadores recomiendan usar "#if __STDC__", como en el ejemplo,


en lugar de "#ifdef __STDC__" porque algunos compiladores le asignan el valor
cero a __STDC__ para indicar que no son compatibles con ANSI.
En el siguiente ejemplo, el programa pide al usuario que introduzca un nmero. El
programa dividir dicho nmero entre 2 e imprimir el resultado mientras que este
sea par, y terminar cuando el nmero sea impar:
#include <stdio.h>
int main(void) {
int numero;
fputs("Introduzca un numero entero par: ", stdout);
scanf("%d", &numero);
if (!numero) {
fputs("Error: numero no valido.\n", stderr);
return -1;
}
int i = 1;
while (numero%2 == 0) {
printf ("%.3d| %d/2 =", i++, numero);
numero /=2;
printf("%d\n", numero);
}
printf ("No se puede seguir dividiendo: El numero %d es impar.\n", numero);
return 0;
}

22

C99
Tras el proceso de estandarizacin de ANSI, la especificacin del lenguaje C
permaneci relativamente estable durante algn tiempo, mientras que C++ sigui
evolucionando. Sin embargo, el estndar continu bajo revisin a finales de
la dcada de 1990, lo que llev a la publicacin del estndar ISO 9899:1999 en
1999. Este estndar se denomina habitualmente "C99". Se adopt como estndar
ANSI en marzo de 2000.
Las nuevas caractersticas de C99 incluyen:

Funciones inline.
Las variables pueden declararse en cualquier sitio (como en C++), en lugar
de poder declararse slo tras otra declaracin o al comienzo de una

declaracin compuesta.
Muchos tipos de datos, incluyendo long long int (para reducir el engorro de
la transicin de 32 bits a 64 bits), un tipo de datos booleano, y un

tipo complex que representa nmeros complejos.


Arrays de longitud variable.
Soporte para comentarios de una lnea que empiecen con // , como
en BCPL o en C++, caracterstica para la que muchos compiladores haban

dado soporte por su cuenta.


Muchas funciones nuevas, como snprintf ()
Algunos headers nuevos, como stdint.h .

Una consideracin importante es que hasta la publicacin de este estndar, C


haba sido mayormente un subconjunto estricto del C++. Era muy sencillo
"actualizar" un programa de C hacia C++ y mantener ese cdigo compilable en
ambos lenguajes. Sin embargo, el nuevo estndar agrega algunas caractersticas
que C++ no admite, como por ejemplo los inicializadores estticos de estructuras.
Tambin define al tipo "bool" de una manera que no es exactamente la del C++.
El compilador GCC, entre muchos otros, soportan hoy en da la mayora de las
nuevas caractersticas de C99. Sin embargo, este nuevo estndar ha tenido poca

23

acogida entre algunos desarrolladores de compiladores, como Microsoft y Borland,


que se han centrado en C++. Brandon Bray, de Microsoft, dijo a este respecto:
"En general, hemos visto poca demanda de muchas caractersticas de C99.

Algunas caractersticas tienen ms demanda que otras, y consideraremos


incluirlas en versiones futuras siempre que sean compatibles con C++.

C11
C11 (antes

conocido

como C1X)

es

un

nombre

informal

para ISO/IEC

9899:2011,4 el ltimo estndar publicado para C. El borrador final, N1570, 5 fue


publicado en abril de 2011. El nuevo estndar super su ltima revisin el 10 de
octubre de 2011 y fue oficialmente ratificado por la ISO y publicado el 8 de
diciembre de 2011.

24

Conclusin

Como hemos visto la computadora se remonta desde los aos 20 con simples
maquinas mecnicas pero despus por necesidades que tena el ser humano
surgieron con la idea de hacerla ms sofisticada.
Surgieron las maquinas con tubos de vacio que eran muy voluminosas y difciles
de trabajar per las fueron mejorando,como se vio en todas las generaciones, hasta
lograr lo que tenemos hoy en da. Las maquinas (computadoras) de la actualidad
son de gran importancia para la humanidad, con ellas hacemos diversidad de
actividades, por ejemplo, esta investigacin fue a travs de una computadora y
todos sus respectivos programas que utiliza, otro ejemplo, cuando vamos de
compras la mayora de las tiendas utilizan computadoras para registrar sus ventas.
Para resumir las computadoras nos vinieron a facilitar la vida, con ella ahorramos
tiempo y dinero.

Bibliografa
Referencias de internet (URL)
http://www.monografias.com/trabajos/histocomp/histocomp.shtml
https://es.wikipedia.org/wiki/Unidad_central_de_procesamiento
25

https://es.wikipedia.org/wiki/C_(lenguaje_de_programaci%C3%B3n)

26

Вам также может понравиться