Having access to various Ruby article feeder sites I recently came across this



which is multilingual. It lists articles and blogposts on a long list of various languages, but not Nim. I think it would be good exposure for Nim to see how to get it on their language list.

I also subscribe to different languages (Rust, Elixir, Julia) which use the Discourse ecosystem for their forum/communities communication system. I know Nim has this forum, but using Discourse may make if more accessible to people who haven't even heard of Nim. Just some thoughts.



2018-01-06 19:48:26

A funny fact is, that many people just ignore Nim because its community is very small.

Recently I read a blog post of Mr Lemire quoting:


I am going to ignore Rust, D and Nim as they have too few users. Programming is a social activity: if nobody can use your code, it does not matter that it runs fast.

He is a bright guy, so I think he knows well the consequences of his attitude. Many people seems to have this attitude.

2018-01-06 20:15:41
That's actually for me is a big +. On another note, programming is not social activity imho, it is problem solving, mental exercise and so on. Pub is social, but I don;t go coding in a pub. Also right tool for the right job? Basically I was looking for to write code to transpile our python to c++ code and other languages, also tools to simplify coding, then I came across NIM after toying with D, rust and go. I will stay here, it is an awesome language. 2018-01-06 20:36:11

One reason many people use a game engine like Unity is that probably every question you ever ask about, was online already asked somewhere. So easy just copy the snippet from there and there we go!

I think there's a problem with this kind of behavior: People stop thinking about concepts and ideas. An example of this behavoir are these people who dismiss OOP and therefore use C instead of C++ or don't use C++'s classes. But in the end they probably implicitely use OOP. Just because you don't explicitely write class something {...}; it doesn't mean you aren't using OOP. These people probably only want to counter the Java like ultra OOP(everything must behind a getter/setter, classes named BusisnessLogicManagementControllingBehavior).

And yes there are reasons when you want to interface an existing code base. When rewriting is simply wasting resources etc. But that's one things Nim is incredible at. I mean you can interface C, C++ and Objective-C. You can even share code between a client and a server by compiling to Javascript.

2018-01-06 22:01:46
Yes, exactly. That was my problem... And then stumbled upon NIM, problem solved. I call them coding zombies, or copy and paste coders. 2018-01-06 22:15:53

Rewriting doesn't have to be bad. One of the reasons is that it may be possible to write a more efficient implementation more easily in another language (see: Rust's enums are faster than C++ virtual, especially for small ones). Also: just like a wrapper with native types (uses seq instead of T*, unsized) is better than a simple wrapper, a native-style wrapper (uses object hierarchy and methods instead of function pointers) is better than a wrapper with native types. But a native-style wrapper isn't always possible, sometimes things need to be adjusted to another model, especially if performance matters.

Please notice: you wouldn't like to use C++'s template-magic in Nim. You really wouldn't. You'd prefer something, ANYTHING else. Believe me.

2018-01-06 22:49:36
Yes, correct. I was about to write tooling to transpile a bunch of python code about 60k LOC to C++ for various reasons, one of them is that I cannot deploy Python on iOS. Anwway, I was looking for a sollution to save time, or I do not want to reinvent the wheel. This is how I arrived here. For me it doesn't really matter the size of the forum or how many stars its got, or whether the forum is social, or whether the protective bunch of zealots drank a lot of kool-aid. My main focus is on quality and whether the job is completed. It seems NIM gets the job done and is extremely powerful. I have spent the day to try out stuff, bought the book nim in action and went through it quickly to get a grasp. Also the fact that NIM has Pythonish syntax helps a lot. Yes I will rewrite the engine in NIM and no I am not planning to use C++ or Python dialect in it but rather use idioms, patterns and constructs that are most efficient in NIM. 2018-01-06 23:54:58
As for writing REALLY Python-like Nim code, please have a look at nimpylib. In some simple cases and when good design-patterns are followed in the Python code, it can get almost 1:1.
2018-01-07 15:03:16

It appears most of the comments made to my original post are not addressing the issue I raised, which is increasing the exposure of Nim. In fact, some commentators seem to be suggesting they don't see a high need to increase Nim's exposure. I think this is a very insular view and attitude of the world and detrimental to Nim's development, adoption, and future.

I also totally agree that every language (be it programming or human) is inherently reflective of a distinct community of people and their way of thinking about, interacting with, and solving problems (and what is even considered a "problem").

Consider the Tale of Two Languages


