트랙백:
STL에 대한 논란: 아는 만큼 보인다. - object 님
음... 저는 아직도 STL에 대한 논란이 존재한다는 것이 더 놀랍습니다. 개인적으로 C++ 언어 자체는 별로 마음에 안들지만, 그럼에도 불구하고 요즘 C++을 즐겨 사용하는 가장 큰 이유는 바로 STL 때문입니다. 만일 지금의 C++ 에서 STL이 빠져있었더라면 저는 C++에는 눈길도 주기 않았을 겁니다.
STL을 싫어하는 이유 중 하나가 코드가 예쁘게 나오지 않는다는 것도 있다지만, 그건 STL의 설계가 개판이라기 보단 예초에 C++ 언어의 한계입니다. C#이나 요즘의 자바처럼 foreach 문 같은 걸 제공하는 것도 아닌 환경에서 iterator를 깔끔하게 쓰는 것도 쉽지가 않습니다. 하지만, 이것도 #define 매크로로 조금은 깔끔하게 다듬을 수 있고, 아니면 boost에서 제공하는 foreach를 쓰면 아주 깨끗하게 쓸 수 있습니다. 하지만 사실 더욱 STL 답게 쓰려면 for 문으로 iterator를 탐색하지 말고, for_each() 와 함수 객체를 조합하는게 더 낫습니다. 그리고 이쪽이 성능에 있어서도 더 나은 결과를 보입니다.
제가 생각할 때 STL은 C++이 가진 한계를 라이브러리 차원에서 확장시킨 대단한 물건입니다. 원래 C++ 언어의 스펙에 없던 것을 반은 억지로 구현하려는 것이다 보니 코드가 깔끔하게 나오지 못하는 건 사실 어쩔 수 없습니다. (특히나 함수형 프로그래밍의 개념을 흉내내려는 그 모양새에서는 정말 눈물이 나올 지경이었습니다.) 하지만 그럼에도 불구하고 STL은 프로그래머가 해야될 삽질을 너무나 많이 줄여주고 있습니다. 그래서, 정말 쓰면 안되겠다 싶을 경우가 아닌한 STL의 도입은 거의 필수로 생각하고 있습니다.
"아는 만큼 보인다"는 말이 저는 정말 공감합니다. 저도 디자인 패턴과 Smalltalk나 Haskell 같은 제 3세계(?) 언어들을 공부해 보고 나서야, 'STL에서는 왜 그런 식으로 했는가' 라는 게 조금 보이기 시작했습니다. C++의 표준 라이브러리를 설계하는 인간들이 절대 바보가 아닙니다. 아무리 엿 같이 보여도 그 설계에는 다 이유가 있었습니다. 저는 솔직한 심정으로, 저런 거지같은 C++에서 STL을 그런 수준으로까지 설계해낸 것 자체가 너무 대단하다고 생각합니다. 저라면 죽었다 깨어나도 저런 미친짓은 불가능해요...
아직도 STL을 왜 쓰는지 모르겠다고 생각된다면, '디자인 패턴' 관련 책을 한번 정독해서 읽어보길 권합니다. 그리고 Ruby 같은 객체지향 스크립트 언어나 혹은 Smalltalk(강추!)를 대충이라도 한번 공부해 보고, 그러고도 시간이 남아 돈다면 LISP나 Haskell 같은 함수형 언어도 살짝 맛을 보는 것도 권장합니다. 간단히 말해, 이들 언어에서 하는 짓거리를 C++에서 그나마 비슷하게 흉내내는 것이 STL이라고 할 수 있겠습니다.