언어 왜 C언어를 해야하나요? -1
2006.09.16 09:39
안녕하세요 ^^ 어제 막 가입한 웁피라고 합니다~
강좌라고 하긴 좀 뭐하고 그냥 제가 아는 정보를 공유 한다는 차원에서
한 글자 적어봅니다 >_<
허접하더라도 이해해주세요~
혹시라도 제가 잘못알고 있거나 틀린 내용은 언제든지 말해주세요 ^^
________________________________________________________________________________________
게임프로그래밍을 하는데 왜 C언어를 해야하나요?
라는 질문
혹은 게임을 만들고 싶은데 무엇을 공부해야 하나요?
라는 질문들
제가 어렸을 시절, 참 많이 생각하고 고민해왔던 것들입니다.
도무지 어떻게 해야 게임을 만들 수 있는건지 알 수 있는 방법이 없었죠
(그때는 인터넷이 그렇게 잘 보급 되지도 않았었죠.. ㅋ)
C언어 학원을 다녀 C언어를 조금 하게 되고
C++학원을 다녀 C++을 조금 하게 된 이후에도
전혀 이것으로 게임을 만들 수 있다는 생각은 들지가 안더군요
C언어를 처음 접해보는 분들은 윈도우 화면에
무엇인가를 그리는것이 아니라 검은 도스화면 같은 곳에 숫자나 문자등을
출력 밖에는 할 수 없다는 걸 보고
뭔가 허무하실 겁니다. 저도 옛날 어렸을때 다닌 컴퓨터 학원에서도
학원 선생님은 그냥 나중에 커서 C언어 공부하면 할 수 있다고만
말해주시더군요(지금 생각해보니 참 성의가 없으셨어 -_-)
자 서론이 좀 길었네요 ^^ 그럼 진짜 본론으로 넘어가서
C언어가 무엇인지를 제가 아는대로 간단히 말해보겠습니다.
가장 먼저 컴퓨터는 0과 1만을 알고 있다라는 사실을 알아야 합니다
(혹시 이 컴퓨터가 0과 1만으로 어떻게 돌아가는 가 하는가에 대해서도
궁금하시다면 차후 다른 강좌로 말씀드리겠습니다~)
그래서 기계어는 0과 1의 조합으로만 만들어져 있죠
가령 어느 공간에 어느 데이터를 넣어주세요 라는 명령어라면
011101010101010101010101010101001111010101과 같은 식의
명령어인데 우리는 알아보기가 힘들 것 입니다.
(물론 저게 화면에 뿌려주는 명령어는 아닙니다. 허허허)
이것을 우리가 알아보기가 힘들기에 누군가가 어셈블리어를 개발합니다
그래서 그 어셈블리어는
LOAD 100
STOR 200
과 같은 식의 명령어로 구성되어 집니다.
확실히 아까전의 숫자들의 나열보다는 우리가 알아보기가 쉽겠죠?(아닌가? -_-)
하지만 이 어셈블리어 역시 상당히 어렵고 하나의 연산을 처리하기에
너무 긴 연산들을 반복해야 하므로
다시 이 어셈블리어들을 묶어 C언어가 만들어지게 됩니다~(짜잔~)
(사실은 그 사이 조금 더 과정이 있을지도 모릅니다 =_= 잘 몰라서 죄송;;)
즉 C언어는 상당히 기계어와 가까운 언어입니다.
기계어와 가깝다는 이야기는 그만큼 빠르다는 이야기입니다.(해석과정을 더 적게 밟으니까요)
C언어의 장점은 이외에도 무수히 많지만
일단 게임프로그래밍과의 관계를 말하는게 목적이니 생략하도록 하겠습니다~
여러분도 아시다시피 게임은 상당히 고사양의 프로그램입니다.
사실 게임이 아닌 어떤 프로그램을 실행하기 위해 PC를 업그레이드 할 필요가 없다는 걸
생각해보시면 간단하게 이해가 가실겁니다.
C언어 이외에도 언어는 상당히 많습니다.
사실 JAVA로도 얼마든지 게임을 만들 수 있고요.
그러나 C언어를 많이 사용 하는 이유는(사실 요즘은 C++을 더 많이 사용합니다..;;)
같은 로직으로 게임을 만들었을떄 C언어가 훨씬 빠르기 때문입니다.
(수차 말하지만 기계어로의 해독이 다른 언어에 비해 훨씬 적기때문입니다.)
이것으로 왜 C언어를 게임프로그래밍에 사용하는지에 대해
간략히(?) 알아봤습니다. ^^
처음 해보는거라 많이 허접하고 내용도 빈약하고
일관성없이 이리저리 돌아다는것만 같네요 ㅜㅜ
다음 2부에서는 C언어를 통해 어떻게 게임을 만들어가는지
정확히 게임 프로그래밍을 위해서 어떤것을 공부해야하는지
그런것들을 이야기해보겠습니다~
길고 허접한 글 읽느라 수고하셨습니다 (__)
댓글 12
-
아란
2006.09.16 18:51
-
MrGeek
2006.09.16 22:09
보통 가장 처음 접하게 되는 코드는
C : printf("Hello, World!");
C++ : cout << "Hello, World!" << endl;
C# : Console.WriteLine("Hello, World!");
PHP : echo "Hello, World!");
와 같은 기본 출력문을 이용한 "안녕 세상아"프로그램부터 시작하죠 ㅎㅎ
사실 언어따질게 뭐가 있습니까 ㅡㅡ; 그냥 자기 편한 언어를 쓰면되요.
성능저하라고 해도 이건 코더의 능력차이지 언어탓만은 아닐겁니다.
또
"(수차 말하지만 기계어로의 해독이 다른 언어에 비해 훨씬 적기때문입니다.)"
이 부분은 좀더 생각해보셔야겠습니다 흠..|+rp2+|2297|+rp3+|acoc_board_ideatip -
MrGeek
2006.09.16 22:12
언어라는건 참 재미있어요
종류도 다양하고 목적도 다양하죠
로직이나 스퀵같은 "교육용!?"언어가 있는가하면
난해한 프로그래밍언어(흔히 esolang라는 약어를 쓰죠)같은 언어들이 있고
LISP나 HASKELL같은 경우도 처음 접해보시면 상당히 의아해하실걸요?
* 아는분에게 HASKELL에 대한 설명을 들었을땐 정말 괴로웠었음 ㅡㅡ;|+rp2+|2298|+rp3+|acoc_board_ideatip -
MrGeek
2006.09.16 22:14
보통 이런 법칙이 대충 성립이 되기도하죠
"익히기 쉬우면, 쓰기가 어렵고"
"익히기 어려우면, 쓰기가 쉽고"
* 왜 어셈블리도 익히긴 쉽잖아요. 쓰기가 어렵지 ㅡㅡ;|+rp2+|2299|+rp3+|acoc_board_ideatip -
MrGeek
2006.09.16 22:19
어제 셀샤스란 아이에게 듣기론
"대안언어축제"라는 행사도 있다고 하더라구요
파이썬이나 루비를 주제로 뭔가를 한다고 하던데 ㅡㅡ;;
솔직히 이러면에서 전 .NET의 언어독립적인 성격을 좋아합니다.
루비(Ruby on .NET CLR)던 파이썬(IronPython)이던 Cross Language가 가능하니까요 ㅎㅎ
* 실제로 .NET용으로 포팅된 30여개의 언어들(LISP에 파스칼에 C#에 JAVA에 등등) 모두가
Cross Language가 가능하거든요 ㅎㅎ
아이러니 하게도 요샌 디어셈블리라는것으로 C#으로 작성된 프로그램을 델파이로 변환하여 조회한다거나 VB.NET으로 변환한다거나 가능하기도 하답니다 ^^;|+rp2+|2300|+rp3+|acoc_board_ideatip -
MrGeek
2006.09.16 22:20
그런 의미에서 MSN 주소좀 ^^;|+rp2+|2301|+rp3+|acoc_board_ideatip -
웁피
2006.09.17 08:47
어떻게 되든 C언어가 강력하다는 것은 변함이 없더라구요 ^^ 간단한 이유는 컴파일러가 오랜기간 숙성(?) 최적이라는 이야기들이 가장 많더라구요 ㅋ|+rp2+|2303|+rp3+|acoc_board_ideatip -
승사마
2006.11.30 08:52
zㅋㅋ 헬로우 월드 개공감|+rp2+|2437|+rp3+|acoc_board_ideatip -
RPG무법자
2006.12.01 02:11
푸하하 헬로우월드 개옛날에 하던.....|+rp2+|2438|+rp3+|acoc_board_ideatip -
777
2007.01.05 03:08
님.. 최고예요. ㅠㅠ 완전 궁금했던 것을 이리 쉽게 알게될 줄이야. ㅠㅠ 고맙습니다.|+rp2+|2600|+rp3+|acoc_board_ideatip -
『연금술사』
2007.01.05 08:13
Hello World 초공감이네요;;|+rp2+|2604|+rp3+|acoc_board_ideatip -
SeHwa
2007.02.25 01:42
꼭 빠르기때문은 아닙니다.
가장 중요한건 C와C++의 경우 세계적으로 가장 알려진 언어이기 때문에
수많은 지원하는 라이브러리가 있으며 가장 호환성이 좋고 유연성 있는 언어이기 때문입니다.|+rp2+|2811|+rp3+|acoc_board_ideatip
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
329 | 획기적인 게임 제작 제1편(게임의 전체적인 분위기의 선택) [4] | Santiago | 2006.12.04 | 492 |
328 | 말풍선 대화창 [9] | 그노에즈 | 2006.12.04 | 664 |
327 | 리듬액션 게임 아이디어. [12] | 켄타 | 2006.11.23 | 1481 |
326 | 액알 맵 1분 안에 만드는방법 [21] | 천룡수 | 2006.11.12 | 1363 |
325 | 액션 알피지 노가다 줄이는 방법 [7] | 다크세이버™ | 2006.11.08 | 755 |
324 | BGM 페이드에 관한 팁 [2] | 『덩키동크』 | 2006.10.29 | 467 |
323 | [자작]마름모형 거리 재기 [4] | A. 미스릴 | 2006.10.22 | 801 |
322 | 스토리아이디어 [4] | B HERO | 2006.10.22 | 428 |
321 | 심심해서 생각해본 rpg2000툴로 전략시뮬(실시간) 만들기 [5] | 감자는칩이다 | 2006.10.21 | 897 |
320 | 캐릭터 행동에 대한 팁? [6] | mk_brand_ | 2006.10.12 | 462 |
319 | 게임 구상을 해봤는데....이 게시판에 성격에 맞나? [5] | mk_brand_ | 2006.10.12 | 431 |
318 | Love One 7차 체험판 [6] | 자유의지 | 2006.10.10 | 1210 |
317 | 약간의 아이디어.. [2] | 닉네임군 | 2006.10.08 | 509 |
316 | 게이지 시스템 [액알의 게이지 같은 거 아니에요. ] [4] | S.단이한 | 2006.10.07 | 749 |
315 | 선행처리기 지시어. (#???) [3] | 연지 | 2006.09.30 | 302 |
314 | 게임자체가 히든피스!! [10] | [S's-S] | 2006.09.28 | 762 |
313 | 그냥 심심해서 생각해낸 플레이어 낚기 이벤트인데요... [11] | 네모상자 | 2006.09.24 | 491 |
312 | 인터넷 프로그래밍 강의 시간에 실습했던 것. | 아란 | 2006.09.23 | 309 |
311 | 왜 C언어를 해야하나요? -2 [5] | 웁피 | 2006.09.17 | 657 |
» | 왜 C언어를 해야하나요? -1 [12] | 웁피 | 2006.09.16 | 670 |
잘 쓰셨네요.
하지만... 같은 C언어 공부하는 입장에서 아직도 정말로 이걸로 게임을
만들 수 있는 건가? 하는 의문이 들 정도로 아직은 멀게만 느껴집니다;;|+rp2+|2296|+rp3+|acoc_board_ideatip