As linguagens de programação devem diferenciar maiúsculas de minúsculas. As pessoas podem se ajustar a isso com muita facilidade: elas simplesmente precisam se lembrar de trabalhar principalmente em letras minúsculas e observar os identificadores de maiúsculas ou minúsculas nas APIs existentes.
Parecia óbvio tornar as línguas sem distinção entre maiúsculas e minúsculas. Isso ocorre porque as letras minúsculas não estavam disponíveis em todos os sistemas de computação e seus dispositivos de E / S (teclados, impressoras e dispositivos de exibição). As implementações da linguagem de programação precisavam aceitar programas escritos em maiúsculas, pois somente isso poderia ser exibido ou impresso. E para isso eles tinham que ser insensíveis a maiúsculas, porque aceitar maiúsculas e diferencia maiúsculas de minúsculas significa rejeitar letras minúsculas. Minúsculas era algo que os programadores queriam, mas nem sempre podiam ter. Ninguém realmente queria trabalhar com programas que gritavam em maiúsculas; era apenas uma limitação de hardware.
Por um tempo, era comum até dobrar caixas em terminais. Se um terminal pudesse exibir apenas maiúsculas, mas você tivesse que fazer login em um sistema de computação que suporta maiúsculas e minúsculas, o terminal dobraria a minúscula para maiúscula. Acha que isso foi há tanto tempo atrás? "Como o Apple II, o Apple II Plus não tinha funcionalidade em minúsculas." (http://en.wikipedia.org/wiki/Apple_II_Plus) Quando os usuários dos primeiros computadores da Apple discavam em um BBS com conteúdo em maiúsculas e minúsculas, o emulador de terminal (ou host) precisava dobrá-lo para maiúsculas. Mensagens escritas em maiúsculas eram comuns em quadros de avisos naqueles dias. Essa funcionalidade ainda é encontrada em sistemas operacionais semelhantes ao Unix, como o kernel do Linux. Por exemplo, digite o stty olcuc
prompt no seu shell.A disciplina de linha tty do Unix pode mapear letras minúsculas para maiúsculas na saída e pode mapear maiúsculas para minúsculas na entrada. Isso permite que você trabalhe em uma linguagem de programação em letras minúsculas, em um terminal que não possui letras minúsculas.
Insensibilidade a maiúsculas e minúsculas é um conceito desatualizado de uma era passada de computadores que não funciona muito bem no mundo moderno da computação internacionalizada. Você estende isso para outros idiomas? Que tal francês: você considera È e è equivalente? Ou japonês? Você considera hiragana e katakana apenas casos, para que フ ァ イ ル e ふ ぁ い る sejam o mesmo identificador? O suporte a essa loucura complicará bastante o seu analisador lexical, que precisará ter mapas de equivalência de casos para todo o espaço Unicode.
Observe que a matemática diferencia maiúsculas de minúsculas. Por exemplo, o sigma maiúsculo pode denotar soma, enquanto o sigma minúsculo denota outra coisa, como desvio padrão. Isso pode ocorrer na mesma fórmula sem criar dificuldades. (A linguagem de programação tornará Σ e σ equivalente?)
A ortografia em inglês é sensível. Por exemplo, muitos substantivos próprios correspondem a substantivos comuns ou mesmo a outras partes do discurso. "may" é um verbo, mas "may" é um mês ou o nome de uma mulher. Além disso, se um acrônimo ou abreviação for escrito em letras minúsculas, poderá ser confuso. SAT significa teste de aptidão escolar, enquanto "sat" é o particípio passado de "sit". Pessoas inteligentes prestam atenção aos detalhes e capitalizam adequadamente.
Basicamente, qualquer nova linguagem de programação criada desde 1985, que não diferencia maiúsculas de minúsculas, é PARA AQUELES QUE AINDA CHAMAM EM E-MAILS E POSTAGENS SEM SEGUNDO PENSAMENTO.
E se o seu idioma for usado como destino de geração de código para traduzir código em outro idioma e esse outro idioma for sensível a maiúsculas e minúsculas? Você terá que, de alguma forma, transformar todos os nomes para capturar a distinção. (Portanto, afirmar que esta não é uma decisão técnica, e apenas questão das preferências emocionais do público-alvo, é ridículo.)
Observe os problemas irritantes causados pelo tratamento de casos no Windows, quando os arquivos são importados de outro sistema operacional. Essa é uma questão técnica. Os sistemas de arquivos com distinção entre maiúsculas e minúsculas têm um problema com dados externos que não diferenciam maiúsculas de minúsculas.
O Lisp comum atingiu a abordagem ideal: os nomes dos símbolos diferenciam maiúsculas de minúsculas, mas quando os tokens são lidos, eles são dobrados para maiúsculas. Isto significa que os tokens foo
, fOO
, FOO
e Foo
denotam o mesmo símbolo: o símbolo cujo nome é armazenado como a cadeia de caracteres "FOO"
. Além disso, esse comportamento é apenas a configuração da tabela de leitura padrão. O leitor pode dobrar as letras para maiúsculas, minúsculas, inverter a caixa ou preservá-la. As duas últimas opções dão origem a um dialeto que diferencia maiúsculas de minúsculas. Dessa forma, os usuários têm a máxima flexibilidade.