Most people have never heard of Forth, which was created by one person, Charles Moore, and first released to the world in 1970. He wrote it for himself so he could easily control radio telescopes at the U.S. National Radio Astronomy Observatory, where he worked.


It is a stack based language that's been implemented in hardware cpu systems (Forth Engines), many of which have fueled NASA, and European Space Agency (ESA) missions.





Many of you are probably too young to remember that in the 1970's into the early 1990's HP was a major player in calculators (especially scientific ones), before the advent and ubiquity of "personal" computers. HP calculators were based on Forth, and used reverse-polish-notation (RPN) and stacks. To this day, IMHO, they are the best calculators on the market (technically) but other cheaper brands (Casio, Texas Instruments (TI), etc) rule that market now.

When I was an engineering student at Cornell in the early/mid 1970's it was considered "cool" to have an HP calculator (especially a programmable HP-45, which I saved to pay a ransom sum to get). So when I started working for NASA in 1979, and assigned to use Forth on prototype flight/ground systems, I felt right at home.

Forth is one of the most powerful programming environments you can ever use. It allows you to do literally anything you can thinks of, if you can think of it. Whatever the cpu could possibly do, Forth allowed you to control every register, instruction, and byte of memory of it.

However, like becoming a "really good" violin player, you had to appreciate, learn, and practice using its capabilities, otherwise, like most people who try to play the violin, it just becomes a piece of wood with strings attached. If you take the time to master it, you can make people laugh, dance, or cry, depending on how you play it.

To this day, Forth has a vibrant and vocal user community, but at best now, it's a niche language (though sometimes it's some company's secret development language).


Why have most of you never even heard of Forth, or seen articles on it, or conferences about it, etc (and all these still do occur)?

The major reason is because people in the Forth community have never had the vision, and ultimately the desire, commitment, and unity, to change the language to expand its reach, by making it more friendly and useful to a wider community of people other than themselves. Does this sound familiar?


Now consider Ruby. It too was created by one person, Yukihiro "Matz" Matsumoto, and released to the world (Japan) in 1993.


It's highest goal is, as quoted from Matz in the wikipedia article:

..we need to focus on humans, on how humans care about doing programming or operating the application of the machines. We are the masters. They are the slaves."

Matz, and the Ruby development team, and its community, takes this goal very seriously.

So for the traditional Christmas release (December 25, 2017) of the new major version 2.5, it included the method prepend to class Array, solely because of community desire for (English) linguistic consistency, since there already was an append method. And both of these are aliases of the original core methods unshift (add elements to beginning of an array) and push (add elements to end of an array).

These additions were soley requested and added to the language because people wanted to write better readable code. So now, instead of writing: ary.unshift(1,3,4) and ary.push(5,6,7) you can write ary.prepend(1,3,4) and ary.append(5,6,7). Anyone who understands English can read such code and immediately knows what it's doing.


This commitment to user happiness means Ruby's users and community will always be working to make themselves more happy using it, and thus it will be around a long time.


I think Nim's developers and community needs to become much more flexible with the language to accommodate users, since just about everyone who will use Nim will come with experiences from other languages and have certain expectations and desires. It's just a given of human nature.

And you can't/won't get users if you don't have greater exposure and visibility.

Nim doesn't even earn a listing on wikipedia's History of Programming Languages page.


and has a meager individual page, though (currently) it's over 9 years old.


I think Nim has very good technical merits as a programming language. Other languages, however, are eating Nim's lunch because they have larger and more friendly/accessible communities, better documentation, and more public mindshare.

Technologies rarely prevail solely on technical merit however, (remember VHS vs Betamax), because people (human beings) rarely use technical merit (of anything) as the sole, or even highest, priority/criteria for choosing to use them. This is a severe blindspot that some commenters, and Nim developers, seem not to want to acknowledge. Just because you make a faster (fastest) car doesn't mean people will choose to buy/use it just to go to the grocery store.

Nim deserves wider use. But in order to achieve this it needs much greater exposure than it currently has. And in order to get this greater exposure its adherents/community needs to work more on the non-technical stuff to attract, educate, and please (make happy) newer users.

It really is all about making people feel comfortable and happy using the language.

2018-01-07 20:46:06

I am going to ignore Rust, D and Nim as they have too few users. Programming is a social activity: if nobody can use your code, it does not matter that it runs fast.

What the professor really means: his students can't get hired at AAA firms when trained in languages that aren't in the top 20.

2018-01-12 03:30:50