두 종류의 언어

 

컴퓨터와 인간지능 : Donald G. Fink 저, 이기호 역, 이화여대 출판부, 1986, Page 61~76

 

자연 언어의 표기

인간을 위한 컴퓨터 프로그램

약어로서의 문자

컴퓨터 언어에서의 숫자

숫자에서 문자로

문자에서 단어로

컴퓨터 언어의 번역

 

 

언어는 두뇌의 주요한 도구이다. 의식적인 사고는 단어와 구절을 사용하고 지능의 무의식적인 과정에서 단어와 같은 형태들이 사용되고 있는 것은 확실한 것 같다. 또한 컴퓨터 지능의 주요한 도구가 언어여야 한다는 사실은 놀라운 것이 아니다. 물론 인간의 언어와 기계의 언어 사이에는 연관이 있어야 한다. 구문 분석은 이 책의 영역 밖의 일이지만, 이 장에서는 두 언어의 구조적 관계를 검토해야 할 필요가 있다.

자연 언어의 표기

이 책을 집필할 때 사용한 타자기의 키보드는 자연 언어의 기호들이었다. 그것은 83 개의 문자들 (문자, 숫자, 분수, 구두점, 생략형) 과 가장 많이 사용되는 기호와 단어 사이의 공란을 포함하였다. 우선 우리의 관심을 영어의 알파벳 26 개의 대문자와 공란으로 제한하자. 이들 27 개의 기호로 우리는 숫자와 구두점과 다른 어떠한 기호도 쓸 수 있다.

시간과 인내를 가지고 적절한 순서로 26 개의 문자와 공란키를 누르면 영어로 씌여진 어떤 것이든 우리는 다시 만들 수 있다. "적절한 순서로" 라는 말의 강조를 유의하라. 언어는 모든 것이 순서로, 문자나 공란의 적절한 순서가 조금만 뒤섞여도 좋은 구절이 쓸모없게 되어 버릴  수 있으며, 키를 잘못 누를 경우 걷잡을 수 없이 의미가 바뀌거나 반대로 되어 버린다.

언어에서 이런 적절한 순서를 만들기 위해서는 우선 한 가지 알파벳을 사용하여 단어를 만들 문자의 순서 (정확한 철자법) 에 익숙하여야 한다. 둘째로, 하나하나에 대해 문맥상으로나 단어에 적절한 의미를 붙여야 한다. 셋째로 구절과 문장에서 단어의 순서를 설정하는 문법의 규칙을 받아들여야 한다. 넷째로 단어와 구절, 문장과 절에 의해서 표현되는 생각의 결합에서 논리의 법칙을 개발하고 순응해야 한다. 만약 이 규칙을 어긴다면 사고의 소통을 손상시키거나 심지어는 파괴하게도 된다.

영어의 문장들은 그 격 (선언, 명령, 의문, 감탄) 과 형 (단순문, 중문, 복합문) 에 의해서 분류된다. 이런 유형과 형태는 컴퓨터 언어에서도 나타난다. 사실 계산하는 프로그램이 고쳐질 때 (debugging), "멈춰라! 필요한 지시가 생략되었다" 라는 외침이 때로 나타난다.

인간을 위한 컴퓨터 프로그램

자연 언어와 인공 언어와의 차이점을 더 확실하게 하기 위해 다시 제 1 장에서 언급한 π 를 계산하는 급수로 돌아가 시험 계산을 위한 지시문에 자연 언어를 사용하자.

"π 계산" 에서 지시, 명령, 계산하는 사람을 안내하는 데 필요한 4 가지 종류의 문장이 있다. 첫째는 계산의 주제와 해를 구하는데 필요한 모든 데이터를 나타내는 선언문이 있다. 둘째는 원하는 결과를 갖기 위해 명령하는 명령문이다. 셋째는 계산과정을 이끄는 명령문들이다. 이런 문장으로서 인간 컴퓨터는 일할 자세를 갖추게 된다. 인간의 사고 속에서 형성되고 수행되는 네 번째의 명령 그룹이 행동으로 나타나게 된다. 이러한 것들은 탁상용 계산기를 작동시킬 때, 중간과정, 또는 마지막 결과를 기록하거나 찾기 위해 인간의 마음과 눈을 지시한다. 이들 문장, 명령, 지시사항들이 전자 계산기로 프로그램하는 데 사용되는 것과 매우 비슷하기 때문에 세심한 관심을 기울일 필요가 있다.

