Monday, June 04, 2007

Parte 4 Historia de la COMPUTACION


8. El Desarrollo de los Lenguajes y Técnicas de Programación.

Paralelo al desarrollo de la ciencia de la computación y de las máquinas correspondientes fue tomando auge la técnica relativa a los métodos de suministrar las instrucciones a las máquinas con vistas a realizar un determinado trabajo de cálculo. Fueron dos mujeres las grandes pioneras de las técnicas e idiomas de programación, independientemente del aporte que los hombres también brindaron.

Se reconoce generalmente como la primera gran pionera en este campo a Lady Ada Augusta Lovelace, única hija legitima del poeta ingles Lord Byron, nacida en 1815.
Entre los muchos aportes que hizo a la ciencia de la computación Lady Lovelace, mientras estudiaba la máquina de Babbage, el más sobresaliente probablemente fue el que estaba relacionado con el concepto de lo que hoy llamamos 'lazos' o 'subrutinas'

Lady Lovelace planteó que en una larga serie de instrucciones debía haber necesariamente varias repeticiones de una misma secuencia. Y que consecuentemente debía ser posible establecer un solo grupo de tarjetas perforadas para este grupo de instrucciones recurrentes. Sobre este mismo principio trabajaron posteriormente los conocidos matemáticos ingleses Alan Turing y John Von Neumann.

En 1989 el único lenguaje aceptado por el Departamento de Defensa Norteamericano es el llamado ADA, este en honor de la Condesa ADA Lovelace. ADA surgió por la necesidad de unificar los más de 400 lenguajes y dialectos que dicho departamento utilizaba en sus proyectos, de forma que el tiempo y dinero invertidos en el desarrollo de software para uno de ellos fuera utilizable en otro de similares características.

Poco más de un siglo después de la muerte de Lady Lovelace, otra mujer, que con el paso del tiempo demostró ser eminente, estaba empeñada en la programación de la primera computadora digital, la Mark I.

Grace M. Hooper fue una de las pioneras en el campo de los idiomas de programación, especialmente en el desarrollo de Cobol (Common Business Oriented Languaje), un idioma concebido para su utilización con equipos de diferentes fabricantes y que expresa los problemas de manipulación y elaboración de datos en forma narrativa ordinaria en Ingles.
Su trabajo relacionado con la programación de Mark I y las subsiguientes generaciones Mark II y Mark III le valieron ganar un prestigioso premio otorgado por la Marina. Luego de tres años trabajando en el departamento de computación de la Marina, Grace Hooper se unió a la Eckert Mauchly Corp. como experta en matemáticas. En la fecha en que Hooper se unió a la compañía de Eckert Mauchly, éstos estaban empeñados en la construcción de Univac I, en la programación de la cual la Sra. Hooper tuvo gran participación.

En 1952 Grace Hooper publicó su primer ensayo sobre autoprogramadores (Compilers), que le valió ser nombraba directora e ingeniero de sistemas de la División Univac de la Sperry Rand Corp. Este documento de gran importancia técnica sería el primero de muchos otros (más de 50) publicados por ella relacionados con idiomas y otros elementos de programación.

Los trabajos de Grace Hooper en materia de programación llevaron al desarrollo de las subrutinas (subprograms) y por extensión a la creación de colecciones de las subrutinas, un procedimiento eficiente y económico de eliminar errores en la programación y de disminuir considerablemente el esfuerzo requerido para poder programar.

Los lenguajes de programación se dividen en:

Lenguaje de máquina: El lenguaje de máquina está orientado hacia la máquina. Este lenguaje es fácil de entender por la computadora, pero difícil para el usuario. Es el lenguaje original de la computadora el cual es generado por el "software", y no por el programador.

Bajo Nivel: Son dependientes de la máquina, están diseñados para ejecutarse en una determinada computadora. A esta categoría pertenecen las 2 primeras generaciones. Ejemplo: lenguaje ensamblador.

Alto Nivel: Son independientes de la máquina y se pueden utilizar en cualquier computadora. Pertenecen a esta categoría la tercera y la cuarta generación. Los lenguajes de más alto nivel no ofrecen necesariamente mayores capacidades de programación, pero si ofrecen una interacción programador/computadora más avanzada. Cuanto más alto es el nivel del lenguaje, más sencillo es comprenderlo y utilizarlo.

