[*MiIT}– Computación Personal, herramienta indispensable. 10: ‘Virtualidad’

Carlos M. Padrón

En 1971 salió al mercado la primera versión de la IBM/370.

cuyas capacidades y rendimiento fueron mejorando en tres sucesivas etapas, y así, de contar con memoria a base de chips de 0.8 centímetros de lado (los chips eran cuadrados) y 5 bits por chip, como la IBM/360, pasó a chips de igual tamaño pero con capacidad para 256 bits cada uno, y luego a chips de 3 milímetros de lado y con capacidad para 1.434 bits cada uno. Este drástico aumento en capacidad de memoria y velocidad de procesamiento permitió el anuncio, que nos llegó en 1974 y en base a una nueva versión de la IBM/370, de lo que llamo “virtualidad”, o sea, de la memoria virtual y la máquina virtual, lo cual trajo consigo la realidad en la operación y accesibilidad del concepto de tiempo compartido (time sharing).

El concepto de memoria virtual permitió, a efectos prácticos, que el usuario tuviera a su disposición más memoria principal (memoria del CPU) de la que la máquina realmente tenía. Es un recurso basado en la alta velocidad de acceso y procesamiento que permitieron usar como si fuera memoria principal la que en realidad estaba en los discos (memoria auxiliar) conectados a la IBM/370. En éstos, y en formatos llamados páginas, se guardaba parte importante de lo que, según se entendía hasta entonces, debía residir en la memoria principal, y cuando esas páginas se necesitaban eran copiadas casi instantáneamente en la memoria principal sobre otras que ya no se necesitaban. Todo esto requirió de un nuevo método de acceso y de manejo de archivos que proporcionara la velocidad y seguridad necesarias. Ese método recibió el nombre de VSAM (Virtual Storage Access Method) que se constituyó como de uso obligatorio para el logro de la “virtualidad”.

Una de las expresiones prácticas de la “virtualidad” —la fragmentación virtual de la máquina— hizo posible compartirla entre varios usuarios de forma que cada uno tuviera la impresión de que disponía, para sí solo, de una máquina completa, pues tenía memoria principal (mayormente virtual, por supuesto), tenía espacio en discos, tenía espacio en cintas, tenia almacenados, en área reservada sólo para él, sus programas y aplicaciones, etc. Todo gracias a la gran capacidad de memoria, tanto principal como auxiliar, como a la gran velocidad de procesamiento.

Como ejemplo podemos tomar la técnica que se ha aplicado a las líneas telefónicas y que es lo que permitió que algunas compañías de comunicación ofrecieran llamadas a muy bajo precio. ¿Cómo? Mediante tecnología, tomaban una línea telefónica con ancho de banda normal y la subdividían en varios canales. Por cada uno de ellos gestionaban una conversación diferente, y rotaban a gran velocidad la conexión de cada una de tales conversaciones. Así, si en el canal 1 está la conversación A, en el 2 está la B, etc., dan curso a la A por fracciones de segundo, luego dan curso a la B por igual tiempo, luego a la C, etc. Por supuesto, mientras está en curso la conversación B, las personas de la conversación A no se escuchan entre ellas porque su conexión queda interrumpida y su conversación cortada, pero como las interrupciones son cortas en términos de “tiempo humano”, el cerebro de los que conversan puede reconstruir las pequeñas faltas ocurridas durante esas interrupciones, de sólo fracciones de segundo, de su conversación. A veces se extremó el procedimiento y ello dio lugar a que se escucharan otras conversaciones, y a que hubiera interferencias o interrupciones demasiado largas que hacían perder sílabas y hasta palabras. Pero ésta es la base que en computación tiene el concepto del tiempo compartido.

Por supuesto que tanto la memoria virtual como la cantidad de máquinas virtuales y la cantidad de usuarios que pueden disfrutar “simultáneamente” de tiempo compartido, es limitada, pues todo eso está en función de los recursos reales de la máquina; a más recursos reales (memoria principal, memoria auxiliar, velocidad de procesamiento, etc.) mayor la cantidad de usuarios que pueden disfrutar de la “virtualidad”, y mejor (más corto) el tiempo de respuesta que tiene para con cada uno la computadora que todos están usando.

Es obvio que un mecanismo tan sofisticado como éste requería de un sistema operativo adecuado y capaz para administrarlo eficientemente y que se entendiera con el VSAM. Y en 1974, a poco de anunciarse la primera versión de la IBM/370, se anunció —junto con la técnica de “virtualidad”, y especialmente diseñado para manejarla y administrarla— el sistema operativo MVS (Multiple Virtual Storage) que fue mejorando en el tiempo y que, aunque ha tenido sucesores como el OS/390, se usa aún en mainframes.

Como habrán notado, a pesar de todo esto la computadora sigue haciendo lo mismo: recibiendo órdenes que cumple a cada vez mayor velocidad. Sigue siendo tonta, sigue sin crear nada realmente nuevo, sin hacer nada que el hombre no le haya dicho cómo hacerlo.

[*MiIT}– Computación Personal, herramienta indispensable. 9: DB/DC

Carlos M. Padrón

Son las siglas de Data Base (Base de Datos) / Data Communication (Comunicación de Datos), conceptos éstos que, a fines prácticos, nacieron con el TP ya que eran y siguen siendo necesarios para que el TP dé lo que de él se espera, sin afectar en lo posible las operaciones “batch” de la computadora.

