Erlang questions on comp.lang.functional.
Shawn Pearce
spearce@REDACTED
Mon Mar 3 00:40:15 CET 2003
Faust <urfaust@REDACTED> wrote:
> ****************************************************
> Forwarded from comp.lang.functional
>
> Faust wrote:
> >
> > Erlang is a functional language.
> > Is there any reason to not use erlang ?
> >
> I have never programmed in Erlang, just skimmed a few chapters of
> written material, so take this as an account of how good or bad the
> Erlang PR is, not whether Erlang is good or bad.
> So, here's what speaks against Erlang (there are also a lot of things
> that speak *for* it, I'm omitting that because it would be off-topic):
>
> 1. No static typing.
Unless your a lover of C++, I fail to see this as being a problem. I only
see it as being an issue as far as performance optimization possibilities
go. Perhaps a large number of bugs really do occur in programs as a result
of not having static type checking in the compiler, but in general my
experience has been that this only is a problem in Perl, and only when
checking that you spell structure member names correctly everywhere.
(As Perl structs tend to be just hashes with arbitrary keys used as
string constants.)
> 2. Bytecode interpreted (i.e. not compiled to native code).
Isn't this why we have HIPE? And thus far, I have not seen HIPE improve
performance over code run in the bytecode interpreter. Therefore I have
to ask:
- is the rest of erts slow?
- is the bytecode interpreter really fast?
- do I just keep my mathmatical computation outside of erlang?
> 3. Possibly not "really functional", i.e. mutable stuff (message sends
> and state-dependent responses) play an important part when it comes to
> structuring and maintaining large programs. (Of course, you *can* do
> large parts of purely functional programming in Erlang.) (This is just
> an impression that I gained, something that somebody with personal
> experience in Erlang should confirm or deny. Hence the "possibly" in the
> first sentence of this paragraph.)
I think the reality is it is impossible to build a programming language
that doesn't have side effects. Consequently, Erlang offers the best of
both worlds. You can build code that is side-effect free when appriopiate,
but also build code that has side-effects when it is necessary for either
correct function (to do IO perhaps) or for performance (like using ets vs.
a pure functional datastructure).
> 4. Some roots in Prolog, which I find... er... disturbing (my personal
> encounters with Prolog were, say, unlucky... its strengths were less
> useful than I had expected, and definitely not worth the weaknesses that
> were the payment for its strengths - IMHO (I never became a Prolog guru)).
Er, I hated Prolog and had as much distaste for it as I think the author
of this forwarded message has. But the Prolog roots is what I think I love
most about Erlang. Everything is just pattern matching and message sending.
:-) How could one not love that?
> **************************
> end of forwarded message.
Just my two cents (USD, currently worth less than two Euro cents). :-)
--
Shawn.
Things past redress and now with me past care.
-- William Shakespeare, "Richard II"
More information about the erlang-questions
mailing list