첫째, 다음 선언문은 주제와 그 사실들에 관하여 설명해 준다.

문제를 시작하는 사람이 알든 모르든 필요한 정보 모두가 주어진다는 사실에 주의하라. 가정된 인간 컴퓨터의 추리력에 대한 확신이 없기 때문에 다른 문장들 중의 하나에서 (D-5) 연역될 수 있는 확실한 문장들 (D-7 과 D-8 같은) 을 만들어 놓는 것이 바람직하다. 이 단계에서 11 개의 선언문을 읽고 이해할 수 있는 능력만을 가정하자.

둘째, 원하는 결과를 요구하는 명령문들이 온다.

I-0. 소수 이하 6 째 짜리까지 정확한 π 의 값이 그 수열의 100 항까지를 계산해서 그 합을 평균함으로써 얻어질 수 있는지 결정하라.

그러면 계산의 단계 (절차) 를 지시하는 명령문이 다음에 온다.

I-1. 수열의 처음 100 항까지를 계산하고, 각 항의 값과 부호를 기록하다.

I-2. 처음 98 항까지를 더하고 "98-항합" 이라고 해서 그 합을 기록하라.

I-3. 99 항을 98 항까지 합에 더하고 그 합을 "99-항합" 으로 해서 기록하라.

I-4. 100 항을 99 항까지의 합에 더하고 그 합을 "100-항합" 으로 해서 기록하라.

I-5. 주어진 π 의 값과 98-항합을 비교하라. 만일 그 합이 더 적으면 다음으로 계속하라. 만약 그렇지 않다면, 착오가 있다. 후자의 경우는 착오를 고칠 수 있도록 I-1 과 I-2 의 단계에 있는 모든 작업을 조사하라. 그리고 계속하라.

I-6. 99-항 합과 π 의 주어진 값과 비교하라. 만약 그 합이 더 크면 다음 단계로 계속하고, 만약 그렇지 않다면 착오가 있는 것이다. 착오를 고치기 위해 앞에서 한 작업을 조사하고 계속하라.

I-7. 100-항합과 주어진 π 의 값을 비교하라. 만약 그 합이 더 작다면 다음 단계로 계속하고, 그렇지 않다면 착오가 있는 것이다. 착오를 찾기 위해 앞에서 한 작업을 조사하고, 계속하라.

I-8. 98-항합을 99-항합에 더하고 그 결과를 2 로 나누어라. 이것을 "99-100 평균" 으로 기록하라.

I-10. 98-99 평균을 99-100 평균의 값에 더하고, 그 결과를 2 로 나누어라. 그 결과를 "98-99-99-100 평균" 으로 기록하라.

I-11. 98-99-99-100 평균값을 주어진 π 의 값과 비교하라. 만약 그 수가 소수 이하 6 째자리까지 그리고 그것을 포함하여 정확히 같다면 "문제 해결됨" 이라고 쓰고 담당자에게 넘기라. 만약 그렇지 않으면 "문제 미해결" 이라고 쓰고 담당자에게 넘기라.

I-12. 모든 수를 계산기에서 없애고, 다음 문제에 대해 준비하라.

I-13. 중지하고 다음 지시를 기다리라.

만약 인내를 가지고 이들 절차를 밟는다면 다음의 중요한 명령어들을 발견하게 될 것이다 (방점친 부분). 계산하라, 기록하라, 더하라, 나누라, 진행하라, 조사하라, 지우라, 중지하라 등. 이것들은 컴퓨터 언어의 중요한 단어들이다. 우리는 또한 "만약 그렇다면" 과 "만약 그렇지 않으면" 뒤에 I-5, I--6, I-7, I-11 에서 "비교" 란 단어를 만나게 된다. 이러한 비교도 컴퓨터 언어의 전형적인 과정으로, 이것은 "분기점 (branch point)" 이라고 하며, 그곳에서 계산은 명령에 따라 진행된다.

