[Melbourne-pm] comparing languages table

Daniel Pittman daniel at rimspace.net
Mon Dec 29 05:08:38 PST 2008

"John Thornton" <jdthornton at ozemail.com.au> writes:

For those short on time, the executive summary:

This is an outdated, inaccurate, misleading, poorly informed survey that
fails to effectively cover the limited material it aims for, let alone
addressing any language developments in the last ten years.

> For anyone who is interested, here is a cross table of 9 programming
> languages including Perl:
> http://www.jvoegele.com/software/langcomp.html
> I can’t vouch for its correctness or otherwise; a lot of the terms are
> foreign to me I am sure that there are people on this mailing list who
> would know what the tables and discussions mean.

Well, it is vaguely correct, but frequently meaningless: many of the
statements are useless, in the sense that "football is a game with a
ball" is useless — not actually untrue, but not helpful.

For example, Ruby has "pure" OO support.  This is, arguably, true, but
the implementation of the language makes this radically different from
the "pure" OO implementation in Smalltalk.

Not to mention that "pure" is a very dubious concept when it comes to
object oriented programming; they also fail to identify some factors
such as 'autobox', which allows Perl to treat scalar values as first
class objects...

It is also notable that they assume that OO programing requires that
"all operations are messages to objects", which is not actually true.
CLOS is definitely object oriented, but did not treat any operations in
that fashion — and neither does any other multiple dispatch language.

Further, they make the mistake of dividing typing into a one-axis
"static vs dynamic" distinction.  This is extremely wrong, since it
completely discards critical differences: C++ has "static" typing, while
Perl has "dynamic" — but this disregards the ability to transform blobs
of memory under C++ bypassing the type system, while Perl retains strong
type information at all times.[1]

This is, again, not actually wrong, just very misleading.

Furthermore, their garbage collection entry is wrong: C++ with garbage
collection has multiple implementation, and their Ruby entry presumably
only covers one implementation — the JVM and CLR based Ruby interpreters
have, naturally, different GC properties...

The design-by-contract entry is simply wrong, their multithreading entry
is extremely misleading[2] as well as wrong[3], as is their regular
expressions entry, and their "built in security" section is extremely
weakly defined, significantly misleading, and again neglects the various
non-MRI Ruby interpreters, not to mention the non-mainline Pythons...

Finally, citing a study that is widely considered weak is not the
... best approach to a well supported argument, and this "survey"
includes one as part of the consideration.

I guess they were up-front about how bad it was, anyway.

So, yeah, overall: not what I would call a reliable survey of the
languages.  Plus, they missed a number of features like Hindley Milner
type inference that, you know, are really fairly important these days.


[1]  Plentiful conversions conveniently embedded in the language make
     this fairly transparent to the user, but the language has "strong"
     typing, unlike "weak" C/C++ typing.

[2]  It claims that C++ has multithreading support via libraries; the
     language itself has no thread support, and is not specifically
     thread safe, although implementations can be.

[3]  Perl has threads.

More information about the Melbourne-pm mailing list