Meta-programming has trade-offs, which is why languages like Go chose to avoid 
it. The main ones are:

  *  **Added Compile Time.** Nim is already implicitly taking a stand that you 
shouldn't do your compiling on a low-end machine, and I believe that we are on 
the right side of history. (This is compared to for example Go. C/C++ compiling 
is much slower even without meta-programming, due to bad and/or ancient 
language design.) Developer machines are becoming faster, CPU power is becoming 
cheaper, and you can also compile via a remote server / "the cloud". **BUT** 
there's still room for improvement, like caching. Some code generating tasks 
need only be done once.
  * **Code Reading Difficulty.** Again, Nim's philosophy already sides with 
tool-aided developer productivity over the hypothetical need to ever read the 
code in Notepad / paper / cave wall. And, again, we're on the right side of 
history - this makes Nim better than the less powerful alternatives. **BUT** we 
still need better tooling. Your IDE must be able to tell you what anything and 
everything is, including compile time code transformations (with specific 
limits).


Reply via email to