Языки программирования должны учитывать регистр, точка. Люди могут легко приспособиться к этому: им просто нужно помнить, что они работают в основном в нижнем регистре, и следить за идентификаторами со смешанным регистром или заглавными буквами в существующих API.
Когда-то казалось очевидным сделать языки нечувствительными к регистру. Это связано с тем, что строчные буквы были доступны не для всех вычислительных систем и их устройств ввода-вывода (клавиатуры, принтеры и устройства отображения). Реализации языка программирования должны были принимать программы, написанные в верхнем регистре, так как только это могло быть отображено или напечатано. И для этого они должны были быть нечувствительными к регистру, потому что принимать заглавные буквы и быть чувствительными к регистру в то же время означает отклонять строчные. Строчные буквы были тем, чего хотели программисты, но не всегда могли. Никто действительно не хотел работать с программами, которые кричали в верхнем регистре; это было просто аппаратное ограничение.
Какое-то время было обычным делом даже складывать чемоданы в терминалах. Если терминал мог отображать только верхний регистр, но вы должны были войти в вычислительную систему, поддерживающую верхний и нижний регистр, терминал перевернул бы нижний регистр в верхний регистр. Думаешь, это было так давно? «Как и Apple II, у Apple II Plus не было строчной функциональности». (http://en.wikipedia.org/wiki/Apple_II_Plus) Когда пользователи ранних компьютеров Apple набирали номер BBS со смешанным содержимым, эмулятор терминала (или хост) должен был свернуть все это в верхний регистр. В те дни сообщения, написанные заглавными буквами, были обычным делом на досках объявлений. Эта функциональность все еще присутствует в Unix-подобных операционных системах, таких как ядро Linux. Например, введите stty olcuc
в командной строке приглашение.Дисциплина строки Unix tty может отображать нижний регистр в верхний регистр при выводе, и она может отображать верхний регистр в нижний регистр при вводе. Это позволяет вам работать на языке программирования в нижнем регистре, на терминале, который не имеет строчных букв.
Нечувствительность к регистру - устаревшая концепция ушедшей компьютерной эры, которая не очень хорошо работает в современном мире интернационализированных вычислений. Вы распространяете это на другие языки? Как насчет французского: вы считаете È и è эквивалентными? Или японский? Считаете ли вы хирагана и катакана просто случаями, чтобы フ フ イ ル и ふ ぁ い る были одним и тем же идентификатором? Поддержка такой глупости значительно усложнит ваш лексический анализатор, который должен иметь карты эквивалентности регистра для всего пространства Юникода.
Обратите внимание, что математика чувствительна к регистру. Например, сигма в верхнем регистре может обозначать суммирование, тогда как сигма в нижнем регистре обозначает что-то еще, например, стандартное отклонение. Это может произойти в той же формуле, не создавая никаких трудностей. (Будет ли язык программирования делать Σ и σ эквивалентными?)
Английская орфография чувствительна. Например, многие собственные существительные соответствуют обычным существительным или даже другим частям речи. «май» - это глагол, но «май» - это месяц или имя женщины. Более того, если аббревиатура или аббревиатура написана в нижнем регистре, это может сбить с толку. SAT означает «схоластический тест на способность», тогда как «sat» - это причастие «sit» в прошлом. Интеллигентные люди обращают внимание на детали и правильно пишут.
По сути, любой новый язык программирования, созданный с 1985 года и не чувствительный к регистру, предназначен для тех, кто все равно отправляет электронные письма и почтовые отправления без второй мысли.
Что, если ваш язык когда-либо используется в качестве цели генерации кода для перевода кода на другой язык, и этот другой язык чувствителен к регистру? Вам придется каким-то образом преобразовать все имена, чтобы уловить различие. (Так что утверждать, что это не техническое решение, а только вопрос эмоциональных предпочтений целевой аудитории, смешно.)
Посмотрите на досадные проблемы, вызванные обработкой дел в Windows, когда файлы импортируются из другой операционной системы. Это техническая проблема. У чувствительных к регистру файловых систем есть проблема с внешними данными, которые не чувствительны к регистру.
Common Lisp нашел идеальный подход: имена символов чувствительны к регистру, но когда токены читаются, они складываются в верхний регистр. Это означает , что маркеры foo
, fOO
, FOO
и Foo
все обозначают тот же символ: символ, имя которого хранится в виде строки символов "FOO"
. Кроме того, это поведение является только конфигурацией таблицы чтения по умолчанию. Читатель может сложить буквы в верхний регистр, в нижний регистр, перевернуть регистр или сохранить его. Последние два варианта дают начало чувствительному к регистру диалекту. Таким образом, пользователи имеют максимальную гибкость.