[Search for users]
[Overall Top Noters]
[List of all Conferences]
[Download this site]
Title: | Languages |
Notice: | Speaking In Tongues |
Moderator: | TLE::TOKLAS::FELDMAN |
|
Created: | Sat Jan 25 1986 |
Last Modified: | Wed May 21 1997 |
Last Successful Update: | Fri Jun 06 1997 |
Number of topics: | 394 |
Total number of notes: | 2683 |
356.0. "Erlang: practical yet pleasant" by VMSDEV::PRAETORIUS () Mon May 17 1993 15:11
[headers after FF]
It is interesting to note that this discussion is dominated
by people from universities speculating in why industry does
not use functional languages.
I work for a very big industry. Thought I should explain why we are
beginning to use functional language for our real time product
developments.
First some background. Ericsson's (Ellemtel where I work is a R&D subsidiary
or Ericsson) main product lines are telecommunication switching systems.
For example Ericsson has 40% of the entire world market of mobile
(cellular) switching equipment and a very sizable share of both the
private and public telecommunication markets.
Today's exchanges are programmed in a plethora of programming languages,
the main in use here, being the in house imperative language PLEX. Ericsson
has thousands of PLEX programmers with an incredibly large investment in
software, programmer's knowledge tools etc etc. The inertia of these multi
million source line systems in very large.
Typical problems which languages must solve are very dynamic memory
allocation and massive light weight concurrency. Systems must also run
"for ever", they must not crash, they cannot be stopped to add
functionality or to correct bugs and they must have the capacity to
handle very many tasks at the same time and be tolerant of both
software and hardware errors. In short as far away from the
comfortable "university" environment as you can get!
A few years ago we performed a series of experiments that indicated
that using symbolic functional languages was a very promising way to
reduce code volumes and to improve quality (fewer bugs) and reduce the
total "design cycle" costs of producing and maintaining software. But
where was the industial quality implementation of a functional
language which gave us light weight concurrency, modules, real time
garbage collection, multi processor distribution etc etc? It wasn't
there. The closest we could get was Strand which, apart from not being
a functional language, had other disadvantages.
This has led us to develop and implement our own functional language "Erlang"
the description of which is in:
Erlang - "Concurrent Programming in Erlang", J. Armstrong, M. Williams
& R. Virding, Prentice Hall, 1993. ISBN 13-285792-8.
Classification:
Concurrent functional programming language for
large industrial real-time systems. Dynamically typed. Pattern
matching syntax. Recursion equations. Explicit concurrency,
asynchronous message passing. Relatively free from side effects.
Transparent cross-platform distribution. Primitives for detecting
run-time errors. Real-time GC. Modules. Dynamic code replacement
(change code in running real-time system, without stopping system).
Foreign language interface.
Availability: Free version (subject to non-commercial license)
with no support. Commercial versions with support are available
(Erlang Systems AB).
Info: [email protected]
FTP Info: euagate.eua.ericsson.se:/pub/eua/erlang/info
I'm sure that a lot of the purists will turn up their noses at many of
features in the above. Many will frown at the "Dynamically Typed, others
will complain about the "Relatively free from side effects" (in fact it is
the interprocess communication which introduces side effects). Erlang
also lacks true higher order functions currying etc, BUT IT WORKS!
It does have light weight concurrency, a real time garbage collector,
modules etc etc.
Over the last few years we (or rather our users) have built larger and
larger prototype systems using Erlang. The largest system has over
126000 lines of source code (about 80000 lines if you strip comments,
blank lines etc). Measurements show that it is fast enough for our
real time applications. Moreover comparison with other similar large
programs written in PLEX shows that Erlang Programs are between 5 and
10 times shorter than PLEX programs. Comparison with languages such
as C++ (for a smaller example of about 10 000 lines of C++) show that
Erlang programs are about six times shorter (comparison ignores
comments blank lines of course).
A smaller (telephony) product based on Erlang will be on the market
by this time next year and if this is sucessful maybe we will see
Erlang spreading into larger more significant products....
So, back to the original question, why is (most) industry not using
functional languages? There are several answers perhaps the most
important answer is that until recently the haven't been any industrial
quality supported implementations which meet industry's needs (as above).
A pragmatic approach to providing industry with what industry wants
is important as is less bickering between the proponents of the the
various logic and functional languages. We need a concentrated effort
to break the C++, Ada, COBOL, FORTRAN stranglehold which is preventing
a rational aproach to the programming of larger systems!
---Mike
Newsgroups: comp.lang.functional
Path: dbased.nuo.dec.com!nntpd.lkg.dec.com!pa.dec.com!decwrl!uunet!pipex!sunic!sics.se!eua.ericsson.se!erix.ericsson.se!mike
From: [email protected] (Mike Williams)
Subject: Re: Functional vs imperative languages
Message-ID: <[email protected]>
Sender: [email protected]
Nntp-Posting-Host: grouse.eua.ericsson.se
Nntp-Posting-User: mike
Organization: Ellemtel Telecom Systems Labs, Stockholm, Sweden
Date: Fri, 14 May 1993 15:35:09 GMT
Lines: 102
T.R | Title | User | Personal Name | Date | Lines |
---|
356.1 | contents of /pub/eua/erlang/info in notesfile Figs::Erlang | STAR::PRAETORIUS | mwlwwlw&twwlt | Mon May 17 1993 17:11 | 24 |
| [yeah, this is a tacky way to make the files available, but, what can I say,
I'm behind the we're-vms-and-you're-not gateway.]
<<< FIGS::DISK$ITS:[NOTES$LIBRARY]ERLANG.NOTE;1 >>>
-< Erlang >-
--------------------------------------------------------------------------------
Erlang
Created: 17-MAY-1993 15:43 2 topics Updated: 17-MAY-1993 16:09
Topic Author Date Repl Title
--------------------------------------------------------------------------------
2 FIGS::PRAETORIUS 17-MAY-1993 12 INDEX
FIGS::PRAETORIUS 17-MAY-1993 2.1 info.short
FIGS::PRAETORIUS 17-MAY-1993 2.2 obtaining_erlang.text
FIGS::PRAETORIUS 17-MAY-1993 2.3 hype.ps
FIGS::PRAETORIUS 17-MAY-1993 2.4 guide.ps
FIGS::PRAETORIUS 17-MAY-1993 2.5 bifs.ps
FIGS::PRAETORIUS 17-MAY-1993 2.6 asn1_to_erlang-paper.ps
FIGS::PRAETORIUS 17-MAY-1993 2.7 asn1.doc.2.2.ps
FIGS::PRAETORIUS 17-MAY-1993 2.8 implem.ps
FIGS::PRAETORIUS 17-MAY-1993 2.9 iss90.ps
FIGS::PRAETORIUS 17-MAY-1993 2.10 prac_appl_prolog.ps
FIGS::PRAETORIUS 17-MAY-1993 2.11 iss92_1.ps
FIGS::PRAETORIUS 17-MAY-1993 2.12 contract.ps
|
356.2 | Erlang for prototyping GUIs? | STAR::PRAETORIUS | mwlwwlw&twwlt | Mon Jul 19 1993 14:04 | 33 |
| [Erlang blurblet in response to a request for information on the use
of GUI with FP]
###### From: [email protected] ######
You might also like to include a reference to Erlang. Erlang is
a concurrent functional programming language. Interfaces exist
to PXW (an interface to the "Athena" widget set), Interviews and
(real soon) TCL/TK.
Chapter 14 of "Concurrent Programming in Erlang" discusses and gives
examples of how to build a GUI in Erlang. We argue that building a GUI
in a concurrent functional language is much simplified by controlling each
"object" in the windowing system by a process. Widgets are abstracted
by processes and changes to the display effected by sending messages
to the widgets. Mouse events are converted to messages to the processes
which control the widgets (more details can be found in the book).
[["Concurrent Programming in Erlang" (J. Armstrong, M. Williams &
R. Virding, Prentice Hall, 1993. ISBN 13-285792-8.]]
It might also be of interest to note that Erlang has been used in
many projects just because it is so easy to program GUI's. It has
been used in 3 RACE projects for building demonstrators, these have
a large graphics component.
Erlang (and the associated toolkits for graphics etc.) is available
freely for academic use. A fully supported system can be purchased
for product development.
Info: [email protected]
FTP Info: euagate.eua.ericsson.se:/pub/eua/erlang/info
|