La definición más simple de DB es “conjunto de datos, de un mismo tipo e índole, organizados según una secuencia lógica que, de forma sencilla y transparente, permite el acceso a ellos”. Una guía telefónica es una DB. Está compuesta por nombres, direcciones y números de teléfono de personas naturales o jurídicas (datos de un mismo tipo e índole), y nos permite, de forma relativamente sencilla, el acceso a la información que contiene, o sea, la consecución del número de teléfono de una persona (usemos sólo el ejemplo de las naturales) cuyo nombre sabemos.

Las guías telefónicas tienen, generalmente en el ángulo superior externo de cada página, el apellido de la primera y de la última persona cuyo nombre y teléfono asociado aparecen en esa página, y si queremos buscar el teléfono o dirección de alguien apellidado Rodríguez buscamos primero —pasando muchas páginas juntas y avanzando así rápidamente— el Rodríguez en el ángulo superior externo, y en la primera página en que éste aparezca comenzamos a buscar, avanzando ahora mucho más lentamente, el segundo apellido, o inicial de éste, y el nombre de la persona cuyos datos nos interesan.

Al primer tipo de búsqueda, y a la DB en él basada, se le dio el nombre de indexada, pues equivale al índice de un libro que nos permite llegar rápidamente al comienzo de cierto capítulo sin necesidad de ir buscándolo hoja por hoja. Al segundo tipo de búsqueda, equivalente al “hoja por hoja” del libro, se le dio el nombre, así como a la DB en él basada, de secuencial porque requiere la lectura de los datos, uno por uno y en la misma secuencia en que están colocados en la DB, hasta dar con el que buscamos.

Con el aumento en la capacidad de almacenamiento y de la velocidad de proceso de las computadoras, las DBs fueron haciéndose cada vez más complejas y eficientes (existe la profesión de especialista en base de datos), y aparecieron nuevos tipos como la relacional, la orientada a objetos, etc. La meta parece estar enmarcada en el concepto “a imagen del ser humano” que inspiró la estructura básica de la computadora, pues la más sofisticada de las DBs se concibe basada en redes neurales y operando por asociación, como operamos los humanos que al oír, p.ej., los compases de una vieja canción recordamos de golpe que estábamos oyéndola hace 20 años, en el recreo de nuestro primer día de liceo, cuando hubo conmoción en todo el grupo por la muerte repentina de nuestro profesor. Extraña relación ésa que vincula el recuerdo (dato) de una canción con el recuerdo (dato) de una muerte, pero así funcionamos los humanos y así se quiere que las computadoras usen la información almacenada en sus bases de datos, enriqueciendo éstas con nuevas relaciones, como harían los robots.

Comoquiera que la ventaja del TP es el ahorro de tiempo, se entiende que el logro de esta meta requiere de bases de datos que tengan, actualizada y lista para acceder a ella, la información que necesiten las operaciones que a través de TP se efectúen. Además, las computadoras que trabajan en TP hacen también operaciones que sólo requieren datos y herramientas locales que están en la misma computadora. A estas operaciones se les llamó “batch” para diferenciarlas de las de TP. Es como si se tratara de una gran compañía que debe realizar transacciones totalmente internas (las batch mencionadas al comienzo) y transacciones que requieren envío o recepción de información a/desde el exterior (TP).

Pues bien, para que el TP no retrase los procesos batch, desde sus comienzos usó programas de ayuda que constituyen lo conocido como DC y cuyas funciones se asemejan a las de una hipotética División de Administración de esa compañía que determina qué es interno y qué externo, que envía lo primero a quien competa dentro de la compañía (batch), y encarga lo segundo (TP) a una Central de Correo Externo que maneja redes de motorizados, cada una con especialidad diferente (motos, carros, camiones cava, camiones blindados, etc.), y entrega a éstos bien los mensajes a llevar o las instrucciones pertinentes para los mensajes a traer, y la indicación sobre la mejor vía a seguir, qué rutas evitar, y qué vías alternas usar.

Una vez de regreso, cada motorizado entrega a la Central de Correo Externo el mensaje que trajo o la certificación de recepción del que llevó, y también la información de los eventuales contratiempos que tuvo en su viaje, la cual será útil para otros motorizados que deban hacer igual recorrido. La Central de Correo Externo entrega a la División de Administración los mensajes recibidos de afuera, y ésta se encarga de que sean usados internamente para los fines consiguientes.

Así trabajó el dúo DB/DC, presente hoy —con mayor sofisticación y transparencia, y aunque no lo notemos— en nuestra computación personal. Sin el DB/DC no habría operaciones en línea ni existiría Internet.

[*MiIT}– Computación Personal, herramienta indispensable. 8: Teleproceso (TP)

Carlos M. Padrón

Con la aparición de la IBM/360, su para entonces gran capacidad de memoria, su gran velocidad de procesamiento y el uso del sistema operativo, hicieron posible el desarrollo del concepto de teleproceso (TP), o proceso a distancia, hoy más conocido como operación en línea o, simplemente, online.

En Venezuela no sólo se instaló una de las primeras /360 en modo nativo sino que también se desarrolló y puso en operación el primer “Paquete en línea para Bancos” (éste era el nombre que tenía): un conjunto integrado de programas (paquete) que permitió que, por primera vez, un cliente de banco pudiera retirar fondos de su cuenta desde cualquier agencia que su banco tuviera en línea, y no necesariamente —y como siempre ocurrió antes— de la agencia en la que ese cliente había abierto la cuenta en cuestión.

