

Case-sensitivity is the past trolling us - bhauer
http://tiamat.tsotech.com/case-sensitivity-sucks

======
gumby
You wrote, "Although it's hard to imagine a CPU so slow that case-conversion
cost actually mattered, at some point that must have been the rationale" but
in fact it was not. In fact it's the other way around.

I believe Multics was the first case-sensitive system, with Unix following its
example. Until then everything was case _in_ sensitive (ITS, CTSS, TOPS-10,
VMS, TENEX, CMS etc etc). Many of the early systems had only one case anyway,
or the system code was, so if you had a terminal that supported multiple case
it was automatically folded. e.g. the PDP-6/10 set of machines, although they
supported 7 bit ascii (five characters to a word) also used a six bit
character set (packed six characters to a word) that only had upper case.

Multics reveled in the luxury of its mainframe power (around 1 MIPS perhaps)
and had a "full" (don't remember if it was 7 or 8 bit, suspect 7) ASCII
character set.

You'll also see that many older programming languages (e.g. FORTRAN, LISP,
and, sigh, BASIC and COBOL) are case insensitive while newer ones are not.

~~~
greenyoda
Today's case sensitivity does seem to be descended from Unix and C. Windows
file names are still case insensitive. Windows will preserve the original case
when displaying file names, but at the API level, file names are case
insensitive (you can't have two files called "foobar" and "FOOBAR" in the same
directory, and "delete foobar" will delete "FOOBAR"). Windows environment
variable names are also case insensitive.

------
quotemstr
While we're on the subject: other forms of trolling are allowing control
characters in filenames, not performing unicode normalization, and allowing
filenames to begin with certain shell metacharacters.

We must immediately adopt the recommendations in
[http://www.dwheeler.com/essays/fixing-unix-linux-
filenames.h...](http://www.dwheeler.com/essays/fixing-unix-linux-
filenames.html)

(No, the ability for filenames to contain arbitrary octets is not useful. It
never has been.)

------
bsder
So, if case has no meaning, why is it that in languages where everything could
be done in all lower case, programmers create conventions that actually inject
case?

The only languages that don't use case are those languages where case-
insensitivity was aggressively enforced.

That's not a vote for case insensitivity.

And, that's before we start considering languages where case actually
completely changes the glyph or has no well-defined meaning.

------
dgreensp
OS X is case-insensitive in the FS by default, so I guess that's a win? You'll
never notice it until one day you lose a file when you're unpacking an archive
from another platform that has different files named Makefile, makefile, and
MAKEFILE (not that I'm condoning that practice).

More importantly, case folding is complicated or ill-defined in some non-
English languages, and there are presumably edge cases in the algorithms. So
it gets harder to tell what any given code will do.

If "var x" and "VAR X" were the same in JavaScript, we'd just have to make our
company style guide longer. Having more ways to write different-looking but
equivalent code isn't necessarily a good thing.

 _Sure, it 's fun to write code like this: Circle circle = Circle.CIRCLE; But
were I to use a case-insensitive language, I'm pretty sure I'd get comfortable
not being able to do so._

Sounds like the kind of thing you should try before advocating it.

------
edtechdev
Yeah, case-sensitivity in programming languages is a sad artifact of the past,
I believe (just my opinion).

There were research studies showing that folks made less errors with case-
insensitivity, and it's something that would help novices without hurting
"experts" at all (in fact, save time). Even Guido van Rossom thought it might
be a good idea to make Python case-insensitive apparently, but folks revolted
(NIMPY - not in my python!): [https://mail.python.org/pipermail/python-
list/2000-May/03710...](https://mail.python.org/pipermail/python-
list/2000-May/037102.html)

Ultimately, who cares if python or javascript (excuse me, Python or
JavaScript) are case sensitive. That's just how they are designed, and they
weren't designed for beginners. Maybe future language designers though might
not do something solely because it is the tradition, the cargo cult practice.

~~~
thatthatis
If I were designing a new programming language I'd copy pythons
capitalization/lowercase conventions wholesale because in my opinion they're
fantastic

------
mitchty
Ok so case sensitivity is "trolling" us.

Upper case ß, or take turkish as another example.

Not every language agrees with the idea that case sensitivity is trolling.

------
zamalek
> Java converts a 15-character mixed-case string to lowercase at about 11,600
> conversions per millisecond [...]

Converting two strings to lowercase and comparing those is not case
insensitivity. I present to you 4 characters: I, ı, İ and i. They break your
application.

And that's where case-insensitivity becomes evil. I have no facts (other than
code reviews I do) to back this up; but the amount of developers who don't
understand case-insensitivity is hideously dangerous. Where I work I would
venture to say I correct 95% of developers from this (C#):

a.ToLower() == b.ToLower()

To this:

a.Equals(b, StringComparison.CurrentCultureIgnoreCase)

Even that flops with the Turkish Is though - what you need there is "accent
insensitivity".

I fundamentally agree with the argument that most things should be case
insensitive - I just think that the task cannot be trusted to most of the
developers today. Even though I am extremely well versed in globalization even
I mess up the majority of the time. Case insensitivity is HARD.

------
Grue3
Somebody said it. There are literally zero reasons for a programming language
to not be case insensitive by default. Unicode shouldn't be a problem either,
as long as there is a predetermined method of upcasing/downcasing everything.

------
Namrog84
I thought a lot of modern systems either disallowed folders and groups of same
name with different cases. Or are designed in a way that there can exist
multiple things with identical name. So I feel while I do agree completely. In
many intelligently designed systems. It's a non issue. Though the
domain/website thing Sometimes is quite annoying.

