[erlang-questions] OT: Please highlight me about JAVA C++ as high level languages just like erlang.

Michael Turner <>
Fri Jan 22 09:02:15 CET 2010

I'd always assumed that the "level" in "high level language" was a
measure of abstraction in some software concept domain, not of
performance or suitability for some particular purpose.  If C is good
when a 16-bit microcontroller is the target, it's because C can get you
quite close to the bare metal, which is how you typically extract the
use-value of such a part.  The *costs* and *risks* of being so close to
bare metal should go without saying -- "close", in this case, means
"almost down to".  (Wasn't it Dennis Ritchie himself who quipped "C
combines the flexibility of assembly language with the power of assembly

Admittedly, this picture is complicated by the metaprogramming aspects of
languages.  Take BLISS -- it was a bare-metal programming language with
a Turing-complete macro facility.  C++ can also be used near bare metal
(indeed, when I taught a course in it I was amused to see how many of my
students were embedded systems developers) but its template syntax
rivals or exceeds the power of BLISS macros and continues to reach

However, one might consider metaprogrammability simply yet another of
several possible domains for a language -- the reflexive one.  I'd say
that Erlang and the LISPs, Smalltalk and some others (even Forth, IIRC)
are higher level than C++ in metaprogrammability, even if C++ is still
relatively high in that way.  Yes, the Boost library provides a kind of
lambda for C++, but only in a way that's so clunky as to clearly not be
a "part of" C++; more an argument for Greenspun's Tenth Law if


On 1/22/2010, "Richard O'Keefe" <> wrote:

>On Jan 22, 2010, at 4:26 AM, Angel wrote:
>> So im really displeased to see everyone still closely tied to the
>> "old classic
>> high level definition". its dificult to place erlang over a plethora
>> of not
>> certainly better languages if all of them are considered equal.
>It doesn't matter what we call them, it's STILL difficult to place
>Erlang amongst a vast range of other languages.
>Erlang isn't even close to APL2 as a notation for matrix calculations.
>APL2 isn't even close to Erlang as a notation for concurrency.
>Neither of them can hold a candle to C as a notation for programming
>16-bit microcontrollers, although one could imagine a derivative of
>Concurrent Pascal that would have been even better.
>There simply isn't a linear ordering.
>The most you can say is that one language is higher level than
>another for certain things.
>Mind you, it is clearly possible to classify some languages as bad
>for any practical purpose.  Intercal, Brainf*ck, and the whitespace
>language spring to mind.
>I recently solved a problem by writing
>  - a data file
>  - an AWK program to compile that into C
>and running the C program.  Doing the whole thing in C would have
>been slow, because it would have been doing at run time decisions
>that were better made at meta-compilation time.
>This kind of thing blurs the "level of a language" idea even
>further.  C on its own: bad.  AWK on its own: worse.  AWK+C: excellent.
>I think it gets us further to say "Language X does this, language Y
>does that, for problem P, what language X does helped me get my
>program working quicker".  The Grand Convergence (where Java and C#
>and Eiffel and others are borrowing ideas from the functional world
>and from each other) means that "language Y is no good because it
>doesn't have feature F" is a permanent truth only for dead languages.
>erlang-questions mailing list. See http://www.erlang.org/faq.html
>erlang-questions (at) erlang.org

More information about the erlang-questions mailing list