El concepto era en apariencia simple: en la agencia bancaria se instalaba un terminal de uso general pero con adaptaciones (en su expresión más simple era una máquina de escribir eléctrica con ranura especial para impresión de libretas de ahorro) que se comunicaba, a través de una línea telefónica común, con la computadora IBM/360 instalada en la sede central del banco.

A través del terminal se le preguntaba a la computadora la validez y el saldo de la cuenta que el cliente quería afectar con un depósito o un retiro, y si la respuesta, que llegaba a través del mismo terminal, era positiva, el operador o cajero de la agencia efectuaba la operación y, como consecuencia, la computadora aumentaba el saldo de la cuenta (si depósito) o lo rebajaba (si retiro), y dejaba una detallada constancia de la operación efectuada.

Pero la realización del concepto no eran tan simple, pues hubo que lidiar por primera vez con líneas telefónicas (conmutadas o no conmutadas, equivalente a compartida o muerta/dedicada) , hilos (half o full duplex) módems, ecualización, ancho de banda, multiplexado, esquemas de conexión (punto a punto, multipunto, cluster, concentrador, loops), códigos de transmisión (EBCDIC, USASCI, etc.), disciplinas de transmisión (start-stop, BSC, SDLC, etc.) y modalidades de transmisión (sincrónica o asíncrona), protocolos de diálogo (addressing, polling, acknowledgement, retraso de propagación, etc.), y software especializado —software que entonces debió hacerse desde el primero al último bit, instrucción por instrucción— como bases de datos, gestión de líneas, manejo de colas y volúmenes, buffers, etc.

De esta larga aunque no completa lista, todo correspondía al para entonces mundo interno de la computación, excepto las líneas telefónicas, y ésas fueron un gran dolor de cabeza porque, en su mayoría, habían sido instaladas desde hacía años y tenían problemas físicos, como humedad, corrosión, etc., que producían ruido y mermaban su eficiencia, y para cuya corrección se requería de ecualización, o sea, igualar el ancho de banda o capacidad de transmisión de forma que, desde un extremo al otro de la línea, pudiera transmitirse a la “enorme” velocidad de 1.200 baudios o bps (bits por segundo).

Hoy el común de los módems transmite a 56KB, y ya existen programas, hechos y probados, que manejan, en forma transparente para el programador, todas las tareas antes descritas y muchas más, y la mayoría de los usuarios de hoy poco saben de las vicisitudes por las que pasaron los pioneros del TP y que permitieron que hoy podamos encender nuestra PC y estar en línea en cuestión de segundos accediendo —por interconexión entre varios mainframes, servidores, terminales, concentradores, etc.— a información que puede estar cerca de nosotros o al otro lado del mundo, y haciendo tal acceso a través de satélites, fibra óptica, etc., y no sólo, como antes ocurría, a través de líneas telefónicas de cables de cobre.

(Fernando Lacoste en 1970).

Es bueno recordar, aunque sólo sea por aquello de que “Al césar lo que es del César”, que en Venezuela vivió y trabajó Fernando Lacoste, uno de esos pioneros que con un esfuerzo casi sobrehumano escribió en 1967 —ayudado por tres expertos analistas de sistemas y programadores, y en lenguaje físico de máquina (Physical I/O Language)— el primer paquete en línea para bancos, para manejo de cuentas de ahorro, que existió en el mundo. Lacoste y su equipo lo instalaron en el Banco de Venezuela (hoy Banco de Santander), donde también Lacoste había instalado la primera IBM/360 en modo nativo.

En 1969, el equipo liderado por Lacoste le añadió a ese paquete los módulos necesarios para el manejo de cuentas corrientes, y el estreno de la versión así ampliada correspondió al entonces Banco Unión (hoy Banesco). A partir de ahí lo adoptaron casi todos los bancos del país.

En 1973, este paquete, una vez convertido a COBOL y adaptado a terminales bancarios especializados, recibió el nombre de SAFE/3600 (Sistema de Aplicaciones Financieras En línea, para terminales IBM /3600) y se convirtió, que yo sepa, en el único producto informático “made in Venezuela” que se instaló con éxito en varios bancos de 57 países de Centro y Suramérica, Asia y Europa, y hoy, pasados ya 33 años, aún opera en algunos de tales bancos.

Gracias a SAFE, buscando su expansión y el diseño de un sustituto, le di la vuelta al mundo dos veces. Y gracias al genio de Fernando Lacoste que creó el “Paquete en línea para Bancos”, fueron muchas las personas que en IBM, adjudicándose indulgencias con escapulario ajeno, escalaron posiciones y ganaron mucho dinero —y algunos siguen ganándolo— sin concederle por ello a Fernando el más que merecido reconocimiento, y sin ni siquiera acordarse de llamarlo o visitarlo en su retiro en Florida. A decir del propio Fernando, el que más dinero ganó fue uno que le impusieron como jefe, y que se autodenominó «Coordinador de Teleproceso» aunque de eso nada sabía.

Como sostengo desde hace mucho tiempo, la ingratitud es hija de la bajeza, hermana de la injusticia y madre de la desconfianza. A veces, también puede matar.

