[DEBUG-WINDOW 처리영역 보기]
즐겨찾기  |  뉴스레터  |  오늘의 정보  |  e브릭몰e브릭몰 회원가입   로그인
BRIC홈 동향
랩박스 - 형광 이미징의 모든 것
스폰서배너광고 안내  배너1 배너2 배너3 배너4
과학으로 본 코로나19 (COVID-19)
전체보기 Bio통신원 Bio통계 BRIC View BRIC이만난사람들 웹진(BioWave)
목록
조회 5112  인쇄하기 주소복사 트위터 공유 페이스북 공유 
바이오통신원   
[초심자를 위한 생물학+정보학] 컴퓨터와 자료형 - 16
생명과학 고주온 (2015-03-31)

_16_

- 컴퓨터와 자료형 -

이번 편에서는 모처럼 조금 쉬어 가는 듯이 편하게 가보는 게 어떨까 한다.

외국어를 모르는 사람에게는 모국어로 대화해야 한다. 마찬가지로, 컴퓨터에서 어떤 작업을 수행하려면 컴퓨터가 알아듣는 방식으로 일을 주어야 한다. 그런데, 여러분들도 잘 알다시피 컴퓨터는 전자 제품이고 전자 제품이라는 것은 그 작동 원리가 디지털 방식이라는 뜻이다.

디지털 (digital)이라는 말의 어원인 'digit'는 '척추동물의 팔다리 말단부의 손가락이나 발가락의 하나 1라는 의미로서, 불연속의 의미를 내포하고 있다. 이와 함께, 컴퓨터를 말할 때 자주 등장하는 용어인 비트 (bit)는 'binary digit'의 줄임말로 2진법 한 자리 (0 또는 1)를 뜻한다. 달리 말하면, 컴퓨터는 근본적으로 01로 이루어진 하나의 자리가 많이 모여서 작동하는 장치이다. 그래서 아주 정확하기도 하지만, 이렇게 01이라는 두 숫자로 인간 세상의 복잡다단한 사실들을 표현하려다 보니 여러 가지 방법이 고안되어 사용되고 있고, 어쨌든 컴퓨터는 기본적으로 이 두 가지 상태에서 출발한다.

이 이야기를 왜 하는지 의아해 하는 독자들이 많겠지만, 여기에 우리의 고난이 자리하고 있기 때문이다.

예컨대, 컴퓨터로 표현되는 내용에는 숫자, 문자, 점, 선, 면, 도형, 입체, 색깔, 소리, 그리고 이들의 시간 흐름에 따른 변화까지 대단히 다양한 형식의 자료들이 있다. 이들을 01의 상태로만 표현해야 하니, 그리 간단한 일은 아니지 않은가. 숫자만 해도 자연수, 정수, 분수 및 소수 등의 유리수, 무리수, 심지어 허수까지, 매우 다양한 자료형을 표현해야 한다. 그것도 최대한의 정확도로.

일단, 다음 질문에 대한 답을 한 번 생각해 보자.

---
이 더하기 일은?
---

아마도 대부분의 독자들은 '삼'이라고 생각했을 것이다. '삼'에도 여러 가지가 있지만... 그런데, 이런 답도 가능하다.

'치과'.

왜 그런지는 그냥 한 번 생각해 보시고... :)

그렇지만, 컴퓨터의 상태에는 이것도 맞고 저것도 맞고 하는 일은 있을 수 없다. '이거, 아니면 저거' 만이 있을 뿐이다. 다음의 그림을 보자. 이 그림은 1892년에 독일의 「Fliegende Blätter」라는 잡지에 실린 것이다.2


여러분은 그림1에 보이는 동물의 머리가 토끼의 그것과 오리의 그것 가운데 어느 것으로 보이는가? 아마도 이렇게도 보이고 저렇게도 보일 것이다3. 그러나, 이런 종류의 모호성은 컴퓨터에서는 허락되지 않는다. 오히려 이런 애매함을 제거하여 정확도를 높이기 위해서 사용한다. 그래서, 인간의 의사 결정에 활용하기 위해서는 거꾸로 융통성을 부여하기 위한 여러 가지 노력을 하고 있다. 즉, 컴퓨터의 기본적인 원리는 융통성이 전혀 없지만, 정확성을 유지함과 동시에 적용 가능성을 확보하기 위하여 여러 가지 방법을 동원한다. 그 가운데 가장 기본적인 것 중의 하나가 '자료형 (data type)'이다. 그리고, 이들의 체제를 컴퓨터 과학에서는 '자료형 체계 (type system)'라고 한다.

자료형 체계에 대한 정의의 한 예는 다음과 같다.

A type system is a tractable syntactic method for proving the absence of certain program be-haviors by classifying phrases according to the kinds of values they compute. (Pierce, 2002)

즉, 자료형 체계는 '계산될 값을 종류에 따라서 구문을 분류하여 특정한 프로그램 결과 (오류)가 생기지 않도록 컴퓨터 문법에서 다루기 쉽게 하는 방법'이라고 할 수 있겠다. 따라서 자료형 체계는 데이터의 타입 뿐만 아니라, 연산에 사용되는 변수, 함수, 모듈 등의 제반 표현 방법들에 대한 규칙을 포함한다.

