컨테이터를 직접 구현해보는 것이 의미가 있을까요?
글쓴이: dltkddyd / 작성시간: 수, 2014/02/26 - 12:06오전
처음 c++에 입문할 때에는 자료구조론이 왜 중요한지 물랐지만 컨테이너를 접하면서 자료구조론의 중요성에 대해 실감하고 있습니다. 컨테이너를 어떻게 구현하느냐에 따라서 엄청난 성능의 차이가 날 수 있다는 것을 컨테이너를 직접 구현해보면서 알게됐으니까요. 그나마 vector는 구현이 제법 간단하기 때문에 구현방식에 따라 엄청난 속도의 차이가 난다는 사실을 알게됐습니다. 뭐 지금도 배우는 단계이기도 하고 자료구조론의 중요성을 뒤늦게 나마 알게돼서 다행이기도 합니다만 어차피 표준에 구현된 것을 그냥 쓰면 되는 것을 이다지 컨테이터 구현에 집착하면서 만드는 것이 시간낭비는 아닐까 하는 걱정이 밀려오기도 합니다. 컨테이너 구현이라는 것이 워낙 재미있는 부분이기도 해서 표준의 구현과 속도 차이를 비교해가면서 만들고 있습니다. 그리고 제가 만들어놓은 svector(표준 vector를 구현해놓은 것)가 표준과 거의 속도 차이가 없이 제대로 작동한다는 것이 위안이 됩니다. 그래도 표준에 있는 것을 이렇게 직접 구현하는 것이 프로그래머의 입장에서 좋은 것일까요? 프로그램 현업에서 일하시는 분 또는 지금 저처럼 배워나가는 단계에 있는 분들께 질문을 드립니다. 과연 이렇게 배워가는 것이 바람직한 것인지? 아니면 표준의 컨테이너를 외워버리는 것이 바람직할까요?
Forums:
컨테이너 구현은 최적화 문제가 발생할때만 하는게
컨테이너 구현은 최적화 문제가 발생할때만 하는게 최선이죠
협업에서는 호환성이 우선입니다
제 생각엔 의미있는 시도로 보입니다.예전에 제
제 생각엔 의미있는 시도로 보입니다.
예전에 제 후배 중 한 녀석이 어셈블리 언어로 에티터 만든다고
한 일년 정도 끙끙거리더니 그 경험을 살려
게임 회사에 게임 엔진 만드는 쪽으로 취쥑하더군요.
저야 뭐 실력도 일천하고 프로그래밍이 전공도 아니고 해서
이런 말씀 드리는 게 주제 넘는 줄은 알지만,
한가지 주제를 잡아 갈 수 있는데 까지 가 보는 건
자신의 능력을 보다 높은 단계에 끌어 올리는 데 있어
무지 효과적이라 생각합니다.
물론 다른 더 중요하고 시급한게 있다면 그 일부터 하는 게 우선이겠지만
시간에 여유가 있다면 제 미천한 생각엔
말씀하신 프로젝트는 꽤 해 볼만한 일로 보이는 군요.
말하자면..
결과물의 활용 측면에서는 큰 의미는 없습니다. 대개는 이미 누군가가 해놨기 때문에, 그리고 협업이나 사용자지원 측면에서 이미 알려진 녀석을 쓰는 것이 낫기 때문에.
헌데 개인적인 공부라면 당연히 큰 의미가 있습니다. 구조를 조금이라도 알고 사용하는 것과 그냥 사용하는 것중에 어느 쪽이 프로그래머 입장에서 더 나을지는 명백하므로.
결국 마지막 질문인 " 과연 이렇게 배워가는 것이 바람직한 것인지? 아니면 표준의 컨테이너를 외워버리는 것이 바람직할까요?" 에 대해 답변하자면.. 둘 다.. 라고 하겠습니다.
컨테이너 설계 연습은 당연히 바람직한 일이지만 표준 컨테이너도 공부할수밖에 없는 것.
--
답변 주신 분들께 감사드립니다...
감사합니다.
본인 맞습니다.
인증샷
우헤헤헤... 로 대신합니다.
저도 덧붙히자면...
저도 덧붙히자면 직접 자신이 해보는건 중요하고, 좋은 것이라고 생각합니다.
직접 구현해 봄으로써 내부 원리를 더 자세히 깨닫게 되고, 프로그래밍 실력도 늘게 되겠죠.
그리고 혹시 나중에 직접 구현해야만 사용할 수 있는 경우에도 문제가 없게 되구요.
저두 왠만하면 라이브러리나 다른 사람이 만들어논것을 그대로 사용하려 하지 않고
직접 만들어 사용합니다. (물론 높은 퍼포먼스가 필요한건 믿을만한 라이브러리를 쓰긴 합니다.)
저두 그 덕에 최근에 실력이 많이 늘었다고 생각합니다. (예전에 멋모르고 그냥 인터넷에서 다 다운받아 사용했을때에 비해...)
댓글 달기