sábado, 22 de septiembre de 2012

Anécdotas de un Estudiante de Ingeniería en Informática- Parte 5


 Un escalón más abajo: Tercera Generación de Computadoras (1964-1971)

Me ha costado bastante diferenciar entre la cuarta, y la tercera generación; pues ambas tienen muchas similitudes compartidas, o eso es lo que pensaba. Es un error craso, según mi punto de vista, que no se establezcan las diferencias en la mayoría de las fuentes que visito. Incluyendo mi libro...
¿Será una deficiencia mía? ¿es que no tengo suficiente comprehnsión de lo que leo?
En esta generación el elemento más significativo es el circuito integrado, aparecido en 1964, que consistía en el encapsulamiento de una gran cantidad de componentes discretos (resistencias, condensadores, diodos y transistores), conformando uno o varios circuitos con una función determinada, sobre una pastilla de silicona o plástico. La miniaturización se extendió a todos los circuitos de las computadoras, lo cual originó la aparición de las minicomputadoras. Se utilizaron tecnologías SSI y MSI (Simple, y mediana escala de integración). Asimismo, el software evolucionó de forma considerable con un gran desarrollo de los sistemas operativos, en los que se incluyó la multiprogramación, el tiempo real y el modo interactivo. Comenzaron a utilizarse las memorias de semiconductores, y los discos magnéticos (discos duros).
Es imposible entender qué diferencias hay entre la tercera y  la cuarta generación, sino no se tienen conceptos mínimos de electrónica, y si no se distingue entre los chips integrados, y entre los circuitos integrados. Los chips integrados son circuitos integrados, pero sólo son variantes más sofisticadas. Estos vocablos carecen de especificaciones evidentes y tienen acepciones muy tediosas de determinar. A esto suele conocerse como polisemia, en los estudios de lingüística.
Primeramente hay que entender la descomunal "filosofía" que esconden nuestros términos. Cuando hablamos de los chips de la cuarta generación, estamos hablando de circuitos programables, pero ello no quiere decir que sean sinónimos. Los chips, o microprocesadores, son la MÁXIMA EXPRESIÓN de los circuitos integrados, creados especialmente para dotar a las máquinas de su tan prolífica arquitectura paralela-vectorial, lo cual les permitía ejecutar simultáneamente varios programas, y un mayor aprovechamiento, tanto de la memoria principal (Memoria RAM), como de cada transistor del procesador aritmético-lógico. El disco duro es considerado memoria auxiliar, pues no es esencial su presencia para los cálculos de la CPU. Sin embargo, que no sea "esencial", sino "auxiliar", no lo desmerita en nada, puesto que hay diferencias entre los términos teóricos, y los términos prácticos. Propiamente considero al disco duro necesariamente útil, pero en vista de que no es allí donde se realizan los procesos de cálculo (salvo raras excepciones con la memoria swap, o particiones de intercambio) veo razonable que se lo denomine auxiliar.
Definiendo, por otro lado, a los circuitos integrados (y ya no a los chips) nos cabe decir que: "el circuito integrado tiene como función el encapsulamiento de una gran cantidad de componentes discretos (resistencias, condensadores, diodos y transistores), conformando uno o varios circuitos con una función determinada, sobre una pastilla de silicona o plástico. ¿Notaron la diferencia?
Este concepto ya lo había mencionado en un principio, así que hagamos un recuento de otro recuento...¿Qué se quiere decir por encapsulamiento de componentes discretos (resistencias, condensadores, diodos, y transistores)? ¿Y qué son cada uno de estos componentes discretos?
Lo primero que se me vino a la mente, cuando leí encapsulamiento, pensé en pastillas de farmacia. Mas resulta que se refería a términos manejados en electrónica. Haremos un breve análisis que siente nuestras bases para un buen entendimiento y comprehnsión.
Cortesía de Wikipedia. Circuito Electrónico

