2022-10-26 TIL

SanE·2024년 1월 26일
0

컴퓨터공학

목록 보기
6/23

언어란 무엇인가


언어는 편의를 제공하기 위한 지름길이다. 언어를 사용하면 복잡한 개념을 직접 보여주지 않고도 의사소통을 할 수 있다. 게다가 언어를 사용하면 개념을 아주 멀리까지 전달할 수 있고, 전달하는 과정에서 중재자를 둘 수도 있다.

모든 언어의 뜻은 기호의 집합으로 인코딩된다. 하지만 의미를 기호로 인코딩하는 것만으로는 충분하지 않다. 언어가 제대로 작동하려면 의사소통하는 당사자들이 모두 같은 문맥을 공유해서 같은 기호에 같은 뜻을 부여할 수 있어야 한다.

문자 언어


문자 언어는 기호를 나열한 것이다. 기호를 정해진 순서대로 나열하면 단어를 만들 수 있다. 예를 들어, 우리말에서 ‘맛집’이라는 말은 여섯 가지 기호로 이뤄지며 각각을 왼쪽부터 오른쪽 음절 순, 초, 중, 종성 순으로 적으면 ‘ㅁ’, ‘ㅏ’, ‘ㅅ’, ‘ㅈ’, ‘ㅣ’, ‘ㅂ’ 이다. 영어의 ‘yum’이라는 단어는 왼쪽부터 오른쪽으로 ‘y’, ‘u’, ‘m’이라는 글자로 이뤄진다.

기호나 조합은 무궁무진한 가능성이 있다. 현대 한글은 24자의 기본 자모를 사용한다. 영어에는 기본 기호가 26개 (A~Z) 있다. 언어마다 기호와 기호 유형이 달라질 수 있다. 예를들어, 각 글자가 모두 다른 뜻을 나타내는 표의문자인 한자를 사용하는 일어나 중국어처럼, 수많은 기호로 표현하는 언어도 있다.

다음과 같은 세 가지 구성요소가 문자 언어의 틀을 이루는데, 컴퓨터 언어에서도 마찬가지다.

  • 기호가 들어갈 상자

  • 상자에 들어갈 기호

  • 상자의 순서

    일부 언어에는 주변의 상자 안에 들어 있는 기호의 종류에 따라 상자에 들어갈 수 있는 기호를 제한하는 복잡한 규칙이 존재하기도 한다. 예를 들어, 어떤 기호들은 서로 인접한 사자에 들어 갈 수 없다.

비트


먼저 상자에 대해 생각해보자. 자연어에서는 이 상자를 문자라고 부르고 컴퓨터에서는 비트라고 부른다. ‘비트’라는 단어는 2진법을 사용한다는 뜻의 ‘바이너리’와 숫자를 뜻하는 ‘디지트’가 기묘하게 합쳐진 말이다. 이 결합이 기묘한 이유는 ‘바이너리’라는 말은 두 가지 부분으로 이뤄진 어떤 대상을 뜻하고, ‘디지트’라는 말은 일상생활에서 쓰는 10진수를 표현하는 10가지 기호를 뜻하기 때문이다. 2장에서는 비트를 컴퓨터에 사용하는 이유를 살펴본다. 지금은 비트를 사용하면 적은 비용으로 편리하게 기호를 담을 수 있다고 아는 것으로 충분하다.

기호라는 개념은 추상적이다. 실제로는 기호가 무엇이든 관계없다. 꺼짐/ 켜짐일 수도 있고, 낮 / 밤일 수도 있으며, 쌀/ 보리 게임일 수도 있다. 하지만 기억하라. 언언느 문맥 없이는 제대로 작동할 수 없다. 말하는 사람은 U( 점-점-선)를 말한다고 생각하는데 듣는 사람은 쌀-쌀-보리라고 듣는다면 상황이 금방 이상해진다.

논리 연산


비트 사용법 중 하나는 “날씨가 추운가?”, “내 모자를 좋아하냐?”와 같은 예 / 아니요 질문에 대한 답을 표현하는 것이다. 이때 ‘예’를 참(true)이라는 용어로 부르고, ‘아니요’를 거짓( false )이라는 용어로 부른다. “개 파티 장소는 어디인가?” 와 같은 질문 ‘예 / 아니요’로 답할 수 없기 때문에 한 비트만으로 표현할 수 없다.

자연어에서 여러 예 / 아니요 구절을 엮어서 한 문장으로 만드는 경우가 자주 있다. “밖에 비가 내리고 있거나 춥다면 코트를 입어라.” 라거나, “눈이 오고, 학교에 가는 날이 아니라면 스키를 타러 가라.”라고 말할 수 있다. 이 문장들을 다르게 써서 “눈이 오고, 학교에 가는 날이 아니라면 스키를 타러 가라.”라고 말할 수 있다. 이 문장들을 다르게 써서 “’추운가?’ 가 참이거나 ‘비가 오고 있는가?’가 참이라면 ‘코트 입는다’가 참이다.”나 “’눈이 오고있는가?’가 참이고 ‘학교에 가는 날인가?’가 참이 아니라면 ‘스키를 탄다’가 참이다.” 라고 할 수도 있다. 다른 비트들이 표현하는 내용으로부터 새로운 비트를 만들어내는 이런 동작을 논리 연산이라고 한다.

불리언 대수

대수가 수에 대한 연산 규칙의 집합인 것처럼, 1800년대 영국 수학자 조지 불이 만들어낸 불리언 대수도 비트에 대해 사용할 수 있는 연산 규칙의 집합니다. 일반 대수와 마찬가지로 결합 법칙, 교환 법칙, 분배 법칙을 불리언 대수에 적용할 수 있다.

기본적인 불리언 연산자는 NOT, AND, OR 세 가지다. 추가로 XOR 이라는 합성 연산을 마지막에 설명한다.

  • NOT : 이 연산은 ‘논리적 반대’를 의미한다. 예를 들어, 거짓인 비트에 NOT을 하면 참이 되고 참인 비트에 NOT을 하면 거짓이 된다.
  • AND : 이 연산은 둘 이상의 비트에 작용한다. 2비트 연산인 경우 첫 번째 비트가 참이고 두번째 비트도 참인 경우에만 결과가 참이 된다. 2비트보다 더 많은 비트에 연산을 적용하는 경우 모든 비트가 참이면 AND 연산의 결과도 참이다.
  • OR : 이 연산도 둘 이상의 비트에 작용한다. 2비트 연산인 경우 첫 번째 비트가 참이거나 두 번째 비트가 참이면 결과가 참이 된다. 2비트보다 더 많은 비트에 연산을 적용하는 경우 어느 한 비트라도 참이면 OR 연산의 결과도 참이다.
  • XOR : 이 배타적 OR의 결과는 첫 번째 비트와 두 번째 비트가 다른 값인 경우에만 참이 된다. 즉 두 값 중 어느 하나가 참이면 XOR도 참이지만 두 값이 모두 참이면 XOR의 결과는 거짓이다. 배타적 OR 을 그대로 말로 하면 너무 길기 때문에 줄여서 XOR이라고 부른다.
profile
완벽을 찾는 프론트엔드 개발자

0개의 댓글