My OS of choice for the last 25 years has a case sensitive filesystem, all the programming languages I learned (well, except PHP) are case sensitive, it is too hard to unlearn.
BTW, PHP has weird case sensitivity rules. Case sensitive (both user defined and PHP defined):
* variables
* constants
* array keys
* class properties
* class constants
Case insensitive (both user defined and PHP defined) * functions
* class constructors
* class methods
* keywords and constructs (if, else, null, foreach, echo etc.)In Python there is a convention for naming classes with `CamelCase` and instances with `snake_case`.
I could do that in a case insensitive language, but I can't do this in Nim because it is not only case insensitive, it violates the "principle of least astonishment" by normalizing variable names in a way that makes `FooBar` equivalent to `foo_bar` or `F_o_O_b_A_r`.
If you can't see the trouble with this, I rest my case.
class FooBar(): pass
foo_bar = FooBar()
The equivalent in Nim: type FooBar = object
var foo_bar = FooBar()
Compiles and runs perfectly fine.How can this be the case? Well, the identifier equality rules in Nim have changed a while back, to make the first letter of every identifier case sensitive. So, FooBar == Foo_Bar == Foobar, but fooBar != Foo_Bar.
> Nimrod is a style-insensitive language. This means that it is not case-sensitive and even underscores are ignored: type is a reserved word, and so is TYPE or T_Y_P_E. The idea behind this is that this allows programmers to use their own preferred spelling style and libraries written by different programmers cannot use incompatible conventions.
And you can always just learn another naming convention. That's not hard. Almost every language comes with its own way of naming things. For me - I'm using really a lot of languages at the same time - it's actually helpful because it makes easier to tell which language I'm writing right now...
http://blog.codinghorror.com/the-case-for-case-insensitivity...