Circuito electrónico: Un circuito es una red eléctrica (interconexión de dos o más componentes, tales como resistencias, inductores, condensadores, fuentes, interruptores y semiconductores) que contiene al menos una trayectoria cerrada. Los circuitos que contienen solo fuentes, componentes lineales (resistores, condensadores, inductores), y elementos de distribución lineales (líneas de transmisión o cables) pueden analizarse por métodos algebraicos para determinar su comportamiento en corriente directa o en corriente alterna. Un circuito que tiene componentes electrónicos es denominado un circuito electrónico. Estas redes son generalmente no lineales y requieren diseños y herramientas de análisis mucho más complejos.
Componentes electrónicos: Se denomina componente electrónico a aquel dispositivo que forma parte de un circuito electrónico. Se suele encapsular, generalmente en un material cerámico, metálico o plástico, y terminar en dos o más terminales o patillas metálicas. Se diseñan para ser conectados entre ellos, normalmente mediante soldadura, a un circuito impreso, para formar el mencionado circuito.
Hay que diferenciar entre componentes y elementos. Los componentes son dispositivos físicos, mientras que los elementos son modelos o abstracciones idealizadas que constituyen la base para el estudio teórico de los mencionados componentes. Así, los componentes aparecen en un listado de dispositivos que forman un circuito, mientras que los elementos aparecen en los desarrollos matemáticos de la teoría de circuitos.
Clasificación:
De acuerdo con el criterio que se elija podemos obtener distintas clasificaciones. Seguidamente se detallan las comúnmente más aceptadas.
1. Según su estructura física
Discretos: son aquellos que están encapsulados uno a uno, como es el caso de los resistores, condensadores, diodos, transistores, etc.
Integrados: forman conjuntos más complejos, como por ejemplo un amplificador operacional o una puerta lógica, que pueden contener desde unos pocos componentes discretos hasta millones de ellos. Son los denominados circuitos integrados.
2. Según el material base de fabricación.
Semiconductores: 
El elemento semiconductor más usado es el silicio, el segundo el germanio, aunque idéntico comportamiento presentan las combinaciones de elementos de los grupos 12 y 13 con los de los grupos 14 y 15 respectivamente (AsGa, PIn, AsGaAl, TeCd, SeCd y SCd). Posteriormente se ha comenzado a emplear también el azufre. La característica común a todos ellos es que son tetravalentes, teniendo el silicio una configuración electrónica s²p².
No semiconductores: aquellos que son conductores directos.
3. Según su funcionamiento.
Activos: proporcionan excitación eléctrica, ganancia o control.
Pasivos: son los encargados de la conexión entre los diferentes componentes activos, asegurando la transmisión de las señales eléctricas o modificando su nivel.
4. Según el tipo energía.
Electromagnéticos: aquellos que aprovechan las propiedades electromagnéticas de los materiales (fundamentalmente transformadores e inductores).
Electroacústicos: transforman la energía acústica en eléctrica y viceversa (micrófonos, altavoces, bocinas, auriculares, etc.).
Optoelectrónicos: transforman la energía luminosa en eléctrica y viceversa (diodos LED, células fotoeléctricas, etc.).


Componentes Activos (¡IMPORTANTE!):
Los componentes activos son aquellos que son capaces de excitar los circuitos o de realizar ganancias o control del mismo. Fundamentalmente son los generadores eléctricos y ciertos componentes semiconductores. Estos últimos, en general, tienen un comportamiento no lineal, esto es, la relación entre la tensión aplicada y la corriente demandada no es lineal.
Los componentes activos semiconductores derivan del diodo de Fleming y del triodo de Lee de Forest. En una primera generación aparecieron las válvulas de vacío que permitieron el desarrollo de aparatos electrónicos como la radio o la televisión.
 Posteriormente, en una segunda generación, aparecerían los semiconductores que más tarde darían paso a los circuitos integrados (tercera generación) cuya máxima expresión se encuentra en los circuitos programables (microprocesador y microcontrolador) que pueden ser considerados como componentes, aunque en realidad sean circuitos que llevan integrados millones de componentes.