Cada generación de lenguajes es más fácil de usar y más parecida a un lenguaje natural que sus antecesores.

Los lenguajes posteriores a la cuarta generación se conocen como lenguajes de muy alto nivel. Son lenguajes de muy alto nivel los generadores de aplicaciones y los naturales.
En cada nuevo nivel se requieren menos instrucciones para indicar a la computadora que efectúe una tarea en particular. Pero los lenguajes de alto nivel son sólo una ayuda para el programador. Un mayor nivel significa que son necesarios menos comandos, debido a que cada comando o mandato de alto nivel reemplaza muchas instrucciones de nivel inferior.


9. Programas traductores.


Son los que traducen instrucciones de lenguajes de programación de alto nivel al código binario del lenguaje de la máquina.

Código fuente ("source code")Es un conjunto de instrucciones del programa que están escritas en un lenguaje de programación.

Código del objeto ("object code")Es un conjunto de instrucciones binarias traducidas y que la computadora puede ejecutar.
Ejemplos de programas traductores

Compilador Es un programa que traduce un lenguaje de alto nivel al lenguaje de máquina de una computadora. Según va ejecutando la traducción, coteja los errores hechos por el programador. Traduce un programa una sola vez, generalmente, y es cinco veces más rápido que los programas intérpretes. Ejemplos: ALGOL, BASIC, COBOL, FORTRAN, PASCAL y PL/1.

Intérprete Es un programa que traduce un lenguaje de alto nivel al lenguaje de máquina de una computadora. El programa siempre permanece en su forma original (programa fuente) y traduce cuando está en la fase de ejecución instrucción por instrucción. Ejemplo: BASIC

Ensamblador
Es un programa de bajo nivel que traduce el lenguaje de ensamble a lenguaje de máquina. Utiliza letras del alfabeto para representar los diferentes arreglos del código binario de la máquina. Los programadores de ensamble deben conocer profundamente la arquitectura y el lenguaje de máquina de su computadora. El programa ensamblador traduce cada instrucción de ensamble escrita por el programador a la instrucción en lenguaje de máquina binario equivalente. En general, las instrucciones ("software") de un sistema se escriben en este lenguaje. Ejemplos: Sistema operativo y Sistemas de manejo de base de datos.

Lenguajes de alto nivel más comunes

BASIC (Beginners All-purpose Symbolic Instruction Code)
Fue el lenguaje de programación interactivo más popular en la década de los 70. Es un lenguaje de propósito general. Desarrollado por John Kemeny y Thomas Kurtz en "Dartmouth College" en 1963. Existen numerosas versiones, algunas son compiladoras y otras son intérpretes.

COBOL (Common Business Oriented Language)
Es un lenguaje compilador diseñado para aplicaciones de negocios. Desarrollado en 1959 por el gobierno federal de los Estados Unidos y fabricantes de computadoras bajo el liderazgo de Grace Hopper. Es el más utilizado por los "mainframe". COBOL está estructurado en cuatro divisiones; a saber:

1) División de identificación - identifica el programa.
2) División ambiental - identifica a las computadoras fuente y objeto.
3) División de datos - identifica las memorias "buffer", constantes y áreas de trabajo.
4) División de procedimiento - describe el procesamiento (la lógica del programa).

PASCAL Este programa recibió su nombre en honor a Blas Pascal. Fue desarrollado por el científico suizo Niklaus Wirth en 1970 y diseñado para enseñar técnicas de programación estructurada. Es fácil de aprender y de usar y no utiliza línea sino ";" (semicolon). Existen versiones de compilador, como de intérprete. Estas varían según la versión.

FORTRAN (FORmula TRANslator)
Es uno de los primeros lenguajes de alto nivel desarrollado en 1954 por John Backus y un grupo de programadores de IBM. Es un lenguaje compilador que se diseñó para expresar con facilidad las fórmulas matemáticas, resolver problemas científicos y de ingeniería.

ADA Es un lenguaje desarrollado como una norma del Departamento de Defensa de los Estados Unidos.
Es un lenguaje basado en PASCAL, pero más amplio y específico. Fue diseñado tanto para aplicaciones comerciales como científicas. Es un lenguaje de multitareas que puede ser compilado por segmentos separados. Se llama ADA en honor de Augusta Ada Byron, condesa de Lovelace e hija del poeta inglés Lord Byron.

