OS 비의존적 프로그래밍 공부용 책 추천 부탁드립니다.

mirheekl의 이미지

O/S에 최대한 비의존적인 C/C++ 코드를 작성하기 위해서 사내 스터디를 실시하고 있습니다.
STL이랄지 템플릿 등 쉽게 써먹을 수 있는 것에 대해 일단 스터디를 실시했는데
이외에 서적으로 된 자료중에 추천할만한 것이 있으시면 좀 부탁드리겠습니다.
(STL, 템플릿 외에 다른 쪽을 추천해주시면 좋을거 같습니다.)

현재 서점에서 구할 수 있는 것중에 어떤 것이 적당할지 잘 모르겠네요.
그럼 부탁리겠습니다 ^^

hongminhee의 이미지

구체적으로 GP를 원하시는지 아니면 템플릿 흑마법을 원하시는지 질문만 보고는 잘 모르겠습니다. 후자라면 단연 Modern C++ Design, C++ Template Metaprogramming 필독입니다.

홍민희 (VLAAH, LangDev)

mirheekl의 이미지

혼동이 되실까봐 본문에 STL과 템플릿 관련된것 이외의 내용을 추천부탁드렸었는데..
그런 의미에서 Modern C++ Design이 괜찮아보입니다만, 사람들이 패턴 사용에 대해 그닥 호의적이지 않아 걱정입니다.

혹시 다른것 추천해주실 게 있으시면 더 추천해주세요.^^

본문에 씌여진대로 운영체제 의존성이 덜한 C++ 코드를 만드는 것 자체가 목표이며,
(물론 이게 100% GP를 의미하는 것은 아니겠지요, 편의상의 표현)
템플릿이나 STL을 제외한 다른 이슈를 보고싶었던 것입니다. 말하자면 방금 주신 질문에서는 전자쪽에 가깝겠네요.

--
This is for you new people. I have just one rule :
Everyone fights, no one quits. If you don't do your job, I'll shoot you myself. Do you get me?

--

hongminhee의 이미지

제가 본문을 잘못 읽었네요. STL과 템플릿 의 서적이였네요; 그렇지만 GP는 플랫폼 독립성과는 완전히 상관 없는 개념입니다.

홍민희 (VLAAH, LangDev)

winner의 이미지

GP style의 다른 시도를 한다고 해도 GP가 얼마나 의미있는 용어가 있는지 솔직히 의문입니다.
다른 쪽의 예를 들어 OOP는 사람들마다 생각하는게 천지차이입니다.

잘 정립된 programming style이란 GP 혹은 OOP라고만 할 수 없는 것이 아닐까해요.

그런면에서 GP라는 용어와 함께 실체를 느낄 수 있는 것은 일반인에게 STL 외에는 없지 않나 합니다.
학회차원으로 가면 물론 다른 이야기를 할 수 있긴 하죠.
하지만 분명 대중적으로 STL 외에 GP를 전면에 내세우며 만들어진 결과는 찾기가 쉽지는 않을 것 같군요.

http://kldp.org/node/107141

참고하세요.

killereco의 이미지

http://www.boost.org

책이라면 아래 책을 추천합니다.

C++ Template Metaprogramming : Boost로부터 배우는 개념, 도구, 기법
http://kangcom.com/sub/view.asp?sku=200506140008

mirheekl의 이미지

흠.. 질문을 잘못 올려서 그런가 다들 그부분만 지적하시네요. ^^;;
추천 감사합니다.

--
This is for you new people. I have just one rule :
Everyone fights, no one quits. If you don't do your job, I'll shoot you myself. Do you get me?

--

죠커의 이미지

제너릭 프로그래밍은 "플랫폼을 타지 않는 구현"을 의미하는 것이 아닙니다.

제너릭 프로그램은 다음을 의미하죠.

1. 형에 구애받아서 형에 따라 같은 코드가 반복되는 것의 제외.
2. 1번의 처리를 위한 메커니즘에서 파생된 다형성도 추구.

STL/Boost/Loki는 1번 2번을 모두 추구하고 있고요.

C++에서는 템플릿을 이용하지 않고 위의 내용을 추종하는 것이 현실적으로 가능할까 생각이 듭니다.

- 죠커's blog / HanIRC:#CN

neogeo의 이미지

바로 위에 죠커님도 말씀 하셨지만

Quote:

O/S에 최대한 비의존적인 C/C++ 코드를 작성하기 위해서

라는 목적은 generic programming 과는 크게 관계가 없습니다.

OS 를 어떻게 layer 화 할껀지 혹은 컴파일러에 의존적인 코드를 어떻게 숨길껀지에 대한 기초적인 라이브러리를 제대로 제작하는게 훨씬 중요합니다. ( 또한 일원화 된 컴파일 환경과 테스팅 환경도 말이죠.. ) 물론 그러한 라이브러리를 template 을 사용해서 generic 하게 짤 수 있는 부분이 어느정도 있을지도 모르겠습니다만....

더더군다나 STL 은 C++ 의 표준화된 라이브러리로써 사람들이 반복적으로 자신만의 자료구조를 만드는것을 회피하고 type 에 관계없이 자료구조를 일반화 하기 위해 만든 것이지 OS를 숨기기 위해 만든 것이 아닙니다.

차라리 boost 의 date_time 나 asio 같은 OS-independent 하면서 일반적으로 프로그래밍에 필요하지만 OS 에 의존적일 수 밖에 없는 부분을 어떻게 추상화하는가에 대한 예제를 사례로 공부하시는게 더 좋을 것 같습니다.

스터디의 목적과 공부하시는 내용이 약간 핀트가 어긋난게 아닌가 하는 노파심에 주제넘게 말씀을 드렸습니다.

Neogeo - Future is Now.

Neogeo - Future is Now.

mirheekl의 이미지

프로그래밍을 할줄 모르는 사람이 봤을 때 저 제목이 가장 이해하기가 쉽기 때문입니다.
뭐 어차피 그걸 여기에 적는 게 의미가 없어서 스레드 제목을 바꿔 버렸습니다. ㅎㅎ

--
This is for you new people. I have just one rule :
Everyone fights, no one quits. If you don't do your job, I'll shoot you myself. Do you get me?

--

feanor의 이미지

Write Portable Code: An Introduction to Developing Software for Multiple Platforms
http://www.hookatooka.com/wpc/

같은 책을 원하시는 건가요?

bootmeta의 이미지

한번 읽어 보는 것도 좋을 듯
https://developer.mozilla.org/En/C___Portability_Guide

monovision의 이미지

모두 C++ 만 얘기하셔서...
전웅님의 C 언어 펜더멘탈도 조심스레 추천해 봅니다.

semmal의 이미지

O/S에 최대한 비의존적인 C/C++ 코드라는 건 사실 좀 어렵게 느껴집니다.

이게 쉽다면, autoconf나 cmake같은 툴이 없었을 테니까요.

그것보다는 OS에 최대한 비의존적인 라이브러리를 쓰는 게 오히려 핵심이 아닐까 싶습니다.
------------------------------
How many legs does a dog have?

------------------------------
How many legs does a dog have?

lifthrasiir의 이미지

OS에 의존하지 않는 프로그램을 만들려면 역설적으로 각 OS의 차이에 대해서 공부해야 합니다. OS에 비의존적인 라이브러리로 시작하시는 건 좋지만 종국에는 여러 OS의 인터페이스를 함께 익히는 쪽으로 가셔야 할 것 같습니다.