프로그래밍 언어는 기본적으로 언어의 특성을 띄고 있고, 영어로 이루어져 있기 때문에 영어 공부법과 크게 다르지 않습니다.
영어를 공부할 때 어떻게 공부하시나요?
각자 사람마다 다르겠지만, 저 같은 경우에는 단어를 암기하고 문법을 이해하는 과정으로 공부를 합니다.
영어 단어를 프로그래밍 언어의 무엇으로 비유해볼 수 있을까요? 저는 자료형이라고 생각합니다.
자료형을 설명하기 이전에 먼저 변수(Variable)에 대해 설명을 해야합니다.
변수
변수는 수학에서도 사용되고 프로그래밍에서도 사용됩니다.
잠시 수학과 프로그래밍의 관계를 이야기 해볼까요?
컴퓨터의 존재 목적이 수를 계산하는 것이고, 이에 대한 논리적인 구조를 프로그래밍 언어로 표현하는 것이기 때문에 프로그래밍이라는 것은 수학이 밑바탕이 되는 것입니다.
그렇다면 수학에서의 변수와 프로그래밍에서의 변수가 같은 의미일까요?
아닙니다.
수학에서의 변수는 수식에 따라서 변하는 값을 뜻합니다.
프로그래밍에서의 변수는 데이터를 저장하기 위한 메모리 저장 공간을 뜻합니다.
간단한 예를 하나 들어보겠습니다.
수학에서의 x = 0
은 단순히 x는 0이다 라고 표현할 수 있습니다.
프로그래밍에서의 x = 0
은 어떨까요?
나중에 배우겠지만 0이라는 숫자는 int(정수)형 데이터입니다. int 자료형의 기본 크기는 4바이트입니다(변수의 크기에 따라 무제한까지 가능합니다, arbitrary precision)
크기라는 것은 변수의 표현 가능 범위만큼의 공간을 뜻하는 것으로 이는 메모리(RAM) 공간에 할당 됩니다.
메모리 공간에 할당될 때는 주솟값이라는 유니크한 id 값을 갖게됩니다.
즉, 프로그래밍에서의 x = 0
이 뜻하는 바는 다음과 같습니다.
0x10(주솟값) 부터 4바이트 공간에 0이라는 데이터를 가진 x이다. 라고 표현할 수 있습니다.
변수를 설명했으니 이제 자료형을 설명해야겠죠?
자료형
자료형(Data Type)이란 변수의 종류, 특성을 의미합니다.
간단한 예를 들어봅시다.
a = 0
b = 0.0
c = "abc"
위와 같은 3가지의 변수는 파이썬 특성(동적 프로그래밍)상 변수를 초기화(생성)할 때 자료형을 명시하지는 않습니다.
이러한 특성은 앞서 설명드렸던 줄 단위 실행에서 장점으로 작용하게됩니다. 변수에 이것도 넣어보고, 저것도 넣어봐도 에러가 안나는 것이죠.
그러나, a, b, c 각각의 변수는 자료형을 암묵적으로 지니고 있습니다. 무엇일까요?
나중에 배우겠지만, a(int. 정수), b(float, 실수), c(string, 문자열)입니다.
주입식 교육은 초중고때 많이 했으니 이제 왜 파이썬에서 명시하지도 안하는 자료형을 알아야하는지 알아야겠죠?
결론부터 말씀드리자면 각각의 자료형에는 특성들이 있고, 그 특성을 이용하여 프로그래밍을 하기위함입니다.
모든 설명에는 이해를 위해 예시가 필요합니다
ex 1)
a = 1
b = 2
c = a + b
ex 2)
a = 1.0
b = 2.0
c = a + b
위 두 예시는 수학적으로 볼 때 동일한 결괏값을 나타냅니다. 다만 프로그래밍 관점으로 볼 때 ex 1)의 결괏값인 3과 ex 2)의 결괏값인 3.0은 극명한 차이를 보이고 있습니다.
먼저 위 두 예제의 변수 a, b 그리고 c의 자료형이 각각 int와 float이라는 점에서 메모리 저장 공간의 차이가 발생하게 됩니다. a = 1
을 하게 됨으로 a 변수를 할당하기 위해 메모리에 4바이트를 할당하지만, a = 1.0
을 하게 되면 a 변수를 할당하기위해 메모리에 8바이트를 할당하게 됩니다.
이렇듯 ex 1)과 ex 2)는 겉보기에는 비슷한 결과를 보이지만 프로그래밍적으로는 ex 2)가 굉장한 메모리 손실을 보이고 있다고 볼 수 있습니다.
이번 포스트에서는 변수와 자료형에 대해 배워보았습니다.
다음 시간에는 자료형에 어떤 종류들이 있는지 알아봅시다.