I am not bashing Nim; I am speculating about what (IMHO) it could be doing 
better. Key word: **_focus_**.

This thread is about summing up the last 9 months, and my humble summation is 
that, as far as I can tell, things haven't moved much. Is Nim marching steadily 
towards reasonable version 1.0 goals? If so, this isn't very visible to lay 
observers. Is Nim more popular relative to its competitors compared to 9 months 
ago - if not, why? It's not because they have more sophisticated 
mataprogramming, but because they're giving large and specific classes of 
programmers what they wanted in a new programming language.

It seems that a new programming language that's "a jack of all trades, master 
of none" is not what a lot of people are actually willing to use. It is better 
to be a "jack of all trades, master of (at least) one", and that master "killer 
app" is how you pay the bills while learning more trades.

The 
[first](http://www.businessinsider.com/the-first-mcdonalds-burger-stand-2014-9) 
McDonald's only served a handful of choices that most people wanted. One needs 
to get the business off the ground first, and expand it later as you get enough 
working capital (compiler code contributors, bug reports, modules, tooling, 
tutorials, cash donations, corporate sponsorship, etc). And then eventually you 
can build [Xihulou](https://en.wikipedia.org/wiki/West_Lake_Restaurant).

> Nim has a clear vision -- it's just that I fail to communicate it:
> 
> Nim is a simplistic systems programming language with an AST based macro 
> system on top of that.

I'm sorry, I'm not very bright. To me that seems much less clear than the 
vision of Nim's top competitors (see above). To whom does this vision appeal?

What makes Nim more "simplistic" than "[systems programming 
languages](https://en.wikipedia.org/wiki/Systems_programming_language)" like D 
and Rust (and, if using a much looser definition: Go, Swift, Crystal)? And is 
its AST-based macro system competing with Template Haskell for theoretical 
papers, or is it a means to an end?

In [a Quora 
answer](https://www.quora.com/What-do-you-say-about-Nim-programmning-language/answer/Alex-Libman-2)
 I summed up what I see as Nim's top strengths: performance to productivity 
ratio, safety to syntax cleanliness ratio, license simplicity (very important 
to gaming companies, not just ethics nerds like me), and portability. I think 
that's already too many.

I don't know if Nim can claim the "performance to productivity ratio" crown in 
light of the recent takeoff in Crystal's popularity. For people coming from 
other scripting languages, Crystal-like languages that go out of their way to 
be as close to JS / PHP / Python as possible (which, [as we've previously 
established](https://forum.nim-lang.org/t/2811), isn't the direction in which 
you want to take Nim) would probably do very well also.

A lot of people really liked your [quote](https://forum.nim-lang.org/t/1961) 
that "Nim is essentially Ada + a GC with a friendlier syntax". I think that 
would make a great initial focus and selling point for Nim.

> Almost all of its features can be found in other languages too.

Some "other languages" have had lots of devs and lots of paid hours (in 
industry or academia) to polish those features and manage complexity. 
Successful new grass-roots programming languages tend to start with a 
particular focus. D started out as a much simpler language, and added features 
after it mastered the basics. Even Google isn't replacing everything with Go, 
but keeping it focused mainly in network services. Nim is very ambitious, and 
that's great, but not when it comes at the expense of the fundamentals.

> New features arrive slowly (heck, isn't that what you just complained about?) 
> and more effort is spent on bugfixing and QA than on anything else.

I complained about just the opposite: features over focus. I am encouraging 
focus on quality, stability, and documentation of Nim's core features; the 20% 
of the language that gets 80% of use. It's very sad to see Nim not growing in 
popularity while its more focused and targeted upstart competitors are gaining.

> In order to turn it into a fruitful discussion: What feature should we remove 
> from Nim?

There's no reason to remove anything, just say these things are "experimental" 
and on the back-burner until more crucial goals are met.

I didn't mean that Nim has a "zillion unfocused ideas" (it's not a real number 
and a general point about business plans), but the top example going through my 
mind as I wrote that was 
[karax](https://github.com/pragmagic/karax/commits/master). You can obviously 
work on whatever you want, and I am very grateful for everything you do, but 
IMHO that isn't a top focus for getting Nim off the ground. Nim's attempt to 
compile to both C/C++ and JavaScript, while extremely interesting, is an 
example of "[Chasing Two 
Rabbits](http://users.rider.edu/~suler/zenstory/chasrabit.html)"...

Stability, bugfixes, and documentation are top priority. Maybe focus on one 
specific flagship developer stack (editor / C compiler / debugger / etc) to 
provide the perfect developer experience. Anything that a typical Python 
programmer doesn't understand probably isn't a priority for v1.0.

(IMHO)

Reply via email to