이 연습에서 자연 언어와 컴퓨터 언어의 차이를 좁히는 방향으로 갔다. 그러나 이것은 계산을 수행할 수 있는 지시 가운데 쉬운 경우이다. 우리가 사고과정은 명확하게 조사하고 그리고 선언적인 문장을 사용하여 사상을 정의하고, 그러한 문장들을 관계깊은 것끼리 조합하고 반복하기 위해 더하고, 나누고, 비교하고, 그리고 그런 사상이 "참" 일 때는 어느 방향으로 나아가고, "거짓" 일 때는 어느 방향으로 나아가기 위해 스스로 명령을 사용하는 것을 안다면 더욱 중요한 방법에 있어서 격차를 줄일 수 있다. 사고의 모호한 다양성에 있어서 우리의 이해력, 추리력 그리고 행위를 연구한 언어의 논리적인 과정을 엿볼 수 있다. 일반적이지만 개인적인 그와 같은 자기 관찰에 대한 기회, 그것을 "학생을 위한 연습문제" 로서 남겨둔다.

약어로서의 문자

언어에서 아마도 없어서는 안 될 문자는 생략형 (abbreviation) 으로서 사용되는 한 개의 문자이다. 모든 문자들처럼 숫자와 구두점이 그 예이다. 당신의 이름의 처음 잘 충분히 당신을 식별한다. 사실상 영어의 알파벳의 3 자 조합인 17,576 의 대부분은 사람을 식별하는 데 사용된다 (Quentin, Xavier, Zola 같은 적절한 이름들이 존재함을 감사하게 생각한다). 마찬가지로 컴퓨터 언어에서도 한 개의 문장만을 써서 가장 흔히 사용되는 단어의 생략형으로 나타내는 경우가 가끔 있다.

약자들이 나타내는 단어들과 같은 내용인 이 약자들은 거의 항상 자연 언어에서 몇 가지 다른 의미들을 가지며, 그의 식별은 문맥에 의존한다. 그러한 여러가지 의미들은 기계작동을 매우 복잡하게 하기 때문에, 보통 약자들은 한 가지 의미만 갖도록 컴퓨터 언어에서는 정의된다. 만일 다른 의미로 사용되어야 한다면 그것은 특정한 문제의 특별한 문맥으로 정의된다.

자연 언어에서 가장 일반적인 약자는 마침표이다. 이 표시는 "문장의 끝" 이나 "이것은 약자이다" 혹은 "소수점" 을 의미한다. 모델 1401 컴퓨터 언어 (주석 : 이 장을 통하여 명확하고 일관성을 갖기 위해서 우리는 넓게 쓰이고 있는 IBM 1401 컴퓨터의 상징, 정의, 조작을 사용할 것이다. 이 컴퓨터는 Variable-word-length-binary-coded-decimal machine 이다. 대략 설명된 일반적인 원칙들은 다른 모든 디지털 컴퓨터에도 적용된다.) 에서는 이 마침표 (.) 가 컴퓨터를 지시하기 위해 사용될 때는 "중지" 를 의미하고, (분수에서 정수 부분과 소수 부분을 분리하기 위해서) 숫자와 함께 사용될 때는 "기수점 (radix point)" 을 의미한다. 다른 구두점과 부호들은 특별한 방법으로 컴퓨터 언어에서 비슷하게 정의된다. 그것들은 키보드에 있는 모든 특별기호, 즉 ? ! % $ & = * ( ) - + # - 를 포함한다. 컴퓨터에 의해 식별될 때 이들 기호의 의미는 일상적인 의미와는 관계가 없지만 컴퓨터에 의미가 정의되고 아무런 해 없이 저장된다.

어떤 언어에서든 가장 유용하게 사용되는 약어는 숫자들이다. 숫자들은 어떤 것을 세고, 순서대로 배열하는 것을 구체적으로 하는 일반적인 의미를 갖는다. 따라서 숫자 "2" 는 일반적으로 보통 한 쌍을 소유했다는 양을 나타내는 "둘" 이라는 기본적인 의미를 갖기도 하고, 혹은 수열에서 두 번째라는 순서적인 개념을 갖기도 한다. 가장 특별한 의미는 수에 있어서 위치에 따라 값이 달라지는 한 수에서 특정한 숫자를 나타낸다. 따라서 "12" 에서 2 는 "2" 를 나타내고, 120 에서 2 는 20 을, 1222 에서 2 는 각각 200, 20, 2 를 나타낸다.

컴퓨터 언어에서도 수의 이 모든 의미들이 사용되어야 하고 컴퓨터의 설계 계산에 대한 프로그램은 그 의미들 사이에 분명히 구별되어야 한다. 그렇지 않으면 컴퓨터는 원하는 방법으로 수를 사용할 수 없다.

