> I am glad we have a low TIOBE rank at this stage!

Agreed. My reason: people who don't really want to know what a computer program 
does (with all the pesky stack vs heap and value vs ref stuff) are better off 
using other languages and wouldn't help Nim's development. Nim shouldn't 
attract them through popularity contests like TIOBE. Those who more actively 
seek out a language which might serve a real requirement they have and who are 
willing to understand technical details tend to make a smaller, but more 
experienced and productive community IMHO, at least until the language has 
settled feature-wise.

> Is it a system language or is it one targeting the web (js)?

If we have to call Nim a "systems language" to make the abovementioned clear, 
then that's ok even if it's an incomplete description.

> I absolutely agree that Nim should drop some features, but the question is 
> which?

Those which are redundant, don't play together with other important features 
well and don't completely work as intended. Like generics (I know, sounds 
crazy, reasons down at the bottom if someone cares).

> So: what is Nim at its core?

Abstraction level scaling. Everything from high level compile-time resolved 
constructs down to asm blocks in the same code base. Powered primarily by 
meta-programming.

> What is the definition/goal of Nim?

What's the "goal" of C++? A language can offer a feature set, deciding whether 
that fits a specific field of application (device driver, web thing etc.) is up 
to the people thinking of using it. Those who don't do this mapping themselves 
are probably not Nim's best target audience.

Here's the anti-generics argument:

Generics are not a bad idea in languages which don't have general 
meta-programming. They offer classes of types/procs which are automatically 
instantiated at compile time as needed. In Nim, this could be achieved with 
macros, concepts and maybe a slightly more powerful compile time state-keeping 
and -injection mechanism than what we have now (correct me if I'm missing 
something here, I'm not a CS major), so they are redundant. On top of that, 
where concepts collide with other compile-time features, things tend to get 
flaky and unreliable (generic concepts, static[T]).

Reply via email to