Prism Metaprogramming Tool released

Laurent Martelli martelli@iie.cnam.fr
24 Oct 1999 04:22:49 +0200


>>>>> "Jim" == Jim Little <jiml@inconnect.com> writes:

        [...]

  Jim> Prism development will proceed in four phases: * The "assembly
  Jim> language" phase.  * The "modern language" phase.  * The
  Jim> "domain-specific language" phase.  * The "TUNES" phase.

  Jim> During each phase, we shall extend the Prism environment to
  Jim> support new interoperable languages.  In the first phase, we'll
  Jim> teach Prism how to add and subtract.  In the second phase,
  Jim> we'll add interoperable structured and object-oriented
  Jim> languages.  In the third, we'll add domain-specific languages
  Jim> such as a GUI language, a database language, etc.  And in the
  Jim> last phase, we'll extend the "language" paradigm to include
  Jim> "interactive languages" like spreadsheets, word processors, and
  Jim> other tools.  At that point, there will be no difference
  Jim> between using and programming the computer, and we will have
  Jim> achieved TUNES' goals as I understand them.

Is it real necessary to have these 4 phases ? Why should we define
integer arithmetics before object orientation ?

  Jim> Here's the detailed plan for the first phase and the beginning
  Jim> of the second: * Create a parser for integers * Create programs
  Jim> to do integer arithmetic 

To be honest, integer arithmetic is alsmost the first thing I've done
with OIL :-). But I didn't have to create a parser. I'll probably do
one in the future, but it is not required. To avoid the parser, I just
defined two functions bin2int and int2bin, to convert from list of `0'
and `1' to integers, and vice-versa. Therefore, the user can type :

        add [bin2int (1 1)] [bin2int (1 0 1)]
        => 10094
        bin2int 10094
        => 10096 = (1 0 0 0)

(Yes I kow, the syntax is very unsual). 

10094 is the OID of the number 8, whose binary representation is the
list (1 0 0 0). 

So we can do an addition without having to parse integers. 

-- 
Laurent Martelli
martelli@iie.cnam.fr