En la actualidad existe un número elevado de componentes activos, siendo usual, que un sistema electrónico se diseñe a partir de uno o varios componentes activos cuyas características lo condicionará. Esto no sucede con los componentes pasivos. En la siguiente tabla se muestran los principales componentes activos junto a su función más común dentro de un circuito.

ComponenteFunción más común
Amplificador operacionalAmplificación, regulación, conversión de señal, conmutación.
BiestableControl de sistemas secuenciales.
PLDControl de sistemas digitales.
DiacControl de potencia.
DiodoRectificación de señales, regulación, multiplicador de tensión.
Diodo ZenerRegulación de tensiones.
FPGAControl de sistemas digitales.
MemoriaAlmacenamiento digital de datos.
MicroprocesadorControl de sistemas digitales.
MicrocontroladorControl de sistemas digitales.
PilaGeneración de energía eléctrica.
TiristorControl de potencia.
Puerta lógicaControl de sistemas combinacionales.
TransistorAmplificación, conmutación.
TriacControl de potencia.

Componentes pasivos:
Son aquellos que no necesitan una fuente de energía para su correcto funcionamiento. No tienen la capacidad de controlar la corriente en un circuito. Los componentes pasivos se dividen en:

Componentes pasivos lineales:
ComponenteFunción más común
CondensadorAlmacenamiento de energía, filtrado, adaptación impedancia.
Inductor o BobinaAlmacenar o atenuar el cambio de energía debido a su poder de autoinducción.
Resistor o ResistenciaDivisión de intensidad o tensión, limitación de intensidad.
Componentes electromecánicos:

A este grupo pertenecen los interruptores, fusibles y conectores.

Componentes optoelectrónicos:

Componentes optoeletrónicos, son aquellos que transforman la energía luminosa en energía eléctrica, denominados fotosensibles, o la energía eléctrica en luminosa, denominados electroluminiscentes.


Ya hemos tenido más que suficiente, con estos conceptos de electrónica. He agregado algunos conceptos innecesarios, pero lo hago adrede, porque saber nunca está demás.
Es hora de adentrarnos más en la tercera generación. Como bien dijimos, ésta se caracterizaría por la aparición de circuitos integrados. Tras el surgimiento de circuitos integrados, éstos comienzan a ser implementados masivamente, para la reducción del tamaño de los ordenadores. Las grandes empresas, universidades, y los granes organismos de Estado, necesitaban urgentemente mayor fiabilidad de sus cálculos. Los principales lenguajes de programación llegaron a ser el Fortran, Basic, Pascal, y otros.
La IBM lanzó al mercado su mainframe 360, para realizar análisis numéricos, administración y procesamiento de archivos.
Los principales íconos del mercado de la tercera generación de máquinas son los siguientes: IBM y los BUNCH: Burroughs, NCR, Univac, CDC, Honeywell y otros...

(1964) IBM 360, la máquina que inauguró la Tercera Generación de Máquinas:

IBM 360
El System/360 de IBM ( S/360 ) fue un ordenador central (mainframe) anunciado por IBM el 7 de abril de 1964, y entregados entre 1965 y 1978. Fue la primera familia de computadoras que cubre la gama completa de aplicaciones , desde pequeñas a grandes, tanto comerciales como científicas. El diseño hace una clara distinción entre la arquitectura y la aplicación, lo que permite a IBM lanzar una serie de diseños compatibles a precios diferentes. Todos, excepto los sistemas más costosos, utilizaban microcódigos para poner en práctica el conjunto de instrucciones, las cuales contaron con 8 bits de direccionamiento binario, decimal y de comas flotantes de cálculos.
La "coma flotante de cálculos" hace referencia a los "flops", éstos son las notaciones científicas utilizadas para representar tanto a números pequeños, como a números grandes. Ej: 0.1*10^30. El producto de un número decimal multiplicado por 10 a la "n" potencia.
Los IBM 360 eran un gran éxito en el mercado. Los clientes compraban los sistema más baratos con el conocimiento de que siempre serían capaces de migrar hacia arriba si sus necesidades crecían, y sin una reprogramación de software de aplicación. El diseño es considerado por muchos como uno de los equipos más exitosos de la historia. Influyó con su diseño a ordenadores futuros.