사실, 이 자료형 문제가 초심자에게는 자료 구조와 함께 초기 실전에서 자주 맞닥뜨리는 난감한 주제일 것으로 생각된다. 컴퓨터는 앞에서의 '일'이 'work'인지, 'one'인지, 아니면 'day'인지, 또 '이'가 'tooth'인지, 'two'인지 혹은 'louse'인지를 그 자체만으로는 '인지'할 수 없기 때문에 사용자가 다 알려 줘야 제대로 작동한다. 특히 숫자와 문자는 그 처리나 연산 방식이 다르기 때문에 반드시 구분해 줘야 한다. 물론 사람도 문맥으로 판단하지만 그냥 컴퓨터는 문맥을 파악할 수가 없다. 경우에 따라서는 컴퓨터 언어나 환경이 알아서 처리해 주는 것처럼 보이는 경우도 있으나, 그것은 형변환을 자동으로 수행하도록 미리 설계되어 있는 경우이다.

다음 bash에서의 간단한 예를 보자.



훑어 보면 알 수 있겠지만, bash에서는 변수에 값을 할당하는 것은 숫자와 문자의 차이가 없다. 그러나, 이들을 연산에 적용할 때는 구문에서 자료형을 구분하는 방식으로 동작한다.

변수 ab에 문자열 abyssbreath를 저장하고 (1, 2) 변수 mn에 숫자 75를 저장한 후 (3, 4), 이들의 내용을 확인한다 (5, 6).

- 숫자가 들어 있는 변수의 연산
숫자가 들어 있는 변수 mn의 덧셈을 실행하면 (7) 결과가 정상적으로 출력된다 (8). 곱셈의 경우도 마찬가지이다 (9, 10).

- 문자열이 들어 있는 변수의 연산
이번에는 문자열이 들어 있는 변수 ab의 덧셈을 해 보자 (11). 결과가 0이다 (12). 곱셈 또한 마찬가지로 0이다 (13, 14). 다만, 오류 출력은 없다.

- 문자열 변수와 숫자 변수
그런데, 문자열이 들어 있는 변수와 숫자가 들어 있는 변수를 더하면 (15, 17), 숫자값만 나온다 (16, 18). 이들의 곱셈 결과는 모두 0이다 (19-22). 문자열과 숫자의 덧셈과 곱셈은 정상적으로 진행되지 않는다는 것을 알 수 있다4.

그래서 문자열이 들어 있는 변수 a를 자체 계산 (let과 같은 효과)했더니 (23), 그 결과가 0이다 (24). 숫자가 들어 있는 변수 m의 결과는 변수 값이 그대로 출력된다 (25, 26).

이와 같은 결과가 나온 데 대해 간단히 다음과 같이 알아 보았다.



먼저, 변수 mn을 더한 결과값 ($(($m+$n)))이 12가 맞는지 확인한다 (27, 28). 이중소괄호 (let과 같은 의미)로 그 결과 상태를 확인한다 (29-31). 여기서 $?는 마지막 실행된 함수 (명령어, 프로그램)의 종료 상태를 알려 주는 특수 변수로서, 성공한 경우에는 0을 반환하고 실패한 경우에는 0이 아닌, 오류를 나타내는 숫자를 반환한다. 따라서, 숫자가 저장된 변수 mn의 덧셈은 정상적으로 실행되므로 0을 반환한다 (31). 변수 하나에 대해서도 성립한다 (32, 33). 그러나, 문자열 변수 a에 대해서는 (34) 그 반환값이 1로서 (35) 정상적인 실행이 실패한 것을 볼 수 있다. 흥미로운 것은 문자열 변수와 숫자 변수의 곱셈은 불가능하지만 (19-22, 36), 덧셈은 가능하다는 것이다 (15-18, 38). 그러나, 그 결과는 주의해서 보아야 한다.

여기서 중요한 것은 대부분의 컴퓨터 환경에서는 이렇게 숫자 데이터와 문자 데이터를 구분해서 처리한다는 사실이다. 이것은 컴퓨터 내부의 자료 처리 방식에 달린 사안이며 추후에 좀더 자세하게 다룰 기회가 있을 것이다. 예컨대 C언어와 같은 많은 경우에는 기본 자료형의 종류도 정수형 (integer)과 실수형 (real number)이 있고, 이들을 다시 char, short, int, long 과 float, double, long double 등 데이터의 크기와 연산 방식에 따라서 미리 지정해야 하는 어려움이 있다. 상황에 따라 자료의 형변환을 해 주어야 하기도 한다. 유념해야 할 것은 컴퓨터를 사용할 때에는 자료의 형식에 따라서 처리 방법이 달라질 수 있다는 사실이다. 그것도 사용 언어와 환경에 따라서... 유사한 알파벳을 사용하는 영국, 독일, 프랑스, 스페인 등의 언어 환경이 그 나라의 문화와 역사에 따라서 판이한 것과 유사하다고 볼 수 있지 않을까. 그러니, 사용자는 자신이 현재 어느 환경에서 무슨 언어를 사용하고 있는지를 정확하게 인식하고 있어야 하는 것이다.

