자료형, 자료구조와 대수적 구조 간의 유사성

sith-call.dev·2021년 8월 3일
0

Computer Science

목록 보기
3/15
post-thumbnail

지극히 저의 개인적인 생각임을 미리 알립니다.

0. 서론

자료형

자료형을 처음 배울 때 이런 생각이 있었다. "왜 굳이 자료형을 나누고 필요한 것인가?" 이후에 알게 된 이유는 메모리를 최대한 아껴쓰기 위함이었다. 그래서 데이터마다 딱 필요한 만큼의 메모리를 부여하기 위해 자료형이 고안된 것이다. 그리고 이렇게 컴파일 시간에 타입이 결정되는 언어를 정적 언어라고 한다. 이후 시간이 흐르고 메모리 용량으로부터 자유로워진 시점부터는 이런 자료형을 신경 쓰지 않아도 되는 동적 언어가 생기기도 했다. 참고로 동적 언어는 데이터의 형이 런타임 시간에 결정된다.

자료형을 이해하는 다른 관점

자료형은 위와 같은 방식으로 이해하는 것이 보편적이라고 생각한다. 그러나 추상대수학에서 다루는 대수적 구조를 알고 있다면, 자료형을 다른 관점에서도 고찰해볼 수 있다. 이 글에서는 자료형과 대수적 구조 간의 유사성을 통해 자료형을 조금 색다르게 이해해본다.

1. 만물은 수이다

수란 무엇인가?

대수적 구조에 대해서 고찰해보기 위해선 먼저 수에 대해서 고찰해보아야 한다. 왜냐하면 수가 무엇인지 탐구하다가 보면 만나게 되는 결론이 대수적 구조이기 때문이다. 그렇다면 한번 질문을 던져본다. 수란 무엇인가? 한번이라도 수의 적확한 정의가 무엇인지 생각해본 적 있는가? 개인적으로 나는 없었다. 그래서 이 질문이 매우 추상적이었다. 결론부터 말하자면 수는 수 자체만을 고찰하게 된다면 그것의 실체를 파악할 수 없다. 왜냐하면 수는 연산과 불가분의 관계이기 때문이다. 바로 이 점이 내가 생각하는 자료형과 대수적 구조 간의 유사성이다. 그래서 이 유사성을 연결고리로 대수적 구조의 관점으로 자료형을 이해할 수 있다.

수는 연산과 불가분의 관계이다

앞서 말했듯이 수는 연산과 불가분의 관계이다. 그렇기 때문에 수에 대해서 고찰해볼 땐 연산과 함께 고찰해보아야 하며 그 반대의 경우도 마찬가지이다. 그러나 이것이 썩 와닿지 않는 설명이다. 간단한 예시를 들어본다.

여기 찰흙 두 개가 있다. 이 두 덩이의 찰흙을 더해본다. 그러면 한 덩이의 찰흙이 된다. 1+1=1 이란 수식이 찰흙 사이에서는 가능하다.
다시 여기 돌멩이 두 개가 있다. 두 돌멩이를 더해본다. 그러면 두 개의 돌멩이가 된다. 돌멩이 사이에서는 1+1의 결과가 2이다.
이처럼 연산은 연산이 행해지는 수에 따라서 다른 결과를 나타낼 수 있으며, 또한 사용하는 수에 따라서 다른 연산이 부여될 수 있다.

수란 연산가능한 모든 것

피타고라스는 만물이 수로 이루어져 있다고 말했다. 이러한 피타고라스의 말은 자칫 신비주의적인 문장으로 들릴 수 있다. 그러나 수는 연산과 불가분의 관계라는 것을 알게 된다면, 연산가능한 모든 것이 수가 될 수 있음을 이해할 수 있다. 내가 어떤 것에 임의적인 연산을 부여한다면 그것은 곧 수이기 때문이다.

대수적 구조

이러한 수에 대한 개념은 추상대수학에서 대수적 구조라는 개념으로 나타난다. 대수적 구조란 어떤 집합과 그 집합에서 사용할 연산, 그리고 그 연산이 따르게 되는 공리로 이루어져 있다. 연산의 정의와 그 정의에 따라서, 그리고 만족되는 공리의 종류에 따라 대수적 구조는 그 종류를 달리한다. 공리의 예시로는 결합법칙, 교환법칙, 분배법칙, 항등원의 유무, 역원의 유무와 같은 것들이 있다. 또한 대수적 구조에서 말하는 집합이란 구체적으로 자연수, 실수, 벡터 등과 같은 것이 될 수 있다.

