Post

변수란 무엇인가

뻥이에요~

거짓말 주의보

이 글은 설명을 쉽게하기 위한 약간의 거짓말을 담고 있습니다.
오직 이해를 쉽게 하기 위한 것이므로 진실로부터 동떨어진 거짓말까지는 아닙니다.

쉬운 설명?

일상에서 접하는 컴퓨터 관련 정보들을 짜집기한 식으로, 컴퓨터에 대한 관심이 없으시다면 쉽지 않을지도 몰라요.

짧은 서문

스크립팅을 시작하면 가장 처음에 배우는 녀석으로 보통 다음과 같이 생겼습니다.

1
var name = 'John';

정보를 저장해둔 상자..
데이터를 저장하기 위한 이름..
등호(=) 표시는 “같다”가 아닌 “대입”이다..
구체적으로 그게 무엇인지 알려주는게 아니라 “변수는 (무엇)이다” 라는 정보를 주입시키기 위해 다양한 비유와 설명이 동원됩니다만.. 정말 (무엇)일지요~

이 포스트에서는 컴퓨터에서 자주 접하는 상황들과 비교하여 변수가 무엇일지 설명하려고 합니다.

저장소와 파일 저장

코딩과 무관해보이지만 여기서 시작하는 편이 좋을 것 같아요.

여기 빈 USB가 있습니다.
empty

우리가 이 USB에 4MB 크기의 파일을 저장하면 이런 모습이 됩니다.
add

그러고 난 다음에 3MB 크기의 파일을 저장하면 이런 모습이 되겠죠.
add

근데 어떻게 파일 뒤에 딱 붙여서 추가되는 것일까요?
이해를 돕기 위해 1MB마다 칸으로 구성된 그림을 제시해드리긴 했지만 USB 내부에 저런식으로 칸이 쳐진 것도 아닌데 말이죠.
how

“정확히 이 자리부터 파일을 저장해야해” 라고 위치를 지정하고, 알 수 있는 걸까요?


네, 있습니다.

address

예시처럼 1MB마다는 아니지만, 저장소에는 특정 위치마다 해당하는 주소가 있습니다. 주소는 보시다시피 쓰레기값처럼 생겼어요.
막 적은 듯한(실제로 막 적긴했지만) 저 주소를 입력하면 USB에서 해당하는 위치의 정보를 호출하고 저장된 내용을 불러와줍니다.
우리는 이것을 파일 읽기라고 합니다.

저장소의 종류

kind-of
하드 디스크(HDD)나 SSD 같은 저장 장치말고 이와 동일한 방식으로 처리되는 저장 장치로 RAM이 있습니다.
RAM은 임시 저장 장치로 지금 실행중인 프로그램이 사용하는 정보를 잠시 저장해두었다가 프로그램이 종료될 때 삭제하는 방식으로 동작합니다.
그야말로 임시 저장되는 셈이죠

거의 끝났음

다시 처음으로 돌아가서, 우리가 프로그램에 변수를 입력했다고 가정합시다.

1
var name = "John";

이것을 조금 날 것으로 풀어쓰자면

1
RAM 주소 asli3wregtr893124k3k 에 문자열 "John"을 저장해두기

인 것이고, 사람이 저 쓰레기값 같은 주소를 직접 관리하는 것은 불편함이 따르니,

1
사용자가 'name'을 찾으면 그게 RAM 주소 asli3wregtr893124k3k 인 것으로 하자

라고 자동으로 처리해주는 겁니다.

작은 결론

변수는 포인터(RAM 주소)입니다.
변수는 우리가 프로그램을 실행중일 때 RAM에 올리는 위치를 말합니다.

This post is licensed under CC BY 4.0 by the author.