WHAT IS IT?
ButterflyTM
is an elaborate set of Lisp libraries, which enables the straightforward development of coordinated, modular, and
concurrent computational processes. These processes differ from traditional operating system threads. They can but do
not have to be inter-related, they can be synchronized and they run in parallel or sequentially on the same host computer
system or they can be distributed on a multitude of machines that are connected in any possible networking arrangements.
Application
development does not have to be done in Lisp (although doing so would undeniably produce a very powerful application) .The foreign function interface (FFI) provided by Lisp as well as the API that is provided by SpectroDynamics
allow one to develop such applications using any major other language, e.g. C, C++, Java, etc.
WHY LISP?
It is not a coincidence that Lisp
is considered the "Queen of Languages". Lisp started as the lingua franca of the artificial intelligence
computing and symbolic processing communities in the 50's and all the way into the 80's, but it has evolved by now
to become the most powerful mathematical formulation of a super-programming language with unprecedented plasticity. It is
therefore known in the research communities as a language-building language.
Lisp enables the development of code that significantly follows the functional programming paradigm. Software modules
are conceived and structured as inter-related mathematical functions. They receive functional arguments e.g. as
input parameters, and upon completion they return appropriate values, which in turn feed other modules and
so forth. This approach has been arguably shown to be the best path towards mathematical correctness and verifiability
of code, especially when accompanied by strong-typing practices.
Lisp also enables the choice between strict evaluation and so-called lazy evaluation,
each one with its own set of flexible trade-offs, which allow the programmer to tune a solution to perfectly fit
the problem at hand.
Last,
but not least, Lisp allows experimentation by the programmer at the highest possible levels of abstraction liberating
him or her from the headaches and nightmares of mundane trivia and dangerous concepts as managing memory pointers. The programmer
therefore spends more time thinking about the actual problem at hand and not about how to make the computer's internal details behave
accordingly. High-levels of abstraction also minimize the number of code lines needed to produce a complete, robust, non-verbose,
and elegant solution.
There is a lot of research and it is confirmed by our own experience that a good Lisp program of a certain
length (e.g. measured in lines of code) will accomplish much more than what an alternative language implementation (i.e. C++,
Java, etc.) will at best only come close to, and at 15-20x the lines of code, effort and cost. Leaning on today's
world-class Lisp-compiler technology, Lisp dramatically enhances programmers' productivity, and not just
the capabilities of their software.
Most spectacularly, Lisp treats data as code and code as data. Lisp is the language par excellence
that allows one to write software-writing software. Lisp completely blurs the
boundary between read-time, compile-time and runtime. If a piece of running software, as part of its normal execution,
can also be made to write its own new piece of software (or, rewrite even itself, in a self-morphing scheme), it can also
easily call the Lisp compiler at run time as an ordinary subroutine to work on the automatically produced source
code thereby producing on-the-fly new executable code that can be put to work immediately on the spot.
No other programming language
comes even close to the possibilities that Lisp enables. It is not a coincidence that world-class organizations like NASA,
DARPA, etc. depend on advanced Lisp code for the delivery of software applications with extraordinary capabilities
and robustness.
If
you are interested in advanced Lisp-based development services or special assistance from SpectroDynamics, please click
on the following link: