Muchos lenguajes de programación usan la sintaxis a[i]
para referirse al i
elemento th de una matriz, secuencia o vector a
, específicamente, C y Pascal (desde finales de los años 60 y principios de los 70) hacen esto. Por otro lado, algunos idiomas anteriores, como el Fortran (de la década de 1950), no utilizan esta convención. Además, estudié un poco de matemática, y los matemáticos usan corchetes para intervalos y subíndices para, bueno, matrices y matrices (o paréntesis regulares si la matriz se considera como una función de enteros no negativos).
Entonces, mi pregunta es: ¿Dónde / cómo / en qué contexto se desarrollaron estos corchetes para la suscripción de matriz y por quién?
Nota: No hay nada que engañe a esta pregunta sobre el uso de llaves en C.
Respuestas:
El principal lenguaje precursor de C y Pascal fue Algol . La primera versión de eso fue Algol 58, que utilizó corchetes para declaraciones de matriz y referencias.
La razón por la cual Algol usó corchetes en lugar de, por ejemplo, paréntesis fue triple:
Tenga en cuenta que, a diferencia de C, que usa matrices principalmente para indexar la memoria, Algol permitió que se especificaran los límites de índice superior e inferior. Nuevamente, esto estaba de acuerdo con su intención más matemática. Tanto es así, de hecho, que Algol fue el lenguaje de facto para el pseudocódigo durante muchos años.
fuente
[x]
se usó para clases de equivalencia, no para posiciones de indicación dentro de vectores o matrices.Esta es una lectura interesante: https://en.m.wikipedia.org/wiki/Bracket
Las siguientes son mis propias observaciones.
Los diseñadores de C tuvieron mucho cuidado al adoptar el significado de los personajes y las construcciones, ya que se habían utilizado durante cientos de años en lenguaje escrito regular. Y al hacerlo, tuvieron que trabajar con el subconjunto bastante limitado de caracteres ASCII. En el idioma occidental, se usan más caracteres de agrupación en el texto escrito, pero estos simplemente no se convirtieron en ASCII.
En lenguaje normal, el significado de paréntesis es proporcionar información secundaria sin interrumpir el mensaje principal. Esto tiene sentido cuando se llama a un procedimiento: el mensaje principal es la acción a realizar y la subinformación son los argumentos.
Las llaves se usan para agrupar. "Esta colección de palabras van juntas, se deben separar del resto". Por lo tanto, tiene sentido usarlos para bloques de código, declaraciones compuestas.
Los corchetes se usan para inserciones en texto que no formaban parte del original, para aclarar el texto original y proporcionar contexto. O para indicar omisión con puntos suspensivos: [...]. "Ella [la reina] no estaba divertida". En la programación de computadoras, tiene un poco de sentido usar el soporte para la indexación de matrices porque es un tipo de contexto que se proporciona. "¿Matriz? ¿Qué matriz? Bueno, específicamente ese elemento". Pero incluso si el significado original no cubre completamente el uso en un lenguaje de computadora, no quedan demasiadas opciones en ASCII.
Entonces, diría que es una combinación de la técnica anterior y lo que estaba disponible en el momento que condujo al uso de corchetes para la indexación de matrices.
[editar por el comentario de Alex]
Según esta fuente, ASCII se introdujo en 1963 y obtuvo la aprobación gubernamental en 1968. El desarrollo del lenguaje C no comenzó hasta 1969, según esta wiki . Por lo tanto, parece probable que el Sr. Ritchie vigilara este nuevo estándar ampliamente compatible llamado ASCII al elegir sus personajes.
Por favor, vea también la (s) otra (s) respuesta (s) que hacen que Algol, "la madre de muchos idiomas", sea una gran influencia.
fuente