Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!utgpu!water!watmath!clyde!rutgers!ames!lll-tis!mordor!jdb From: jdb@mordor.UUCP Newsgroups: comp.sys.mac Subject: Re: What makes programming the Mac difficult? Message-ID: <10429@mordor.s1.gov> Date: Thu, 4-Jun-87 12:09:21 EDT Article-I.D.: mordor.10429 Posted: Thu Jun 4 12:09:21 1987 Date-Received: Sat, 6-Jun-87 07:56:22 EDT References: <869@apple.UUCP> <725@unccvax.UUCP> <1118@csib.UUCP> <729@unccvax.UUCP> <6512@ism780c.UUCP> Reply-To: jdb@mordor.UUCP (John Bruner) Organization: S-1 Project, LLNL Lines: 50 I've been thinking about this subject for some time, but I still have difficulty defining exactly why I find programming the Mac so much harder than programming other machines (particularly UNIX machines). I think that part of the reason for this perception is that (prior to MacApp, at least) the Mac programmer has been required to worry about a large number of interface-specific details, each of which is managed through detailed data structures. By contrast, UNIX programs (other than screen editors or visually-oriented games) have a significantly simpler interface to the underlying system. I haven't done much coding in X (or Suntools, or NeWS [what a stupid name!], or ...), but I suspect that some of this advantage is now disappearing. I have written (BSD) UNIX programs which play with different sockets, XDR/RPC, NFS, etc. protocols, often requiring quite a bit of detail. Transporting a simple UNIX-like program to the Mac (e.g. to run as a tool under MPW) is not particularly difficult. Ever since I first read *Inside Macintosh* I have felt that the interface to the Mac O/S is too low-level. (I am annoyed, for instance, that if I'm using XON/XOFF output flow control the received XON/XOFF characters which the serial driver receives not only stop/start output but also are passed by to my applications as input.) One consequence of this low-level interface is that enhancements and bug fixes invariably seem to break working programs. [One thing which makes UNIX easier for me is that I know how the internals work. (Or at least I once knew. Our BSD kernel is huge, and I can't claim to understand every one of the tens of thousands of source lines.) That understanding biases my comparison with the Mac, because the familiar is always easier than the less-familiar.] Some of my complaints about Mac development have been or are being resolved. These include slow/bad compilers and poor debugging facilities. MPW C is good (although slow), LightspeedC is very fast and accepts modern C constructs. I still sorely miss multitasking, though. I've heard all of the arguments about how we don't really need multitasking if there's enough memory and processor speed. I don't believe them. I know how I use my Mac and how I use my Sun (and how I once used a V7 PDP-11), and I want multitasking. I've already been ridiculed for my editor preferences, so I won't comment on that again. The state of Mac program development is considerably different than it was a couple of years ago, but I think it still has a ways to go. -- John Bruner (S-1 Project, Lawrence Livermore National Laboratory) jdb@mordor.s1.gov ...!seismo!mordor!jdb (415) 423-4848