twitter에 #code2011 에 덧붙여 글 하나 쓰기. 2011년에 주로 사용한 언어는,
- C++
- Python
- C#
- JavaScript
- SQL
- Lua
- Go
C++
우선 주 언어로 쓴 C++. 내년에 공개될 모 서버를 작성했다. 사내 테스트까지 나간 것 중 C++11을 사용한 것으론 처음일듯.
그리고 옮겨간 팀의 서버 역시 C++로 작성하고 있다. 크래시 보고 도구도 밑 단은 C++…
내가 주목한 특징을 꼽자면,
- 바위에 끌로 새기는 것 같이 작업함 – 집중해서 빡쎄게;
- lambda로 이전에 boost 쓰는 걸 대체 – C++11 만세!(…)
- 괜찮은 성능 – 내가 사용하는 모든 언어 중 가장 월등한 성능을 자랑한다
- Bare metal 위에서 돈다 (위랑 같은 의미?)
- 원하는 수준만큼 저 수준에서, 원하는 만큼 세밀하게 제어할 수 있다
Python
팀 내의 코드 생성기나 대부분의 스크립트는 python으로 작성한다. 올해에는 대략,
- 데이터 변환 도구; .xls -> sqlite -> (C++ internal form) 으로 몇 가지 데이터를 옮겼는데, 이 중 첫 단계는 모두 python에서 해결
- 크래시 덤프 분석 및 집계 기능. 크래시 덤프를 cdb 수준에서 분석하면 이를 토대로 다른 덤프들과 비교하고, 이에 대해서 웹에서 볼 수 있게 했다
- 덤프 수집 (web)
- 크래시 덤프 뷰어 (web)
- 빌드 도구나 덤프 관련 툴에서 메일 생성 / 알림 기능
에서 python을 주로 썼다. 물론 예전부터 쓰던 코드 생성기, 빌드 보조 도구에도 python을 쓰고 있다.
…덧붙이자면 요즘 .svg를 python으로 만드는 뻘짓을 했다. 근데 생각해보니 python-cairo를 쓰는 게 더 간단하잖아?;;;
C#
연초에 파일 전송 도구를 하나 짜야 했다. 원래 생각했던 건 python 기반으로 빨리 짜고 딴거 하고 놀자(…)였는데,
이거 누가 유지 보수 하냐
라는 태클에 물건너 갔음. 흑흑.
그래서 실 서비스에서 써본적(…)도 없는 C#으로 짰음. 사실 태클건 사람들은 태클 걸면 C++로 짤 거라고 생각했다고…
애매하게 편하고, 애매한 수준까지만 제어할 수 있어서 개인적으로 불만이 좀 많았음. 내가 python을 안 쓴다면 모를까 Orz.
누가 비슷한거 시키면 그땐 정말 python 쓸 테다… 일단 저거 linux에서 옮겨서 쓸 생각을 하니 눈 앞이 캄캄하기도 하고 — 누가 Mono 관련 조언 좀…
JavaScript
까놓고 말하면 js에는 완전 초보임. 그래서 python쪽에서 js를 쓰긴 했는데, 크롬에서만 돌길래(…) 포기하고 jQuery로 전부 옮겼다. JavaScript를 썼다기 보단 jQuery를 쓴 느낌이지만 (…).
CouchDB에서 map-reduce 용 언어로 js를 쓰긴하지만, 이건 그렇게까지 복잡하게 활용한게 없으니 좀 애매하다. 따지고 보면 올해는 js보다 json을 더 많이 본 것도 같다(운다).
올해 얻은 건 jQuery를 좀 더 익숙하게 쓰게 되었다 정도?
SQL
ORM하나 제대로 쓰고 싶었습니다만 꿈도 희망도 없어; 그냥 python위에서 클래스 수준으로 포장해서 하단의 데이터 스토어로만 쓴 듯.
위안이라면 MySQL / CouchDB를 선택해서 쓸 수 있게 만들었다 정도지만;
Lua
팀 내에서 사용하는 서버 용 부하 테스트 툴은 (NDC에서 ipkn이 발표한 내용은 http://ipkn.upnl.org/ndc.html 을 참조) lua를 스크립트 언어로 쓴다.
그런 의미에서랑, 몇 가지 도구에서 lua를 썼다. 이쪽에선 내가 발전이 전혀 없는듯…
Go
연초에는 좀 만졌지만 — 위에서 C#/Python으로 헀던 일 중 일부는 원래 Go로 하려던 건데 — 그 이후엔 망했음.
과연 내년에는 나의 야망(…)대로 Go로 돌아가는 서비스를 만들 수 있을까;
일단 올해에는 회사 안에서 / 실제 서비스에서 linux 기반으로 해도 된다는 건 확인했으니, 내년을 기약합시다(…).
요약:
- C++/python을 여전히 많이 쓰고 있다.
- C#은 안 편했음; 내년에는 아마 다른 선택을 할 듯.
- 웹 질(…)로 JavaScript/SQL을 좀 만졌다. 내년엔 기약 없음…
- Go. linux 기반 서비스를 좀 더 해도 될 것 같으니 내년을 기약
파이썬이라면 http://www.sqlalchemy.org/ 가 있습니다. (물론 아시겠지만… ㅠ_ㅠ) SQLAlchmey한번 써보고 나면 다른 ORM을 쓸 수 없게된다는 단점이 있습니다.
많은 분들이 추천해주셔서 써보려고 했는데, 지난 해에는 기회가 닿질 않았네요;
그런데 SQLAlchmey 은 Learning Curve가 너무 큰거 같아요. 이해가 안되요 T.T
하다보면 어찌 되지 않을까요라고 생각만 하는 중입니다(…)
python 으로 웹 애플리케이션 짤 때 여전히 cherrypy? 쓰고 계신감?
cherrypy 도 쓰고 flask도 씁니다. 더불어, (개발 용) 서버는 아무래도 flask와 함께 있는 http://www.pocoo.org/projects/werkzeug/#werkzeug 얘가 짱이예요. 얘보다 더 편한 애를 못 봄.
감사~ 나도 선진 문물을 좀…
서버 게임 로직 코어를 C/C++ 대신 Go로 대체하는 게 10년안에 가능할까요…? (단순 언어적 측면에서 관련 인프라가 확충된다고 봤을 때요)
말이 되는 답변을 드리자면 “Case by case” 정도입니다.
하드코어 MMORPG 서버 중에 C++을 쓰지 않는 프로젝트는 제가 알기론 두 개 밖에 없습니다. (개발 중이라고 알려진 모 프로젝트를 합쳐야 세 개)
다만 MMOG 혹은 SNS 게임은 C++을 안쓰거나, C++ 자체가 메인 스트림이 아닌 분야지요.
Eve Online처럼 python을 쓰는 경우도 있기는 하지요. (이건 정말 좀 extreme case지만요)
그런걸 생각하면 10년 후에도 Go 가 대체한 영역이 있을 것이고, 그렇지 않은 부분이 있겠네요.