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 Park.
MacPaint 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).
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.