Project Description
In this Project, I have created a WWW page containing information about
the NewtonScript Programming language and a simple Java applet
What is NewtonScript ?
NewtonScript, developed for the Apple Newton PDA platform, is a prototype-based
programming language. Rather than two levels of abstraction, class and object,
there is just one, the object. Major design goals of the language were small
memory consumption of the created programs and the ability to easily program
graphical user interfaces. Both are well met by prototype-based languages. A
third design goal, good learnability, was attained by an easy syntax.
NewtonScript in a Nutshell:
The Apple Newton MessagePad was introduced into the market on August 3, 1993.
With the Message Pad the former Pepsi manager and then CEO of Apple Computer,
John Sculley coined the term Personal Digital Assistant, or PDA, which is the
common term today for a small handheld computer to perform personal
organisation
tasks like note taking, scheduling, and communication. The Newton has a
built-in handwriting recognition capability that allows to recognize almost
natural
handwriting anywhere in the screen area.
The original Message Pad had a 20 MHz Acorn Risc Machine (ARM) 610 processor,
640 KB RAM and 4 MB ROM. The RAM was further divided up into system RAM of 482
KB and only 158 KB available to programs for their code and data. Heap space
was only 50 KB. These memory constraints had a big influence on the design of
NewtonScript, the main application language for the Newton. The language was
designed by Walter R. Smith who also wrote the interpreter and the compiler for
NewtonScript and parts of the Newton's operating system.
The language design was influenced by LISP and SELF, a prototype-based language
developed at Stanford university and published in 1988.
NewtonScript is like SELF prototype-based. Rather than two different layers of
abstraction, classes and objects, found in class-based languages like Eiffel or
C++, prototype-based languages only have objects. Functions are treated as
objects as well, and can be assigned to variables or passed as function
parameters.
This plus the fact that all statements return a value gives NewtonScript a
little bit of a functional aspect. The influence of LISP is obvious here.
NewtonScript is as default compiled into byte code and executed by an
interpreter, though compiling NewtonScript to native code is possible at a
per-function
granularity and recommended for performance-critical program parts.
NewtonScript, like most dynamic languages, has a built-in garbage collection,
thus freeing
object storage space explicitly is not necessary.
Objectives of NewtonScript:
- To give you a competitive edge by enabling you to get your software
out fast.
- To lower your maintenance and support costs by
letting you produce bug-free software -- software that
works the first time around.
- To allow you to react quickly to market demands by
producing software that is easy to change and extend in
response to user requests.
- To preserve your investment by giving you robust
software that can be reused in many different
developments.
NewtonScript : Summary
- A comprehensive approach to the
construction of successful software.
- The goal: improve the productivity of
your software process; enable you to bring
your products out before everyone else;
enable you to satisfy your customers and
gain new business.
- The only approach that covers analysis, design and
implementation in a single framework.
- Includes a language, a methodology, and a complete graphical
development environment.
- Language: widely recognized as the best and simplest
implementation of object-oriented concepts. Clean, simple,
readable, powerful, easy to learn.
- Methodology: based on Design by Contract -- building
reliable software by defining precise contracts between its
various components, and making sure the software construction
process enforces these contracts.
- Sophisticated mechanisms for assertions, inheritance (single,
multiple and repeated), exception handling, genericity.
- Compilation technique using C as the intermediate language
and generating executables whose speed rivals with or exceeds C
or Fortran.
- Rich set of libraries covering graphics, the Web, networking,
fundamental algorithms and data structures, lexical analysis,
parsing, etc.
- The most effective solution available today for the professional
software developer