게임제작/강좌

[초보강좌]어려운 프로그램용어 파헤치기 대체 뭐라는건지 일반인 용어로 설명

게임코드프리 2019. 5. 1. 09:00
반응형

#프로그래밍 언어 #프로그래밍 용어 #코드 프리

 

프로그래밍 언어의 용어들 꼭 그래야만 했나?

 

 

프로그래밍 강좌나 프로그래밍 책들이나 무엇을 봐도 하나같이 하기 싫게 만들고

처음 부딪히게 되는 벽이 바로

프로그래밍 코드 내용이나 수학적 지식도 아닌 "용어"부터 막히게 됩니다.

이 글은 필자도 경험한 수많은 짜증나는 용어 설명에 대해서

일반인 용어로 쉽게 설명하며

다른 강좌들을 볼때 보다 쉽게 이해할 수 있는

인간용 단어로 해석해주는 초보용 강좌입니다.

 

아무 프로그래밍 기초 책을 펼쳐보면 나오는 목차

 

변수란 무엇인가...문자열...정수형, 실수형...16진법...포인터...구조체...객체....함수...인자등등

 

 

대체 같은 인간인데 이렇게 생소하고 소름 끼치게 하나도 모르겠는 용어를 접하게 되면

포기하고 싶어지고 전혀 배울 마음이 들지 않습니다.

 

그래서 마음을 가다듬고 다시 강의 내용들을 살펴보면 대부분 이런 형식 입니다.

 

  • 변수란 무엇인가?

 

국내에서는 변수라고 부르고 있는데 , 이것은 한자어이기에 사실 변할 수 있는 값을 의미하며

하나의 데이터를 저장하는 메모리 공간등등 이런 형태로 설명되어 있습니다.

 

그러니까..그 값이 왜 변하고 데이터를 저장하는 메모리라니 그게 뭔데...

 

[게임코드 프리의 깨달음을 얻은 해석]

 

변수라는 것은 결국 게임 상에서 우리가 만들어야 할 재료와 같은

역할을 해주는 것이었습니다.

예를 들어 캐릭터가 가지고 있는 공격력이나 방어력 혹은

체력 같은 게임을 플레이 하면서 계속해서 변경이 되고

수치가 변하는 것을 프로그래밍에서는 그것을 기억할 그릇이 필요했고

그 그릇이 바로 변수였습니다.

그래서 이 변수라는 것은 자신이 등장 시킬 재료의 이름이기에

마음대로 지을 수 있으며

숫자나 이상한 문자만 아니라면 뭐든지 가능합니다. (영어로 지어야 합니다)

 

 

언어에 따라서는 그 변수라는 놈에 담아있는 내용조차

세분화 해서 알려줘야 하는 끔찍한 것들이 있는데,

예를 들어서 C언어라면 , 

 

 

.... 이런 외계어를 보았을 때의 충격은 지금 봐도 답답합니다.

 

위가 설명하는 것이 뭐냐면 그냥 우리가 쓸 변수라는 놈 앞에 용팔이 같은 

부가적인 설명이라고 생각하면 편합니다.

 

 

변수를 얼마까지 알아보고 오셨나는 프로그래밍의 질문에 우리는 대답을 해줘야 하는데,

 

"데이터 한 127원 정도까지만 쓸 거에요."

 

라고 해야 한다면 그것을 프로그램 코드로 써주면, byte 변수이름 = 127; 이런 형태가 됩니다.

 

물론 요즘 같은 시대에 이런 사소한 질문도 안 해주는 편리한 언어들이 존재하기에 

 

그냥 자동으로 아무런 설명없이

변수 = 123094850;  혹은 변수 = "글자로 할 거야"

같이 개떡같이 써도 찰떡같이 알아듣는 언어들이 존재합니다. (파이썬, GML등등)

 

 

  • 지역 변수, 전역 변수, 임시 변수

 

일단 프로그래밍 개념이나 내부 구조를 어떻게 만들고 짜는지도 모른 상태에서는

이게 대체 뭔 말인지 헷갈리게 하는 변수의 종류들까지 등장합니다.

 

우선 우리가 대부분 사용하고 다루는 탐색기로 게임 프로그래밍 코드 속 세상을 들여다보면

 

 

이런 식으로 게임 프로그래밍 폴더 안에 파일들이 여러가지가 존재합니다. 

각각의 파일들을 만들어나가며 관련된 시스템들을 불러오거나 조합해 나가는 구조가

게임 프로그래밍이라고 치고

여기서 위와 같이 오프닝 시스템에서 선언한 일반 변수는 거기서만 사용이 가능합니다.

그것을 지역 변수라하고 예를들어 플레이어라는 파일 내부에서,

 

전역변수 선언 게임 머니 = 5000;

 

전 지역에서 사용이 가능한 변수 전역변수를 다른 파일에서도