[*MiIT}– Computación Personal, herramienta indispensable. 7: Sistema Operativo

Carlos M. Padrón

En 1964 tuvo lugar lo que hoy se considera la primera gran innovación en computación, el inicio explosivo de la era informática en que estamos: la introducción del Sistema Operativo. La hizo IBM junto con el lanzamiento de su familia de computadoras Sistema/360 (abreviado, /360) que en vez de transistores (un bit por unidad), usaba chips de silicona que almacenaban 5 bits por unidad, y al inicio daban a la /360 capacidades de memoria desde 32KB hasta 128KB.

Antes de la /360, (la foto que sigue es de una línea de ensamblaje de la /360)

lo más avanzado era el programa (uno por vez) almacenado en la memoria. Un sistema operativo es una colección homogénea de programas que permite a una computadora supervisar sus propias operaciones rutinarias, llamando a uso, según los va necesitando, a otros programas, lenguajes, datos, etc. para la producción continua de una serie de trabajos; es el gobierno interno de la computadora. El sistema oprativo que se anunció con la /360 fue el DOS (Disk Operating System), pues la mayor parte de él residía en un disco magnético (la /360 requería discos), mientras que un componente, llamado Sistema de Control, o “director de orquesta”, residía en la memoria y se encargaba de ir trayendo a ella desde el disco las partes que necesitara para realizar su trabajo. Entre los sistemas operativos más usados o conocidos están MS-DOS, OS, OS2/Warp, MVS, Netware y Unix; y en la computación personal el Linux y el Windows, que es el que tomaremos como referencia.

Los sistemas operativos relevan al usuario de una inmensa cantidad de trabajo, y dan a la máquina ciertas características de comportamiento de corte humanoide, como compatibilidad (p.ej., el Windows es más compatible con Word que con…) y hasta inestabilidad, que en criollo hemos dado en llamar “guindarse”, y así oímos decir “El Windows se guindó” para significar que, sin causa ni motivo aparente, dejó de trabajar, se quedó inerme y “mudo”, lo cual, por cierto, es casi típico de algunos sistemas operativos de computadoras personales (PCs), y casi inconcebible en los de mainframes.

Con la aparición de los sistemas operativos comienza a popularizarse el uso del término “software” y, por contraposición, el de “hardware”; el primero para referirse a la parte no físicamente tangible de la computadora, o sea, a los programas; y el segundo para la parte que sí puede tocarse, para los “hierros”, o sea, las máquinas y sus componentes físicos, aquello de lo que hemos dicho que era muy costoso, pero que hoy cuesta comparativamente menos cada día, a diferencia del software que, definido también como la razón de ser del hardware, es el ánima que hace que el hardware sirva a los propósitos del usuario, y es, comparativamente, la parte que más costosa resulta.

Hasta la generación de la IBM-1401 se hablaba de programa. Como ya esa generación comenzó a procesar gran volumen de trabajo, apareció el concepto de “aplicación” para definir al conjunto de programas que, ejecutados en secuencia, permitía alcanzar un resultado complejo, como podría ser la emisión de los estados de cuenta de los clientes de un banco, lo cual requería previamente, p.ej., liquidación de bloqueos, cálculo de intereses, deducción de comisiones, consideraciones de cuentas conjuntas, etc., y, finalmente, la consolidación, generación e impresión de los estados de cuenta. A título de ejemplo, repito, cada uno de esos pasos podría ser objeto de un programa, y al conjunto de ellos se le llamaba “Aplicación de Estados de Cuenta”. Con el tiempo, y posiblemente a causa del mayor alcance y poder de los sistemas operativos, ha caído en desuso el término “aplicación” y se ha vuelto al de “programa” a secas, hasta el punto de que oímos decir que Windows es un programa de Microsoft.

El concepto de sistema operativo fue tan revolucionario en su época que algunos de los expertos en programación, profesionales todos de altas calificaciones, que asistieron en EEUU al primer curso que IBM dictó al respecto, al regresar a sus países presentaron sin más la renuncia porque, según dijeron “Esta compañía se volvió loca: eso del al sistema operativo no funcionará”. Otros, sin embargo, entendieron muy bien el concepto, y entre ellos destaca uno de Venezuela que no sólo ayudó a vender aquí la primera /360 sino que efectuó, él solo, una de las primeras instalaciones de /360 “en modo nativo”, o sea, trabajando ya con sistema operativo, pues, como cabe suponer, las primeras de tales computadoras se entregaron con la capacidad de trabajar en ese modo o en el de emulación de 1401, ya que, en su mayoría, vinieron a reemplazar a una 1401, y los usuarios necesitaban tiempo para modificar programas, y, sobre todo, para entender y aprender cómo usar el sistema operativo, hito histórico y origen de la era informática que hoy vivimos.

[*MiIT}– Computación Personal, herramienta indispensable. 6: La computadora rentable

Carlos M. Padrón

A partir de la ENIAC (1946) la computadoras tenía ya CPU (memoria y tiempos de procesamiento), Unidades de I/O (consola, lectora de tarjetas, cintas, discos, impresora), lenguajes de programación, compiladores, programas, y programa almacenado, elementos éstos que casi configuran una moderna PC.

