How Times change…


When Dad starting programming for the Mac it was in MacPascal (one quarter of freshman physics lab), then in Rascal [1] (on which he later worked), then LightSpeed Pascal (which became Think Pascal), and then Think C (previously LightSpeed C), and so on. [2]

However, when we were writing a Mac application back then we just needed to know one language (Pascal or C) and maybe some 68xxx assembler for interpreting what Macsbug was telling us (if writing low level code).  We did have to learn the Macintosh Toolbox which is equivalent to the class libraries of today (e.g., Cocoa) – Dad still has 2 feet of shelf space devoted to “Inside Macintosh” books from that era that probably should be recycled already :-).

In contrast, Dad is close to finishing an iPhone app for a client that displays data from a database on a server (and some live XML data feeds from the server).  To complete this project has required:

Server Side:

PHP, SQL, XSLT (+XPath), HTML, CSS, JavaScript, XML, Python, Apache2 config files, make files, command line syntax for svn, tar, pax, and various other command line tools.

iPhone Side:

Objective-C, HTML, CSS, JavaScript, XSLT (+XPath), XML, Property Lists (yes, just a variant on XML, but need to know the differences), and shell scripts (for a Run Script in Xcode).

So, the point is, Wow! The breadth of knowledge that is required to create the software we create today is astounding compared to what it was back when this adventure started 25 years ago.

Not the new Rascal languages (rascal-lang or the Rascal DSL meta programming language), the old one (dare I say original one 🙂) which was the first (or one of the first) native IDEs that would let you program the Mac in something other than assembly language without a Lisa (see 1985 entry at old one, but it was in development before then I believe).

For the history nuts, my older-than-40-memory says my complete sequence on the Mac was roughly:  MacPascal, Rascal, Consulair C, LightSpeed Pascal,  Think Pascal, Think C, Think C++ (TCL – Think Class Libraries), MPW Objective Pascal (MacApp) & C++, Metrowerks CodeWarrior C/C++ (PowerPlant), Xcode C (Carbon) and Objective C (Cocoa) and now on the iPhone Xcode Objective C (Cocoa Touch).

Some of the relevant history is here (Dad was there from 1984-1990 and hanging out and eventually working in the “DLab” from sometime in late 1985 or early 1986 onward).  The rest is work related from 1990 onwards.

Lots of other side languages for learning, fun and contracts over the years, some on the Mac, some not:  Basic & Pascal (high school, before Mac), 68k assembler (MacAsm originally), 8051 assembler, Java, Smalltalk, Lisp, Eiffel, Visual Basic, Visual C++, whatever PocketPC required (straight C? can’t remember), and so on.   What a strange soup of names.  What’s it all mean? ha!


3 Responses to “How Times change…”

  1. jeff Says:

    Sew it seams you have stitched together a fine quilted career

  2. Jack Corliss Says:

    I found (google) this old post of yours mentioning Lightspeed/Think Pascal. I hope you get this comment on a 7 year old post.

    I am writing (for a new website I am creating) a discussion the results of a model I wrote in 1988 on my Mac Plus, which simulated the early stages in the origin of life. The model shows the evolutionary possibilities for primitive “protocells” in a flow reactor (hot spring). I was checking my old listings and find I have a statement:

    mutationFactor := 1 + ((Random / MaxInt) / 100); {1 ± .01 maximum}

    It looks like I assumed that Random have a range of -MaxInt, MaxInt
    This would give mutationFactor the range in the comment.

    I know that this was not the range for Random in later versions of Pascal, which was 0,1 as far as I can tell from recent explorations with Google.

    The other possibility was that this was an early version of the code that I later debugged. I know that process went of for a while. That it was saved at all in backup that has survived the intervening decay of tapes and DVD’s is only because I had it also in an archive folder of my work at NASA Goddard on HDD backups that have been propagated along through time.

    Do you have any documentation for Lightspeed/Think Pascal?

    Thank you for you consideration of my question.

    Jack Corliss

    • Dad Says:

      Alas, I think I’ve recycled that particular documentation when we moved from our farm to the city for Geek’s college adventure. It’s possible I have some in a box as a bunch of my office is still waiting for the office space before being unpacked.

      However, I’m pretty sure that Random function is the one from Quickdraw and so Inside Macintosh Volume I has the documentation:

      FUNCTION Random : INTEGER;
      This function returns a pseudo-random integer, uniformly distributed in the range -32767 through 32767. The value the sequence starts from depends on the global variable randSeed, which InitGraf initializes to 1. To start the sequence over again from where it began, reset randSeed to 1. To start a new sequence each time, you must reset randSeed to a random number.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: