초기 유닉스(UNIX) 환경, 괄호는 어떻게 사용되었을까?
1960년대 ASCII 표준(ASCII Standard)의 제약으로 인해 초기 터미널(Terminal)에서는 괄호({ })를 직접 입력할 수 없었음
C 언어(C Language)의 등장과 함께 트리그래프(Trigraphs) 및 터미널 드라이버(Terminal Driver)를 활용하여 괄호 문제를 해결
B 언어(B Language)에서 C 언어로의 전환 과정에서 괄호 사용 방식의 변화가 있었음
Teletype Model 37과 같은 새로운 터미널의 등장으로 괄호 사용 제약이 점차 해소됨
Teletype Model 33의 제약과 C 언어의 적응
1960년대 ASCII 표준(ASCII Standard)을 기반으로 한 Teletype Model 33은 소문자, 괄호, 물결표 등 일부 문자를 지원하지 않았다. 이러한 제약으로 인해 C 언어(C Language)는 트리그래프(Trigraphs)를 도입하여 괄호를 대체하는 방식을 사용했다. 예를 들어, `??<`는 `{`를, `??>`는 `}`를 의미했다. 하지만 트리그래프는 Teletype Model 33이 이미 널리 사용된 이후에 도입되었다.
터미널 드라이버(Terminal Driver)를 통한 괄호 문제 해결
유닉스 V4(UNIX V4)부터는 터미널 드라이버(Terminal Driver)가 `\(`를 `{`로, `\)`를 `}`로 변환하는 기능을 제공했다. 이는 Teletype Model 33과 같은 터미널에서 괄호를 사용할 수 있도록 하기 위한 해결책이었다. 이러한 변환은 유저 공간 프로그램에는 투명하게 적용되었으며, 사용자는 ASCII 괄호를 사용하고, 커널(Kernel)이 이를 `\(` `\)`로 변환하여 처리했다. 이러한 방식은 데이터 격리 아키텍처(Data Isolation Architecture)의 초기 형태라고 볼 수 있다.
B 언어(B Language)에서 C 언어로의 전환과 괄호 사용
C 언어(C Language) 이전의 B 언어(B Language)는 괄호 대신 `$(`와 `$)`를 사용했다. B 언어는 PDP-7에서 시작되었으며, 18비트 워드(Word)를 사용했기 때문에 각 문자를 두 개의 문자로 표현해야 했다. C 언어는 B 언어의 후속으로, PDP-11에서 16비트 워드와 8비트 어드레싱을 지원하기 위해 개발되었다. C 언어는 B 언어의 구문을 유지하면서 컴파일러를 도입하여 성능을 향상시켰고, 괄호 사용 방식도 유지했다.
Teletype Model 37의 등장과 괄호 사용의 변화
Teletype Model 37은 Teletype Model 33의 후속 모델로, 더 향상된 ASCII 문자 집합을 지원했다. 이로 인해 괄호와 같은 특수 문자를 직접 입력할 수 있게 되었고, C 언어 개발 환경은 더욱 편리해졌다. Teletype Model 37은 다양한 제어 시퀀스를 지원하여 텍스트 편집 기능을 향상시켰으며, 유닉스(UNIX) 시스템에서 널리 사용되었다. Teletype Model 37의 등장은 괄호 사용의 제약을 극복하는 데 중요한 역할을 했다.