본문 바로가기
코딩

코딩? 너도 할 수 있어! 3편 (파이선)

by 종규 2022. 6. 25.
반응형

어떤 일을 하려면 많든 적든 '기억해야 합니다. 짐을 옮기는 단순한 행동이라 할지라도, 짐의 모양새를 '기억하죠.

마찬가지로 컴퓨터도 일하려면 '기억'이 필요합니다. 이번 장에서는 컴퓨터에 무엇인가를 기억시키고 싶을 때 어떻게 명령하고, 컴퓨터는 어떻게 기억하는지 알아봅니다. 그리고 컴퓨터에 무엇인가 명령할 때 어떤 방법으로 하는지도 알아봅시다. 컴퓨터에서 기억시키고 행동하게 하는 '코딩'을 시작해 보겠습니다. 코딩의 원리를 이해하려면 '사람'을 생각하면 됩니다. 코딩과 사람, 연관이 없어 보이나요? 흥미롭게도 코딩은 사람의 특징과 많이 닮았습니다. 아마도 사람이 만든 창조물이라서 그렇겠죠? 사람은 옷, 밥, 장난감, 애완동물 등 무엇인가를 가질 수 있습니다. 또한 사람은 축구, 야구, 줄넘기, 테니스 등 어떤 행동을 할 수 있습니다. 단순히 고양이를 가지고 있을 수도 있지만, 테니스라는 '행동'을 하기 위해선 테니스 라켓과 테니스공을 가지고 있어야 합니다. 코딩에서도 마찬가지입니다. 무엇인가 가질 수 있고, 행동할 수 있습니다. 사람이 가지는'을 코딩에서는 변수라고 부르고, 사람의 '행동'은 코딩에서 함수라고 부릅니다. 변수를 이해하기 전에, 컴퓨터의 저장공간을 살펴보겠습니다. 컴퓨터의 저장공간은 '기억 공간'이라고 말할 수도 있습니다. 컴퓨터는 사람처럼 실제로 물건을 가지는 게 아니라, 정보를 기억해 저장하기 때문입니다. 친구 중에 기억을 잘하는 친구가 있지 않나요? 오래전 일을 잘 기억하는 친구도 있고, 벼락치기식으로 단기 기억을 잘하는 친구도 있습니다. 기억에도 종류가 있는 것이죠. 컴퓨터도 비슷합니다. 컴퓨터의 기억을 담당하는 장치는 메모리인데, 기억의 종류에 따라 메모리의 종류도 여러 가지입니다. 각 메모리의 쓰임새도 서로 다르죠. 메모리의 종류에는 어떤 것들이 있고, 어떨 때 쓰일까요? 우선 메모리의 단어 뜻부터 알아보겠습니다. 메모리의 뜻은 '기억 능력'입니다. 지금부터 컴퓨터의 '기억 능력'을 여러분이 책상에서 공부하는 상황에 빗대어 설명해 보겠습니다. 여러분의 책상을 살펴보세요. 공부하려면 책, 연필, 노트 등을 책상 위에 올려놓아야 하죠? 만약 공부할 과목이 많으면 책상이 갈수록 더 복잡해질 것입니다. 책을 너무 많이 꺼내서 더 이상 책을 펼쳐놓을 자리가 없다면 어떤 책은 책장에 다시 꽂을 겁니다. 그런데 만약 책이 꽉 차서 꽂을 공간이 부족하면 어떻게 하나요? 책장을 더 사거나, 보지 않는 책을 버려야 합니다. 사람의 머리, 책상, 책장 이 3곳은 컴퓨터의 3가지 메모리와 비슷합니다. 우선 책장같이 '보관'의 기능을 하는 메모리를 '저장 메모리'라고 합니다. 이 저장 메모리는 여러분이 음악을 저장하고, 프로그램을 설치하는 저장공간을 의미합니다. 책상 위와 같은 작업공간은 램이라고 합니다. 한마디로 작업을 하는 공안 '임시로' 사용되는 공간입니다. 프로그램을 실행하면 저장 메모리에 있던 프로그램이 램으로 옯겨져 작업이 가능한 상태가 되는데, 마치 책장에 꽂혀 있던 책을 꺼내 책상 위에 올려놓고 펼쳐서 보는 것과 같은 원리입니다. 책상 위의 책을 다 본 다음 책장에 다시 꽂으면 책상이 도로 깨끗해지는 것과 마찬가지로, 실행 중인 프로그램을 종료하면 램에서 그 내용이 싹 사라지기 때문에 램을 '임의 접근 메모리 합니다. 마지막은 실제로 계산 또는 판단하는 찰나의 순간에 필요한 머릿속 메모리입니다. 예를 들어 2+4라는 계산하려면, 적어도 내가 지금 계산하려는 것이 2와 4를 더하는 작업이라는 것을 기억하고 있어야 합니다. 이처럼 계산의 순간에 필요한 기억을 저장하는 메모리를 캐시 메모리라고 부릅니다. 그런데 왜 이렇게 메모리를 나눠놓았을까요? 그냥 캐시 메모리를 엄청나게 키워서, 읽는 족족 모든 것을 기억할 수 있도록 하면 안 될까요? 정답은 '그렇게 할 수 있지만, 실용적이지 않다' 입니다. 왜냐하면 저장공간(책장) > 작업공간(책상) > 계산 공간(머릿속)으로 갈수록 더 빠르고 실수를 안