아무튼 전에도 언급했지만, 보이지 않는 사실을 가장 정확하게 그려 볼 수 있는 방법은 수 (numeric)를 사용하는 것이다. 과학 영역도 사람의 일이기 때문에 각 분야의 동향을 무시할 수는 없겠지만, 한 가지 확실한 것은 적어도 수 (數)의 개념은 기반 지식이라는 사실이다. 모든 실험 기구, 기기들이 점차 전산화되어 가는 추세인데다 생산되는 데이터의 양 또한 엄청나게 증가하고 있는 현실에 비추어 볼 때, 수를 두려워할 게 아니라, 있는 그대로 친근하게 지내도록 해 보는 것이 미래에는 도움이 되지 않을까 한다.

시작하면서 편안하게 쉬어 가자고 해 놓고 머리 속만 어지럽힌 건 아닌지 불안하니, 여기서 잠깐, 한가한 이야기 하나 해 보자.

사람들이 사물을 셀 때, 어떻게 세는지 의아할 때가 있다.

승용차 일 대, 맥주 이 잔, 상가 세 층, 사과 사 개, 강아지 오 마리, 이 동네 여섯 번지, 담배 칠 갑, 저 아파트 여덟 동, 배구 선수 구 명, 복사지 십 장이라고 하지는 않는 게 일반적이지 않은가? 하긴 소주 일 병이라고 하는 친구들은 가끔 있긴 한데... :)

약간 더 들여다 보자면, '상가 세 층과 상가 삼 층', '아파트 여덟 동과 아파트 팔 동'은 그 의미가 다르기는 하다. 아무튼 숫자 뒤의 단위와 통일된 방식도 아니고, 알 수 없는 노릇이다. 우리 숫자 표현의 오묘함이 느껴진다고 해야 할까? 다만, 숫자가 백 단위를 넘어가면서부터는 일정한 규칙을 보이는 한자어를 주로 사용하고 있다는 정도는 생각해 볼 수 있겠다.


참고 문헌
Pierce, B.C. (2002) Types and Programming Languages.  p. 1. MIT Press.



-----------------------
1 http://en.wikipedia.org/wiki/Digit_(anatomy)
2 http://en.wikipedia.org/wiki/Rabbit-duck_illusion
3 이래서 사람들이 '인생에 정답은 없다. 수많은 해답이 있을 뿐이다.'라고 했나 보다.
4 파이썬 (Python)과 같이 문자열과 숫자의 곱셈 연산을 허용하는 언어도 있다.
 


- 고주온박사(필명)의 "초심자를 위한 생물학+정보학"은 매주 정기적으로 연재될 예정입니다. 아래 PDF 다운 받으셔서 읽는 것도 가능합니다. -
파일첨부 1: 16_datatype_p.pdf (553 KB)
  추천 10
  
인쇄하기 주소복사 트위터 공유 페이스북 공유 
  
고주온(필명)
(http://bioprofiler.tistory.com)
IBM-XT시절부터 개인용 컴퓨터를 사용하였으나, 강산이 변한 지금도 어제 코딩한...
다른 연재기사 보기 전체보기 >
[초심자를 위한 생물학+정보학] R의 자료 형태와 구조 1 - 53
지난 번에 통계학 도구인 R의 기동과 간단한 작동의 예를 보았다. 앞으로 다양한 도표에 관한 내용을 풀어 가면서 R을 주로 사용하게 될 것이므로 이 도구에 대하여 기초적인 사항을...
[초심자를 위한 생물학+정보학] R과 도표 - 52
과학의 어느 분야든 연구 활동의 결과물은 그것을 보는 사람의 이해를 돕기 위하여 도표의 형태로 표현하게 된다. 많은 경우에 있어서 수치 계산과 각 실체의 연관 관계 등 통계 분석이...
[초심자를 위한 생물학+정보학] 리눅스에서 사용할 수 있는 논문 작성 도구 2 (LaTeX과 Mendeley 등) - 51
잘 아는 바와 같이 문서나 논문의 작성을 위해 사용하는 도구로 워드 프로세서 (word processor)로 불리는 문서 작성기를 사용한다. 최근에 많은 부분이 자동화되기는 했어도...
본 기사는 네티즌에 의해 작성되었거나 기관에서 작성된 보도자료로, BRIC의 입장이 아님을 밝힙니다. 또한 내용 중 개인에게 중요하다고 생각되는 부분은 사실확인을 꼭 하시기 바랍니다. [기사 오류 신고하기]
 
  댓글 0
등록
위로가기
동향 홈  |  동향FAQ  |  동향 문의 및 제안
 |  BRIC소개  |  이용안내  |  이용약관  |  개인정보처리방침  |  이메일무단수집거부
Copyright © BRIC. All rights reserved.  |  문의 member@ibric.org
트위터 트위터    페이스북 페이스북   유튜브 유튜브    RSS서비스 RSS
머크