C, C++, STL 각종 필요 라이브러리..
글쓴이: elfs / 작성시간: 토, 2003/06/07 - 7:05오후
쩝..제목이 거창하지요..--a..
별건 아니고..
C 를 쓰다가 최근 c++ 을 공부하고 있습니다.
첨엔 도대체 이게 뭔가 한참을 헷갈려 하다가 이제사 아주 조금 개념을 잡고 있습니다.
그런데 아직도 궁금한게 있는데..
1) C++ 은 기존에 stl 이 제정되기 전엔 그럼 c 용 함수들과 단지 클래스나 템플릿이라는 구조적인 부분만이 추가된 것이었었는가 하는것이랑요..
2)전에 어디 질문을 보니 stl 에서는 소켓라이브러리를 지원하지 않는다..라는 식의 내용이 있던데..그렇다면 총체적으로 아직도 결국 c 의 함수들을 이용하고 있다는 의미가 아닌가 해서요..구조체나..등등..
3) 그럼 c++ 의 라이브러리들만 가지고는 할 수 있는게 없는건가요? 업체들마다 다르게 제공하는 라이브러리가 아니면요..즉.. 예를 들자면
c 의 fopen 과 같은 stl 라이브러리는 뭐고 c 의 time() 과 같은 함수를 대칭할 수 있는 stl 라이브러리는 뭔가요?
4) 질문 보시면아시겠지만 아직 저 잘 개념 못잡고 있지요? --a..
무엇을 어떻게 알고 있는지 조언좀 부탁드립니다.
차라리 c를 몰랐다면 c++ 즉 클래스나 템플릿의 개념을 좀 더 쉽게잡을 수 있었을까요?
자꾸 c 랑비교하게 되고 그러네요....
Forums:
c++에서 java 수준의 전용 라이브러리를 기대하시는건 무리인듯.
STL도 제가 알기로는 SGI에서 만든 자료구조와 알고리즘을 제공해주는 템플릿 라이브러리 라고 알고 있는데요.
http://www.sgi.com/tech/stl/stl_introduction.html
Introduction to the Standard Template Library
The Standard Template Library, or STL, is a C++ library of container classes, algorithms, and iterators; it provides many of the basic algorithms and data structures of computer science. The STL is a generic library, meaning that its components are heavily parameterized: almost every component in the STL is a template. You should make sure that you understand how templates work in C++ before you use the STL.
혹시 유닉스쪽 프로그래밍을 하신다면, c, c++에 연연하시는것 보다는,
시스템 프로그래밍, socket, network, IPC, pthread ... 기타등등
공부 할것들이 끝이 없는걸로 알고 있습니다.
유닉스는 c 기반으로 작성 된놈이라서 java 나 mfc 정도 수준의 C++ API
를 기대하시는건 무리일것 같습니다.
음..저는..
c++ 로 무언가를 기대하고 있다는 의미는 아니었었구요..
단지 실제 c++ 에 대해서 사람들이 어떻게 생각하고 있는지가궁금해서 입니다.
그리고 평생 한가지 OS류에 매달려 있는 개발자가 어디있겠습니까. 이것저것 다 공부하는 것이지요. :wink:
제가 궁금한건 음..그러니까... 위에 번호에 대한 것들이요..^^
http://clusterkorea.org/
[quote]유닉스는 c 기반으로 작성 된놈이라서 java 나 mfc 정
UNIX/Linux가 C 기반이더라도 살아온지 벌써 10년이 넘었습니다.
ㅡ_-) 당연히 고수준 Library가 있지요.
wxWindows Library는 10년의 역사(since 1992)를 가지고 있더군요.
http://www.wxwindows.org
대체로 코딩 규칙은 MFC와 비슷합니다.
IBM 개발자 홈페이지던가? 거기에 보면 MFC에서 wxWindows로
포팅하는 방법(팁?)에 대한 기사를 본 것 같은데... 흠...
아무튼 그렇다구요...
(왠지 딴지 거는 것 같아서 죄송합니다)
_____________________________
언제나 맑고픈 샘이가...
http://purewell.biz
[quote="elfs"]쩝..제목이 거창하지요..--a..별건 아니
C++98 최종 표준 승인 이전에는 공식적인 C++ 기본 제공 라이브러리는 스트림(iostream) 밖에는 없었습니다.
C++의 문법적인 부분은 94년 표준 개정 초안이 소개되었을 때 대부분 완성되었다고 할 수 있습니다.
그러나 언어는 단순히 문법적인(syntactic) 구조만으로 판단할 수는 없습니다.
언어가 제공하는 라이브러리가 언어의 의미적인(semantic) 측면을 결정합니다.
C++98에서 변화된 표준 라이브러리 중 가장 핵심인 STL의 도입은 C++의 프로그래밍 패러다임을
객체지향(OOP)에서 제네릭 프로그래밍(Generic Programming, GP)로 바꾸어 놓았다고 할 수 있습니다.
표준 라이브러리는 소켓은 커녕 멀티 스레딩조차 정의하고 있지 않습니다.
'표준'이라는 의미 자체가 어떤 시스템에서든 작동되어야 하는 것이라,
조금이라도 시스템에 종속적인 기능은 전혀 포함되어 있지 않습니다.
앞으로 C++ 표준이 개정될 때는 스레딩이나 소켓에 대한 지원이 포함될 수도 있겠죠.
참고로 C++로 플랫폼 독립적인 네트워크 프로그래밍을 할 수 있도록 지원하는 라이브러리로
ACE(Adaptive Commnunication Enviroment) Framework라는 것이 있습니다. 이 라이브러리를 위한 학습서로는
C++ Network Programming Vol. 1 : Mastering Complexity with ACE and Patterns
C++ Network Programming Vol. 2 : Systematic Reuse with ACE and Frameworks
를 보시면 됩니다. 1권은 번역서도 나와있습니다.
즉, 표준 라이브러리로는 시스템 종속적인 것은 전혀 개발할 수 없고, 기본적인 콘솔 입출력 프로그래밍만 가능합니다. 물론 이것만 있어도 분야에 따라 여러가지 다양한 애플리케이션을 제작할 수 있습니다.
표준은 동일한 소스 파일을 사용해서 어떤 시스템에서도 컴파일만 하면 작동되는 이식가능한 코드가 되는 것에 목적을 두는 것입니다.
fopen()을 대신하는 C++의 기능은 스트림 라이브러리에 포함된 fstream 류의 클래스(iostream의 자손 클래스)를 쓰면 됩니다.
time()은 C++ 라이브러리에는 없습니다. C 라이브러리에 있는 것만으로 충분하기 때문이죠.
확실히 C를 먼저 배우고 C++을 할때 문제가 되는 경우가 많더군요.
컴파일러만 C++을 쓸 뿐 C식의 프로그램이 되어버리죠. :oops:
차라리 Python이나 Java를 먼저 배운 사람이 적응이 빠르죠.
이러한 잘못된 학습 방법을 뒤집어 엎고, 제대로 된 C++ 학습 방향을 제시하는 책으로 Accelerated C++ : Practical Programming by Example을 추천합니다. 링크의 서평 중 곽용재님의 글을 잘 읽어보시기 바랍니다.
그리고 쓸만한 C++ 라이브러리 레퍼런스도 갖추어 놓아야 합니다.
The C++ Standard Library : A Tutorial and Reference를 꼭 보시길 권합니다.(둘 다 번역서도 물론 있습니다. 샘플 챕터를 다운받아보세요.)
댓글 달기