La liga de competidores que se empecinó por destronar a IBM de su monopolio: Los BUNCH
BUNCH, acrónimo de Burroughs, UNIVAC, NCR, Control Data, Honeywell, era el término con el que se conocía en los años 1960 al grupo de empresas capaces de competir con el claro e indiscutible monopolio de IBM en el mercado de las grandes computadoras.
El dominio de IBM suponía alrededor de un 70% del mercado. Intentaba mantener esta posición instalando laboratorios de investigación en EE.UU. y Europa acerca de distintos aspectos relacionados con los ordenadores. La competencia también intentaba a veces avanzarse a IBM, pero cuando lo conseguía, el gigante azul adoptaba la tecnología y los proyectos de la competencia acostumbraban a sucumbir. Los ordenadores de esta época eran adquiridos la mayor parte por la administración norteamericana y, sobre todo, por la NASA para su proyecto de enviar el hombre a la Luna. IBM era el principal suministrador de estos equipos.
Tras el gigante azul, IBM, se situaba Univac. En esta época se hablaba de Blancanieves (IBM) y los siete enanitos (Control Data, Honeywell, UNIVAC, RCA, Burroughs, General Electric y NCR). Blancanieves se veía periódicamente ante los tribunales en procesos antimonopolio iniciados por alguno de los enanitos o por el propio gobierno federal. A principios de los 70 General Electric y RCA abandonan el negocio de ordenadores, dando lugar a un nuevo término para designar a los competidores de IBM: BUNCH (Burroughs, UNIVAC, NCR, Control Data, Honeywell).
BUNCH se podría traducir como pandilla. Muchas de estas empresas, si no todas, fueron puntales en sus respectivos campos y causaron más de un dolor de cabeza a la madre de todos los huevos: IBM.
Los BUNCH , antes llamados los "7 enanitos", pasan a tener dicho nombre cuando RCA y General Electric abandonan  el campo de la informática.
Lenguajes de Programación Fortrán, Cobol, Pascal y  Basic:
Fortrán-Perspectiva Histórica: Un lenguaje creado en la Segunda generación de máquinas, pero ampliamente difundido y desarrollado en la Tercera.
A finales de 1953, John W. Backus sometió una propuesta a sus superiores en IBM para desarrollar una alternativa más práctica al lenguaje ensamblador para programar el computador central IBM 704. El histórico equipo FORTRAN de Backus consistió en los programadores Richard Goldberg, Sheldon F. Best, Harlan Herrick, Peter Sheridan, Roy Nutt, Robert Nelson, Irving Ziller, Lois Haibt y David Sayre.
A mediados de 1954 fue terminada una especificación del borrador para The IBM Mathematical Formula Translating System. El primer manual para el FORTRAN apareció en octubre de 1956, porque los clientes eran reacios a usar un lenguaje de programación de alto nivel a menos que su compilador pudiera generar código cuyo desempeño fuera comparable al de un código hecho a mano en lenguaje ensamblador.
Mientras que la comunidad era escéptica en que este nuevo método pudiera posiblemente superar la codificación a mano, éste redujo por un factor de 20 al número de sentencias de programación necesarias para operar una máquina, y rápidamente ganó aceptación. Durante una entrevista en 1979 con Think, la revista de los empleados de IBM, el creador, John Backus, dijo, "Mucho de mi trabajo ha venido de ser perezoso. No me gustaba escribir programas, y por eso, cuando estaba trabajando en el IBM 701 escribiendo programas para computar trayectorias de misiles, comencé el trabajo sobre un sistema de programación para hacer más fácil escribir programas".
El lenguaje fue ampliamente adoptado por los científicos para escribir programas numéricamente intensivos, que incentivó a los escritores de compiladores a producir compiladores que pudieran generar un código más rápido y más eficiente. La inclusión en el lenguaje de un tipo de datos y de la aritmética de números complejos amplió la gama de aplicaciones para las cuales el lenguaje se adaptaba especialmente e hizo al FORTRAN especialmente adecuado para aplicaciones técnicas tales como la ingeniería eléctrica.
Hacia 1960, las versiones de FORTRAN estaban disponibles para los computadores IBM 709, 650, 1620, y 7090. Significativamente, la cada vez mayor popularidad del FORTRAN estimuló a fabricantes de computadores de la competencia a proporcionar compiladores FORTRAN para sus máquinas, así que por 1963 existían más de 40 compiladores FORTRAN. Por estas razones, el FORTRAN es considerado ser el primer lenguaje de programación ampliamente usado soportado a través de una variedad de arquitecturas de computador.
El desarrollo del FORTRAN fue paralelo a la temprana evolución de la tecnología del compilador. De hecho, muchos avances en la teoría y el diseño de compiladores fueron motivados específicamente por la necesidad de generar código eficiente para los programas en FORTRAN.