하는 값비싼 메모리를 사용하기 때문입니다. 책상을 엄청나게 큰 걸 사서 책장 없이 이 책, 저 책 책상 위에 펼쳐놓으면 편하겠지만, 그러자면 그 큰 책상이 들어갈 수 있는 엄청 큰 집을 사야겠죠? 컴퓨터도 마찬가지입니다. 메모리를 크게 키우려면 비용이 많이 들어요. 좀 더 현실적이고 실용적으로 이해하기 위해, 실제 판매 중인 컴퓨터 2대의 메모리 종류와 가격을 비교해 보겠습니다. 'A 컴퓨터(CPU:8세대 인텔 R 코어 i3 프로세서, CPU 클록: 2.2GHz, 터보 부스트:최대 3.4GHz, 인텔 스마트캐시:4MB Cache, 메모리 용량: 8GB, 메모리 종류: DDR4 2400MHz(4GB * 2), SSD:128GB(M.2,2280)+확장 슬롯, ODD: 외장형 ODD 별매(내장형 ODD 없음) )' 'B 컴퓨터(CPU:8세대 인텔 R 코어 i3 프로세서, CPU 클록: 1.8GHz, 터보 부스트:최대 4.0GHz, 인텔 스마트캐시:8MB Cache, 메모리 용량: 8GB, 메모리 종류: DDR4 2400MHz(4GB * 2), SSD:512GB(M.2,2280)+확장 슬롯, ODD: 외장형 ODD 별매(내장형 ODD 없음) )' 컴퓨터 사용을 말할 때 보통 '메모리'라고 얘기하는 것이 바로 램 메모리라고 이해하면 됩니다. 메모리의 크기가 종류별로 다르네요. 저장 메모리인 SSD의 크기는 128GB, 512GB입니다. 캐시 메모리는 어때요? 저장 메모리는 몇 GB인데, 캐시는 겨우 4MB, 8MB밖에 안 되네요. 그리고 램 메모리도 8GB로 저장 메모리보다는 아주 작습니다. 가격이 비싼 메모리일수록 적은 요량만 사용하는 것을 확인할 수 있습니다. 이번엔 프로세서의 가격을 살펴볼게요. A, B 컴퓨터 중에 어느 CPU가 더 비쌀까요? 정답은 B 컴퓨터입니다. CPU의 속도를 보면 왼쪽 2.2GHz, 오른쪽 1.8GHz로 왼쪽 A 컴퓨터가 더 빠릅니다. 하지만 가격은 캐시 메모리 용량으로 결정됩니다. 그래서 캐시의 크기가 더 큰 B 컴퓨터의 CPU가 더 비쌉니다. 무한정으로 기억할 것 같은 컴퓨터의 '기억력'도 경제성 때문에 제한된다는 것이 이제 이해되나요? 이렇게 경제성이 걸려 있기 때문에 소프트웨어 전문가들이 프로그램을 평가할 때도 비슷할 때도 비슷한 내용이면 메모리를 얼마나 효율적으로 사용하는지를 살펴봅시다. 메모리를 효율적으로 사용하도록 프로그램을 만드는 것이 프로그래머에게 필요한 중요한 자질이죠.

반응형