Swift의 상수와 변수
컴퓨터는 계산을 쉽게 하려는 의도에 따라 수학자들에 의해 발전하였기 때문에 수학적 용어들이 상당히 많이 존재합니다. 어떻게 보면 이러한 부분이 처음 개발세계에 입문시 포기하게되는 문턱이 생길 수 있는 포인트라고 생각합니다.
개인적으로 나름 개발에 입문하면서 희미하게나마 수학 기호들이 생각나는 사람들이 처음 상수와 변수를 접할 때 어떻게하면 이해가 쉬울까라는 생각으로 이 글을 정리했습니다.
수학적 탐구에 흥미가 없거나 프로그래밍이 완전 처음이 아니라면 맨 아래 요약 부분만 읽어보시고 넘어가셔도 실제 프로그래밍을 하면서 자연스럽게 익힐 수 있는 부분이니 참고하시기 바랍니다.
아래에 누군가는 싫어했던 방정식이라는 녀석이 있습니다.
$$ y = x + 3 $$
어떤가요?
이 수식 한줄은 보는 사람에 따라 다양한 생각을 하게 해줄겁니다.
이 식을 이용하여 오늘의 주인공 변수와 상수 그리고 대입 을 소개하려 합니다.
차근차근 살펴보도록 하겠습니다. 위의 식을 수학적으로 풀이하기에 앞서 무슨 의미인지 생각해보겠습니다.
y의 값은 x의 값에 3을 더한 수와 같다.
위의 의미를 이해하시나요?
x의 값에 따라 y의 값이 변경되는 전형적인 방정식 입니다.
아쉽게도 위의 x와 y는 조건이 부족하여 어떤 숫자가 올지 정해지지 않았습니다. 바로 이 부분이 키 포인트 입니다.
수학에서 숫자 3은 상수 입니다.
변하지 않고 고정된 값을 의미합니다.
반면 무슨 값이 들어올지 모르는 x와 y는 변수라고 말합니다.
즉 언제든 변경될 수 있는 값이라는 의미입니다.
그렇다면 우리는 왜 x와 y를 사용할까요?
사실 수학에서 x와 y는 일종의 약속된 문자입니다.
방정식을 풀기 위해서 식들을 나열하는데 긴 문장을 사용하기엔 번거롭고 통일된 문자를 사용해야 인식할 수 있기에 x, y, z등을 활용한 것입니다.
따라서 위 식은 아래와 같이 표현해도 아무 문제 없습니다.
결과 = 어떤값 + 3
위의 y는 결과고, x는 어떤값이라고 표현할 수 있기에 가능한 것입니다.
한가지 지켜야될 부분은 이후에 다른 식에 ‘결과’라는 값이 사용되려면 y대신 항상 ‘결과’ 라는 단어를 사용해야 한다는 것입니다.
x도 마찬가지로 ‘어떤값’이라는 단어를 사용해야죠.
반면, 3은 항상 3이라는 값을 가지고 있습니다. 예를 들어 5는 다른 상수 값입니다.
이제 프로그래밍 세계에서 살펴봅시다.
프로그래밍에서의 변수와 상수를 설명하기에 앞서 우린 대입이라는 단어를 먼저 아는 것이 유리합니다.
대입이라는 단어는 값을 할당 한다는 뜻입니다.
$$ x = 7 $$
수학에서 위의 식을 보면 x는 7과 같음을 알 수 있습니다.
그 얘기는 7 대신 x를 사용해도 결과는 같다는 말입니다.
y = 7 + 3 이라는 표현을 위의 식과 같이 y = x + 3 이라고 사용할 수 있다는 얘기입니다.
프로그래밍에서는 위의 x = 7과 같이 특정 값(7)에 대신 사용할 이름(x)을 붙이는 행위를 값을 할당한다고 표현합니다.
할당을 하게되면 그 이후엔 일일이 7이라는 값을 직접 사용하지 않고, 우리가 의미를 부여할 수 있는 알아보기 쉬운 단어나 문자를 이용하여 이름을 붙이고 그 이름을 가지고 데이터를 처리할 수 있도록 해줍니다.
위의 두 식을 보면 x는 7이라는 값 대신해서 사용하고, y는 x + 3을 대신해서 사용할 수 있습니다.
매번 x + 3을 사용하기 보다는 y라는 이름을 이용해서 활용할 수 있다는 의미죠.
위에서 배운 값을 할당 할 때에 프로그래밍에서는 두가지 방식으로 처리할 수 있습니다. 그게 바로 변수와 상수 입니다.
변수라는 개념은 어떤 값에 이름을 붙이되 대변하는 값이 변경될 수 있음을 의미합니다. 위에선 y나 x의 쓰임이 그렇습니다.
어떤 값을 넣느냐에 따라 같은 문자나 단어를 사용하더라도 대변하는 값이 달라진다는 의미입니다.
반면 프로그래밍시에 3이나 혹은 파이(3.141592…) 같은 특정한 값이자 변하지 않아야 되는 값(data)에 이름을 붙여 사용해야할 경우가 있습니다.
상수란 어떤 값을 사용하려 하는데 이 값은 변경되어선 안되고 항상 같아야 하는 경우, 우리는 그 값(data)을 특정한 이름에 할당해 사용하면서 그 이름의 값(data)은 변경하지 말자는 약속을 정해놓는다고 생각하면 쉽습니다.
위에서 배운 개념들을 활용하여 처음 방정식을 다른 방식으로 표현해보면
y = x + z (단, z는 3)
(결과라는 변수) = (어떤 값이라는 변수) + (3의 값을 할당한 상수)
라고 할 수 있습니다.
마지막으로 실제 프로그래밍에서는 어떻게 활용하는지 살펴보겠습니다.
1 | var r = 3 |
위에서 Swift를 기준으로(프로그래밍 언어마다 약속된 표현이 조금씩 다릅니다.) var는 변수를 선언할 때, let은 상수를 선언할 때 사용합니다.
var는 변수를 나타내는 영단어 Variable에서 나왔고, let은 ~하게 하다 라는 동사를 사용하여 3.141592를 pi라고 하자 라는 의미로 사용한 것 같습니다.(이 모든건 Swift라는 프로그래밍 언어를 만든 개발자 마음입니다.)
위와 같은 코드를 작성했다면 다음에 오는 코드에서 r과 pi라는 단어를 활용하여 각각 3과 3.141592라는 값을 대신 사용할 수 있습니다.
선언시에 사용한 약속어인 var와 let은 같은 이름(위에서는 r과 pi)당 최초 한번씩만 사용할 수 있습니다.
한번 선언한 뒤에는 선언시에 사용된 약속어 없이 r = 5 와 같이 새로운 값을 할당할 수 있습니다. 이 이후엔 r이 3이 아닌 5 값을 대체합니다.
반면, let으로 선언하여 상수가 된 pi는 이후에 pi = 1 과 같이 다른 새로운 값을 할당할 수 없다는 점을 알고 있어야 합니다.
마치며
위에 장황하게 수학으로 설명을 진행하여 오히려 더 어려워하시는 분들이 많을 수도 있을 것 같습니다.
어찌보면 간단히 짚고 넘어갈 수 있는 개념일지 모르지만 처음 프로그래밍을 배울 때 이해하기 힘든 부분일 수도 있다고 생각하여 곰곰히 생각해보고 정리하게 되었습니다.
더 깊이 들어가면 사실 모든 데이터는 특정한 메모리에 저장되고 그 메모리의 주소값을 참조하게 되는데 주소값을 일일이 외우고 다루기 힘들기 때문에 이름을 붙여서 활용한다고 할 수 있습니다. 이런 내용은 컴퓨터 내부 구조나 동작 방식에 대한 지식이 더해진 부분이기때문에 처음 프로그래밍 언어를 배울땐 일단 아래의 요약 내용을 토대로 활용법을 숙지한뒤에 어느 정도 개념 정리가 된 후 더 깊이 공부해 보실 것을 추천드립니다.
요약
- 우리는 프로그래밍을 하기 위해 숫자나 문자같은 어떤 데이터를 이용합니다.
- 데이터를 하나하나 적어가면서 활용하기엔 다 기억하기도 어렵고 관리하기도 힘듭니다.
- 따라서 관리하고 알아보기 쉽게 데이터에 대입(할당)이라는 과정을 통해 이름을 부여합니다.
- 데이터에 이름을 부여하면서 해당 이름에는 새로운 데이터로 변경이 가능한 변수와 처음 선언되면 데이터의 내용이 변할 수 없는 상수로 정할 수 있습니다.
- Swift에서는
var
키워드를 활용하여 변수로 선언하고,let
키워드를 이용하여 상수를 선언합니다. - 위의 키워드는 처음 이름을 붙이는 과정에 한번만 선언해주고 그 뒤로는 이름만 이용하여 데이터를 처리합니다.