|
![](/i/fill.gif) |
Warp wrote:
> Btw, one thing which people seldom take into account when comparing
> languages, is their availability (tools, compilers, IDEs...), ease of use
> (of those tools) and library availability for different platforms.
Simple. It's easy to measure precisely how fast language X can perform a
quicksort, and exactly how many lines of code it takes. (Actually, these
things are significantly *less* easy than you might imagine, but
still...) It's rather harder to precisely and objectively measure how
"portable" something is, how "reliable" it is, "how good the tools are",
and so forth. Difficult to put a number on that.
Indeed, it seems to me the only way to find out this information is to
spend some serious time using the language. Which, obviously, is going
to take some serious time to do.
> There are only two closely related languages which all these significantly
> different platforms have in common: C and C++.
>
> Java gets close, as it was designed from the start to be portable and
> easy to use in a cross-platform way. Except that in this particular case
> it fails because you can't develop Java apps for the iPhone. (Not that the
> iPhone couldn't support it, but because Apple doesn't want to.) The same
> could probably be said of many of the scripting languages (especially those
> designed for web development).
>
> However, basically any other language, especially those fancy ones, and
> you are in a rather hopeless situation. Availability is poor or non-existent,
> and even when there is availability, you often can't create native executables
> and instead have to rely on heavy-duty runtime environments or libraries
> which are very uncommon in those platforms.
Well, depends on what you consider to be "available". I know people have
put Haskell on some pretty strange devices (in some instances by using
cross-compilers, because the target platform can't host the compiler).
But I'm not sure if "Dave did it one time" counts as "available". I
doubt you'd get much *support*, for example. I also doubt it works
flawlessly.
> Also sometimes it doesn't matter how fancy a programming language is,
> if it lacks certain critical libraries and/or features, they are not very
> practical.
Agreed.
I think what it comes down to is using the right tool for the job. If
you're programming a microcontroller for a toaster, you're going to use
assembly (how complicated can a toaster possibly be?), or maybe C. I
rather doubt you'd use C++, but I suppose you could. If you're trying to
process large amounts of structured data, you're probably going to use a
relational database and write your code in SQL. If you're building a
complex website, you can basically write the backend in whatever the
hell you like, because it only needs to run on one PC. And if you're
writing end-user applications... yes, probably C or C++, realistically.
(Although, say, Wings 3D is Erlang or something isn't it?)
Anyway, I tend to write crazy complicated programs where it's a
challenge to even figure out what the algorithm for getting the correct
answer is, never mind how to do that efficiently. Therefore, my language
of choice is Haskell. (I'd also probably make use of Mathematica - you
know, if it didn't cost upwards of 4-figures to use it.)
Of course, measuring the subtle strengths and weaknesses of each
individual language in any kind of objective way is rather hard. So we
get stuck with performance benchmarks. ;-)
Post a reply to this message
|
![](/i/fill.gif) |