NewtonScript and other prototype-based languages

Posted by Peter J. Jones on

With news this week that Steve Jobs had passed away I took a moment to reflect on my obsession with Apple products over the years and was reminded of my passion for the Newton Message Pad. Beyond being a super cool gadget the MessagePad introduced me to prototype-based languages through NewtonScript. Strangely enough, it was Steve Jobs who canceled the Newton project in 1998 after his return to Apple. I wasn’t too happy with him at the time.

In 1997, when I got my first MessagePad, I was splitting my time between C++ and Perl. Trying to learn NewtonScript twisted my brain and the utter lack of proper NewtonScript debugging tools didn’t make anything easier on me. After I got the hang of things, however, I really started to enjoy myself. It seemed like I could write sophisticated GUI applications with very little code, and absolutely no design skill.

NewtonScript was heavily influenced by Self, another prototype-based language. Self also influenced another prototype-based language that has become very popular, JavaScript.

What’s so different about prototype languages? It might help to consider that prototype-based languages are also referred to as classless object oriented languages. Class-based languages use classes to distribute behavior to objects through types and inheritance, whereas prototype-based languages do everything at the object level, on a per-object basis.

If you’re interested in playing with a prototype-based language NewtonScript probably isn’t the way to go, but one of these more active languages should pique your interest:

If you haven’t learned a new language this year maybe it should be a prototype-based one.

About the Author

Peter J. Jones has been a professional software engineer for over 20 years and is deeply passionate about helping programmers improve the skills of their craft. He is the author of Effective Ruby: 48 Specific Ways to Write Better Ruby. Peter can be reached through our contact page or his twitter account.