martes, 24 de diciembre de 2013

Una tarjeta para una amiga


Nos conocimos el año pasado durante la Noche de los Museos. Casualmente ella concurrió al Museo de Informática, en donde yo estaba haciendo un poco de guía. De pronto, me acerqué cuando la ví comentar muy vivazmente algo con su marido. De hecho, le decía que la máquina que estaba frente a ella no era Clementina.

-Disculpen, es cierto, no es Clementina; esta es la CEFIBA, la computadora construida a mediados de los ‘60 en la Facultad de Ingeniería. Agregué, entrometiéndome.

-Claro! -repuso ella muy vivazmente-, no me lo vas a decir a mi, que yo estuve trabajando con la verdadera Clementina!

Esa noche me había encontrado con Alicia, una egresada de la carrera de Computación Científica que trabajó durante la cursada con la legendaria computadora. Luego de revelarle que éramos de cierto modo colegas, quedamos en contacto. Pasó el tiempo, volvimos a encontrarnos, esta vez en su casa y cerca de fin de año. Mientras tomábamos té, ella contó anécdotas de su época de estudiante y me mostró innumerables apuntes, incluido su trabajo de tesis escrito de puño y letra. Mientras comentaba que había sido docente primaria y media y que enseñó LOGO sobre TI-99/4a y sobre PC, extrajo de un antiguo libro de IBM una tarjeta perforada que quisiera compartir.
Llegó el momento del balance de este año que se pasó volando. Supongo que las preocupaciones de la gente hacen que exista expectativas por un mañana mejor obligándonos a dejar atrás el presente y ni hablar del pasado. Por lo pronto, intentemos vivir el ahora y festejar, o simplemente compartir un momento con nuestros seres queridos y disfrutar de esos pequeños y sencillos islotes que ofrece la vida y que nos brindan felicidad. Un saludo para todos, especialmente, para mi amiga Alicia!

Una tarjeta perforada (de navidad) de los años '60. Este tipo de objetos, hoy sería considerado 'Geek'

lunes, 2 de diciembre de 2013

Lenguas Muertas II – A buscar el piloto, que se viene la lluvia

Sigo bastante a Mauricio Saldivar, y según su recomendación habrá que preparase para una semanita con algo de lluvia.
El viento del sur de la última tormenta hizo saltar las varillas de mi paraguas y ahora no tengo muchas opciones para protegerme más que usar el piloto. El problema es que no me llevo bien con él, y tampoco estoy seguro de haberlo dejado donde corresponde luego de haberlo traído hace un año de la tintorería.

Reviso el placard, el lugar más natural para guardar un piloto, pero no está allí. En la búsqueda tropiezo con algunas cajas de zapatos, zapatillas en el piso del placard. Intento acomodar todo y, en la tarea, me reencuentro con algunas revistas Compute! dentro de una bolsa. La búsqueda del piloto pasó a segundo plano. Ahora solo me ocupo de ojear algunos de los pocos números. Los truenos anuncian la inminencia de la lluvia, pero puede esperar porque es más importante este número 28 de Compute! de Septiembre de 1982. ¡Y pensar que en esa época yo tenía 10 años!
Al dar un vistazo en el índice, encuentro lo que podría ser una señal de advertencia relacionada con el devenir meteorológico. La página 84 de la Compute! informa “The Turtle Pilot”.

El artículo expone un nuevo lenguajes basado en la conjunción de PilotLogo Basic. Pero vuelve a mi cabeza el nombre PILOT, acrónimo de Programmed Inquiry, Learning Or Teaching. Ese lenguaje anterior al LOGO que no logró salir con vida de los años 80, fue diseñado en la Universidad de California por el psiquiatra Andrew Starkweather en 1962 como una herramienta para facilitar la construcción de exámenes y cuestionarios en el ámbito de las ciencias médicas.

PILOT, en su más pura escencia, es un lenguaje interpretado muy sencillo, con pocas intrucciones, que cuenta con capacidad de manejo de subrutinas y adolece en la manipulación algebraica y de vectores. El núcleo del lenguaje está compuesto por:

