New Release Of Nim Borrows From Python, Rust, Go, and Lisp (fossbytes.com)
An anonymous reader writes:
"Nim compiles and runs fast, delivers tiny executables on several platforms, and borrows great ideas from numerous other languages," according to InfoWorld. After six years, they write, Nim is finally "making a case as a mix of the best of many worlds: The compilation speed and cross-platform targeting of Go, the safe-by-default behaviors of Rust, the readability and ease of development of Python, and even the metaprogramming facilities of the Lisp family..."
Fossbytes adds that Nim's syntax "might remind you of Python as it uses indented code blocks and similar syntax at some occasions. Just like Rust and Go, it uses strong types and first class functions... Talking about the benchmarks, it's comparable to C. Nim compiler produces C code by default. With the help of different compiler back-ends, one can also get JavaScript, C++, or Objective-C.
There's an improved output system in the newest release, and both its compiler and library are MIT licensed. Share your thoughts and opinions in the comments. Is anybody excited about writing code in Nim?
Fossbytes adds that Nim's syntax "might remind you of Python as it uses indented code blocks and similar syntax at some occasions. Just like Rust and Go, it uses strong types and first class functions... Talking about the benchmarks, it's comparable to C. Nim compiler produces C code by default. With the help of different compiler back-ends, one can also get JavaScript, C++, or Objective-C.
There's an improved output system in the newest release, and both its compiler and library are MIT licensed. Share your thoughts and opinions in the comments. Is anybody excited about writing code in Nim?
It's yet another hipster language that will be dead in a few months!
#DeleteFacebook
You can make the most advanced language with new programming paradigms and slashdotters will spend the entire discussion on tabs vs spaces and indents vs curly brackets ...
I prefer {} instead of tabs/spaces to define my code blocks. It's the only part of Python I don't like.
I lurk on the Nim IRC channel sometimes. The toxicity there can be unbelievable.
Look at these IRC logs, for example.
We see insults like:
And there's lots of unnecessary sarcasm:
Then there's lunacy and quasi-psychotic ranting and rambling:
no, thanks!
Nim (*).
We are The Knights Who Say "Ni!".
(*) In Portuguese, "Nim" can be seen as a hybrid of "no" [Não], and "yes" [Sim]. Often used to express "I could, but I won't".
I use indents, braces and BEGIN and END so....
BEGIN
{
code here
}
END
I'm working on a new version of Anal called Anal++
Anyways, the language is designed to keep anal retentive developers arguing in nonsense meetings for years to come. "Oh no! Never put the curly braces and the BEGIN/END on the same line!"
"No, it's better to do so but indent 4 spaces and not a tab!"
"I STRONGLY disagree, you should never use tabs but SHOULD put the curly braces on the same line!"
"No no no! Indent AFTER the Begin but before the curly brace!!!!"
The example code I've seen from Nim reminds me a bit of Pascal. At least the use of the keywords proc and var. Glad they went with Python-style blocks instead of Pascal-style begin and end.
But nim does look like a nice language. The fact that it generates C code and compiles with a C compiler means that it could be integrated quite smoothly into projects using other languages.
Nim is on my list of languages to try some time if I ever need to write C-compatible code.
Nim is great but I strongly recommend anyone using it consider the Rod framework. It improves maintainability by changing any Nim program to one that prints "Write this program in a real language" on the screen I n a blinking neon marquee.
"...the readability and ease of development of Python..."
I'll admit I'm not really a Python user, but I've seen lots of Python code and compared to other languages I've never considered Python to be very readable.
Just cruising through this digital world at 33 1/3 rpm...
my stance is horse...style! totally wild! ...my politicalthrow stars...
this aint no gam...boy, if you play me i will boost you!
ima genie in a bottle you gotta rub me the right way.
coletrain!coletrain!
yadda yadda, i used only the words i could remember of what i thought were the best errr most Prominent words of a garbled song (shitty distro) in shitty FM radio dialturn (shitty computer 486 sx80Mhz)) from 90's euphoria (no job living in parents basement).
But I call it Nim back then, what was called Hip yesterday is now Zef..fo'shizzle muh-nizzle.
HAI 1.2 ;)"
CAN HAS STDIO?
VISIBLE "I've been looking for something to outdo LOLCODE in terms of pointlessness.
KTHXBYE
Anons need not reply. Questions end with a question mark.
it abstracts itself.
Just reading the docs, the first thing that pops out at me is that there is no need for a separate 'const' and 'let' keyword. They describe the difference as:
"The difference between let and const is: let introduces a variable that can not be re-assigned, const means "enforce compile time evaluation and put it into a data section":"
But the compiler can detect whether the expression on the right hand side of the let assignment is compile time constant, and "put it in the data section" if it is; no need for the programmer to have to make that decision.
Nim sounds similar in its goals to D, another batch-compiled statically typed language with GC. The main difference is that Nim seems to innovate a lot syntactically. How do the languages compare otherwise?
Looks like another language that does not thoroughly address parallel processing. With the mention of go, I was hoping for something like goroutines (one of the few things I like about the language) - but no. Doesn't look like it.
They should follow Rust's example and start being more inclusive to minorities. I suggest renaming the Nim package manager (nimble) to NAMBLA.
Reminds me of the animated movie, Secret of Nimh.
God is a programmer now. Here on the H1B visa program. Hope he is packing his bags...
having python around wasn't enough .. there is more than one stupid indentation-is-syntax programming language around.
Fortunately it will disappear soon
In your reply you used "otherwise you'd knew" and "the sixt more spoken language".
I think you meant "otherwise you'd Gnu" and "the Sith more spoken language".
No brain, no pain.
Don't confuse strong typing with manifest, static typing.
Python is strongly typed and has first class functions.
The chief counterexample to the statement "Python is strongly typed" is that almost anything can be used in a boolean context.
What if God Trumped all of us... Combed one over all of us...
I found programming in nim fun; when I looked into runtime debugging nim, I wasn't very convinced I could actually use it for anything anytime soon.
Matt
Consider the comprehensive, supposedly mathematical approach that C++11 took in order to integrate a memory model that could provide strong support for parallel computing; guess what? It still provides a now provably incomplete definition, and it's so subtle that nobody really knows what the hell it's saying anyway!
that's enough of a fail to ignore it completely even if the rest of it isn't brainded.
Ruby is along with Python and Perl one of the big 3 scripting languages. It seems pretty stable at over 1% of programs according to TIOBE and is currently surging again to 2.5%: http://www.tiobe.com/tiobe-ind... . At this point obviously Python is in first place but I'd say Ruby is mostly tied with Perl for 2nd. How is that not success? Certainly it isn't a top 5 language but a consistent top 100 is a successful language.
As for nim I think I've only heard of it a few times so I'd agree that language ain't doing so hot yet.
Yet another language. What Nim is good for?
There's a bit of handwaving in the introduction concerning the garbage collector. There's a compiler option to turn it off allowing you to manually manage memory, but what if libraries you're using aren't all written to manually clean up after themselves? It seems to me that one of two things will happen:
1. Not everybody in the community manually manages their memory, making the --gc=none option impossible to use in practice.
2. Everybody is required to manually manage their memory so that others can gc off, effectively making the memory management mandatory.
So unless there's something more to this it seems like it's really just punting the gc decision to the community and creating confusion and uncertainty.
Can anybody with more knowledge maybe clear this up?
Does this mean that enthusiasts for the language are "Nim nuts"?
That's the worst part of python!