사용이 가능한 것이 전역변수라 합니다.

임시 변수는 말 그대로 잠깐 쓰고 버리는 변수로 코드 내에서도 사용할 때에만

잠깐씩 정의하고 쓰는 변수를 말합니다.

 

우리나라 말로 합시다.

 

다음으로 혼란스러워서 대체 이게 뭐 하는 것인지 개념이 서지 않았던 단어가

바로 "함수"였습니다.

 

 

함?

 

  • 함수가 뭐지?

 

일단 용어 사전을 살펴보면 하나의

독립된 기능을 수행하는 명령어들의 집합이라고 되어있지만

설명 자체가 그들만의 설명이므로 알아듣기 어렵습니다.

 

[게임 코드프리가 깨달은 함수의 정의]

 

우리가 일상생활 속에서 쉽게 이해하기 편한 도구들이 존재합니다. 

예를 들어 전화기, 라디오, 컴퓨터, 타블렛 등등

어떤 역할을 해내는 도구들도 어찌 보면 함수라고 할 수 있습니다.

이 도구들도 내부적으로 살펴보면 기능을 하기 위해 여러가지 설계가 되어있고

표면 상으로는 우리가 전화기, 라디오, 컴퓨터 등의 이름으로 부르는 것처럼 

그걸 게임에서 너는 전투에 관련된 처리만 하도록 해! 라고

자신이 코드를 써놓고 그것을

"전투 시스템" 이라고 기능을 만들어 묶어 두면 그게 함수입니다.

 

이름은 함수이지만 결국 어떤 기능들을 만들어두고 계속 써먹는다는 의미로는

스크립트나 결국 클래스 라고 볼 수 있습니다.

괜히 어렵게 언어들을 나열해두어 헷갈리게 만듭니다.

 

(함축적으로 미리 만들어둔 도구라는 의미)

 

용어도 복잡하지만 내용도 복잡한 언어

 

  • 구조체(Data Structure)

 

 

구조체라는 단어를 처음 들었을 때도 생각납니다....

 

"난 누군가...여긴 대체 어디인가..."

 

위에서 언급한 스크립트나, 함수나, 클래스나 이런 것들이 그저

기능을 다루고 있는 것이었다면 이번에는 아주 스케일이 다릅니다.

스케일이나 멋지고 어려운 이름에 비해 굉장히 쉽게 설명을 할 수 있는데 

아파트 같은 큰 구조를 만들때 사용하는 용어입니다.

 

아주 작게 설명을 하자면 탐색기에서 우리가 어떤 폴더를 구조체 폴더라고 이름 짓고

그 안에 온갖 것들을 집어 넣어둔다고 가정하면 그게 바로 구조체이고,

게임에서 예를 들자면 인벤토리 같은 형태를 만들때 쓰이는 것이 구조체라는 개념입니다.

 

허세 많은 용어들

 

  • 컴파일과 컴파일러의 정의

 

컴파일과 컴파일러는 이름이 생소 할 뿐이지 결국 우리가 쓴 프로그래밍 언어를

기계가 알아듣게 바꿔주는 번역을 하며 컴파일(번역) , 컴파일러(번역기)라고 해석 할 수 있습니다.

 

괜히 영어로 나오면 뭔가 그럴 듯 해보이고 어려워 보이지만... 그냥 개인적인 느낌으로는

허세같은 네이밍이라는 느낌도 듭니다.

 

"뭐해?"

"응, 나 지금 컴파일 중이야"

"오..."

(하지만 실제로 컴퓨터가 알아서 하는것 내가 할일은 컴파일 실행뿐)

 

 

  • 알고리즘은 또 뭐지?

 

또 하나의 허세 네이밍은 알고리즘이라고 생각하는데,

우리가 어떤 문제를 해결하기 위해서

추론을 하고 프로그래밍 코드를 작성하기 전에 대략적인 구조의 설계를 해보는 것이

알고리즘이라 할 수 있습니다.

 

쉽게 말해 설계 도면을 짜면 미리 문제점들을 발견할 수 있고 이런 알고리즘을 많이 

알고 있을 수록 프로그래밍 코드 작성에 유리하기도 합니다.

 

긴 글을 마치며

 

최대한 쉽고 일반인들이 이해할 수 있도록 써봤지만,

그럼에도 자꾸 이걸 모를까? 하는 생각이나

프로그램을 공부하던 초창기 시절을 생각도 못하고

대충 써 내려가는 부분도 없지 않아 있었습니다.(....)

 

이해가안가는 내용이나 부족한 부분들에 대해서는 더 똑똑하고

설명을 잘 해주시는 여러분들이

댓글을 통해서 알려 주실거라 믿고 긴 글을 마치도록 하겠습니다. 감사합니다.

반응형
facebook twitter kakaoTalk kakaostory naver band shareLink
人気ブログランキングでフォロー