Menú principal

sábado, 29 de julio de 2017

MacPaint, el primer programa de dibujo para un ordenador personal


Ahora que Microsoft ha decidido renovar su programa Paint (no lo ha jubilado, simplemente le ha dado una nueva vida en el nuevo Paint 3D de Windows 10), es el momento de recordar al primer programa de dibujo de la historia del ordenador personal, MacPaint. Ambos programas de dibujo han ido de la mano de sus respectivos sistemas operativos. Paint de Microsoft estaba incluido en la primera versión de Windows 1.0 que salió al mercado en 1985 y MacPaint también iba incluido en la primera versión del Macintosh OS clásico, pero este salió al mercado un poco antes, en 1984. 

MacPaint no fue el primer programa de dibujo de la historia, ya que este honor lo tiene el programa SuperPaint desarrollado como no, por el equipo de Xerox ParkMacPaint fue creado como una herramienta para el fantástico primer Macintosh de 1984 como parte de un kit de utilidades para el sistema operativo. Fue programado por Bill Atkinson, el cual trabajó inicialmente en el equipo del fallido Apple Lisa. Durante su trabajo en el equipo del Lisa, Bill Atkinson estuvo trabajando en una versión para una librería gráfica llamado LisaGraf, llamado posteriormente QuickDraw en Macintosh. Este programa, QuickDraw, sería la herramienta con la cual se crearon todos los gráficos que posteriormente darían forma al sistema operativo Macintosh OS (iconos, fondos, ventanas, etc).


Video. Conferencia de Andy Hertzfeld y Bill Atkinson explicando MacPaint. Fuente.


Mientras Bill estaba desarrollando QuickDraw, comenzó a trabajar esporádicamente en un programa más sencillo orientado a dibujar bitmaps con el ratón utilizando pinceles y patrones. Esta herramienta fue de mucha utilidad para Bill, la cual utilizó para mejorar y probar nuevas características en QuickDraw. Esta herramienta se llamaba SketchPad (no confundir con el clásico SketchPad creado por el pionero de los gráficos de ordenador, Ivan Sutherland)

A principios de 1983 Bill cambió de trabajar en el equipo de Lisa y fue transferido al equipo del Macintosh, liderado por Steve Jobs. Su nueva misión era crear una aplicación de dibujo sencilla para el nuevo sistema operativo del Macintosh. Inicialmente la idea era crear algo parecido a LisaDraw pero Bill pensó que era demasiado complicado, así que pensó cómo crear una aplicación más sencilla al alcance de todos. Bill se acordó entonces de su viejo programa SketchPad que había desarrollado en el equipo de Lisa, así que desempolvó el código y se puso a trabajar. SketchPad pasó a llamarse MacSketch y posteriormente MacPaint.


Imagen 1. Primera versión de MacSketch. Fuente.

MacSketch utilizaba menus desplegables para los patrones y estilos pero Bill cambió este formato dándole un aspecto más familiar a día de hoy, las herramientas de dibujo y las paletas en un marco en la parte izquierda de la pantalla, que implementó en su nuevo MacPaint. También solucionó el problema del parpadeo cada vez que se movía un objeto o una imagen por pantalla utilizando un buffer de memoria oculto que activaba en la pantalla principal rápidamente justo cuando se soltaba el objeto. Gracias a este sistema, que también aplicaba al dibujo completo (buffers de memoria ocultos), podía realizarse de forma sencilla la operación deshacer (undo) al estar siempre detrás el buffer oculto con las modificaciones anteriores.

El conocido cubo de pintura, para rellenar de un color un area de la pantalla con un patrón seleccionado, también fue un invento de Bill. Utilizó un algoritmo de relleno (seed fill) para encontrar los pixeles vecinos del mismo color y así poder proceder a su relleno. Este algoritmo le sirvió también para implementar la función "lazo" para seleccionar zonas arbitrarias, sin forma geométrica, del dibujo. Esta opción costó un poco más de implementar ya que necesitaba un tercer buffer, y el Macintosh original no tenía demasiada memoria para mantenerlos todos activos. Otra característica fue implementar la opción de introducir texto en el dibujo. Esto que puede parecer sencillo en principio, era bastante complicado. Las primeras versiones no permitían editar el  texto una vez publicado en el dibujo, así que Bill trabajó en una rutina en ensamblador que permitía convertir el los pixeles en los que se había convertido el texto, en texto real. Para conseguirlo tuvo que crear tablas con patrones de las letras de cada tipo (font) y así comparar los pixeles del texto dibujado con las letras almacenadas en dichas tablas. En resumen, Bill creó un OCR primitivo que funcionaba bastante para las limitaciones de memoria y proceso que tenía el Macintosh original. Aunque tal y como nos cuenta Andy Hertzfeld, Bill eliminó esta característica de MacPaint en versiones posteriores, ya que temía que la gente lo utilizara más como un procesador de textos que como un programa de dibujo.


Imagen 2. Versión más actualizada de MacSketch. Fuente

Tenemos que destacar la gran atención que Bill Atkinson le ponía a la claridad y optimización del código fuente que escribía. Estaba preocupado por que todo el mundo entendiera perfectamente el código, hasta el punto de que llegaba a reescribir porciones del mismo (o incluso todo el programa), aunque funcionaran correctamente. También, como consecuencia directa de esta especial atención al código, le permitía detectar errores (bugs) fácilmente. En este enlace puedes descargar el código fuente de la versión MacPaint 1.3 y en ente otro enlace puedes también descargar el código fuente de QuickDraw.

MacPaint se terminó de programar en octubre de 1983, funcionando sobre un Macintosh el cual tenía un procesador de sólo 8Mhz, 128Kb de memoria RAM y además no tenía implementado operaciones de coma flotante. Además tenía que coexistir en esos 128Kb de RAM con QuickDraw y el sistema operativo, toda una proeza de la programación. La última versión de MacPaint salió en 1988 y se dejó de utilizar en 1998.


Imagen 3. MacPaint versión 1.5, con todos los iconos y patrones clásicos, Fuente

Para terminar, vamos a contar dos anécdotas. La primera, como no, está relacionada con Steve Jobs. Jobs apreciaba mucho el trabajo de Bill y cuando un reportero le preguntó cuántos años se habían necesitado en programar QuickDraw, Jobs le preguntó a Bill y este respondió "bien, he estado trabajando de forma intermitente durante cuatro años". Entonces Steve le dijo al reportero "veinticuatro años para un programador", aludiendo que cada año trabajado por Bill era el equivalente a seis años de cualquier otro programador.


Imagen 4. Steve Jobs y Bill Atkinson. Fuente.

La segunda anécdota habla del código fuente de Bill y su obsesión por optimizarlo. Los jefes de proyecto obligaban a los programadores a enviar un informe semanal con el número de líneas de código que habían escrito. A Bill esto le parecía ridículo ya que debido a la continua optimización de su código, este tenía cada vez menos líneas. Así que en sus informes aparecían números negativos, como por ejemplo, -2000 líneas de código. Grande Bill.

1 comentario:

  1. Interesantísimo documento para los nostálgicos de la informática clásica como yo... ;-)

    ResponderEliminar

Entrada destacada

Proteger tu cuenta de Google y de Gmail con Latch Cloud TOTP #Latch #Gmail #Google

La semana pasada se liberó la nueva versión de Latch y nuestro compañero Chema Alonso hizo un repaso de todo ello en su artículo Latch...

Otras historias relacionadas

Entradas populares