Cobol, Perspectiva Histórica: Un lenguaje creado en la Segunda generación de máquinas, pero ampliamente difundido y desarrollado en la Tercera.

El lenguaje COBOL (acrónimo de COmmon Business-Oriented Language, Lenguaje Común Orientado a Negocios) fue creado en el año 1959 con el objetivo de crear un lenguaje de programación universal que pudiera ser usado en cualquier ordenador, ya que en los años 1960 existían numerosos modelos de ordenadores incompatibles entre sí, y que estuviera orientado principalmente a los negocios, es decir, a la llamada informática de gestión.
En la creación de este lenguaje participó la comisión CODASYL, compuesta por fabricantes de ordenadores, usuarios y el Departamento de Defensa de Estados Unidos en mayo de 1959. La definición del lenguaje se completó en poco más de seis meses, siendo aprobada por la comisión en enero de 1960. El lenguaje COBOL fue diseñado inspirándose en el lenguaje Flow-Matic de Grace Hopper y el IBM COMTRAN de Bob Bemer, ya que ambos formaron parte de la comisión.
Gracias a la ayuda de los usuarios COBOL evolucionó rápidamente y fue revisado de 1961 a 1965 para añadirle nuevas funcionalidades. En 1968 salió la primera versión ANSI (Instituto Nacional Estadounidense de Estándares) del lenguaje, siendo revisada posteriormente en 1974 (COBOL ANS-74), 1985 (COBOL ANS-85, ampliado en 1989 con funciones matemáticas, finalizando el estándar actual más usado, conocido como COBOL-ANSI), y en 2002 (COBOL ANS-2002). Desde el año 2007 se viene preparando una nueva revisión del lenguaje.
Además, existe una versión conocida como COBOL ENTERPRISE, actualizada regularmente y lanzada en 1991, usada generalmente en sistemas Host (anfitriones donde puedes hospedar páginas web)
En el 2011 se actualizó con Visual COBOL.

Lenguaje Pascal- Perspectiva Histórica
Pascal es un lenguaje de programación desarrollado por el profesor suizo Niklaus Wirth entre los años 1968 y 1969 y publicado en 1970. Su objetivo era crear un lenguaje que facilitara el aprendizaje de programación a sus alumnos, utilizando la programación estructurada y estructuración de datos. Sin embargo con el tiempo su utilización excedió el ámbito académico para convertirse en una herramienta para la creación de aplicaciones de todo tipo.