APL (A Programming Language)
Este programa fue desarrollado por Kenneth Inverson a mediados de la década de 1960 para resolver problemas matemáticos. Este lenguaje se caracteriza por su brevedad y por su capacidad de generación de matrices y se utiliza en el desarrollo de modelos matemáticos.

PL/1 (Programming Language 1)
Este programa fue desarrollado por IBM. Es un lenguaje de propósito general que incluye características de COBOL y de FORTRAN. Su principal utilidad es en los "mainframes".

RPG (Report Program Generator)
Fue desarrollado por IBM en 1964 y diseñado para generar informes comerciales o de negocios.

Lenguaje C
Fue desarrollado a principios de la década de los 70 en Bell Laboratories por Brian Kernigham y Dennis Ritchie. Ellos necesitaban desarrollar un lenguaje que se pudiera integrar con UNIX, permitiendo a los usuarios hacer modificaciones y mejorías fácilmente. Fue derivado de otro lenguaje llamado BCPL.

Lenguaje C++
Se pronuncia "ce plus plus". Fue desarrollado por Bjarne Stroustrup en los Bell Laboratories a principios de la década de los '80. C++ introduce la programación orientada al objeto en C. Es un lenguaje extremadamente poderoso y eficiente. C++ es un súper conjunto de C, para aprender C++ significa aprender todo acerca de C, luego aprender programación orientada al objeto y el uso de éstas con C++.

Visual BASIC
Este programa fue creado por Microsoft. Es un programa moderno que da apoyo a las características y métodos orientados a objetos.

Programación orientada al objeto


Las metas de la programación orientada al objeto es mejorar la productividad de los programadores haciendo más fácil de usar y extender los programas y manejar sus complejidades. De esta forma, se reduce el costo de desarrollo y mantenimiento de los programas. En los lenguajes orientados al objeto los datos son considerados como objetos que a su vez pertenecen a alguna clase. A las operaciones que se definen sobre los objetos son llamados métodos.

Ejemplo de programas orientados al objeto: Visual BASIC y C++.

Generaciones de los Lenguajes de Programación

1. Primera Generación: Lenguaje de máquina. Empieza en los años 1940-1950. Consistía en sucesiones de dígitos binarios. Todas las instrucciones y mandatos se escribían valiéndose de cadenas de estos dígitos. Aún en la actualidad, es el único lenguaje interno que entiende la computadora; los programas se escriben en lenguajes de mayor nivel y se traducen a lenguaje de máquina.

2. Segunda Generación: Lenguajes ensambladores. Fines de los 50. Se diferencian de los lenguajes de máquina en que en lugar de usar códigos binarios, las instrucciones se representan con símbolos fáciles de reconocer, conocidos como mnemotécnicos. Aún se utilizan estos lenguajes cuando interesa un nivel máximo de eficiencia en la ejecución o cuando se requieren manipulaciones intrincadas. Al igual que los lenguajes de máquina, los lenguajes ensambladores son únicos para una computadora en particular. Esta dependencia de la computadora los hace ser lenguajes de bajo nivel.

3. Tercera Generación: Años ’60. Los lenguajes de esta generación se dividen en tres categorías, según se orienten a:

Procedimientos: Requieren que la codificación de las instrucciones se haga en la secuencia en que se deben ejecutar para solucionar el problema. A su vez se clasifican en científicos (ej.: FORTRAN), empresariales (ej.: COBOL), y de uso general o múltiple (ej.: BASIC). Todos estos lenguajes permiten señalar cómo se debe efectuar una tarea a un nivel mayor que en los lenguajes ensambladores. Hacen énfasis en los procedimientos o las matemáticas implícitas, es decir en lo que se hace (la acción).

Problemas: Están diseñados para resolver un conjunto particular de problemas y no requieren el detalle de la programación que los lenguajes orientados a procedimientos. Hacen hincapié en la entrada y la salida deseadas.

Objetos: El énfasis se hace en el objeto de la acción. Los beneficios que aportan estos lenguajes incluyen una mayor productividad del programador y claridad de la lógica, además de ofrecer la flexibilidad necesaria para manejar problemas abstractos de programación.

