What is a good high level language that is also highly efficient?

5 points by lukev ↗ HN
My personal interests, as well as most of my career, have led me to very high-level languages such as Ruby and Clojure.

However, I've recently become interested in some problem domains that are usually best approached by more low-level languages, which provide the maximum level of memory efficiency and performance, as well as suitability for raw binary operations. Unfortunately, having been thoroughly spoiled by managed memory and strong typing, I break out in hives at the thought of undertaking an extensive project in C or C++.

So what are some good languages for this? D is interesting, but I'm a bit turned off by its lack of support for concurrency. Haskell can theoretically work in this domain, but it appears that it's quite difficult to reason about its performance without an inordinate level of understanding of its implementation details. Go looks interesting, but I haven't had a chance to explore it deeply yet (it's on my list.)

Are there any other options in this space?

5 comments

[ 3.0 ms ] story [ 23.8 ms ] thread
You can see statistics here http://shootout.alioth.debian.org/u64/benchmark.php and make your own benchamarks. I'd say JavaScript is pretty fast for being a high-level scripting language. It's gettin' faster everyday with every new browser version. JavaScript is no longer web-only, you can build desktop applications and write server code with NodeJS.
Oberon, Go, Common Lisp, Matlab/Octave for some problems, R for some others, APL/J/K for others.
I think you should take a close look at the ML family. Well, I'm not sure how good their concurrency support is; I doubt it's as good as Go's. But they have very good compilers, and a reputation for being good for numeric work. They are strongly typed and garbage-collected, but differ from Haskell in giving you the option of writing imperative code when you want, and in generally having a more familiar programming model (they are strict, like most languages, rather than lazy).

OCaml has a small but strong following in the financial services world -- it's used by algorithmic traders, who are known to be performance-sensitive, to put it mildly. And Standard ML has the MLton whole-program optimizing compiler.

I have to qualify this by adding that I haven't used either of these tools myself, but for certain kinds of problems, I would definitely give them a closer look.

Go. I'd definately move it to #1 on your list :) I've been using Go for a while now and I gotta say the more I use this language the more I start to love it. Its incredibly well thought out, the libraries are powerful and well designed, the documentation is clean and extensive, plus its a great mix between High and Low. And, in my opinion, as much as I like node for letting me do js on the server, Go does it better.
(comment deleted)