sas@BBN-VAX.ARPA (08/09/85)
From: Seth Steinberg <sas@BBN-VAX.ARPA> Don't let the mystics get you down. Porting a programming language to port an application is an excellent idea. We used it to get TK!Solver working on a number of machines. When IBM announced their PC in mid effort we just spent a week redoing the interpreter. In addition we had a very "strict" interpreter running on a mainframe which did massive error checking (e.g. Is there anything still allocated which is not being referenced? We didn't want a PC based garbage collector). The original language IL was internally very Forth-like but we slapped a LISP syntax with compile time type checking on top of it. As time went by it became less Forth-right internally and more p-code-ish and finally we just generated in-line code for the 8088 version when the IBM PC became a bit of a standard. The main thing to remember is to keep the nucleus of your language small and simple w.r.t implementation. If you choose PL/I (as we did back at MIT) choose a minimal subset which you already understand how to implement. I would recommend a LISP-like syntax since you can provide a simple compile time pseudo-LISP interpreter to do macro transformations (punt garbage collecting, allocate everything for a compilation in a big bag and throw it out at the end of the compilation) which can off load a lot of work from the compiler developers. As far as certain detractors of this methodology go, remember that 10 years ago they would have given you a hard time for choosing to use a higher level language at all and 10 years before that for using an operating system. The "real world" had to come from somewhere. Seth Steinberg SAS @ BBN-VAX