Mpw Shell

MPW is Apple's Macintosh Programmer Workshop, a quasi-Unix-like development environment. A significant departure from the Mac's typical aversion to text-based interfaces, MPW is a good example to show that coders generally want different user interfaces than other users.

The MPW Shell application features a built-in scripting language and the ability to run programs compiled to run as MPW tools. It ships with 68K and PowerPC development tools for assembler, Pascal, and C (with support for early C++ features). Originally it was payware; now it's a free download. Various Unix-originated tools have been ported including grep, gzip, dmake, and perl (see MacPerl). There have even been multiple ports of gcc.

Also included is ToolServer?, which has the same capability as MPW Shell to run scripts and tools (even the ones using dialog boxes) but except for a status box and an austere set of menus has no user interface and must be operated by sending it 'Do Script' Apple events.


MPW Shell acknowledges both the graphic interface principles of the Mac and the textual conventions of Unix, and combines them to produce an environment that is, in my humble opinion, the worst of both worlds. MPW's model for documents is the worksheet, a typical Mac editing window but with some execute-this functionality thrown in. In practice this makes a horrible substitute for an actual command shell interface.

MPW Shell's biggest technical shortcoming is the inability to run more than one tool at a time; consequently, tools may not call other tools. That means dmake can't call the compiler. The perl tool can't call or be called by anything. Only MPW Shell scripts have executive power, and that language is rather painful to write in above a certain scale -- for example, it lacks any means to write subroutines. Apple's other, better known scripting languages (HyperTalk and AppleScript) both allow you to define subroutines (modeled as event handlers).

To compensate for these deficiencies I wrote my own Unix-like environment, Lamp (LampAintMacPosix?).

-- JoshuaJuran


EditText of this page (last edited March 22, 2006) or FindPage with title or text search