4. Cuarta Generación: Su característica distintiva es el énfasis en especificar qué es lo que se debe hacer, en vez de cómo ejecutar una tarea. Las especificaciones de los programas se desarrollan a un más alto nivel que en los lenguajes de la generación anterior. La característica distintiva es ajena a los procedimientos, el programador no tiene que especificar cada paso para terminar una tarea o procesamiento. Las características generales de los lenguajes de cuarta generación son:

Uso de frases y oraciones parecidas al inglés para emitir instrucciones.
No operan por procedimientos, por lo que permiten a los usuarios centrarse en lo que hay que hacer no en cómo hacerlo.
Al hacerse cargo de muchos de los detalles de cómo hacer las cosas, incrementan la productividad.

Hay dos tipos de lenguajes de cuarta generación, según se orienten:

A la producción: Diseñados sobre todo para profesionales en la computación.

Al usuario: Diseñados sobre todo para los usuarios finales, que pueden escribir programas para hacer consultas en una base de datos y para crear sistemas de información. También se llama lenguaje de consultas (SQL, Structured Query Language: lenguaje estructurado para consultas).


10. GENERACIONES DE COMPUTADORAS


Primera Generación (1951-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. El voltaje de los tubos era de 300v y la posibilidad de fundirse era grande. 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 censo utilizó para evaluar el de 1950. La programación en lenguaje máquina, consistía en largas cadenas de bits, de ceros y unos, por lo que la programación resultaba larga y compleja

· Usaban tubos al vacío para procesar información.
· Usaban tarjetas perforadas para entrar los datos y los programas.
· Usaban cilindros magnéticos para almacenar información e instrucciones internas
En 1953 se comenzó a construir computadoras electrónicas y su primera entrada fue con la IBM 701.

Después de un lento 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. 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)

El invento del transistor hizo posible una nueva generación de computadora
s, 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 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 computadora. Las computadoras de la 2da Generación eran substancialmente 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 utilizar las computadoras en tareas de almacenamiento de registros, como manejo de inventarios, nómina y contabilidad, la velocidad de las operaciones ya no se mide en segundos sino en microsegundos (ms). Memoria interna de núcleos de ferrita.

Instrumentos de almacenamiento: cintas y discos.
Mejoran los dispositivos de entrada y salida, para la mejor lectura de tarjetas perforadas, se disponía de células fotoeléctricas.
Introducción de elementos modulares.
La marina de EE.UU. 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 años 60 se conocieron como el grupo BUNCH


Tercera Generación (1964-1971)


Circuitos integrados (chips)
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.

Multiprogramación
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.

Las computadoras trabajaban a tal velocidad que proporcionaban la capacidad de correr más de un programa de manera simultánea (multiprogramación).

Mini computadora
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 1970.
Generalización de lenguajes de programación de alto nivel
Compatibilidad para compartir software entre diversos equipos
Tiempo Compartido: Uso de una computadora por varios clientes a tiempo compartido, pues el aparato puede discernir entre diversos procesos que realiza simultáneamente
Se desarrollaron circuitos integrados para procesar información.
Se desarrollaron los "chips" para almacenar y procesar la información.
Un "chip" es una pieza de silicio que contiene los componentes electrónicos en miniatura llamados semiconductores.



Cuarta Generación (1971-1982)


El microprocesador: El proceso de reducción del tamaño de los componentes llega a operar a escalas microscópicas. La micro miniaturización permite construir el microprocesador, circuito integrado que rige las funciones fundamentales del ordenador.
Las aplicaciones del microprocesador se han proyectado más allá de la computadora y se encuentran en multitud de aparatos, sean instrumentos médicos, automóviles, juguetes, electrodomésticos, el tamaño reducido del microprocesador de chips hizo posible la creación de las computadoras personales. (PC)

Memorias Electrónicas: Se desechan las memorias internas de los núcleos magnéticos de ferrita y se introducen memorias electrónicas, que resultan más rápidas. Al principio presentan el inconveniente de su mayor costo, pero este disminuye con la fabricación en serie.

