Macintosh Programmer's Workshop ( MPW ) es un entorno de desarrollo de software para el sistema operativo Mac OS clásico , escrito por Apple Computer . Para los desarrolladores de Macintosh , fue una de las principales herramientas para crear aplicaciones para System 7.x y Mac OS 8.x y 9.x. Inicialmente, MPW estaba disponible para su compra como parte del programa de desarrolladores profesionales de Apple, pero Apple lo convirtió en una descarga gratuita después de que fuera reemplazado por CodeWarrior . En Mac OS X fue reemplazado por Project Builder IDE , que finalmente se convirtió en Xcode .
MPW proporcionaba un entorno de línea de comandos y herramientas, incluyendo ensambladores 68k y PowerPC, así como compiladores Pascal , C y C++ . El entorno de shell es algo similar a los shells de Unix en diseño, pero está diseñado en torno al conjunto de caracteres y la GUI de Macintosh , reemplazando el entorno de terminal habitual con una interfaz de "hoja de cálculo", que permite al usuario seleccionar y ejecutar secciones arbitrarias de un script de shell o rehacer comandos sin tener que volver a escribirlos. Además, las herramientas de línea de comandos se proporcionaban comúnmente con una interfaz gráfica algo estandarizada llamada Commando que proporcionaba acceso limitado a las capacidades de línea de comandos del programa. Los depuradores no estaban integrados en MPW como la mayoría de los IDE de hoy, pero los compiladores de lenguaje admitían el formato de archivo de información de depuración simbólica utilizado por el depurador. MPW admitía un depurador de nivel de fuente llamado SADE (Symbolic Application Debugging Environment). SADE no era una herramienta de MPW, sino que se ejecutaba como una aplicación separada con una interfaz de usuario similar a MPW.
Los compiladores de Apple tenían algunas características que no eran comunes en otras plataformas: por ejemplo, el compilador de Pascal estaba orientado a objetos, mientras que los compiladores de C y C++ incluían soporte para cadenas con prefijo de longitud (necesarias para las API orientadas a Pascal).
Pascal era el lenguaje original preferido de Apple para el desarrollo de software de Macintosh, [1] y MPW fue lanzado inicialmente solo con soporte para Pascal. El compilador AC fue lanzado con MPW 2.0. El compilador MPW C fue escrito bajo contrato para Apple por Greenhills , una variante para Macintosh del compilador Green Hills C diseñado especialmente para Apple y que era similar a la versión que estaba disponible para Lisa Workshop. [2] [3] Además, el compilador MPW C original era conocido por sus mensajes de error casuales y frecuentemente humorísticos ("ya hicimos esta función"), [4] así como por dirigirse ocasionalmente a los usuarios por su nombre. [5] Estas peculiaridades no continuaron después de la transición a PowerPC, cuando Apple reemplazó los originales con compiladores escritos por Symantec. El soporte para Pascal ya no se brindó a mediados de los 90 debido a la disminución de la popularidad del lenguaje. MPW siempre estuvo dirigido a una audiencia profesional y rara vez fue utilizado por desarrolladores aficionados debido al considerable precio del paquete; En el momento en que se convirtió en software gratuito, hacía tiempo que había sido reemplazado por las ofertas de Symantec y Metrowerks , así como por las propias herramientas de desarrollo de Apple heredadas de NeXT y distribuidas de forma gratuita con OS X. También estaba disponible ocasionalmente como un entorno contenedor para compiladores de terceros, una práctica utilizada tanto por Metrowerks como por Absoft , entre otros. Apple ha descontinuado oficialmente el desarrollo posterior de MPW y la última versión de OS X que lo ejecuta es 10.4 'Tiger', la última en soportar el entorno Classic. Apple mantuvo un sitio web y listas de correo que respaldaban el software mucho después de su discontinuación, pero ese sitio ahora redirecciona a la página de Xcode.
El MPW Shell ofrecía la posibilidad de redirigir la salida a archivos y también a ventanas. Si un archivo estaba abierto, la salida iría al archivo y a la ventana abierta. Esta redirección de la salida requería una importante modificación de las llamadas al sistema de archivos, de modo que las herramientas no tuvieran que hacer nada especial para heredar esta característica: el MPW Shell hacía todo el trabajo.
El lenguaje de comandos de MPW Shell se basaba en el lenguaje csh de Unix , pero se amplió para admitir las principales características de la interfaz gráfica de usuario de Macintosh. Tenía comandos simples para crear menús, cuadros de diálogo (avisos) y nuevas ventanas de shell. Se podía controlar el cursor y se podían adjuntar fácilmente scripts o herramientas de MPW a un elemento de menú. Se podían especificar atajos de teclado de comando. Se podía controlar el tamaño y la ubicación de las ventanas. Estas características eran populares en entornos de producción comercial, donde los procesos de creación y empaquetado complicados se controlaban mediante scripts elaborados.
El shell tenía algunas diferencias importantes con respecto a sus contrapartes de Unix. Por ejemplo, el Mac OS clásico no tenía nada comparable con el fork() de Unix , por lo que las herramientas MPW se llamaban efectivamente como subrutinas del shell; solo una podía estar ejecutándose en cualquier momento, y las herramientas no podían ejecutar otras herramientas por sí mismas. Estas limitaciones fueron la inspiración para el proyecto MacRelix, un "sistema tipo Unix" para el Mac OS clásico. [6]
En términos funcionales, una hoja de cálculo es una combinación entre un documento de editor de texto y una ventana de xterm . Cada ventana de hoja de cálculo está vinculada de forma persistente a un archivo. El usuario puede escribir cualquier cosa en cualquier parte de la ventana, incluidos comandos, que se pueden ejecutar mediante la tecla Intro del teclado; la salida del comando aparece en el punto de inserción. A diferencia de una ventana de xterm, una hoja de cálculo de MPW siempre está en modo de edición visual y el usuario puede reorganizarla libremente. Por lo tanto, una hoja de cálculo puede ser puramente un script de comandos o puramente un documento de texto o una mezcla de ambos: un documento integrado que describe el historial, los procedimientos de mantenimiento y los resultados de las pruebas de un proyecto de software. El editor de texto comercial BBEdit conserva una característica que denomina "hojas de cálculo de shell" en Mac OS X. El editor de texto Emacs proporciona búferes de shell, una característica similar que funciona en todas las plataformas.
MPW incluía una versión de make . Su sintaxis era conceptualmente similar a la de make de Unix, pero utilizaba el carácter f largo de MacRoman para indicar dependencias. Más importante aún, dado que las limitaciones del shell impedían que el programa make ejecutara herramientas por sí mismo, tenía que funcionar componiendo un script de acciones de compilación/enlace para ejecutar y luego entregándolo al shell para su ejecución. Si bien esto era lo suficientemente bueno la mayor parte del tiempo, impedía que los makefiles pudieran tomar decisiones sobre la marcha en función de los resultados de una acción anterior.
Aunque no se implementó como herramientas MPW, el paquete también vino con varios depuradores de nivel de fuente a lo largo de su historia; SourceBug y SADE (Symbolic Application Debugging Environment) se usaron en sistemas MC680x0, mientras que Power Mac Debugger (conocido durante el desarrollo como R2Db [7] ) proporcionó servicios de depuración tanto locales como remotos para sistemas PowerPC, este último mediante el uso de un programa de servidor conocido como "debugger nub" en la computadora que se estaba depurando.
MPW incluía un conjunto de bibliotecas estándar de C suficientes para que los desarrolladores crearan sus propias herramientas MPW. Muchas utilidades de Unix podían ser trasladadas con pocos cambios. Un punto de dificultad era la convención de nueva línea de Mac OS , que era diferente de Unix. Otro era el separador de nombres de ruta , : en Mac OS, pero muchas utilidades de Unix asumían "/". Muchas utilidades de Unix también asumían que los nombres de ruta no tendrían espacios incrustados, una práctica común en Mac.
Durante varios años, la cadena de herramientas GNU incluyó soporte de portabilidad para MPW como parte de libiberty . Esto se utilizó para dar soporte a los compiladores cruzados alojados en MPW que utilizaban General Magic y otros desarrolladores.
MPW fue creado a finales de 1985 por Rick Meyers, Jeff Parrish y Dan Smith (ahora Dan Keller). Se iba a llamar Macintosh Programmer's System o MPS (observe que, casualmente, los tres últimos nombres comienzan con MPS). "MPS" siempre ha sido la firma del creador de MPW Shell como resultado de esto. Dado que MPW iba a ser el sucesor de Lisa Workshop, decidieron cambiarle el nombre a Macintosh Programmer's Workshop. Antes de la llegada de MPW, las aplicaciones Mac tenían que desarrollarse en forma cruzada en Lisa.
El compilador MPW Pascal desciende del compilador Lisa Pascal. Larry Tesler de Apple trabajó con Niklaus Wirth para crear extensiones de Object Pascal que Ken Doyle incorporó en una de las últimas versiones del compilador Lisa Pascal. Esto permitió que MacApp .
Entre los primeros colaboradores se encuentran Rick Meyers (líder del proyecto e intérprete de comandos de MPW Shell), Jeff Parrish (editor de MPW Shell), Dan Smith (comandos de MPW Shell), Ira Ruben (ensamblador y muchas de las herramientas, incluidas Backup, PasMat y más), Fred Forsman (Make, Print, SADE y procesador de macros de ensamblador), Al Hoffman (compilador de Pascal), Roger Lawrence (compiladores de Pascal y C, incluidos los mensajes de error), Ken Friedenbach (enlazador), Johan Strandberg (Rez, DeRez, RezDet), Steve Hartwell (bibliotecas de C) y Dan Allen (MacsBug, editor). El grupo Apple Numerics también contribuyó con bibliotecas matemáticas.
MPW 1.0 se completó el 24 de septiembre de 1986. Una fuga de memoria de shell se solucionó el 10 de octubre de 1986, y nació MPW 1.0.1. MPW 2.0 se completó el 20 de julio de 1987. MPW 3.0 se realizó el 30 de noviembre de 1988 e incluyó un compilador de C completamente nuevo. [8] Casi al mismo tiempo, la versión beta del compilador de C++ , así como MacApp 2.0 (para Object Pascal) estuvieron disponibles. [9] MPW 3.1 y 3.2 llegaron en los siguientes años, con MPW 3.3 lanzado en mayo de 1993, agregando soporte de herramientas distribuidas y enlaces incrementales. [10] MPW 3.4 se completó el 14 de julio de 1995, y MPW 3.5 se terminó el 17 de diciembre de 1999. MPW 3.6 estaba en desarrollo cuando el trabajo se detuvo a fines de 2001.
Durante los últimos años de MPW, Greg Branche apoyó a MPW de manera no oficial a través de la lista de correo MPW-dev de Apple. La lista y el servidor lists.apple.com que la alojaba estaban planeados para ser cerrados el 17 de enero de 2014, [11] una decisión que luego fue revocada. [12]
MPW todavía se puede utilizar para desarrollar para Mac OS X , pero el soporte está limitado a aplicaciones Carbon para computadoras basadas en PowerPC . Para desarrollar aplicaciones Mac OS X basadas en otras tecnologías, se debe utilizar Xcode u otro entorno de desarrollo compatible con OS X. MPW también incluía un sistema de control de versiones llamado Projector; este ha sido reemplazado por los sistemas de control de versiones modernos y ya no es compatible con Mac OS X.