From: Jon Haugsand
Subject: Using CL where correctness and robustness is required?
Date: 
Message-ID: <yzod7fco4uf.fsf@naos.nr.no>
I am currently considering in undertaking to participate in a project
to develope financial applications where there are very high
requirements that the programs work correctly and that they don't
crash. To choose implementation language at this stage is not a
question. First there are specification, architecture and environment
decisions. There are partners, risk analyses and so on. (All the dull
parts of application developments :)

Anyway, sooner or later the project must make language decisions. And
being a lisp devotee I hope we can at least write /some/ applications
in CL. However, is this wise? And what arguments should I put forward
when it is time due? 

The project is, I believe, considering to use languages like Delphi,
Java and C++, and to use middleware technology like Corba and EJB.

Any viewpoint is welcome. Thanks,

-- 
Jon Haugsand
  Norwegian Computing Center, <http://www.nr.no/engelsk/> 
  <···················@nr.no>  Pho: +47 22852608 / +47 22852500, 
  Fax: +47 22697660, Pb 114 Blindern, N-0314 OSLO, Norway

From: Kaelin Colclasure
Subject: Re: Using CL where correctness and robustness is required?
Date: 
Message-ID: <wuhf4oulsi.fsf@soyuz.arslogica.com>
Jon Haugsand <············@nr.no> writes:

> I am currently considering in undertaking to participate in a project
> to develope financial applications where there are very high
> requirements that the programs work correctly and that they don't
> crash. To choose implementation language at this stage is not a
> question. First there are specification, architecture and environment
> decisions. There are partners, risk analyses and so on. (All the dull
> parts of application developments :)
> 
> Anyway, sooner or later the project must make language decisions. And
> being a lisp devotee I hope we can at least write /some/ applications
> in CL. However, is this wise? And what arguments should I put forward
> when it is time due? 
> 
> The project is, I believe, considering to use languages like Delphi,
> Java and C++, and to use middleware technology like Corba and EJB.
> 
> Any viewpoint is welcome. Thanks,

Are you starting with a clean slate, or is there an existing
infrastructure of libraries, etc. that this project will have to
coexist with / make use of? And you may be devoted to Lisp, but how
big is your team and how many others know Common Lisp?

Also, what is the expected lifespan of the system? A year? A decade?
How much evolutionary pressure is likely to occur over that lifespan?
In other words, how radical and how frequent are changes likely to be?

Never have a team learn a language by implementing a mission-critical
application with it.

The fact is, you can write nominally correct and reliable code in any
programming language. (Yes, even C++!) Of course, Greenspun's rule
applies -- particularly if you're realistic[1] in your approach to
supporting high availability.

Over the lifespan of a system, in the presence of moderate to high
evolutionary pressures, dynamic languages win big. If there is little
or no evolutionary pressure[2], a static language may be a better
choice.

-- Kaelin

[1] Meaning that, in real life, people make mistakes. So a system that
*has* to keep running occasionally will have to (at least attempt to)
do so in the presence of errant code. This is best supported by a
language which supports run-time checking and has a robust exception
mechanism. Ideally calling- vs. unwinding-exceptions.

[2] Consider, for example, the implementation of a TCP/IP stack. The
requirements are exactly and thoroughly defined, and change
infrequently.
From: Jon Haugsand
Subject: Re: Using CL where correctness and robustness is required?
Date: 
Message-ID: <yzok89kymas.fsf@naos.nr.no>
* Kaelin Colclasure
> Are you starting with a clean slate, or is there an existing
> infrastructure of libraries, etc. that this project will have to
> coexist with / make use of? And you may be devoted to Lisp, but how
> big is your team and how many others know Common Lisp?

That's the catch. Not many have heard of it. However, the starting
state is quite clean I think. It is a complete rewrite.

> 
> Also, what is the expected lifespan of the system? A year? A decade?
> How much evolutionary pressure is likely to occur over that lifespan?
> In other words, how radical and how frequent are changes likely to be?

Changes I do not know yet. However, the lifespan is decades, so some
changes are bound to come.

> 
> Never have a team learn a language by implementing a mission-critical
> application with it.

Yes, I know. It is the big problem.


Thanks,

-- 
Jon Haugsand
  Norwegian Computing Center, <http://www.nr.no/engelsk/> 
  <···················@nr.no>  Pho: +47 22852608 / +47 22852500, 
  Fax: +47 22697660, Pb 114 Blindern, N-0314 OSLO, Norway
From: Samir Sekkat
Subject: Re: Using CL where correctness and robustness is required?
Date: 
Message-ID: <MPG.1491fa245d16b06d98968e@news.compuserve.com>
In article <···············@naos.nr.no>, ············@nr.no says...
> Anyway, sooner or later the project must make language decisions. And
> being a lisp devotee I hope we can at least write /some/ applications
> in CL. However, is this wise? And what arguments should I put forward
> when it is time due? 
> Any viewpoint is welcome. Thanks,

One of the greatest aspects of CL is that the language is a 
"programable and extensible programming language" (John Foderaro)
In non-technical terms it is a language you can adapt to your problems.

I have been working as consultant in several large client/server projects 
with more conventional technologies, and we always had the same problem:
we knew where the technical problems and challenges were, but we could  
provide the team only with a framework covering 80% of the problems. 

The rest, the "20% nasty problems" could not be solved because of 
language limitations. And those 20% were the source of _many_ errors, 
application instability and project delays.

My experience with CL is that, for nearly most of the challenges, it is 
possible to write a solid framework _because_ it is a language designed 
to give _you_ the power to extend it in nearly each possible way.

And this, reduces considerably error sources, speeds up development, and 
shortens nights before major releases.

-- 
Samir Sekkat
Munich, Germany
············@bigfoot.DELETETHIS.com
From: Samir Sekkat
Subject: Re: Using CL where correctness and robustness is required?
Date: 
Message-ID: <MPG.1491fbbd62ea26f898968f@news.compuserve.com>
In article <···············@naos.nr.no>, ············@nr.no says...
> I am currently considering in undertaking to participate in a project
> to develope financial applications where there are very high
> requirements that the programs work correctly and that they don't
> crash. To choose implementation language at this stage is not a
> question. First there are specification, architecture and environment
> decisions. There are partners, risk analyses and so on. (All the dull
> parts of application developments :)
> 
> Any viewpoint is welcome. Thanks,

A second aspect of CL is of course that you can use the full power of the 
language to build a "script" level were the application can be adapted to 
the market and customer requirements by the power users.

So, you get for "free" a high level of flexibility and adaptability, 
compared to other applications were any significant change means months 
of development.

-- 
Samir Sekkat
Munich, Germany
············@bigfoot.DELETETHIS.com