Sin embargo, en comparación con una PC o con mainframes de hoy, las computadoras de la época eran muy grandes, pesadas, lentas, ocupaban mucho espacio, disipaban mucho calor (requerían sistemas de enfriamiento), consumían mucha energía, etc., y eran muy costosas. Se fabricaban para fines muy puntuales y contra pedido. Pero con el advenimiento del transistor en 1957 (más capacidad de memoria, menos espacio, menos calor y menor costo), en 1959 IBM lanzó al mercado la famosa computadora 140, que ilustra esta foto:

que, desarrollada con tecnología SMS (Standard Modular System) vino a representar para la computación lo que el avión DC-3 representó para la aviación comercial: la hizo rentable y marcó el inicio de su gran desarrollo. Por eso es famosa.

De la 1401, con capacidad de memoria de 4K, 8K ó 16K (un simple disquete de hoy tiene 90 veces 16K) y con I/O de consola, impresora de cadena, lectora de tarjetas y cintas (podía también usar discos), se vendieron más de mil unidades durante los primeros seis años, cifra impresionante para la fecha.

El lenguaje de programación más usado con la 1401era el Assembler, cuyos buenos programadores eran escasos y bien pagados en su medio, pero realmente se conocían de cabo a rabo todo lo relativo a la programación de esta computadora, hasta el último bit de su memoria y la última instrucción del programa.

Su mayor orgullo era lograr desarrollar un programa muy complejo que cupiera en la memoria disponible, que generalmente era de 4K. Algunos llevaron esto a extremos, y así el Gerente de Procesamiento de Datos (que así se llamaba entonces al más alto nivel del centro de cómputo) de un Banco, programador de vocación, ante la necesidad que se presentó de disponer de un programa clave, prometió a la alta gerencia que él lo desarrollaría de forma tal que cupiera en los 4K de memoria de su 1401, con lo cual le ahorraría al Banco el costo del módulo adicional de 4K, que, de no ser así, tendrían que comprar.

Este señor se dedicó a su tarea con tal devoción que no sólo descuidó sus responsabilidades gerenciales sino también las personales y familiares. Cuando en mis labores de venta me tocaba visitarlo, no me invitaba a tomar asiento, y, al igual que yo, se quedaba parado junto a su escritorio como un medio de ponerme presión para que mi visita fuera muy corta, y como un medio también de hacerme sentir su molestia porque yo le había dicho a la alta gerencia que el costo del tiempo que tomaría desarrollar el mencionado programa, más el salario de las personas que deberían dedicarse a las tareas que nuestro hombre había abandonado, más el valor de lo que el Banco estaba perdiendo en espera del tal programa, etc. era superior al costo del módulo adicional de 4K que permitiría disponer en poco tiempo del programa en cuestión. Pero cada vez que la gerencia mencionaba esto, el señor, actuando como programador y no como gerente, reiteraba con renovada fuerza sus promesas y compromisos.

Un día me molesté y fui a la visita semanal decidido a que, aunque no me invitara a sentarme ni se sentara él, yo permanecería en su oficina mientras pudiera. Por 48 largos minutos estuvimos ambos parados junto a su escritorio, hasta que tuvo que dejarme por una reunión urgente. El motivo de tal reunión fue anunciarle su despido, pues un gerente alto, víctima número 1 de la falta del programa clave, repasó el cálculo antes mencionado, concluyó que era cierto, y mandó a comprar de inmediato el módulo de 4K. Y ya, con base a 8K, un programador, de menor rango y menor salario, tuvo listo el programa para la fecha en que ese módulo fue instalado en la 1401.

Hoy los programadores disponen de computadoras con gigabytes y más gigabytes de memoria. El precio a pagar es que, a diferencia de sus colegas de antes, los de ahora no pueden ya tener el profundo conocimiento de lo que ocurre hasta la última instrucción del programa y el último bit de la computadora, pues las de hoy no tienen la limitación de ejecutar sólo un programa a la vez; pueden ejecutar varios al mismo tiempo y con miles y miles de instrucciones cada uno, lo cual aumenta la necesidad de exactitud de que ya hablamos, pues si la 1401 nos daba basura si la alimentábamos con instrucciones y/o datos erróneos, las de ahora nos inundarían literalmente de basura porque, aunque más veloces, más rendidoras, más capaces, etc., siguen siendo tan tontas como sus antecesoras.

A partir de la ENIAC (1946) la computadoras tenía ya CPU (memoria y tiempos de procesamiento), Unidades de I/O (consola, lectora de tarjetas, cintas, discos, impresora), lenguajes de programación, compiladores, programas, y programa almacenado, elementos éstos que casi configuran una moderna PC.

Sin embargo, en comparación con una PC o con mainframes de hoy, las computadoras de la época eran muy grandes, pesadas, lentas, ocupaban mucho espacio, disipaban mucho calor (requerían sistemas de enfriamiento), consumían mucha energía, etc., y eran muy costosas. Se fabricaban para fines muy puntuales y contra pedido. Pero con el advenimiento del transistor en 1957 (más capacidad de memoria, menos espacio, menos calor y menor costo), en 1959 IBM lanzó al mercado la famosa computadora 140, que ilustra esta foto:

que, desarrollada con tecnología SMS (Standard Modular System) vino a representar para la computación lo que el avión DC-3 representó para la aviación comercial: la hizo rentable y marcó el inicio de su gran desarrollo. Por eso es famosa.