컴퓨터 언어에서의 숫자

우리는 이제 컴퓨터 언어의 특별한 구조를 조사한다. 실제로 "평범한 영어" (또는 어느 정도 생략된 번역) 로부터 시작해서 그 평범한 영어를 기계가 받아들일 수 있고, 그리고 그것을 조작할 수 있는 형태로 번역이 될 때까지 다른 언어로 계속 진행되어가는 그런 언어의 집합이 있다. 자연 언어의 구조는 문자와 공란으로 구성되는데 그것은 점점 더 복잡하게 되어가는 단어들에서, 문장으로, 절로 커져가는 구조를 가졌다. 앞장에서 지적된 것처럼 컴퓨터 언어에서는 시작에서 첨가해야 될 요소가 하나 있다. 그의 기본 요소는 0 과 1 이다.

컴퓨터 공학의 중요한 역할을 하는 이 2 진수는 줄여서 "비트 (bit)" 라고 불리운다. 컴퓨터 프로그램에 있는 모든 문자, 단어, 문장은 컴퓨터가 그들을 식별하고 다루어서 해답을 내기 전에 한 줄의 비트 (0 과 1) 의 모임으로 결국 바뀌어져야만 한다.

이런 필요성이 인간을 기계로부터 분리시킨다. 사람은 0 과 1 로 된 비트 코드 조합을 읽을 수 없다. 그러나 기계는 놀랍도록 쉽고 빠르고 정확하게 그것을 읽을 수 있다. 내 이름의 첫 자를 택해 보자 (DGF : 저자의 이름 - 역주). 모델 1401 컴퓨터의 8-0비트 코드로 번역을 하면 이 문자들은 101101000111011100110110 ! 으로 번역된다. 실제로 연습을 통해서 나는 이 24 개의 숫자를 기억할 수는 있지만 단번에 보고 알아차린다는 것은 또다른 문제이다. 이 귀찮은 예제는 실제적인 컴퓨터 지시문에 의해 무력해진다. 컴퓨터 지시문은 문자만큼 많은 것을 포함하는데 (모델 1401 코드의 한 줄에) 그것들은 0 과 1 로 된 8 개의 조합에 의해 나타낸다.

이 모든 것이 필요할까? 어찌하여 기계코드는 인간의 식별로부터 그렇게도 멀리 분리되어야 하는가? 왜 기계는 다만 두 개의 부호만 식별하는가? 기계는 왜 10 개의 숫자를 모두 식별하지 못하는가? 혹은 더 나은 경우 26 개의 문자까지도 왜 식별하지 못하는가? 타자기의 83 개의 문자와 공란을 식별하지 못하는가?

그 해답은 전자계산기가 매우 빨리 작동되기 때문에 0 과 1 의 긴 연속을 식별하고 조작하는 것이 인간이 자연 언어의 익숙한 형태를 식별하고 조작할 수 있는 것보다 수백 배 또는 수천 배 빨리 일어난다는 사실에서 비롯된다. 이렇게 시간적 이점이 주어지면 우리는 기계의 모든 부분이 두 개 중에 가장 간단한 논리적 선택을 하도록 기계를 설계할 수 있다. 펀치카드상에 있는 위치들은 단지 천공되거나 (1), 천공되지 않아야 한다 (0), 2 극 진공관과 트랜지스터는 작동하거나 (1), 작동하지 않아야 한다 (0). 지시등은 켜지거나 (1), 꺼져야 한다 (0). 자기 기억장소들은 시계 방향으로 자기화되거나 (1), 혹은 시계 반대 방향으로 자기화되어야 한다 (0). 타자기의 타수는 치거나 (1), 치지 않아야 한다 (0).

모든 것 중에 가장 중요한 것은 아마 0 과 1 의 언어에서 컴퓨터 논리는 참 (1) 과 거짓 (0) 으로 되어 있는 문장에 기초를 두어야 한다는 것이다. 실생활에서 문장들은 완전한 참이거나 완전히 거짓은 좀처럼 없는 법이다. 그러나 결론을 얻기 위해서 논리의 원리를 사용하고자 한다면 부분적으로 참인 문장은 다루기가 너무 어려워서 그 주장을 진위로만 표시해야 한다. 기계는 더 이상의 일을 할 수가 없다.

