(Prolog + LISP + Erlang) with integration issues versus C++
Joe Armstrong (AL/EAB)
joe.armstrong@REDACTED
Thu Aug 25 13:40:54 CEST 2005
> -----Original Message-----
> From: owner-erlang-questions@REDACTED
> [mailto:owner-erlang-questions@REDACTED]On Behalf Of Dev Functional
> Sent: den 25 augusti 2005 12:36
> To: erlang-questions@REDACTED
> Subject: Re: (Prolog + LISP + Erlang) with integration issues
> versus C++
[cut]
> Is it a good idea to do AI programming in Erlang ?
> (eg. Neural Networks, Graph Traversal, Search Trees, Classifiers and
> Pattern Recognition)
It very much depends on the problem - backtracking search algorithms are
very easy to program in Erlang.
My gut feeling would be use one high level language (Prolog, Lisp or Erlang)
and one low level, C (not C++, or java). The gain from using a high-level language
is just that it is "high level" - which one you chose is less important -
choosing one such will remove all the interoperability problems.
You haven't mentioned the non-functional behaviour, this might not be important.
Let's bite off the major non-functional bits of the system, what about:
- performance
- scalability
- fault-tolerance
My answer:
- performance => Go parallel
- scalability => Go parallel
- fault-tolerance => go parallel
These all imply architectural considerations.
One you have made a sequential program run as fast as it can the only way to
get more performance is to use two computers.
To make a fault-tolerant system you need at least two computers - you can never make a fault-tolerant system with one computer, since it might crash.
To make systems scalable you need to be able to add and remove processors
on demand.
Now all of this means that whether you like it or not you have to get into
distributed computing and write distributed programs.
This is what Erlang was designed to do and is good at.
In many systems the non-functional part of the system gets forgotten,
we designing algorithm and implement then, but do not consider how the system
evolves with time or how the system scales and manages errors. These latter problems
often cripple the system - these are the show stoppers.
If you don't care about crashes in your application, if scalability etc. is
not a problem, then designing a distributed system is overkill. But if you do then
Erlang is a good choice.
Cheers
/Joe
> If yes, then we will try to move our AI code from Prolog,
> LISP to Erlang.
> If not, what should be the alternative approach ?
>
> Thanks for giving the world a wonderful language like Erlang.
> (COmega looks like a copy of Erlang ideas).
>
> regards
> Dev.
>
More information about the erlang-questions
mailing list