De la 1401, con capacidad de memoria de 4K, 8K ó 16K (un simple disquete de hoy tiene 90 veces 16K) y con I/O de consola, impresora de cadena, lectora de tarjetas y cintas (podía también usar discos), se vendieron más de mil unidades durante los primeros seis años, cifra impresionante para la fecha.

El lenguaje de programación más usado con la 1401era el Assembler, cuyos buenos programadores eran escasos y bien pagados en su medio, pero realmente se conocían de cabo a rabo todo lo relativo a la programación de esta computadora, hasta el último bit de su memoria y la última instrucción del programa.

Su mayor orgullo era lograr desarrollar un programa muy complejo que cupiera en la memoria disponible, que generalmente era de 4K. Algunos llevaron esto a extremos, y así el Gerente de Procesamiento de Datos (que así se llamaba entonces al más alto nivel del centro de cómputo) de un Banco, programador de vocación, ante la necesidad que se presentó de disponer de un programa clave, prometió a la alta gerencia que él lo desarrollaría de forma tal que cupiera en los 4K de memoria de su 1401, con lo cual le ahorraría al Banco el costo del módulo adicional de 4K, que, de no ser así, tendrían que comprar.

Este señor se dedicó a su tarea con tal devoción que no sólo descuidó sus responsabilidades gerenciales sino también las personales y familiares. Cuando en mis labores de venta me tocaba visitarlo, no me invitaba a tomar asiento, y, al igual que yo, se quedaba parado junto a su escritorio como un medio de ponerme presión para que mi visita fuera muy corta, y como un medio también de hacerme sentir su molestia porque yo le había dicho a la alta gerencia que el costo del tiempo que tomaría desarrollar el mencionado programa, más el salario de las personas que deberían dedicarse a las tareas que nuestro hombre había abandonado, más el valor de lo que el Banco estaba perdiendo en espera del tal programa, etc. era superior al costo del módulo adicional de 4K que permitiría disponer en poco tiempo del programa en cuestión. Pero cada vez que la gerencia mencionaba esto, el señor, actuando como programador y no como gerente, reiteraba con renovada fuerza sus promesas y compromisos.

Un día me molesté y fui a la visita semanal decidido a que, aunque no me invitara a sentarme ni se sentara él, yo permanecería en su oficina mientras pudiera. Por 48 largos minutos estuvimos ambos parados junto a su escritorio, hasta que tuvo que dejarme por una reunión urgente. El motivo de tal reunión fue anunciarle su despido, pues un gerente alto, víctima número 1 de la falta del programa clave, repasó el cálculo antes mencionado, concluyó que era cierto, y mandó a comprar de inmediato el módulo de 4K. Y ya, con base a 8K, un programador, de menor rango y menor salario, tuvo listo el programa para la fecha en que ese módulo fue instalado en la 1401.

Hoy los programadores disponen de computadoras con gigabytes y más gigabytes de memoria. El precio a pagar es que, a diferencia de sus colegas de antes, los de ahora no pueden ya tener el profundo conocimiento de lo que ocurre hasta la última instrucción del programa y el último bit de la computadora, pues las de hoy no tienen la limitación de ejecutar sólo un programa a la vez; pueden ejecutar varios al mismo tiempo y con miles y miles de instrucciones cada uno, lo cual aumenta la necesidad de exactitud de que ya hablamos, pues si la 1401 nos daba basura si la alimentábamos con instrucciones o datos erróneos, las de ahora nos inundarían literalmente de basura porque, aunque más veloces, más rendidoras, más capaces, etc., siguen siendo tan tontas como sus antecesoras.

[*MiIT}– Computación Personal, herramienta indispensable. 5: Lenguajes y programas.

Carlos M. Padrón

Un programa está compuesto por instrucciones que le dicen a la computadora, paso por paso, lo que debe hacer para obtener lo que de ella se quiere. Estas instrucciones se le daban inicialmente de una en una (MARK I) y luego, al aumentar la capacidad de memoria (ENIAC), se pudo almacenar en ella un programa completo, siempre y cuando el total de instrucciones de que constaba el programa cupiera en la memoria que la computadora tenía disponible para ese fin.

Con el concepto de programa apareció el de Lenguaje de Programación, o conjunto de comandos ideado para escribir programas destinados a obtener soluciones en un área específica —como el FORTRAN (FORmula TRANslation), para matemáticas; o el COBOL (COmmon Business Oriented Language) para negocios— o, para ahorrar espacio de memoria, el ASSEMBLER, llamado también en español Ensamblador.

Así, para un científico resultaría más apropiado y fácil programar en Fortran que en Cobol, pero para un especialista financiero sería mejor el Cobol que el Fortran. Con el tiempo surgieron más y más lenguajes (Pascal, Algol, PL/1, Basic, C, C+, etc.). Y en muchos casos era posible —y sigue siéndolo con los lenguajes en uso hoy— que para programar la solución a un determinado problema, un programador usara Fortran, otro Cobol, otro Assembler, etc.., y todos obtuvieran el mismo resultado.

Los lenguajes de programación se dividen, además de por la especialización, por su grado de aproximación al lenguaje humano. Si son parecidos a éste, se les califica como orientados al usuario, pero sin son más parecidos al lenguaje de las computadoras que al humano, se les califica como orientados a la computadora, o “lenguajes de máquina”.