<참고사항>

대수적 구조에서 사용하게 될 집합은 어떤 것이든 상관 없다. 그러나 보통 말하는 수의 체계는 자연수에서부터 시작하여 확장한다. 그리고 그 확장의 계기마다 어떤 방정식이 존재한다. 만약 'x + 1 = 0' 이란 방정식을 자연수만 아는 사람에게 풀어보라고 한다면 정답을 말할 수 없다. 이처럼 기존의 수체계 안에서 풀 수 없는 방정식을 계기로 수의 체계는 확장된다. 그러나 그 확장의 시발점인 자연수 집합은 자연적으로 발생되었으나 페아노 공리계에 의해서 추후에 정의되었다.
(수정) 추가적으로 페아노 공리계 이후에 폰 노이만이 자연수 집합에 대한 공리를 만들었는데, 폰 노이만의 공리들이 이후에 더 큰 영향력을 갖게 되었다.

2. 자료형과 대수적 구조 간의 유사성

자료형도 대수적 구조이다

대수적 구조에 대해서 알고 있다면 자료형도 대수적 구조임을 단번에 알아차릴 수 있다. 자료형에서 사용하는 데이터는 주어지는 메모리의 크기와 그 메모리 안의 비트에 부여되는 의미로 정의된다. 그리고 다시 그 자료형에서만 사용하는 연산을 따로 정의한다. 또한 그 연산은 결합법칙, 교환법칙과 같은 공리를 만족할 수 있다. 따라서 자료형도 대수적 구조라고 할 수 있다.

double 자료형

double 자료형 같은 경우 한 데이터에 64비트를 할당한다. 그리고 이 비트는 IEE 754 표준이란 방법으로 비트마다 의미를 부여한다. 그리고 이 자료형을 연산하는 함수를 정의함으로써 double이란 자료형을 정의한다. 이런 점에서 ADT(Abstract Data Type)가 자료형의 대수적 구조로서의 면모를 더 잘 나타낸다고도 말할 수 있겠다.

IEE 754 표준 방식


Double 형의 ADT

3. 자료구조와 대수적 구조 간의 유사성

이러한 유사성은 자료구조에서도 발견할 수 있다. 일단 자료구조는 추상 자료형(ADT,Abstract Data Type)을 통해서 그 개요를 파악할 수 있다. 추상 자료형에선 사용할 데이터에 대한 정의와 그 데이터와 같이 사용될 연산을 정의해놓는다. 이 점에서 유사성은 더 눈에 띈다. 즉, 자료구조는 데이터와 알고리즘 간의 관계를 묶어서 표현해놓은 것이라 말할 수 있다.

자료구조는 ADT가 결정되면 실재로 이것을 코드를 통해서 구현해야 한다. 이때 이 자료구조에서 사용하는 데이터는 어떤 자료형으로 구현해야할지 정한다. 그리고 이 자료형 및 데이터에게 적합한 연산 및 알고리즘을 결정한다. 이것의 결정 기준은 시공간 복잡도를 들 수 있다.

4. 결론

수학은 추상적이다. 그러나 실세계와 연결되는 지점이 있기에 공학에서 그 위상이 대단하다고 생각한다. 그것의 한 예시로서 그리고 나의 고찰로서 이 글을 남긴다.

참고문헌

  1. https://ko.wikipedia.org/wiki/%EB%B6%80%EB%8F%99%EC%86%8C%EC%88%98%EC%A0%90
  2. https://ko.wikipedia.org/wiki/%EB%8C%80%EC%88%98_%EA%B5%AC%EC%A1%B0
  3. https://www.scienceall.com/0%EC%9D%98-%EB%B0%9C%EA%B2%AC/
  4. https://ko.wikipedia.org/wiki/%ED%8E%98%EC%95%84%EB%85%B8_%EA%B3%B5%EB%A6%AC%EA%B3%84
  5. 박세희, 『수학의 세계』, 서울대학교출판문화원(2013).
  6. 김민형, 『수학의 수학』, 은행나무(2016).
  7. 아다치 노리오/이인호 역, 『무한의 끝에 무엇이 있을까』, 프리렉(2018).
  8. 박병하, 『수학의 감각』, 행성B(2018).

부족한 글 읽어주셔서 감사하고 틀린 점이 있다면 언제든 지적해주세요. 감사히 수정하겠습니다.

profile
lim (time → ∞) Life(time) = LOVE

0개의 댓글