This is the mail archive of the guile@cygnus.com mailing list for the guile project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Another use for Guile/Scheme/Lisp


I am sitting here trying to translate Python into Guile.  It has
reminded me why I love the Scheme/Guile/Lisp language, or at least the
external representation.  It is clean, formally specified and
consistent...

Which reminds me.  A lot of the focus for Guile is as a extension
language but there is an overlooked strength in the language and that
lies in its ability to be a communication protocol/RPC implementation.
The Scheme external representation can be used as an inter-process,
inter-system and inter-platform protocol.  Its strengths are:

Builtin message delimiting, with the list parenthesis.

Platform independent data representation.  The OSI Presentation Layer
bombed because of the complexity of representing external types across
platforms and language specifications (i.e. ASN.1) .  The CORBA spec
also goes to great lengths specifying language bindings.

You can use the builtin read/eval/print procedures by providing ports
that allow interprocess communications.

You automatically have RPC functionality, with hardly any code added
to a Scheme implementation.  An application sends a message which is
eval(ed) by the peer.

The protocol allows one to extend the functionality of a peer (by
defining new procedures in the peer) without having to revise the
communication specification.  Using this you could reduce the
bandwidth between peers by creating high enough abstractions.  The
caveat being that the core functions are sufficient.  However with ffi
abilities even this can be got around.

The protocol is readable by human beings.  I have spent many hours in
front of protocol analyzers puzzling out a communications link.

In addition, other possibilties are: that a program could move its whole
self for execution on a different system as it needed different
resources, etc.  Of course issues like these need security measures,
but with certificates, encryption and such this type of communications
could be made secure.


Wade.