두 개의 연산 조건 이상의 건을 다루는 컴퓨터를 만들어보려 했지만 (여러 번 시도했었다) 실용적이 되지 못한다는 것이 입증되었다. 왜냐하면 이러한 컴퓨터는 기본적으로 다르고 무한한 조건인 "부분적으로만 켜진다 (partly on)" 는 것을 구별해야 하기 때문이다. "부분적 (partly)" 이란 단어는 "켜진 것 (on-ness)" 의 정도가 표준에 대조하여 측정되어야 한다는 것을 의미한다. 탁상용 계산기와 같이 기계적 부속품을 사용하는 간단하고 느린 속도로 움직이는 기계에서는 계수바퀴를 회전시키는 열 가지 조건이 구별될 수 있을 것이다. 그러나 복잡한 고속 전자기계에서는 아직까지 발견된 가장 좋은 답변은 - 신빙도나 가격면에 있어서 - 가장 간단한 것, 즉 두 가지 조건만을 갖는 것이다. 우리의 신경계통의 기계 코드를 고안하는 데 있어서 본질도 우리가 제 9 장에서 볼 수 있는 것처럼 독자적으로 똑같은 결론에 이를 것이다.

숫자에서 문자로

기계 코드의 기본적인 "비트" 알파벳은 단지 두 가지 기호 0 과 1 을 갖는다. 자연 언어에 관한 연구에서 기호를 그룹으로 형성하기 위해서 알파벳을 어떻게 사용하는지를 안다. 한 번에 두 개를 취하면 두 개의 기호는 네 가지 (= 2 X 2) 의 다른 조합 (00, 01, 10, 11) 으로 나열될 수 있다. 한 번에 4 개를 택하면 우리는 16 (= 24) 개의 조합을 얻고, 5 개의 기호이면 32 개의 조합, 6 개이면 64, 7 개면 128 개의 조합 등으로 나열될 수 있다. 그룹에 한 개의 기호를 더 보태면 두 배의 조합의 수가 나온다. 이제 기계어의 문자를 만들 준비가 되어 있다. 자연 언어의 각 문자를 그 문자를 항상 대신하여 나타내는 0 과 1 로 나열된 것에 짝을 지우는 코드 목록 (code list) 을 적어놓기만 하면 된다.

각각 다른 문자에 대해서 0 과 1 의 다른 집합을 사용하는 한 우리 마음에 드는 0 과 1 의 집합을 마음대로 고를 수 있을 것이다. 그러나 우리는 기계가 식별하고 조작하기 쉽게 숫자의 연속을 만들도록 기준선을 사용하는 것이 바람직한 일이다. 필요 이상의 큰 숫자의 양식 (format) 은 기계와 계산시간 두 가지 모두를 낭비하는 것이다. 숫자에 코드를 정하는 데 있어서의 논리적인 2 진수 계산에 의해서 사칙연산이 가능한 2 진수의 코드 기호를 선택하는 것이 일을 상당히 쉽게 한다. 결국 각각의 코드 그룹은 한정된 수의 0, 1 을 가져야 한다. 왜냐하면 이런 제한을 각각의 문자는 시작과 끝이 있다는 것을 나타내고, 여분의 - 기호에 대한 필요성을 제거할 것이다.

이러한 지침에 유념하여 다음과 같은 코드 목록을 정하자. 첫째 원하는 문자의 목록을 선택한다. 즉 26 개의 A 에서 Z 까지의 대문자 (소문자는 대개의 응용에서 사용되기 위해 보충 설비가 충분하지 않다), 0 에서 9 까지 10 개의 숫자, 28 개의 구두점, 지시 부호, 생략 부호이다. 이들 64 개의 문자는 6 개의 0, 1 의 그룹에 의해 나타낼 수 있다 (26 = 64 는 충분한 조합을 제공한다). 우리는 자연 언어 문자를 나타내기 위해서 모든 코드 그룹에서 6 개의 숫자를 사용한다.

먼저, 각각의 10 진수를 위한 코드 그룹으로서 2 진수로 그들의 값을 준다.

우리는 각 그룹의 오른쪽에 있는 숫자에서 2 진수 값을 식별한다. 각 그룹의 왼쪽에 있는 숫자는 숫자 코드로 0 으로 채워진다.

