# Re: xdr programming/access from lisp

Joel,

We are currently implementing a LISP program as a server to external
programs.  We plan to use XDR as the external data representation
language for portability, standards, uniformity, etc.

...

I could really use some good ideas on how to approach this problem.
It seems that my current soapbox with LISP is the inability to easily
pass data structures around in a heterogenous programming environment.
I certainly don't want to rewrite my LISP application in C (or C++).
Some parts of our overall system can be written directly in C (or C++)
but other parts we want to keep in LISP.

Although in a way slightly different from what you want, we have been
using in our Fortran parallelizer project an in-house developed tool
named NewGen that allows you to freely interchange data between possibly
different programming worlds (currently C and CommonLISP).  NewGen
doesn't use XDR as its representation format, although it probably would
in an industrial version of it (if it existed).  Here is the abstract of
the technical memo that describes NewGen:

\begin{abstract}

NewGen is a software engineering tool that helps programmers define and
implement sophisticated data types. Data {\em domains} are defined with
a high level specification language, called {\em DDL}, that allows user
defined domains to be built over {\em basic} domains with operators like
Cartesian product, union, list or array.

NewGen analyzes a set of specifications and produces a collection of
macros, functions, predicates, and pre-defined constants that enable
programs to create, initialize, access, update, and delete objects of
these types as if the programming language had been especially tailored
to manipulate {\em these} data types.

NewGen promotes the ideas of {\em functional abstraction} and {\em
evolution process} as ways to ease the prototyping, development and
evolution of applications that use such multi-language program
generators.  Applications that are developed with NewGen data types can
share complex data structures while being written partly in C and partly
in CommonLISP, the two currently supported programming languages.

NewGen ideas have been validated in practice; this tool is heavily used
for two projects that focus on the development of state-of-the-art
parallelization strategies for Fortran programs.

\end{abstract}

NewGen is public-domain and can be obtained via anonymous ftp on
isatis.ensmp.fr.

Pierre
--
Pierre Jouvelot
. CRI, Ecole des Mines de Paris, France 	jouvelot@ensmp.fr
. LCS, MIT, USA					jouvelot@lcs.mit.edu