삽질의 현장/- C

곱씹어보자 C!_#019_삽잡이의 두서없이 막말하는 구조체 사용 이유

shovelman 2015. 6. 28. 16:05

오늘은... 어제 정리를 필요로 했던... 구조체에 대해서

씨부려봅시다... 욕아니에요... C언어를 부리다.. 씨부리다... ... ...


아무튼... 구조체는 struct라고도 부릅니다.

지금까지 우리가 프로그램을 만들면서... 

그러니까 코드를 짜면서 사용했던 데이터들은 모두 정수, 실수, 문자열 이런것들이었죠....


그런데 말입니다, 

우리가 예를 들어서 성적 처리 프로그램을 만든다고 가정해보자구요.

그럼 머리에 떠올려보세요... 뭐가 필요할까요?

우선, 과목 이름도 있어야하겠구... 과목 코드 번호라던지... 성적.... 학번...

이런게 필요하겠네요... 


이말이 무슨 말이냐하면, 

프로그램을 만들어야한다는 문제를 다룰 때 

기계어 그러니까 컴퓨터쪽에 보다 가까운 로우 데이터에 대한 생각을 하는 것이 아닌, 

인간에 보다 가까운 용어들을 사용한다 이겁니다.


즉! 우리는 성적 처리 프로그램을 만들기 위해서 

필요로 하는 것들은 위와 같았습니다. 

그런데 우리는 뭐 정수형 몇개가 필요해, 실수형 몇개가 필요해... 

이렇게 말하지 않는다는 것이죠. 

과목코드가 필요하면 필요하지 int code; 이런식으로 생각하지 않는다 이겁니다.


이걸 좀 어렵게 말한다면,

프로그램을 바라볼 때 프로그램을 만드는 이유를 문제 정의라고 말하는데요,

이 이유들이 모아 모아져서 문제 도메인이라는 것이 만들어 지는 것입니다.

이 문제 도메인을 우리는 실제 프로그램으로 만들기 위해서

코드 도메인이라는 프로그램 로직으로 바꾸는 것이죠.



우리가 지금까지 구조체를 배우기 이전 사용하던 모든 데이터 형들은 

프로그램을 만들기위한  인간보다 컴퓨터와 가까운 프로그램 로직과 관련된 

그리고 기계어와 밀접하게 관련된 로직이었습니다.

이 말은 뭐냐 하면 프로그램 언어가 기본적으로 제공하는 기본형식만을 사용했었다 이겁니다. 


우리는 프로그램을 만들기 위해 정의하고 필요로하는 것들을 생각해도

결국에는 미리 우리가 필요로 하는 형식을 만들 수 없습니다.


그래서 모든 프로그램 언어에는 문제 도메인에 맞는 형식을 정의하는 방법을 제공해줍니다.
C언어에서는 바로 구조체라고 부르는 것이죠.
구조체를 통해서 우리가 해결하고자 하는 문제에 맞는 문제 도메인 안에 
데이터를 정의할 수 있다는 것입니다.

쉽게 말한다면, 우리가 형식을 만들어 낼 수 있다는 것이죠.

뭐하러 우리가 형식을 만들어 낼 수 있는 것을 구조체라고 하면 될걸
이렇게 질질 끄고 와서 말하냐...

저는 왜? 라는 걸 정말 병적으로 좋아하는 듯합니다...

이런 말들을 들으면 눈에 불을 키고, 이유에 대해서 이해하려고합니다....

그냥 그런가보다 이게 잘 안되요 ㅠㅠ


아무튼 이렇게 구조체를 사용하는 이유를 알아봤습니다.


글만 있어서 읽기 힘드실터인데...


요즘은 화려한 블로그질을 할 여유가 없네요.... 이런 바쁜척.. ㅠㅠ