다음에 우리는 문자들에 코드 그룹을 준다. 영어 알파벳은 세 부분으로 나뉜다. 즉 A 에서 I 까지, J 에서 R, 그리고 S 에서 Z 까지의 세 부분이다. A 에서 I 까지는, 그 그룹의 첫 번째와 두 번째의 위치는 1 로 채워지고, 나머지는 4 자리는 1 에서 9 까지의 2 진수 표시가 된다. J 에서 R 까지는 첫 번째 자리만 1 이고 두 번째는 0, 그리고 네 자리는 1 에서 9 까지의 2 진수 표시와 같다. S 에서 Z 까지는, 첫 번째는 0, 두 번재는 1, 그리고 다음 네 자리는 2 에서 9 까지 2 진수로 표시가 된다. 문자의 코드 목록은 다음과 같다.

구두점과 약어를 위한 코드는 첫째와 두 번째 위치에 "0" 과 "1" 로 되면서 가장 오른쪽 4 개의 위치는 1011 에서 1111 (10 진수로 11 에서 15 까지와 같다) 까지의 2 진수를 갖는다.

0 과 1, 6 개의 코드 그룹에 의해서 정의된 수나 문자, 그리고 부호를 갖고 각 그룹의 앞에 2 개의 숫자를 더 첨가함으로써 모두 8 개의 숫자로 만든다. 질문에서 문자가 한 단어 (또는 한 글자로 된 단어, 유일한 문자) 의 첫 (또는 유일한) 문자가 아니라는 것을 알아차린다.

첨가된 두 개의 두 번째 것은 "패리티 비트 (parity bit)" 라고 부른다. 이것은 코드 그룹에서 착오를 찾는데 도움을 준다. 이 두 번째 숫자는 전체 코드 그룹에 있는 1 의 수를 총계를 짝수로 만들어지도록 택해진다. 기계는 그 수가 홀수인 코드 홀수인 코드 그룹을 거부하고 착오가 발견되었다는 신호를 보내도록 고안되었다.

요약하면, 모델 1401 컴퓨터 언어에서 각각의 문자는 8 개의 비트에 의해 표현된다. 첫 번째가 1 이면 한 단어의 시작이라는 것을 표시한다. 두 번째는 그룹 내에서의 "1" 이 나타난 총수를 가져온다. 세 번째, 네 번째는 알파벳의 세 부분으로 구별된다. 다음 네 개는 먼저 십진수에 대한 2 진수 형태를 나타내고, 그리고 둘째로 알파벳의 세 부분에 있는 각 문자를 나타낸다. 수나 문자를 사용되지 않는 조합에 있어서, 마지막 6 개는 구두점과 특별 기호를 나타낸다.

문자에서 단어로

다음 단계는 명백하다. 우리는 컴퓨터 단어를 시작할 때마다 8 개의 코드 그룹의 첫 자리에 1 이 놓여 있는지 주의하면서 하나 또는 그 이상의 문자를 모음으로써 단어를 만든다. 컴퓨터 언어의 이런 수준에서는 매우 간단한 단어들이 사용될 뿐이다. 그것들은 주로 사람들이 그 뜻을 쉽게 이해할 수 있는 기억장치를 돕기 위해 선택된 하나의 문자로 된 약자이다 ("mnemonics" 라고 불리운다). 예를 들면 (모델 1401 에서는) Add, Subtract, Branch, Compare, Read, Punch 그리고 Write 와 같은 명령 대신에 첫 글자 A, S, B, C, R, P 그리고 W 로 나타낸다. 다른 예로는 기억장소 지울 것 (Move Characters and Suppress Zeroes) 대신에 MCS 와 같이 2 개 또는 3 개의 문자로 된 약어가 있다. 이것들은 지시적인 단어들이고 명령문에 사용된 것과 같은 형태의 주로 동사들이다.