Los primeros, que generalmente son más fáciles de aprender y usar, requieren de un traductor ya que, al fin y al cabo, la computadora sólo entiende su propio lenguaje, y si esperamos que entienda el nuestro necesitaremos lo mismo que cuando, si no hablamos chino, queremos que un chino nos entienda: un traductor.

El traductor, o “compilador”, no es más que otro programa que traduce a lenguaje de máquina los lenguajes de otro tipo, y que, si bien antes efectuaban su trabajo de traducción en una operación aparte y dedicada sólo a eso, desde principios de los años 60 se les comenzó a almacenar, al igual que los programas que ellos deben traducir, en la memoria de la computadora.

Es común que oigamos decir que ciertos lenguajes ocupan más memoria que otros, pero en realidad es el compilador de ese lenguaje —cada lenguaje necesita su propio compilador— el que ocupa la memoria, pues éste recibe el programa en forma “fuente” (tal y como lo escribió el programador), y lo convierte a forma “objeto” (a lenguaje de máquina), forma ésta que ocupa menos memoria.

Un compilador será tanto más complejo y ocupará tanta más memoria cuanto más parecido al lenguaje humano sea el lenguaje de programación que debe traducir. Y, en general, un programador necesitará menos tiempo, pero usará más memoria de la computadora, cuando programa en un lenguaje orientado al usuario.

Pero hoy día, dada la abundancia de memoria y su bajo precio, las complejidades antes descritas son casi “transparentes” para el programador —o sea, no le causan mayor problema—, pues resulta más barato comprar memoria en abundancia que pagar el tiempo de programación que requeriría el uso de lenguajes de máquina. De aquí que los lenguajes de programación sean cada vez más orientados al usuario, y con comandos que son términos del lenguaje humano común, como podrían ser “Ve a”, “Transfiere”, “Imprime”, “Almacena”.

La ya referida abundancia de memoria permitió que en el ámbito de los lenguajes y compiladores se crearan las macro-instrucciones, que son instrucciones complejas que desatan la ejecución de cientos o miles de instrucciones simples, algo equivalente a cuando entrenamos a un perro para que, p.ej., a nuestra orden de “periódico”,
1) se pare
2) vaya hacia la puerta
3) se alce sobre las patas traseras
4) abra la puerta

5) salga al jardín
6) ubique en qué lugar cayó el periódico esa mañana
7) lo tome con sus mandíbulas
8) y nos lo traiga.

Antes, el programador tenían que ocuparse de dar, una a una y correctamente, estas 8 instrucciones; ahora basta con que use la macro “periódico” porque ya el perro está “programado” para desarrollarla, ejecutando, una a una y en perfecta secuencia, las 8 instrucciones que la componen.

Al igual que el perrito del ejemplo operan las computadoras: sólo obedecen instrucciones. A muy alta velocidad, pero sólo hacen eso. Y si se les da basura (instrucciones o datos erróneos), entregarán basura.

[*MiIT}– Computación Personal, herramienta indispensable. 4: Procesamiento

Carlos M. Padrón

Las velocidades de procesamiento de la memoria principal de la computadora, que determinan cuántas operaciones puede hacer ésta por unidad de tiempo, aumentaron exponencialmente con el paso del tiempo —primero de los años y ahora de los meses—, y si la velocidad de procesamiento de la MARK I se midió en segundos, la de sus sucesoras pasaron a medirse en milisegundos (un segundo dividido entre mil), microsegundos (un segundo dividido entre un millón), nanosegundos (un segundo dividido entre mil millones), y picosegundos (un segundo dividido entre un millón de millones, o billón). Son cifras que dan vértigo cuando tomamos conciencia de que un nanosegundo es a un segundo,… ¡lo que un segundo es a treinta años!.

La MARK I recibía las instrucciones por vía de una cinta de papel perforada, y las leía y ejecutaba de una en una. Pero la ENIAC (Electronic Numerical Integration And Computer) fabricada en 1946 por la Universidad de Pennsylvania para el ejército de EEUU y especialmente para cálculos científicos (con sus 30 toneladas de peso y sus 18.000 tubos ocupaba una superficie de 180 metros cuadrados, podía efectuar 300 multiplicaciones por segundo y hacer en dos horas el trabajo que a 100 ingenieros les tomaría un año), fue la primera computadora electrónica y la primera en usar programa (conjunto de instrucciones) por tablero, que representó un gran avance con respecto al programa vía cinta de papel. Se adjunta foto.

Y en 1948 aparece por primera vez, desarrollado también por científicos de la Universidad de Pennsylvania, el concepto de “programa almacenado”, o sea, residente en la memoria principal de la computadora, concepto que rige en las computadoras modernas y que permite, dadas las altísimas velocidades de procesamiento, la ejecución de varias instrucciones en forma simultánea, lo cual contribuye al aumento de la cantidad de operaciones realizadas por unidad de tiempo.

Con esto llegamos ya a los componentes básicos, capacidades de almacenamiento y velocidades de procesamiento de las computadoras de nuestros días, incluida, por supuesto, la PC (Computadora Personal).

Y el que hoy hasta la más modesta PC efectúe a velocidades de vértigo millones de operaciones por segundo, y pueda tener varias unidades de entrada, de salida y hasta mixtas, no cambia en nada el esquema básico: suministro de información, suministro de instrucciones de operación, proceso de los datos según las instrucciones, y obtención de resultados. La computadora no pueden hacer otra cosa.

