I generally like Nims approach a lot - but I think that @Araq is too hard on 
this. The guiding rule should be "Nim prohibits false and dangerous things". 
Naming (e.g.) private variables 
'_[foo](https://forum.nim-lang.org/postActivity.xml#foo) is not dangerous and 
whether it's false is largely a "religious" question. Whether a user prefers 
CamelCase or snake_naming should be entirely his decision. A language has no 
solid basis to make quite arbitrary rules. Looking objectively, Araq's approach 
is confusing (e.g. for tools) and _limiting_ both the set of available var 
names as well as the set of var naming classes.

Example: One might decide to snake_name procs or Types (with a capital 1st 
letter) but to CamelCase variables. And I do not see any solid reason for a 
language to limit the developers choice.

Finally, smartly guessing what the developer wants is one thing but to change 
what he writes is a different thing and a _bad_ one. To turn e.g. 
'_[foo](https://forum.nim-lang.org/postActivity.xml#foo) into 'foo' behind the 
users back is tricky and creating problems instead of avoiding them.

Araq, you have made many very smart choices when to be strict to avoid problems 
and when to be lenient and to give us some comfort and luxury. The weird naming 
rules imo are the one bad exception. For a start nobody should force his 
_opinion_ upon us. We respect yours but kindly don't get in our way without 
solid and objectively explainable good reason. Moreover the fact that this 
issue comes up again and again clearly demonstrates that your naming rules are 
confusing - which btw. also translates to "failing to win developers to have a 
closer look and use Nim". In fact, I've seen people call Nim an "exotic weirdo 
language" based on this issue.

Let us stick to the well working rule "we care about structure and correctness. 
Style is everyone's own choice". Yes, this sometimes leads to very ugly style 
choices but 'freedom' is more important than 'nice' and freedom should never be 
limited for the sake of 'nice' or -subjective- 'right'.

A compiler should digest what the developer wrote and complain only about 
_real_ problems, not about your subjective personal opinion (no matter how 
reasonable you feel it to be).

Reply via email to