News for hackers. Stuff that matters.
Re:Consider the Nimrod Programming Language by lobster_johnson on Wednesday March 12, 2014 @10:51PM (#7389817)
Nimrod is very interesting. As a former Delphi hand, Nimrod looks very much like a modern upgraded version of ObjectPascal, with some heavy influence from Python and possibly Ruby.

The language is actually pretty amazing — it's expressive and flexible (eg., type inference lets you omit types in most places, to the point that much of your code ends up looking something like Python/Ruby/Lua), and it's just amazingly fast, but not at the expense of ease of use. In almost every way, Nimrod is the "speed of C/C++, ease of Ruby" replacement that we have been looking for. Go's performance has been too disappointing, while Rust is a wee bit too complex. Nimrod feels just right.

As I wrote in a different thread, I and a colleague have been looking a little bit at using Nimrod as a game-logic language, as a replacement for Lua. Lua is pretty fast, but Nimrod is considerably faster; I'm personally also not a fan of Lua with its very weak table-based OO and rather idiosynchratic syntax, although I know it gets a lot of love on HN.

What makes Nimrod particularly suited to game development is that it's designed to integrate well with C. Nimrod compiles to C, and the generated C code provides the necessary bindings so that you can easily call Nimrod functions from C without an intermediate translation layer. In other words: If you write your core engine in C, scripting the game with Nimrod is (from what I can tell) as easy as with Lua. Very exciting.

Re:Consider the Nimrod Programming Language by sergiotapia on Wednesday March 12, 2014 @11:38PM (#7389924)
>Go's performance has been too disappointing

How so? Everything I've read online has been roses and unicorns in terms of it's speed and build times.

Re:Consider the Nimrod Programming Language by lobster_johnson on Thursday March 13, 2014 @12:11AM (#7390013)
Build times are fantastic. Performance is still quite a bit worse than Java, actually. It has its own compiler, and so it doesn't benefit from the huge amount of work put into optimization in GCC and LLVM. Definitely not roses and unicorns.
Re:Consider the Nimrod Programming Language by MetaCosm on Thursday March 13, 2014 @11:08AM (#7392275)
Go has MULTIPLE compilers, because Go is a language spec, not a compiler. Hence GCCGO (which for example, takes advantage of some of those GCC optimizations) can be used.

Additionally, in most benchmarks, Go does fairly well and is young and constantly improving: http://www.techempower.com/benchmarks/

You will also find Nimrod / Jester in those benchmarks, and can compare the performance for yourself.

Re:Consider the Nimrod Programming Language by lobster_johnson on Thursday March 13, 2014 @11:32AM (#7392444)
Pedantry. When people talk about Go, they usually mean the official implementation.

gccgo has too many issues (lags behind release, requires gcc recompile, etc.) to be useful to most people.

Re:Consider the Nimrod Programming Language by MetaCosm on Thursday March 13, 2014 @11:57AM (#7392647)
I disagree. I know most Go shops I have dealt with at least have looked into gccgo. We use gccgo in the wild (for all our image processing components), because it gave us a nice performance boost. With good testing, you can easily do A/B testing using gccgo to see where it makes sense for you in production.

We have to dig through 30TB of images -- so the performance benefits we got from gccgo were worth the trivial effort it took to implement.

Re:Consider the Nimrod Programming Language by burntsushi on Thursday March 13, 2014 @12:53AM (#7390092)
What is "quite a bit worse"? Is that 2-3x slower? Or 20-30x slower? It's my understanding that it's the former.

And then there's memory consumption...

Re:Consider the Nimrod Programming Language by lobster_johnson on Thursday March 13, 2014 @12:59AM (#7390110)
The former.
Re:Consider the Nimrod Programming Language by barchar on Thursday March 13, 2014 @01:18AM (#7390157)
Go is pretty much competing with java and not C, C++, FORTRAN, and Ada. Nimrod is up there with the best of them. Go is also somewhat designed around reducing build times, nimrod is not. However C and C++ (esp C++) pretty much manage to be designed around increasing build times, so Nimrod is much faster to compile than they are.
Re:Consider the Nimrod Programming Language by pcwalton on Wednesday March 12, 2014 @11:54PM (#7389967)
What is too complex about Rust, in your view?
Re:Consider the Nimrod Programming Language by lobster_johnson on Thursday March 13, 2014 @12:07AM (#7390000)
Pointer semantics. The syntax in general bugs me. It's too close to C++ for my taste -- too many braces and brackets and sigils.
Re:Consider the Nimrod Programming Language by pcwalton on Thursday March 13, 2014 @12:12AM (#7390016)
Well, the pointer and reference distinction is there because you can't do safe memory management without it, without a thread-safe garbage collector which will hinder your ability to reach C/C++ level performance. But yes, if you're fine with the performance tradeoff GC is certainly more convenient.

I wouldn't say the syntax is complex because it's close to C++, but it isn't to everyone's taste (and that's fine; lots of people prefer that syntax and there's room for different languages for different folks).

Re:Consider the Nimrod Programming Language by sanxiyn on Thursday March 13, 2014 @01:14AM (#7390149)
These days only complaints I here about Rust are pointer semantics and C++-like syntax. Both will not be fixed (design decision). I guess that means Rust achieved some sort of optimality now. :)

More likely, probably people hate those two points so much that they forget to mention other problems. Which is a pity. Please tell us about other problems.

Re:Consider the Nimrod Programming Language by pcwalton on Thursday March 13, 2014 @01:40AM (#7390204)
I think the pointer semantics being unfamiliar is a reasonable complaint. But I think it's what you get from the pointers that makes it appealing: safe, deterministic, GC-free, thread-safe and race-free memory management. I think if the pointers bother you you're really objecting to the "safe, GC-free" space of languages as a whole, not the Rust language itself--as I still haven't seen any approach to memory safety without GC that doesn't use smart pointers and references.
Re:Consider the Nimrod Programming Language by jnbiche on Thursday March 13, 2014 @03:53AM (#7390532)
You and I disagreed about Rust's complexity in the past. In the meanwhile, I've actually come to appreciate Rust for the reasons you outlined above. It really is the only new (non-research) language with modern features that also includes a deterministic, safe, GC-free memory management, which fills a big hole. And it's a cool language, with a nice, functional feel, particularly with how the standard library is shaping up.

However, let's be clear that the pointer semantics do bring a great deal of complexity to the language.

That said, I'm very impressed that the managed pointer sigil has been eliminated and the feature moved to the stdlib. That and the fact that Rust's team has clearly pushed the message that owned pointers are the idiomatic way to deal with memory in Rust have combined to bring a lot of clarity to the language. Also, as stated above, I really like the direction that the standard library is taking. So congrats on a job well-done.

Edit: Let me also congratulate you on the Rust compiler error messages, which are almost invariably clear and actionable compared with other languages I'm playing with in this space.

Re:Consider the Nimrod Programming Language by scott_s on Thursday March 13, 2014 @05:33PM (#7395248)
The pointer semantics do bring a great deal of complexity to the language, but it's inherent complexity. Other languages with manual memory management also have these concepts, but they're not baked into the language semantics. So you still have to understand them, but the language gives you no help.