2010년 1월 8일 금요일

STL은 정말 괜찮은 물건인가?


자료구조와 STL를 제대로 공부를 해봤다면 정말  이런 질문 자체가 어이 없게 느껴질지 모르겠다

하지만 현실은 그렇지 않다  , 아직도 종종 꽤 많은 프로그래머입에서  
"STL 따위는  쓰지 말아야 한다"고 주장하는 글이 보이기 때문이다

다시 말하자면 한마디로   "STL 코드를 보면 지저분하고 별거 없는거 같다" 라는것이 그들의 주장인것이다
그리고는 자신이 짠 코드가 STL를 압도적으로 능가한다고 주장하는 경우가 일반적이다

과연 그럴까?

내가 겪어본 봐로는
그들의 주장은 STL의 익숙하지 않거나 자기의 코드에 대한 막연한  우월감 때문인 경우가 대부분이다

좀더 정확하게 말해
아마 STL 코드를  살짝보니 , 템플릿 도배에 지저분해보이고,  
"저정도는 내가 더 깔끔하게 짤 수 있어"  같은  치기어린 감정을 나타내는 주장 밖에 없다

워낙 많은 C++ 커뮤니티에 그런 사건이 있어왔기에 ,  어쩌면 이제는 식상한 이야기 일수 있으나
그래도 그나마 가장 나름의 논리를 가지고 있던 한분이 있어  링크를 걸어본다

gpg study에서  그나마 stl를 대안할 라이브러리를 준비했다고 주장해  장장 15페이지나 되는 토론을
벌였는데 ,  이글에서 각자  결론를 내려볼수 있겠지만  특정한 용도의 라이브러리를
 범용적인 STL에 적용하려니 문제가 되는게 일반적이었다


이부분을 보면 내가 C++의 최적화의 필독서라 불리는 Efficient C++의 내용을 인용하였는데
좀더 이분야의 전문가 글을 인용하는게 도움이 될거 같아  글을 올렸다
혹시라도 C++ 최적화에 관심이 있다면 반드시 읽어봐야 할 책이다
[나 역시 2번은 읽었다]


참고로 위 링크에서 내가 저렇게 길게  토론을 한 이유가 있는데
STL를 깔보는 프로그래머에게  , 쓸때 없는 소리를 더 이상 하고 싶지 않았기때문이다

헛소리를 하면 그냥 저 링크를 걸고 ,  저기 나온 내용을 이해를 하고도  STL를 깔수 있느냐라고
하면  아마 "게임 끝" 이 날테니 말이다

그래도 왠지  STL 험담을 하고 싶다면  제발 자료구조 책과 STL에 대한 책 한권쯤은 읽어봐라

자료구조책에 나와 있는 모든 내용을 C++ 템플릿으로 이렇게 완벽히 소화해낸 라이브러리가
있을까 하며 기쁨의 눈물을 흘릴것이다

또한 구루들이 컴파일 타임때 최대한 최적화한 STL를 만들때 얼마나 많은
고민을 했을까 라는 생각이 들때쯤이면 한층더 프로그래머로써 성숙해질 수 있는 게기가 되리라...

여담이지만
Effective C++  시리즈의 저자 스캇마이어는  More Effective C++ 에서 스마트 포인터에 대해
상당한 페이지를 소모하며 글을 작성하였고 그 라이브러리를 공개도 하였다

정말 멋지게 만들었음에도 , 그가 정말  C++ 바닥에서는 알아주는 구루임에도 불구하고

More Effective C++ 책 다음작품인  Effective STL책 에서  자기가 만든 스마트 포인터를 쓰지말고
boost의 스마트 포인터를 쓰라고 간곡히 권한다

자기도 심열을 기울여 만들었지만 ,  모든 상황을 체크할수 없었고 , 꾸준한 버그 리포팅을 받다가
결국 포기하였다는것이다

그만큼 표준 라이브러리나 검증된 라이브러리를 만들기 어렵다는 것인데 ,
STL 험담하기전에 자신의 실력를 한번 되돌아 보면 좋을거 같다

------------------------------------------------------------------------------
혹 Effective C++ 시리즈 책을 모르는다면  반드시 읽어보아라  
[  나 역시 평균 3번은 읽어보았다 ]
------------------------------------------------------------------------------

다음 편은 fix_vector를 다뤄보겠다

댓글 없음:

댓글 쓰기