> 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]).