[*MiIT}– Computación Personal, herramienta indispensable. 3: Almacenamiento

Carlos M. Padrón

La MARK I ya incluía en su diseño, como las modernas computadoras, el concepto de “hecha a imagen del hombre”, pues tenía un CPU (Central Processing Unit o Unidad Central de Procesamiento); unidades de input (entrada): la lectora de tarjetas/cinta perforada; y unidad de output (salida), que era una máquina de escribir eléctrica.

Con el tiempo, no sólo evolucionaron las tecnologías para construir la memoria principal de la computadora —la residente en el CPU— desde el relé hasta el chip, pasando por el tubo o válvula de vacío y el transistor (que, en comparación con el tubo, era 10 veces más rápido, 200 veces más confiable, 200 veces menos costoso, y requería 100 veces menos energía), sino también las unidades de I/O (Input/Output) llamadas, en conjunto, unidades periféricas, que están fuera del CPU.

Y así, al aplicarse la tecnología de “columna de vacío” (1950) se popularizaron.
— la cinta magnética, que puede fungir como unidad de input y también de output.
— el tambor magnético, precursor del disco magnético.
— el RAMAC (Random Access Method of Accounting and Control), primera unidad de disco magnético (1956) que constaba de un paquete fijo compuesto por 50 discos o platos que entre todos podían almacenar la para hoy más que ridícula cantidad de 50.000 caracteres, aunque era un mamotreto como puede verse en esta foto:

ramac-storage-unit

— la impresora de cadena (1959), capaz de imprimir 600 LPM (Líneas Por Minuto); y,
— la unidad de disco de paquetes removibles (1962), compuesto cada paquete por 6 discos o platos, útiles por ambas caras (ilustración 2) y con capacidad para almacenar 6 millones de caracteres por paquete.

Luego, ya en fecha reciente, apareció el disco flexible (floppy disk), el disquete, las tecnologías de impresión láser y de inyección de tinta, la pantalla, el teclado (en sustitución de la antigua consola), el escáner, el ratón, etc., y los discos duros (típicos de las PCs) cuya capacidad de almacenamiento, al igual que la de los discos usados por computadoras medianas y mainframes, se mide —a diferencia de la de sus predecesores, que se medían primero en miles de bytes (KB) y luego en millones de bytes (MB)— en GIGABYTRES (GB), o miles de millones de bytes.

[*MisCan}– Una canción como epílogo a ‘La creación de El Paso’

Carlos M. Padrón

Los medios de escapismo en que por años me refugié para mitigar los efectos de tiempos de crisis fueron el trabajo, la fotografía, la cría de patos y la música.

Para esta última tuve un salón debidamente equipado en el que me encerraba a seleccionar, grabar, y escuchar luego lo grabado. Así armé una colección de varias decenas de casetes que tienen para mí la ventaja de que me gusta todo lo que contienen.

Después de escuchar una y otra vez algunos de los casetes de música instrumental así grabados, a veces comenzaba a destacar de entre todas alguna melodía evocadora de un sentimiento que con el tiempo iba tomando más y más cuerpo cada vez que, estando yo solo en mi salón de música, escuchaba de nuevo esa melodía.

Una en particular me hizo recordar a mi padre, otra a mi pueblo como lugar geográfico, otra a mi pueblo como conjunto de costumbres y nostalgias, etc., y como esos instrumentales estaban ejecutados en un tono al que, jugando con las octavas, podía yo llegar, un día decidí escribir letras alusivas a los sentimientos que esas melodías evocaban en mí, y, poco a poco, fui grabando todas esas letras en forma de canción usando como fondo el instrumental con la correspondiente melodía evocadora, y lidiando, también yo solo en el salón de música, con los controles del tocadiscos, ecualización, volumen, audífonos, letra, etc., mientras trataba de cantar lo mejor que podía.

Al enésimo intento obtenía un resultado menos malo que los anteriores, y con ése me quedaba.

Ahora que en los tres artículos “La creación de El Paso” —en la sección ‘El Paso, mi pueblo’, tomados del escrito “Manuel Taño, un patriota y gran alcalde” de Don Braulio Martín— conté ya cómo El Paso consiguió su independencia y cómo fueron sus primeros años como municipio —o sea, cómo se creó mi pueblo—, adjunto el enlace a la primera de las canciones que grabé según el proceso arriba explicado; una canción que lleva por título “A El Paso, mi pueblo” y que, por supuesto, está dedicada a El Paso, a un El Paso que, casi en su totalidad, sólo existe hoy en mis recuerdos, pues salí de él —“dejé el nido”— a finales de 1957, y volví una o dos veces cada año hasta 1960. Luego, a partir de 1961, cuando emigré a Venezuela, pasé por El Paso cada vez que tuve oportunidad de hacerlo, y no sin tristeza veía cómo lo más característico de los pasenses, las costumbres de mis tiempos y todo lo demás que moldeó mi sentir y me dio guías de vida, que alimentó mis recuerdos y mis nostalgias, iba desapareciendo, aunque eso no ha hecho mella en el amor que siento por mi pueblo.

La ficha técnica de esta canción:

— Título de la melodía instrumental: “Adiós, Acrópolis”. Arreglo de Paul Mauriat.
— Grabada el 17-04-1982.

Para escucharla o bajarla