Instrucciones
“A”, para aceptar una entrada alfanumérica
“C”, para efectuar un cálculo
“E”, para finalizar la ejecución de un programa
“R”, para hacer un comentario en el código
“T”, para mostrar un texto
Condicionales y Control de flujo
“J”, para saltar a un fragmento de código determinado por una etiqueta.
“M”, para comparar el último ingreso de teclado con una lista de variables / constantes. En caso positivo, se activará la señal “YES”.
“U”, para utilizar una subrutina definida por una etiqueta
“Y”, para imprimir una linea de texto si el resultado del último “M” es positivo
“N”, para imprimir una linea de texto si el resultado del último “M” es negativo
Opcionalmente, algunas intrucciones pueden combinarse con expresiones lógicas como el caso de “J” y “T” o con los flags “Y”, “N”, producto de comparaciones.
R:Programa ejemplo en PILOT para adivinar un número (8 en este caso) en tres intentos.
C:#N = 8
*INICIO:
C:#V = 3
*VUELTA:
T:Adivina que numero pense
A:#M
J(#M = #N): *ENCONTRADO
C:#V=V-1
J(#V>0) *VUELTA
R:Si llego aqui, es porque no se encontro el numero
T:No acertaste. Queres intentar nuevamente?
A:
M:s,S
JY:*INICIO
E:
*ENCONTRADO:
T:Muy bien!
E:

Por supuesto que existen variantes del lenguaje que surgieron en los 80, destacándose las versiones Atari Pilot por incorporar manejo de gráficos y sonidos y Super Pilot de Apple con características similares. Viniendo un poquito más a la actualidad, existe una versión Open Source llamada R-Pilot, que es necesario compilar para poner en funcionamiento y está basado en el muy tardío standard que empezó a definir la IEEE en 1991 en el documento IEEE 1154-1991, que al día de hoy permanece como un borrador.

Del piloto que tanto busqué, ni noticias. Y creo que seguirá el camino del lenguaje. Caerá en el olvido. Veo que Mauricio Saldivar se equivocó, porque las nubecitas de por allí se están corriendo. Adiós Pilot, buen viaje!




viernes, 30 de agosto de 2013

Tan solo 50 años (Toda una vida)

Una persona de 50 años, en estos tiempos, sigue siendo considerada joven. Claro, no como a los veinte ni como a los treinta, pero definitivamente la percepción de las etapas se fue corriendo hacia adelante. Así como por ejemplo, la adolescencia se extiende más allá de cumplir los veinte.

Y con una carrera universitaria que cumplió 50 años; podemos tener la misma percepción?

Tras la llegada en 1961 de la computadora Ferranti Mercury II la facultad de Ciencias Exactas y Naturales de la Universidad de Buenos Aires, la gente de las carreras de matemática y eventualmente de física, fueron designados para capacitarse para poder operar con Clementina. Pronto empezó surgió la necesidad de contar con personal exclusivamente formado y dedicado al manejo de computadoras, que pudiera desempeñarse tanto en el ámbito académico como en la industria.

El 19 de Octubre de 1963, un año después de que el Dr. Manuels Sadosky, entre otros, elevaran al Consejo Superior un pedido de creación de una nueva especialización, surge la carrera Computador Científico. Esta primera carrera a nivel nacional relacionada con computación, contaba con una duración inferior a la licenciatura y los nuevos profesionales, podrían brindar asistensia a científicos de otras disciplinas.

Los primeros alumnos fueron matemáticos y físicos, que contaron con la ventaja de haber cursador materias en común con la nueva carrera -eran diez materias en total-, por lo cual a fines de Junio de 1964, egresó la primera camada de Computadores Científicos compuesta por Carlos Angio y Victoria Bajar.

Aunque en 1974 hubo un intento por profesionalizar aún más a los egresados de la carrera, eliminando el carácter de auxiliares de otras disciplinas y otorgandoles un rol independiente, no fue sino hasta 1983 cuando se concretó un nuevo plan de estudios con un nuevo título, la Licenciatura en Ciencias de la Computación. La nueva carrera, aún vigente, tuvo una actualización de los planes de estudio en el año 1987, 1993 y 2000 y generó y genera una cantidad de egresados muy valorados y preparados que se desempeñan en muchos ámbitos. Hago una lista de gente que conozco o de la cuáles tengo referencia. Se puede encontrar a gente egresada o relacionada con la carrera en:

- universidades nacionales (UBA, UB, Tecnológica, San Martín)
- universidades extranjeras de Brasil, Canadá, Alemania.
- oficinas de Google de Mountain View, California
- oficinas Microsoft en Redmond, Seattle
- Globant, como personal jerárquico
- en breve, en las oficinas Facebook en San Francisco.
- Formando parte del directorio de YPF
- en la dirección regional de Microstrategy
- situación de reconocimiento mundial como autoridad en criptografía (y además uno de los impulsores de la reforma de Licenciatura)
- Empresas como Pragma, Hexacta, Cubica, Epidata, entre otras.

Claro, que también hay egresados desempeñando otras tareas más “terrenales”, en la industria de las telecomunicaciones, la televisión, la del juego (Casinos) de todas formas, muy valoradas y reconocidas. De todos modos, estoy siendo injusto, porque la lista no está completa pero ni por asomo.

Aún así, la idea de estas líneas es saludar a todos los egresados que estamos orgullosos de haber recorrido los pasillos, usado los laboratorios y cursado en las aulas de Exactas esta joven carrera que tuvo un crecimiento rapidísimo, y que no sólo dio como frutos profesionales brillantes, sino que fue el puntapié inicial para la creación de carreras análogas en distintas universidades del país. Un gran logro. Salud!!!!

lunes, 5 de agosto de 2013

Quiero actualizar la compu

Estoy juntando algo de plata para actualizar la computadora desktop. Soy uno de esos pocos que todavía tienen una, principalmente por razones de escalabilidad, potencia y costo comparada con una notebook.

Tengo una Athlon XP de doble núcleo y 64 bits, con 3gb de memoria y una placa de video Nvidia de 512Mb. Estoy buscando saltar a algo con un microprocesador de cuatro núcleo, 8gb de ram, que utilice la misma placa de video y el mismo disco (que es un SATA-2 de 1 tb).
Pero la plata parece nunca alcanzar. Aunque digan que no, la inflación se siente y en muchos casos corre al lado del valor del dólar. Si sólamente uno pudiese volver a ahorrar en esa moneda para no perder tanto valor! Pero ya no se puede. Eso quedó en el pasado y ahora el virtualmente imposible porque atesorar billetes extranjeros se convirtió en algo ilegal.

Algo desesperanzado, fui a acomodar una revista K64 que había quedado en el escritorio, era la número 56 de la revista de Noviembre de 1989 y al ojearla, me detuve en una propaganda que terminó transformando mi desesperanza en perplejidad ante lo que pareciera ser algo irreal y anacrónico en los aspectos económicos y técnicos. Lo pueden comprobar Uds mismos:
Una XT por 700 dólares? Una AT-286 por 1400 dólares? Irreal!





Hace 24 años en avisos como este, se ofrecía máquinas clones de PCXT y PC-AT 286 a precios en dólares, por los que hoy, si éste billete no fuese ilegal para comercializar en el país, podría conseguir de forma holgada la máquina que estoy buscando. Es muy sorprendente la evolución técnica vivida. Es muy irreal que exista una prohibición a transaccionar en otras monedas. O fue irreal  la posibilidad de haber operado en otras monedas?

miércoles, 26 de junio de 2013

La familia no se elige, Barbie

La muñeca Barbie fue creada por la esposa de uno de los dueños de Mattel, Ruth Handler y presentada al público en la feria internacional del juguete de New York el 9 de Marzo de 1959, convirtiéndose en poco tiempo en un modelo ideal y símbolo -exagerado- de la perfección a conseguir, por varias generaciones de niñas que vieron reflejados los cambios culturales y sociales de distintas época en ropa, peinados, profesiones y hasta razas, que los distintos modelos de la muñeca fueron adoptando. No queda del todo claro, pero se dice que si se pusiesen todas las muñecas desde la creación hasta el primer lustro del nuevo milenio, tomadas de la mano, podrían dar al menos una vuelta a la tierra.

La familia de productos de Mattel es impresionante por dónde se la mire, prácticamente todos hemos jugado con alguno de sus juguetes. Nombraré algunas marcas y personajes sólo para tener una leve idea abarcadora: Matchbox, Fisher-Price, Hot-Wheels, He-Man, muñecas Bratz, Monster-High, Playmobil, Tyco, UNO, Max Steel y un largo etc. Pero sin duda, el miembro más prominente, la insignia de la firma es Barbie. Pero como en toda familia numerosa, siempre está aquel distinguido por cualidades opuestas a las de sus miembros más destacados. Es ese tío que en las fiestas se excede por varias copitas o aquel cuñado que aún no tenemos idea de porqué está junto a nuestra hermana. En fin, esta mancha para la familia Mattel, ésta verguenza de Barbie, es sin duda la computadora Aquarius.

Su apariencia más cercana a un zapato ortopédico que a una computadora de los ´80, resultó un preludio de una corta vida rodeada por críticas desfavorables, como las efectuadas por David Ahl, de la revista Creative Computing en junio de 1983: “Es una máquina tan cursi, que debería venderse con guantes para poder usarse” y por   diseñador gráfico de Mattel,  Bob Del Principe, que refiriéndose a las capacidades gráficas de la máquina, propuso el slogan: “Aquarius – El sistema de los ´70”.

La historia de Aquarius comenzó en 1981, cuando Mattel tenía planeado usar su muy bien vendida consola Intellivision, técnicamente muy superior a la competidora Atari 2600, como plataforma para ingresar en el mercado de las computadoras hogareñas gracias a las capacidades de expansión planificadas y prometidas -teclado, memoria, segundo microprocesador, unidad de almacenamiento externa, etc-. El primer y principal periférico consistía en un teclado para convertir a la consola en una computadora convencional, pero los costos fuera de presupuesto y algunas dificultades técnicas empezaron a demorar la aparición. Estas dificultades no impidieron a Mattel intoducir al mercado algunas unidades del teclado sin funcionar y otras en estado de prueba, por lo que la FTC -Federal Trade Commision- inició una investigación por fraude de parte de Mattel.
El resultado de la pesquiza terminó en una intimación de pago a Mattel una multa de diez mil dólares por cada mes transcurrido hasta la aparición del teclado. Sin embargo, la empresa contaba con un plan alternativo, consistente en un teclado reducido que incorporaba un intérprete Basic y 2Kb de RAM con el que pudo salir de la situación e intentó que la Intellivision fuese aceptada, al menos, con fines didácticos en los hogares. Cuándo el nuevo conjunto compuesto por la Intellivision y el teclado fueron presentados en Enero de 1983 durante la CES -Cosumer Electronics Show-, Mattel comprendió que el momento de las consolas había terminado a manos de las nuevas computadoras hogareñas como Commodore, Texas Instruments y Atari.


Mattel recurrió a un proveedor de hardware de Intellivision en Taiwan, Radolfin, que contaba con dos prototipos de computadoras listas para salir al mercado, pero que como carecían de una estratégia de marketing, internamente se las conocía como Checkers y Chess -Damas y Ajedrez- . Con un contrato establecido entre ambas empresas, la primera de las computadoras fue presentada al mercado de Estados Unidos el 10 de Junio de 1983 con el nombre Aquarius, con un costo de 160 dólares. La máquina contaba con un microprocesador Z80, 4Kb de RAM, 8Kb de ROM con un intérprete Basic de Microsoft, un generador de audio de una voz, pantalla de 40 x 24 caracteres con 16 colores, modulador de RF incorporado con salida de audio, entrada para grabador de cassettes y un puerto de expansión y un teclado de chiclet de 48 teclas. Entre los periféricos, se encontraba un expansor que permitía conectar joysticks y dos cartridges de programas -generalmente se vendía junto a la computadora-, un grabador de cassettes, una impresora térmica, un adaptador para un sintetizador de sonido de tres voces, expansiones de memoria a 16Kb y 32Kb, un modem de 300bps y una unidad de disco que quedó en promesa. Al momento de su aparición, se anunció la pronta disponibilidad de treinta programas – entre juegos y aplicaciones – para la Aquarius, pero sólo se editaron veintiuno en formato de cartridge. La nueva máquina distaba mucho de la Intellivision. Su principal punto débil era la carencia de un método de definición de gráficos, teniendo como única alternativa la utilización de caracteres gráficos predefinidos que podían ser combinados en juegos y aplicaciones. Su memoria nativa de 4Kb prácticamente se evaporaba al encendender la máquina quedando únicamente 1.7Kb para programar con un intérprete Basic que carecía de comandos para controlar los colores en pantalla, debiendo el usuario acceder a la porción de memoria reservada para video mediante los instrucciones PEEK y POKE para establecer ya sea colores o para situar caracteres gráficos. El editor tampoco facilitaba la corrección de programas al carecer de facilidades de corrección de líneas de código, siendo el único camino la reescritura de la líneas completas.





Una Aquarius con el Data Recorder -grabador de cassettes- y manuales. Como curiosidad, esta máquina procede de Estados Unidos, pero se deduce que fue comercializada por Radolfin debido a que carece del logo "Mattel Electronics" sobre la marca, como lo tienen los manuales y el grabador.


Sensiblemente de menor costo que una Commodore VIC-20, Aquarius no lograba convencer por las razones expuestas. Sólo por dar un ejemplo, en Inglaterra, la computadora con una expansión de memoria de 16Kb, valía prácticamente lo mismo que la ZX Spectrum de 16kb -99 libras-, una máquina con varios periféricos de terceros y una importante biblioteca de software que no podía ser comparada con la mínima colección de títulos de Aquarius que parecía seguir la filosofía cerrada de Texas Instruments TI-99/4a, con hardware exclusivamente desarrollado por la empresa y software casi exclusivamente en cartridge que le brindaba un aire de “máquina de cartuchos” en lugar de “máquina programable”.



Las Barbies probando el funcionamiento de Aquarius


En Octubre de 1983, tras cuatro meses de escasas ventas y pérdidas reportadas por la división electrónica en Julio del mismo año por 166 millones de dólares, Mattel discontinuó la producción de la Aquarius y negoció la devolución de los derechos de comercialización y producción a la Radolfin. En Enero de 1984, mientras la división electrónica de Mattel cerraba definitivamente, Radolfin presentaba en la CES la nueva Aquarius II con apenas algunas diferencias respecto a su predecesora -un teclado mecánico y 20Kb de RAM-. Aunque la computadora no fue comercializada, algunas unidades fueron distribuidas puntualmente durante la exposición. Pero detengámonos aquí; quedémonos con la historia de la primera Aquarius, que hoy es una pieza de colección bastante interesante debido a sus características de antihéroe de las home computers que es este pariente de Barbie de origen oriental, un tanto pretencioso que apareció tan rápido como se fue y que con su estilo anacrónico y limitado hizo muy poco para dejar bien parada a la familia Mattel. Ánimo Barbie, que a vos te fue muy bien; y recordá que la familia no se elige!

martes, 23 de abril de 2013

Si es para ahorrar, está bien…

Hace unos días, estaba en la casa de un coleccionista amigo, cuándo nos pusimos a charlar sobre el diseño de un joystick CZ800s que tenía a la vista y que había sido construido por la Czerweny Electrónica para completar el lanzamiento de la línea Plus por el año 1986. Ésta línea implicó el rediseño exterior y la incorporación de entradas para monitor, joystick y botón de reset de las computadoras CZ1000, CZ1500 y CZ2000 que respectivamente pasaron a llamarse CZ1000 Plus, CZ1500 Plus y CZ Spectrum.

Puntualmente, el joystick CZ800s estaba diseñado para trabajar con CZ Spectrum, mientras que las computadoras más chicas, sólo operaban con el joystick CZ800. Lo único que diferenciaba a ambos modelos de controlador, además de la letra “s”, era el cableado interno.

Éstos joysticks tenían -tienen, en realidad- un aire de robustez inspirado por su palanca y el botón,  de aspecto sencillos y similar a los de los controles en las máquinas arcades.
Pero esta semejanza sólo quedaba en apariencias, puesto que al tener en manos el CZ800s/ CZ800, se podía palpar una durabilidada apenas correcta.

Mi amigo acercó al joystick el estuche de una calculadora CZ Matemática, fabricada por la misma empresa en 1982 y me pidió que notara diferencias en los diseños. No hubo que hacer mucho esfuerzo. Era bastante evidente que decidieron reutilizar la matricería, por temas de practicidad o tal vez de costos, por lo que vale decir, que la base del joystick CZ800s es la cubierta  de la calculadora CZ Matemática! A las pruebas me remito: 



La CZ Matemática es una calculadora fabricada completamente en nuestro país por Czerweny Electrónica en 1982. Opera con notación postfija (o polaca inversa), con display de ocho dígitos de LED rojos, de siete segmentos. Tiene un estuche de plástico rígido como pude apreciarse. 

 CZ800s vs cubierta de CZ Matemática. Es muy evidente que ambos objetos partieron de una matriz muy similiar, sino la misma. 


CZ800s vs cubierta de CZ Matemática

Cómo corolario de esta comparativa, me viene a la memoria sketch del programa Peor es nada, de los geniales Jorge Guinzburg y Horacio Fontova. Había un superhéroe de la “cole”, llamado Zuckerman, que tenía como latiguillo la frase: “…y.. si es para ahorrar, está bien…”

martes, 16 de abril de 2013

La leyenda del “Cozito”

Entendemos por viveza criolla a las prácticas que se ejercen para obtener ventaja de las situaciones, perjudicando al prójimo de ser necesario. En torno a esta frase se tejió la leyenda del “cosito” , que en poco tiempo fue desmentida.
Una tarde del año ´87, estaba en la casa de computación Desys Soft, en San Martín. En aquel momento, yo era usuario de Commodore 64 todavía con datasette y había concurrido a copiar juegos al local. Un chico de aproximadamente mi edad, preguntó a uno de los vendedores:
- Y cuánto zale eze cozito? -señalando a esto:

El "cozito" (si, con z)

Ese tono seseoso que me había enervado se convirtió en gracioso cuando me percaté  que estaba señalando una perforadora de diskettes de 5.25″,  muy similar en aspecto a las de papel diferenciándose por ser de plástico, de menor tamaño y por dejar perforaciones cuadradas. En aquel momento, me parecía motivo de burla cualquier persona que adquiriese ese tipo de perforadora, cuando con las comunes, que de hecho eran más económicas, podían obtener un resultado similar, lo mismo que con tijeras, pero siempre teniendo bastante cuidado.

La Duplidisk -así se llamaba esta pinza perforadora- , fabricaba una perforación cuadrada a la altura diametralmente opuesta a la que los discos traían de fábrica, con el objeto de utilizar la otra cara en unidades de floppy como la Commodore 1541, la Atari 1050 o la unidad Disk II de Apple, que solo contaban con una cabeza lecto/escritora. Este truco sencillo que permitía el aprovechamiento completo de un diskette, parecía ser una típica viveza criolla y, al menos por el barrio, se conjeturó acerca del origen argentino de la idea, evidenciado por el hecho de que el Duplidisk era de fabricación nacional.
 
Una parte de la leyenda urbana, o barrial, mejor dicho, caía en cuanto uno podía leer artículos como Flipping your Disk de M.G. Sieg, publicado en la revista Compute! número 10 (Marzo de 1981) en la página 71, proponía el aprovechamiento de la segunda cara de los diskette mediante la técnica de la perforación, para los drives de las computadoras Apple II. La otra parte de la leyenda, la del origen nacional del invento de la pinza, se esfuma con la revista Infoworld número 27 (Julio de 1983),   página 47,  dónde un auncio promociona el uso de la pinza Nibble Notch (nombre de marca registrada y patente pendiente), para duplicar el espacio en diskettes de 5.25″. 


 Duplidisc en acción.

miércoles, 13 de febrero de 2013

Lenguas Muertas I - Yoda Programa

Creo que debe ser uno de los fanáticos de Star Wars más jóvenes que conozco. Con sólo tres años y medio, ya vió toda la saga y sigue viendo algunos fragmentos de sus episodios favoritos, como el enfrentamiento el primer enfrentamiento de Qui-Gon Jinn y Obi Wan Kenobi contra los droides en la nave de la federación de comercio en Episodio 1 o el escape de Luke Skywalker y sus amigos del pozo de Carkoon , con su frase “Jabba...es tu última oportunidad...libéranos o muere...” en Episodio 6. 

Entre sus personajes favoritos están Obi Wan y Anakin Skywalker antes de ‘hacerse malo. Aunque también le cae simpático Yoda. Tal vez porque se ve representado por el tamañoo tal vez porque le resulta simpática esa forma especial que el maestro Jedi tiene de hablar utilizando estructuras gramaticales compuestas con verbo , sujeto y modificadores directos, de modo tal que suele decir frases como  “ir tu debes”.

Este hablar “alrevés” del maestro Yoda me lleva a asociarlo con un lenguaje de programación puesto en escena a principios de los ‘70 y que no pudo proyectar una posición más allá de mediados de los ‘80. Se trata del Forth, creado por el físico Charles Moore con el objeto de controlar el posicionamiento de los telescopios de su lugar de trabajo, el National Radio Astronomy Observatory of Arizona.

El origen de su nombre tiene dos raíces, por un lado de una simplificación de la palabra fourth que aludía a un lenguaje destinado a las computadoras de cuarta generación, es decir, aquellas que adoptaron los primeros circuitos integrados en su construcción, y por otro, del sistema operativo de la máquina IBM 1131 en dónde se compiló el primer entorno, que contaba sólo con cinco caracteres para los nombres de los archivos. Por esta limitante, el archivo compilado se llamó FORTH.

Forth es un lenguaje imperativo, de nivel medio y sus implementaciones consisten en una consola de comandos y un compilador interactivo con el que se puede extender el lenguaje, creando nuevas palabras, que serían el equivalente a rutinas o funciones en otros lenguajes. Esta arquitectura recuerdo un poco a la de Smalltalk, en donde es posible definir e interactuar con los objetos que viven en el entorno. 

Pero volviendo a Forth, digamos que siempre estuvo pensado para interactuar con pocos recursos de hardware y de hecho, para interactuar con dispositivos pequeños y medianos en forma embebida. Hasta principios de los ‘90, por ejemplo, Federal Express utilizó un dispositivo denominado SuperTracker, con un firmware desarrollado en Forth,  para registrar encomiendas guardando los ID escaneados en una RAM y luego sincronizando contra una computadora central regional. Otro uso de Forth tuvo lugar en un proyecto de plataforma para la creación de Smartcards en Europa, en 1995, llamado Open Terminal Architecture. Pero hay más ejemplos de uso que pueden encontrarse en esta dirección.

Esa gramática distintiva de Forth está dada por la estructura de pila de datos con que operan todas sus palabras, puesto que no existe el pasaje de parámetros ni los retornos de valores sino que son tomados y almacenados en esta estructura. Recordemos que como toda pila, por ejemplo la de platos lavados, el primer elemento a guardar, será el último plato que se lavó.

Utilizar esta metodología para cálculos, nos brinda el sistema con notación postfija que también es conocido como notación polaca inversa y que se utiliza en las calculadoras Hewlett-Packard. Recordemos que con este sistema, el uso de paréntesis en las expresiones algebraicas es innecesario. Supongamos, por ejemplo, que en una planilla de cálculos ingresamos la siguiente cuenta:

3 x (5 + 15)

El resultado es 60. Pero si ahora lo quisiéramos calcular con nuestra HP-48GX, deberíamos ingresar:

3 5 15 + *

Y deberíamos interpretar de la siguiente manera: apilar los números 3, 5, y 15, sumar los últimos dos números ingresados (5 + 15) y resultado dejado en pila, multiplicarlo con el primer número. Más gráficamente:

P1            P2            P3
*
+            *
15    =>        20        =>    60
5            3
3

Volviendo al primer cálculo hecho con nuestra planilla, si no hubiesemos utilizamos paréntesis, el resultado sería otro, puesto que la suma separa los términos: 3x5 =15 + 15 = 30

Con el ejemplo anterior en mente, estamos más o menos en condiciones de aceptar que las palabras en Forth, consumen sus argumentos de la pila (es decir, los sacan), hacen lo que tienen que hacer y finalmente dejan en la estructura el valor resultante. Veamos por ejemplo, cómo escribir una estructura condicional:

3 4 < IF .“ TRES es menor que CUATRO” ELSE .“ TRES es mayor o igual a CUATRO” THEN;

A no alterarse! Pensemos en la pila! Se ingresan los operandos 3 y 4. Luego se aplica la palabra “<”, es decir 3 y 4 son los argumento del operador lógico <. El resultado de la operación es 0 -porque representa a TRUE-  va a parar al tope de pila. Este valor es el argumento del IF,  y por ser verdadero, ejecuta lo que está antes del ELSE, en este caso imprime -es lo que hace el punto- el literal entre comillas. Lo que está luego del ELSE es opcional y en este caso particular, nunca se ejecutará y sólo aparece para mostrar la estructura completa que finaliza con THEN

Y qué pasaría con un ciclo definido? Bueno, si quisiéramos imprimir los primeros diez números naturales, podríamos escribir:

11 1 do . I loop;

Aqui, el 11 y el 1 se alojan en la pila y este último valor pasa a ser el valor inicial del ciclo que deberá iterar y ejecutar el contenido diez veces (en la vuelta once terminaría). Notar la aparición de I, que es una variable implícita del ciclo y conserva el valor del número de iteración, que en este caso, se está imprimiendo. Y por supuesto, el ciclo termina con loop.

Esto, como suele decirse, es sólo la punta del iceberg y en caso de interés, se puede extender el tema visitando Forth o leyendo Thinking in Forth. En mi caso, ambos recursos fueron bastante efectivos y gracias a ellos pude escribir mi primer programa Forth.

Para aquellos nostálgicos que quisieran probar el lenguaje en un ambiente más adecuado a su época de esplendor, podemos decir que prácticamente todas las home computers tuvieron -tienen- su versión de Forth, siendo el máximo exponente la Jupiter Ace de la empresa Jupiter Cantab LTD.
Esta empresa, que fuera fundada por dos ex miembros de Sinclair integrantes del equipo desarrollo de la ZX Spectrum, Richard Altwasser y Stephen Vickers, construyeron una computadora de rasgos similares a la Sinclair ZX81 pero varias distinciones:: poseía un gabinete de color blanco, con un teclado de goma, generador de sonido similar al de Spectrum y 3Kb de RAM, todo dirigido por un microprocesador Z80. Pero el rasgo más sobresaliente resultó ser el entorno Forth que incorporaba en ROM, al contrario de la tendencia de la época de utilizar BASIC. Los programas construidos en Forth se ejecutaban tres veces más rápido que su equivalente en BASIC, pero debido a la dificultad de aprendizaje, la Jupiter Ace tuvo muy poca aceptación de mercado y en sus dos años de producción, se crearon cerca de 8000 unidades.

Antes de terminar, quisiera dejar el listado de mi primer programa Forth. Se trata de un pequeño juego que suelo escribir en distintos sistemas / lenguajes que cae en mis manos, como una alternativa al tradicional “Hola Mundo”. Consiste en un juego de adivinanza, en dónde la computadora selecciona aleatoriamente un número del uno al diez y el usuario cuenta con tres posibilidades para adivinarlo. En cada intento fallido, el programa ayuda informando si es número elegido es mayor o menor al ingresado.
El programa fue escrito en Win32Forth, aunque podría correr en la versión online jsForth. Está dividido en tres secciones: la primera contiene una declaración de variables y constantes, que también dispone el lenguajes aunque su uso no es tan directo puesto que para almacenar o recuperar los valores es necesario hacerlo a través de la pila. En segundo lugar, se definen una palabra para controlar el acceso desde teclado del intento del usuario, que se representa mediante una cadena de caracteres. Éstas, son operadas de manera similar al lenguaje C mediante utilización de punteros que, aunque, las referencias se hacen a través de la pila.

Dado que no existe en Forth un método nativo para elegir valores al azar, hay que definir algún método, como por ejemplo, la congruencia lineal implementada en tercer lugar mediante la definición de la palabra RANDOMN. Por último, la cuarta sección contiene el código de la palabra ADIVINA que dirige la ejecución del programa en sí.

Ahora es momento de dejar de hablar de lenguas muertas y volver al rol de padre, mi hijo Ian, el pequeño fanático de Star Wars, está reclamando una repetición de la pelea final de Episodio III.



http://www.forth.com/resources/apps/more-applications.html

http://www.drdobbs.com/open-source/smart-cards-and-the-open-terminal-archit/184410748



ADIVINA


3 CONSTANT INTENTOS

VARIABLE numero
VARIABLE vuelta
VARIABLE semilla

VARIABLE numero    ( Declaracion de variables)
VARIABLE vuelta   

HERE semilla !    ( la semilla arranca con el valor de la dirección de memoria)

: INPUT$ ( Palabra para efectuar input de hasta 2 caracteres)
         PAD 1+
         2 ACCEPT
         PAD C!
         PAD
;

: RANDOMN  ( Esta palabra recibe un valor limite de numeros aleatorios y actualiza la semilla)
        semilla @ 31421 * 6927 + DUP semilla ! swap mod
;


: ADIVINA
       
        CLS
       
        11 RANDOMN                    ( Numero al azar entre 0 y 10)

        numero !                    ( El valor elegido que quedó en el tope de pila y se guarda en la variable)
       
       
        CR ." Adiviná el numero que pensé, tenés " INTENTOS . ." intentos " cr
       
       
        1 vuelta !                                        ( Vuelta es 1)
       
        BEGIN
            cr ." Intento "  vuelta @ .  ." : "
           
            INPUT$ COUNT NUMBER?                        ( Input y conversión de cadena a entero)
            2DROP                                        ( Se tiran los flags de la conversión, queda en el tope el número ingresado)
           
            dup                                             ( Copia del número ingresado, para la siguiente comparación)
           
            numero @ <> IF  vuelta @ 1 + vuelta !  THEN  ( Si no se adivinó, se da una vuelta más)
           
        numero @ =   vuelta @ INTENTOS >  OR UNTIL         ( En pila está el numero ingresado. Se sale si el igual al elegido o si hay más de 3 vueltas)
       
        CR
         vuelta @ INTENTOS > IF ." PERDISTE! ERA EL " numero @ . ELSE ." ACERTASTE" THEN        ( Resultados)
        CR
;
       
   





,