Sistema de tratamiento de base de datos: El aumento cuantitativo de las bases de datos lleva a crear formas de gestión que faciliten las tareas de consulta y edición. Los sistemas de tratamiento de base de datos consisten en un conjunto de elementos de hardware y software interrelacionados que permiten un uso sencillo y rápido de la información
En 1981, IBM develó su computador personal y, en 1984, Apple su Macintosh. A medida que estas máquinas se hacían más poderosas, se pudieron enlazar en redes, lo cual eventualmente condujo al desarrollo de Internet. Otros de los adelantos que se han desarrollado en esta generación son el uso de interfaces gráficas (Windows y Mac OS), el mouse y aparatos portátiles.
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 almacenen en un clip. 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.
Se minimizan los circuitos, aumenta la capacidad de almacenamiento.
Reducen el tiempo de respuesta.
Gran expansión del uso de las Computadoras.
Memorias electrónicas más rápidas.
Sistemas de tratamiento de bases de datos.
Multiproceso.
Microcomputadora.


11. Categorías de las Computadoras.


Supercomputadora


La supercomputadora es lo máximo en computadoras, es la más rápida y, por lo tanto, la más cara. Cuesta millones de dólares y se hacen de dos a tres al año. Procesan billones de instrucciones por segundo. Son utilizadas para trabajos científicos, particularmente para crear modelos matemáticos del mundo real, llamados simulación. Algunos ejemplos de uso son: exploración y producción petrolera, análisis estructural, dinámica de fluidos computacional, física, química, diseño electrónico, investigación de energía nuclear, meteorología, diseño de automóviles, efectos especiales de películas, trabajos sofisticados de arte, planes gubernamentales y militares y la fabricación de naves espaciales por computadoras. Ejemplo: Cray 1, Cray 2.

MainframeLos "mainframe"


Son computadoras grandes, ligeras, capaces de utilizar cientos de dispositivos de entrada y salida. Procesan millones de instrucciones por segundo. Su velocidad operacional y capacidad de procesar hacen que los grandes negocios, el gobierno, los bancos, las universidades, los hospitales, compañías de seguros, líneas aéreas, etc. confíen en ellas. Su principal función es procesar grandes cantidades de datos rápidamente. Estos datos están accesibles a los usuarios del "mainframe" o a los usuarios de las microcomputadoras cuyos terminales están conectados al "mainframe". Su costo fluctúa entre varios cientos de miles de dólares hasta el millón. Requieren de un sistema especial para controlar la temperatura y la humedad. También requieren de un personal profesional especializado para procesar los datos y darle el mantenimiento. Ejemplo: IBM 360.

Minicomputadora


La minicomputadora se desarrolló en la década de 1960 para llevar a cabo tareas especializadas, tales como el manejo de datos de comunicación. Son más pequeñas, más baratas y más fáciles de mantener e instalar que los "mainframes". Usadas por negocios, colegios y agencias gubernamentales. Su mercado ha ido disminuyendo desde que surgieron las microcomputadoras. Ejemplos: PDP-1, PDP-11, Vax 20, IBM sistema 36.

Microcomputadora


La microcomputadora es conocida como computadora personal o PC. Es la más pequeña, gracias a los microprocesadores, más barata y más popular en el mercado. Su costo fluctúa entre varios cientos de dólares hasta varios miles de dólares. Puede funcionar como unidad independiente o estar en red con otras microcomputadoras o como un terminal de un "mainframe" para expandir sus capacidades. Puede ejecutar las mismas operaciones y usar los mismos programas que muchas computadoras superiores, aunque en menor capacidad. Ejemplos: MITS Altair, Macintosh, serie Apple II, IBM PC, Dell, Compaq, Gateway, etc.


Tipos de microcomputadoras:

a. Desktop: Es otro nombre para la PC que está encima del escritorio.


b. Portátil: Es la PC que se puede mover con facilidad. Tiene capacidad limitada y la mayoría usa una batería como fuente de poder. Pesan entre 7Kg y 9Kg.
Laptop: La computadora "laptop" tiene una pantalla plana y pesa alrededor de 6 Kg. Notebook La computadora "notebook" es más pequeña y pesa alrededor de 4Kg.

c. Palmtop: Es la computadora del tamaño de una calculadora de mano. Utiliza batería y puede ser conectada a la desktop para transferir datos.


No comments: