Maybe we should think of it this way:

Java is referred to as a ["software 
platform"](https://en.wikipedia.org/wiki/Java_\(software_platform\)), which 
consists of the Java language (a flagship, but with other languages available), 
javac compiler, a huge ecosystem of libraries and tools, etc. Other examples of 
fully internally interoperable multi-language "platforms" include Mono and 
Parrot. Nim doesn't use a VM (which is a good thing), but it can still be a 
"platform" of multiple languages (general purpose ones, as well as 
[DSLs](https://en.wikipedia.org/wiki/Domain-specific_language)) sharing the 
same pluggable compiler infrastructure, same AST, libraries, and tools.

So far we've only talked about simplest equivalent syntax substitutions (as 
@spip pointed out), but we can have a whole culture of people creating their 
ideal language frontend that is fully interoperable with Nim's ecosystem. 
Perhaps each Nim "skin" / variant / language frontend should have its own name 
and source filename extension for easier IDE support. The Nim core dev team 
would only need to facilitate and document how to create these compiler 
frontend modules, and other developers would create whatever frontends they 
want. Maybe they can even be installable via nimble.

Aside from syntax, some have criticized Nim for having a "maximalist" "kitchen 
sink" feature-set. I imagine that language features can be easily disabled by 
compiler frontends (just have the compilation fail if an undesirable feature is 
used), so one for example could create a Golang-lookalike frontend for Nim 
(although it would still use Nim's import conventions, stdlib, and libraries). 
Someone else might create a front-end to appeal to Python programmers (with 
fewer avoidable deviations from Python's syntax), to Ruby programmers (like 
Crystal), etc - all for the greater glory of Nim! 

And the FLOSS universe would finally have a solution to the growing problem of 
software dependency bloat / proliferation of different runtimes that doesn't 
involve a slow clunky VM.

All of this is clearly post-1.0 stuff (2.0?), but putting it on the roadmap now 
would mean a more favorable response to the common criticisms of Nim. 

Reply via email to