다른 형태의 컴퓨터 단어, 특히 and, or, because, therefore, if 와 같은 연결사는 다음 장에서 설명하였다. 현재로서는 다만 비교적 새로운 언어로 단어의 성질을 요약하기만 하면 된다. 자연 언어에서의 단어와 마찬가지로 컴퓨터 언어에서의 단어는 문자 코드 목록에서 정의된 선택된 문자나 문자의 모임이다. 문자 자체의 이름을 명령할 따름이지 항상 발음될 수 있는 것은 아니지만 (MCS 는 "엠시에스" 라고 발음된다) 기억될 수 있는 것이다. 약어는 컴퓨터 전문가의 머릿속이나 컴퓨터 언어의 사전 속에 뿐만 아니라 컴퓨터의 기억장치 속에 저장될 수 있는 말들의 저장고에서부터 온 것이다. 그렇게 저장이 되면 그 말들은 인간이 문장을 만들고, 문제를 풀고, 결론에 도달하고, 한마디로 말해서 사고하면서 말을 식별하고 조작하는 방법으로 컴퓨터에 의해서 식별되고 조작될 수 있는 것이다.

컴퓨터 언어의 번역

이제 컴퓨터 언어에서 가장 중요한 절차 중의 하나인 번역에 대해 개괄하면서 이 장을 마무리짓자. 컴퓨터 언어의 초보적인 수준은 보통 사람은 거의 이해할 수 없는 기계 비트 코드이다. 그것은 다음 단계의 높은 수준인 약어 언어 (mnemonic word language) 로 번역이 될 때만 이해할 수 있는 것이 된다. 이런 번역은 어떻게 수행되는가? 만약 시간과 인내심이 있다면, 8 개나 하나의 그룹을 이루는 "0" 과 "1" 의 수를 세어서 코드 리스트에 일치하는 문자를 찾아서 그 문자를 써줌으로써 모델 1401 컴퓨터 숫자를 번역할 수 있다. 단어 (각 문자는 그 코드 그룹을 시작하는 데 그것을 가진다) 를 생성하는 데 필요한 문자들을 우리가 주시할 때까지 어떤 명료한 것도 나타나지 않는다. 단지 조금만 연습하면 우리는 약어 (mnemonic word) 를 읽을 수 있고 단어들의 연속으로부터 그것의 뜻을 예측할 수 있다. 자료들을 정의한 "데이타 목록 (data list)" 에 있는 뜻을 살펴 봄으로써 데이터 단어를 번역할 수 있다.

이러한 것이 상당한 연습이 될 것이다. 숫자를 세기 위해서 컴퓨터를 정리하고 단어의 첫 자리가 "1" 인가를 주시하면서, 일치하는 문자를 기억 장치에서 찾아 마지막으로 약어를 인쇄해내는 것이 훨씬 더 간단해진다. 이러한 자동번역 없이는 인간과 기계와의 거리감이 있고 기계에서 문제를 주고 기계로부터 답을 얻어낸다는 것이 너무 늦기 때문에 컴퓨터 기술은 실용성이 희박할 것이다.

2 진수에서 문자와 단어로 바꾸는 번역은 컴퓨터의 산물이다. 정보는 각각의 키보드 문자를 그 문자에 대응하는 코드 그룹으로 자동적으로 바꾸는 전기 타이프라이터에 의해서 컴퓨터 속으로 들어간다. 기계 (컴퓨터) 는 각각의 코드 그룹을 "짝수" 로 만들기 위해서 두 번째 자리에 0 이나 1 을 자동적으로 끼워 넣는다. 마찬가지로, 정보를 자동인쇄기와 같은 타이프라이터를 사용해서 컴퓨터로부터 문자 (character), 공간 (space) 그리고 약어 (mnemonic words) 로 번역한다.

결국 "보통 언어" 에 관한 것은 무엇인가? 약어가 정보를 지시하고, 제공하며 얻어내는 데만 사용되는 한 컴퓨터 언어는 전문가 손에 달려 있다. 컴퓨터 언어를 과학, 상업, 산업의 분야에 접근시키기 위해 자연 언어에서, 그리고 자연 언어로 옮기는 다른 번역이 요구된다. 그런 번역 프로그램 ("compiler" 라고 불리운다) 은 더 복잡한 컴퓨터 배열을 취하며 약어 번역 (mnemonic translation) 보다 시간이 더 많이 걸린다. 그러나 그것들은 컴퓨터 시스템의 활용범위를 매우 넓혀서 컴퓨터만큼이나 중요하게 된다. 그것들은 "소프트웨어 (software)" 라는 프로그래밍에 도움이 되는 일반적인 이름을 갖는데 그 프로그래밍의 원조자 중에 컴파일러 번역 (compiler translation) 이 주요한 것이다. 소프트웨어에 관한 것은 제 8 장에서 더 자세히 다루겠다.