Muitas linguagens de programação usam a sintaxe a[i]
para se referir ao i
'ésimo elemento de uma matriz, sequência ou vetor a
- especificamente, C e Pascal (do final dos anos 1960 e início dos anos 1970) fazem isso. Por outro lado, alguns idiomas anteriores, como o Fortran (da década de 1950), não usam essa convenção. Além disso, estudei um pouco de matemática, e os matemáticos usam colchetes para intervalos e subscritos para, bem, matrizes de matrizes e matrizes (ou parênteses regulares, se a matriz for vista como uma função a partir de números inteiros não negativos).
Então, minha pergunta é: onde / como / em que contexto esses colchetes para assinatura de matriz se desenvolveram e por quem?
Nota: Nem um pouco dessa pergunta sobre o uso de colchetes em C.
Respostas:
A principal linguagem precursora para C e Pascal foi o algol . A versão mais antiga disso era o Algol 58, que usava colchetes para declarações e referências de matriz.
O motivo pelo qual Algol usou colchetes em vez de, por exemplo, parênteses foi três vezes:
Observe que, diferentemente de C, que usa matrizes principalmente para indexar memória, o Algol permitiu especificar limites de índice inferior e superior. Mais uma vez, isso estava de acordo com sua intenção mais matemática. Tanto que, na verdade, o Algol foi a linguagem de fato do pseudocódigo por muitos anos.
fonte
[x]
foi usado para classes de equivalência, não para posições de indicação dentro de vetores ou matrizes.Esta é uma leitura interessante: https://en.m.wikipedia.org/wiki/Bracket
A seguir, minhas próprias observações.
Os designers de C tomaram muito cuidado ao adotar o significado de caracteres e construções, pois eram usados há centenas de anos na linguagem escrita regular. E, assim, eles tiveram que trabalhar com o subconjunto bastante limitado de caracteres ASCII. No idioma ocidental, mais caracteres de agrupamento são usados no texto escrito, mas eles simplesmente não o transformaram em ASCII.
Em linguagem regular, o significado de parênteses é fornecer informações adicionais sem interromper a mensagem principal. Isso faz sentido ao chamar um procedimento: a mensagem principal é a ação a ser executada e as sub-informações são os argumentos.
Os chavetas são usadas para agrupar. "Esta coleção de palavras pertence uma à outra e deve ser separada das demais". Portanto, faz sentido usá-los para blocos de código, instruções compostas.
Os colchetes são usados para inserções em texto que não faziam parte do original, para esclarecer o texto original e fornecer contexto. Ou para indicar omissão com reticências: [...]. "Ela [a rainha] não se divertiu". Na programação de computadores, faz um pouco de sentido usar o suporte para a indexação de array, porque é um tipo de contexto fornecido. "Matriz? Que matriz? Bem, especificamente esse elemento." Mas mesmo que o significado original não cubra totalmente o uso em uma linguagem de computador, não existem muitas outras opções no ASCII.
Então, eu diria que é uma combinação da técnica anterior e o que estava disponível na época que levou ao uso de colchetes para indexação de matriz.
[editar por causa do comentário de Alex]
Segundo esta fonte, o ASCII foi introduzido em 1963 e obteve aprovação do governo em 1968. O desenvolvimento da linguagem C não começou até 1969, de acordo com este wiki . Portanto, parece provável que o Sr. Ritchie ficou de olho nesse novo padrão amplamente suportado chamado ASCII ao escolher seus personagens.
Por favor, veja também as outras respostas que defendem Algol, "a mãe de muitas línguas", sendo uma forte influência.
fonte