 In his blog, Peter Christensen started a 
list of companies using Lisp 
to build their software or run their businesses. It is a little-known fact that
CoCreate, the company I work for, relies quite a bit on Common Lisp in its
flagship product OneSpace Modeling.
In fact, Lisp and C++ are our main implementation languages!
In his blog, Peter Christensen started a 
list of companies using Lisp 
to build their software or run their businesses. It is a little-known fact that
CoCreate, the company I work for, relies quite a bit on Common Lisp in its
flagship product OneSpace Modeling.
In fact, Lisp and C++ are our main implementation languages!
CoCreate OneSpace Modeling is a 3D CAD modeler built on
a concept called "explicit modeling". C++ is used mainly in the modeling kernel,
while Lisp dominates the UI, the application logic, many add-on modules, and the
API. The Lisp part of the project is safely in the 7-digit lines of 
code range. I don't know much about the other large Lisp projects out there,
and LOC isn't exactly the greatest way to compare application complexity
anyway, so I'll play safe and just say that this is certainly a non-trivial
Common Lisp project.
Back in 1995, when we were still a division of Hewlett-Packard, we published an
article in "HP Journal" which outlines why we chose Common Lisp and what we're
doing with it in the product. The article is still available at
http://www.hpl.hp.com/hpjournal/95oct/oct95a7.pdf. Since then, the application
changed a lot, of course - we even renamed it twice 

 But much of what is said 
in the article about Lisp still applies.
The HP Journal article concluded:
Common Lisp is also used as a user accessible extension
language for HP PE/SolidDesigner. It is a standardized, open
programming language, not a proprietary one as in HP
PE/ME10 and PE/ME30, and the developers of HP PE/SolidDesigner 
believe that this will prove to be an immense advantage.
SolidDesigner was the original product name; ME10 and ME30 were predecessor
products which implemented their own little macro interpreters. Back then,
we were a bit cautious about the potential benefits we'd reap,
as the product was still in its early days. By now, however, we can say
that Common Lisp was a key factor in helping a fairly small team of developers 
keep pace with the big guns in the industry, due to all the well-known productivity 
features in Lisp, such as macros, the REPL, or automatic memory management.
The HP Journal article describes how we use macros to define
a domain-specific language called 
action routines, which are 
state machines which guide users through commands. Later, we extended that 
concept by automatically generating UI for those commands: Using the 
sd-defdialog macro, application developers can implement 
full-blown commands in just a few lines of code, without having to write 
any (or at least hardly any) code for services such as:
-  Automatic "macro recording" of commands
-  Context-sensitive online help
-  UNDO support
-  Command customization (commands can be started from toolbars,
     menus, a user input line, or from our "taskbar")
-  Sequence control (dependencies of user inputs on other
     input)
-  UI creation and layout
-  Adherence to UI style guides
-  Graphical feedback both in the UI and in 3D graphics windows
-  Type and range checks for input data
-  Automatic unit conversions (imperial to metric etc.)
-  Prompting
I've been planning to blog more on 
sd-defdialog for some time, and hope 
to get around to it Real Soon Now.
Needless to mention, I guess, that I made sure that CoCreate is now 
also part of Peter's great list... .-)
PS: If you're interested, check out my 
other blog posts related to CoCreate Modeling or the 
CoCreate Modeling FAQ.
Previous month: Click 
here.