IronPython 을 보고 난 다음 c# 과 .net framework 에 푹 빠져버렸습니다~
리눅스랑 iMAC 에서 거짓말처럼 잘 돌아가더라구요 >ㅁ<)~
http://www.mono-project.com/Main_Page
아직 돌려보지는 않았지만 iPod Touch 랑 iPhone 도 지원한다고 하고
http://monotouch.net/
올해 8월쯤이면 안드로이드까지!! 두둥!
http://androidcommunity.com/novel-monoc-is-developing-monodroid-20100217/
최근 들어 C++ 에 대한 회의가 들고 있었거든요...
boost 활용의 절정이라 할 수 있는 libtorrent 의 난감한 코드라던지...;
STL 썼을때 libcmt,lib 링크 에러라던지, 바이너리 레벨 호환이 안되는 문제라던지...;
다른 언어와의 연동시 c 언어에 비해 매우 불편하다는 점이라던지..; ( C++ - C# 연동은 최악이더군요 ㄱ- )
언제든지 방심할 수 없는 메모리 릭, 크래쉬 ...;
지저분한 인터페이스...;
느린 컴파일 속도...;
쓸데없이 커다란 용량..;
boost 나 차기 c++ 표준이 추구하는 방향은 훌륭해보입니다만;
저수준 언어와 고수준 언어의 사이에서 태어난 c++ 이 가진 근본적인 모순점을 벗어나기에는 힘들어보입니다.
하드웨어와 운영체제를 담당하는 분야는 c언어같은 저수준 언어로 작성하고
컨텐츠는 스크립트 언어나 Java, c# 같은 언어로 작성하는 것이 훨씬 깔끔하죠 ~(-_-)~
컨텐츠를 작성하다 실수로 저수준 영역을 건들여 오작동이나 크래쉬를 만들어내는
과도기 언어 C++ 은 이제 역사의 뒤안길로 사라질 때가 되었다고 생각합니다.
( 물론 완전히 사라지기보다는 c 언어 보조 역할 정도 하게 되지 않을까 싶내요~ )
모든 컨텐츠가 스크립트 언어(JavaScript, PHP, ASP, Python, Ruby, ...)로 작성될리는 없을 것이고
속도나 보안을 요구하는 프로그램은 컴파일러 언어(JAVA, C#, VisualBasic, ...)가 사용될텐데,
JAVA 보다는 C# 쪽이 좀더 가능성이 있어보입니다~
거의 대부분이 플랫폼에서 실행된다는 점은 JAVA 와 C# 이 비슷하지만
가장 큰 시장을 갖고 있는 MS 의 전폭적인 지원이 있는데다,
다양한 언어를 사용할 수 있어서 이미 구축된 코드풀을 사용할 수 있다는 점도 매력입니다.
유일한 단점이 MS 외의 시장에서 거의 사용이 안된다는 점이었는데,
모노 프로젝트로 인해 거의 희석되어 버렸다는 것이 큰 호재로 작용하고 있는 것 같습니다.
ps.
요즘 C# 과 닷넷 프레임워크도 공부하고
게임 엔진 트렌드도 익힐 겸해서
nebula3 포팅중입니다 ♡
http://dev.naver.com/projects/nebula3dotnet/
닷넷 프레임워크에서 지원하는게 많아서 의외로 쉽게 되네요~ ㅎㅎ
IronPython 연동도 해봤는데... 오오 -ㅅ-; 빌드만 한번 더 해주면 끝이네요~
이야기 1.
얼마전에 회사 동료분과 이야기하다가 재밌는 이야기를 들었습니다.
그 분은 이전에 전화 교환기 업체에 일을 하셨었는데,
그쪽에서 사용되는 소프트웨어는 거의 버전업을 하지 않는다라는 것이었습니다.
왜 그런가 물었더니 새로운 제품의 메뉴얼만 믿고 투입했다가는 무슨 일이 일어날지 모르기 때문이라고 하더군요.
엄청난 테스트를 통해 사용방법을 익히고 직접 메뉴얼을 만들어야 쓸 수 있기 때문에
특별한 이상이 없는 경우 기존 제품을 선호한다고 합니다.
이야기 2.
요즘 와이프가 플래쉬를 익히고 있는 중입니다.
와이프도 도와줄겸해서 플래쉬 액션 스크립트도 익혀보고 있는데
오호; 꽤 괜찮더라구요. 프로그래머 입장에서 말이죠.
본격적인 코딩은 안해봤지만, 잘만 짜면 사실 2D 게임을 플래쉬 이외의 것으로 만드는건 의미가 없겠더군요;
마치 그래픽 프로그래밍계의 파이썬!
... 이라고 표현하면 -_-;; 아무도 모를테니...
A란 기능이 원하면 이미 존재!B란 기능을 써야하면 이미 존재!
오오 -ㅁ-;;
이런 느낌인거죠.
게다가 요즘 엔진계의 화두인 리소스 스트리밍 로딩은 물론
타임라인에 기반한 4차원 프로그래밍까지! -ㅁ-);; ㄷㄷㄷ;
다만 한가지 문제가 있는데...
잘못 작성할 경우 표면상으로만 잘 돌아가는 것처럼 보이지만
쓸데없는 자원 낭비로 매우 느려질 가능성이 높더군요.
성능 문제를 해결하려면 프로그래밍에 대해 잘하는 사람이 필요한데...
안타깝게도 많은 플래쉬 프로그램이 비전공자에 의해 만들어지는 경우가 많은 것 같았습니다.
아마 잡스횽아가 플래쉬를 싫어하는 건 이런 이유가 아닐까 합니다.
아무래도 Objective C 정도 쓸려면 어느정도 전산 지식을 갖추어야 할테니까요.
어쨌든 이번 사례에서 중요한 점은;
그래픽 디자이너들은 액션 스크립트를 하나의 부품으로 생각하고 있다
... 라는 것입니다.
잘하는(?) 프로그래머가 한번 만든 코드를 잘 보관하고 있다가
비슷한 상황이 오면 그대로 가져다가 사용하자!
이런 느낌이더군요.
이야기 3.
언제나 게시판을 뜨겁게 달구어주는
표준 vs 비표준 확장!
OpenGL vs Direct3D표준 C/C++ 문법 vs 확장 C/C++ 문법JAVA, Python, ... (가상 머신 코드) vs C/C++, ...(실제 머신 코드)STL, boost vs 자체 자료구조SSL 인증서 vs ActiveX 기반 공인 인증서HTML5 vs Flash, SilverLight, ...
사실 플라톤과 아리스톨 텔레스 이후 수천년간 내려오던 논쟁입니다. 쉽게 말해...
아름다운 이상 vs 현실은 시궁창
... 라는 것이죠.
정답은 언제나 비슷한 것 같습니다.
현 시점은 언제나 실용적인 것이 이기지만
궁극적으로는 이상향으로 가게되더군요.
다만 이상적인 답을 찾는데 시간이 오래걸릴 뿐...;
어쨌든 중요한 것은 이상적으로 갈수록
점점 추상화되기 때문에 점점 안을 들여다봐야 하는 일이 줄어들어간다는 것입니다.
이야기 4.
초창기 게임을 만들때 해야하는 일은
그래픽 화면 모드를 바꾸고, 이미지 파일을 파싱하고 압축을 해제하는 일이었습니다.
요즘은 DirectX 가 화면을 바꾸어주고, zlib, libpng, libjpg 가 이미지 파싱과 압축 해제를 해줍니다.
특별한 문제가 없는 경우 (대개는 문제가 있다하더라도... )
2nd 나 3rd party 라이브러리를 직접 분석해서 수정하는 일은 별로 없습니다.
최근 프로그래밍 트렌드는 실제 기능적인 부분만 저수준 언어로 작성한 다음
java script 나 python 와 같은 스크립트 언어들로 기능들을 연결하는 것입니다.
이런 것을 글루 언어라고 부르죠.
이야기 5.
요즘은 어떤지 모르겠지만 한창 엔진붐이 일던 시기에...
언OO 이나 유OO 엔진은 모든걸 스크립트로 제어 가능하고툴도 훌륭하기 때문에 프로그래머 따위 없어도 기획자만으로 개발 가능하다
라는 걸로 게시판이 뜨거웠던 적이 있었습니다.
최근 스크립트 언어와 플래쉬 엔진 도입 붐의 결과는
디자니어와 아티스트가 스크립트로 전체 모양을 만들기는 힘들다
... 였습니다.
스크립트 도입 의의는 어디까지나 프로그래머의 생산성 향상 차원이고
다른 파트가 어느정도 참여가 가능하다는데 있다고 봅니다
마무리.
프로그래머가 밑바닥부터 시작해서 전체를 다 만드는 일은 없어졌지만
전체 시스템을 이해해서
프로그래머가 밑바닥부터 시작해서 전체를 다 만드는 일은 없어졌지만
전체 시스템을 이해해서
존재하지 않는 저수준 모듈을 규격에 맞게 추가하거나
여러개의 저수준 모듈을 연동해서 컨텐츠를 만드는 일은 늘어나게 된 것이죠.
개인적으로는 지금 상황이 예전보다 더욱 어려워졌다고 봅니다.
다른 사람의 생각과 룰을 받아드리고 타협점을 찾지 못하면 아무것도 할 수 없게 되었거든요
어쨌든 요점은 프로그래머가 굶어죽을 일은 없다는 이야기입니다 ㅎㅎ
여러개의 저수준 모듈을 연동해서 컨텐츠를 만드는 일은 늘어나게 된 것이죠.
개인적으로는 지금 상황이 예전보다 더욱 어려워졌다고 봅니다.
다른 사람의 생각과 룰을 받아드리고 타협점을 찾지 못하면 아무것도 할 수 없게 되었거든요
어쨌든 요점은 프로그래머가 굶어죽을 일은 없다는 이야기입니다 ㅎㅎ


python 을 좋아하는 게임 프로그래머