Pascal se caracteriza por ser un lenguaje de programación estructurado fuertemente tipado. Esto implica que:
El código está dividido en porciones fácilmente legibles llamadas funciones o procedimientos. De esta forma Pascal facilita la utilización de la programación estructurada en oposición al antiguo estilo de programación monolítica.
El tipo de dato de todas las variables debe ser declarado previamente para que su uso quede habilitado.
El nombre de Pascal fue escogido en honor al matemático Blaise Pascal.
Las primeras versiones del compilador de Pascal, entre ellas la más distribuida fue UCSD Pascal, traducían el lenguaje en código para una máquina virtual llamada máquina-P. La gran ventaja de este enfoque es que para tener un compilador de Pascal en una nueva arquitectura de máquina solo hacía falta reimplementar la máquina-P. Como consecuencia de esto, solo una pequeña parte del intérprete tenía que ser reescrita hacia muchas arquitecturas.
En los años 1980, Anders Hejlsberg escribió el compilador Blue Label Pascal para la Nascom-2. Más tarde fue a trabajar para Borland y reescribió su compilador que se convirtió en Turbo Pascal para la IBM PC. Este nuevo compilador se vendió por $49, un precio orientado a la distribución masiva.
El Turbo Pascal tuvo una amplia difusión en nuestra generación.
Lenguaje Basic- Perspectiva Histórica
En la programación de computadoras, el BASIC, siglas de Beginner's All-purpose Symbolic Instruction Code (Código simbólico de instrucciones todo-propósito para principiantes en español), es una familia de lenguajes de programación de alto nivel. El BASIC original, el Dartmouth BASIC, fue diseñado en 1964 por John George Kemeny y Thomas Eugene Kurtz en el Dartmouth College en New Hampshire, Estados Unidos, como un medio para facilitar programar computadores a estudiantes (y profesores) que no fueran de ciencias. En ese tiempo, casi todo el uso de los computadores requería codificar software hecho a la medida, lo cual era algo bastante restringido a personas con formación como científicos y matemáticos. BASIC originalmente fue desarrollado como una herramienta de enseñanza. El lenguaje y sus variantes llegaron a estar ampliamente disponibles en los microcomputadores a finales de los años 1970 y en los años 1980. El BASIC sigue siendo popular hasta el día de hoy en un puñado de dialectos altamente modificados, y en nuevos lenguajes, influenciados por BASIC tales como Microsoft Visual Basic oGambas en GNU/Linux. Por el año 2006, el 59% de los desarrolladores para la plataforma .NET usaban Visual Basic .NET como su único lenguaje.
A principios de la década de 1960, las computadoras eran máquinas sumamente caras que se utilizaban únicamente para propósitos especiales, ejecutando "una sola tarea" a la vez. Sin embargo, durante esa década, los precios comenzaron a bajar al punto que incluso las pequeñas empresas podían costearlas. La velocidad de las máquinas se incrementó al grado que a menudo quedaban ociosas porque no había suficientes tareas para ellas. Todo esto fue debido a la rápida evolución del hardware. Los lenguajes de programación de aquellos tiempos estaban diseñados con orientación para propósitos específicos, como las máquinas en las que corrían; por ejemplo para el desarrollo de programas de cálculo o procesamiento de fórmulas se diseñó FORTRAN y para los de gestión o administración de información se desarrolló COBOL.
A fin de incrementar el rendimiento y amortizar mejor los costos (por reducción del tiempo de ocio del procesador), y siendo que ya la velocidad de las máquinas comenzó a permitirlo, se propuso la idea de ejecutar más de una tarea "simultáneamente", fue así que surgió el concepto de sistema de tiempo compartido, el que comenzó a popularizarse. En sistemas de ese tipo, el tiempo de procesamiento de la computadora principal se dividía, y a cada usuario se le otorgaba secuencial y cíclicamente una pequeña porción o "cuota" de tiempo de proceso. Las máquinas eran lo suficientemente rápidas como para engañar a la mayoría de los usuarios, dándoles la ilusión de que disponían de la funcionalidad de la máquina todo el tiempo para ellos ("seudo-simultaneidad" de procesos). Esa distribución del tiempo de cómputo entre los usuarios redujo considerablemente el costo de la computación, ya que una sola máquina podía ser compartida entre numerosos usuarios.

La Era de los Transistores, y del reemplazo de los añejos tubos de vacío: 2da Generación de Máquinas. (Continúa en el Próximo Artículo)