배열 요소에 대괄호를 사용하는 관습은 어떻게 발전 했습니까?


11

많은 프로그래밍 언어 는이 배열을 사용하여 배열, 시퀀스 또는 벡터 a[i]i'번째 요소 a-특히 C 및 Pascal (1960 년대 후반에서 1970 년대 초반)'을 참조합니다. 반면 Fortran (1950 년대)과 같은 일부 초기 언어는이 규칙을 사용하지 않습니다. 또한 약간의 수학을 공부했으며 수학자들은 간격에 대괄호를 사용하고 배열 및 행렬 첨자에 대한 첨자를 사용합니다 (배열이 음이 아닌 정수의 함수로 생각되면 규칙적인 괄호).

그래서 내 질문은 : 배열 첨자에 대한이 대괄호는 어디서 / 어떻게 / 어떻게 개발되었으며, 누구에 의해 개발 되었습니까?

참고 : C에서 중괄호 사용에 대한 이 질문 은 전혀 없습니다 .



@ gnat : 이것은 어떻게 그 속담입니까?
einpoklum

1
관련이 있지만 속지는 않습니다.
블래스터

1
두 번째 상위 답변은 대괄호의 역사를 다루고 있습니다
gnat

1
@ 폴 타이포. 당신은 xkcd.com/163을 의미 합니다 (xkdc 도메인은 중국에 등록되어 있습니다)
1201ProgramAlarm

답변:


10

C와 파스칼의 주요 선구자 언어는 Algol 이었다 . 그 초기 버전은 배열 선언과 참조에 대괄호를 사용하는 Algol 58 이었습니다 .

예를 들어 Algol이 괄호 대신 대괄호를 사용한 이유는 세 가지였습니다.

  1. 그들이 할 수 있기 때문에. Fortran이 설계 한 초기 IBM 키보드에는 괄호 만있었습니다. 이것은 Algol이 지정 될 때 변경되었습니다.
  2. Fortran에 대한 경험은 프로그래머가 종종 괄호를 과도하게 사용하는 것과 혼동되어 중요한 구문 변경으로 간주됨을 보여주었습니다.
  3. Algol의 의도는 알고리즘을 설명하는 데 사용되므로 표준 수학 표기법에 더 가깝게 만드는 것이 합리적이었습니다.

Algol은 메모리를 인덱스하기 위해 주로 배열을 사용하는 C와 달리, 하한과 상한을 모두 지정할 수있었습니다. 다시, 이것은 더 수학적 의도와 일치했다. 실제로 Algol은 수년 동안 의사 코드의 사실상의 언어였습니다.


그러나 대괄호는 표준 수학 표기법에 더 가깝습니까? 일치를 연구했을 때 [x]벡터 또는 행렬 내의 표시 위치가 아닌 등가 클래스에 사용되었습니다.
einpoklum

2
@einpoklum 참조의 첨자 또는 위첨자보다 선언의 범위가 더 큽니다. 그러나 그들은 당시의 기술로 실제로 첨자 나 위첨자를 할 수 없었기 때문에 시각적 일관성을 추구했습니다. 그리고 그들은 APL처럼 수학적인 개념을 목표로하지 않았습니다. 그들은 상당히 좁은 지점 인 알고리즘을 명확하게 표현하는 것을 목표로하고있었습니다.
Alex

또한 간격에 대괄호가 사용되었습니다. 나는 그것이 배열의 범위와 같은 의미라고 생각합니다. 또한-이 관습이 시작된 곳이 Algol인지 확실합니까?
einpoklum 12

@einpoklum C와 Pascal에서 대괄호 사용은 Algol에서 온 것입니다. 계보는 상당히 잘 문서화되어 있습니다. 디자이너가 구문을 가져간 Algol 58의 전신이 있었다면, 나는 그것을 모른다. 타이밍이 주어지지는 않지만 불가능하지는 않습니다. Algol 58은 Algol 60 이전에 구현되지 않았으므로 구현되지 않은 언어가 영감 일 수 있습니다.
Alex

5

이 흥미로운 읽기입니다 : https://en.m.wikipedia.org/wiki/Bracket

다음은 저 자신의 관찰입니다.

C 디자이너들은 문자와 구성이 수백 년 동안 정기적 인 서면 언어로 사용되어 왔기 때문에 그 의미를 채택하는 데 많은주의를 기울였습니다. 그리고 그렇게하기 위해, 그들은 매우 제한된 ASCII 문자 서브셋으로 작업해야했습니다. 서구 언어에서는 더 많은 그룹화 문자가 텍스트로 사용되지만 ASCII로 만들지는 않았습니다.

일반 언어에서 괄호의 의미는 기본 메시지를 방해하지 않고 부가 정보를 제공하는 것입니다. 이것은 프로 시저를 호출 할 때 의미가 있습니다. 기본 메시지는 수행 할 조치이고 하위 정보는 인수입니다.

중괄호는 그룹화에 사용됩니다. "이 단어 모음은 서로 속해 있으며 나머지 단어들과 구분되어야합니다." 따라서 코드 블록, 복합 명령문에 사용하는 것이 좋습니다.

대괄호는 원본의 일부가 아닌 텍스트를 삽입하는 데 사용되어 원본 텍스트를 명확하게하고 컨텍스트를 제공합니다. 또는 줄임표로 생략을 표시하려면 : [...]. "그녀 [여왕]은 즐겁지 않았다". 컴퓨터 프로그래밍에서는 일종의 컨텍스트이기 때문에 배열 인덱싱에 대괄호를 사용하는 것이 약간 의미가 있습니다. "배열? 어떤 배열? 구체적으로, 그 요소." 그러나 원래 의미가 컴퓨터 언어에서의 사용을 완전히 다루지 못하더라도 ASCII에는 너무 많은 다른 옵션이 남아 있지 않습니다.

그래서 그것은 선행 기술과 배열 인덱싱에 대괄호를 사용하게 한 당시에 사용 가능한 것들의 조합이라고 말할 것입니다.

[알렉스의 의견 때문에 편집]

소식통 에 따르면 ASCII는 1963 년에 도입되었고 1968 년에 정부의 승인을 받았다 . 이 위키 에 따르면 C 언어의 개발은 1969 년까지 시작되지 않았다 . 따라서 Ritchie 씨는 문자를 선택할 때 ASCII라고하는이 널리 지원되는 새로운 표준을 주시 한 것 같습니다.

또한 "많은 언어의 어머니"인 Algol이 강력한 영향을 미쳤다는 다른 답변도 참조하십시오.


나는 당신이 말하는 것을 얻었지만 ASCII가 C가 디자인 된 후 거의 10 년이 될 때까지 성문화되지 않았습니다. C가 설계된 PDP-11의 키보드는 훨씬 직접적인 영향을 미쳤습니다. 지원하는 문자를 사용하는 것이 좋습니다. 배열 에 대괄호 사용하는 것은 BCPL과 B를 통해 Algol에서 직접 영감을 얻었습니다. 마찬가지로 파스칼에서도 마찬가지입니다. Wirth는 Pascal을 디자인하기 전에 Algol-W를 구현했습니다.
Alex
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.