페이지이름 | 득표 |
CeePlusPlus | 0 |
CeePlusPlusLanguage | 0 |
CPlusPlus | 2 |
CPlusPlusLanguage | 1 |
CppLanguage | 6 |
CPPLanguage | 0 |
씨뿔뿔 | 0 |
{{|
참고 사항입니다. 영어권 언어 사용자인 경우 읽을때 C plus plus 라고 읽습니다.|}}
PerlLanguage, PythonLanguage, PhpLanguage 등과 비교해보면, 노스모크에서 그냥 C++이라고만 언급되는 경우가 상당히 많습니다. 아샬은 우발적링크가 용이한 페이지이름을 정해 통일되게 사용한다면 C++에 대한 정보가 정리(?)될 수 있다고 봅니다. 페이지이름이 결정된 후에 해야 할 일이 더 많습니다.
1.1. C++ 언어 ¶
- C++ 언어의 개선점
C++ 는 세 가지 프로그래밍 방식 - 즉 C 의 절차언어 방식과 C에 클래스를 추가함으로써 비로서 실현된 C++의 객체 지향 언어방식, 그리고 C++ 템플릿에 의해 지원되는 일반화 프로그래밍 -을 하나로 결합하고 있다.
- BjarneStroustrup의 목표
C와 마찬가지로 벨 연구소에서 탄생한 C++는 벨 연구소의 BjarneStroustrup이 1980년대 초에 개발하였다. 그의 말에 따르면, C++는 그와 그의 동료들이 어셈블리 언어나 C언어, 기타 고수준 언어로 프로그래밍하는 수고를 덜기 위해 만들어졌으며, C++를 만든 주된 목적은 프로그래머들이 보다 쉽고 쾌적하게 유용한 프로그램을 작성할 수 있도록 하기 위한 것이라고 했다.
쉽고 쾌적함이라..제 개인적인 생각에 더 쉬운것같진 않은데..^^;;
1.2. C++의 특징 ¶
- 큰 기능성 (Greater Functionality)
- C++에서, 문자 상수의 형은 char이다. C에서는 EOF 같은 에러도 반환해주기 위해 int를 쓴다.
어? C에는 char가 없었나요?
C와 C++ 둘다 문자 상수의 형은 char인데요. -_-a --RedPainC언어의 getchar는 int형을 반환하지만 C++의 basic_iostream의 get은 char형을 반환합니다. (C++의 getchar는 여전히 int형을 반환합니다.) 이 것을 큰 기능성이라고 보기는 힘듭니다. getchar가 int형을 반환하던 시절은 시스템의 메모리가 비싼 시절이었기 때문에 반환값을 합쳐 놓은 것에 불과합니다. getchar를 wrapping해서 분리해서 반환하는 함수를 만들면 분리해서 반환이 가능하지요. 이것을 C++의 기능성으로 본다는 것은 잘못된 견해라고 봅니다. wide-char 타입은 지원이 가능합니다. basic_iostream은 템플릿 클래스기 때문이죠. 사람들이 많이 쓰는 iostream과 string은 char형에 맞도록 typedef한 것에 불과합니다. wide-char을 사용할수 있게 되었다고 해서 문자를 명확하게 char라고 사용하게 된것이라고 보기는 힘들지요. C++의 함수들은 여러 문자형을 지원하도록 설계되었는데 특별히 많이 사용되는 char형에 대해서는 typedef한것에 불과합니다. (참고로 w_char형에 대해서도 wstring등의 이름으로 typedef되어 있습니다만 locale 설정 문제와 반환값이 int로 되어있어서 곤란한 부분이 있습니다.) --씨엔
C 표준 라이브러리에 있는 getchar 와 같은 문자 입력용 함수들은 int를 리턴값으로 가집니다. 그 이유는, 버퍼에 아무 문자도 없을 때와 같은 에러 코드를 나타내는 데 리턴값을 함께 사용하기 때문이죠. getchar의 리턴값을 char로 받으면 '입력 에러'와 아스키코드 255번 문자를 구분할 수 없게 됩니다. 반면 C++에서는 예외를 발생시켜서 에러를 나타내고, 또 유니코드 대응 wide-char 타입도 지원하기 때문에 (이 부분은 확실치는 않네요) 문자를 명확하게 char 이라고 사용할 수 있게 되었습니다. 물론 기존 C 표준 라이브러리를 사용하고 예외기능을 disable 시킬 경우엔 이러한 장점을 활용하기 어렵겠지요.
실험 결과,printf("%d\n", sizeof('a'))
의 결과가cc main.c
와 같이 컴파일했을 때에는 4,g++ main.cpp
와 같이 했을 때에는 1 이 나오는군요. i386 리눅스 머신에서 컴파일했습니다. 단순한 표준 라이브러리 함수의 스펙 이상의 어떤 의미가 있는 듯 합니다. 이것이 왜 큰 기능성을 제공하는지는 생각해 볼 문제로군요.
단순히 C++에서 문자 상수를 인식하는 것의 여부겠지요. (함수의 스펙 여부가 아니라) --씨엔
- C++가 추상적 데이타형을 지원함으로 나타나는 부수효과는 C++의 각 클래스들이 C의 Struct와는 달리, 클래스 자신의 범주와 내부의 개별요소의 범주단위로 접근을 허가하고 거부한다는 것이다.
- 지역 Struct 명은 외부 시계속에 있는 오브젝트, 함수, enumerator, 또는 형의 이름을 숨긴다. 이것은 Struct명들과 식별자들이 C++내에서 단일 이름의 공간에서 발생하기 때문이다.
- C++에서 go to문은 명시적인 또는 암시적인 초기자들(즉, 클래스 생성자)을 가진 선언 위를 점프해 넘어 갈 수 없다.
- C++에서, 분명한 extern이 없는 변수 선언은 그 변수의 정의로 간주해 버린다. 이것은 클래스를 초기화하는 함수를 자동으로 호출하기 위해서 필요하다.
- C++에서, 문자 상수의 형은 char이다. C에서는 EOF 같은 에러도 반환해주기 위해 int를 쓴다.
- 엄격한 형 검사(Stronger Type Checking)
- C++에서, 선언되지 않은 함수를 이용하는 것은 에러이다.
- C++에서, 값을 리턴하도록 선언되어 있는 함수가 값을 리턴하지 않으면 에러이다.
- C++와 ANSI C는 문자배열을 초기화할때 사용하는 스트링 상수의 형을 서로 다르게 해석한다. C++은 문자로 된 스트링 상수를 종료시키는 널 문자를 위한 공간을 제공하지 않기 때문이다.
프로그래밍언어적인 특성을 봤을 때 CppLanguage는 결코 Strong Typing이 아닙니다. Stronger than C라고 한다면 이해할 수 있습니다. Java마저도 Strong Typing은 아니라는 견해도 있습니다. (사실 객체지향언어의 본질적인 문제이기도 합니다. 타입캐스팅 문제 때문이죠.) -- Selmo
- C++에서, 선언되지 않은 함수를 이용하는 것은 에러이다.
- 일반화 프로그래밍(Generic Programming)
- C++에서는 템플릿을 제공해서 일반화 프로그래밍(Generic Programming, 포괄 프로그래밍)을 제공한다.
- C++에서 템플릿을 가장 잘 활용한 것은 STL(Standard Templete Library)이다. 이것은 표준에 넣기 위한 노력에 의해서 C++은 1998년에 와서야 표준이 완성되게 되었다.
슬프게도 MS의 툴은 STL의 일부만 지원하며 성능또한 떨어집니다.
- C++은 템플릿을 이용하여 자료형에 무관하며 안정적으로 알고리즘을 적용시키게 해주어서 생산성을 향상시킨다.
- C++에서는 템플릿을 제공해서 일반화 프로그래밍(Generic Programming, 포괄 프로그래밍)을 제공한다.
4. C++ 의 전망 ¶
C++ 창시자인 Bijarne Stroustrup이 IEEE에서 C++의 전망에 대해 인터뷰한 내용입니다. 아직도, 이 유명한 인터뷰를 읽지 않으신 분들을 위해서 학교 다닐때 죽어라 STL외우느라 땀뺐었는데, 미리 이 글을 보았음 자바에 신경썼겠죠. 읽어보면 느껴지겠지만, C++이 증말로 객체지향언어인가, Portability란게 있는가에 대해 익살스럽게 대답하는게 재밌습니다. -- dilbert
Bijarne Stroustrup의 인터뷰 http://www.orton.demon.co.uk/ff/cpp_interview.html
Bijarne Stroustrup의 인터뷰 한글번역 (안종연 씨의 개인 홈페이지 링크)
Bijarne Stroustrup의 인터뷰 http://www.orton.demon.co.uk/ff/cpp_interview.html
Bijarne Stroustrup의 인터뷰 한글번역 (안종연 씨의 개인 홈페이지 링크)
위 인터뷰는 누군가가 (SomeWaysToSayHelloWorld와 같이) ObjectOrientedProgramming을 비꼬려고 지어낸 글입니다. 실제 인터뷰는 여기 있습니다: http://www.research.att.com/~bs/ieee_interview.html
언제나 궁금했던건데, Bijarne Stroustrup <- 도대체 이건 어떻게 읽어야 되는거죠? -- bab2
저분 홈페이지에 가면 wav 파일인가로 있던 거 같은데 홈페이지가 기억이 안나네요. "뱐"하고 "비얀"의 중간 정도 아닐까요 --이호재
한글로 쓴다면 비얀 스트라우스트럽 정도? --세벌
한국어로 하면 비아네 스트라우스트럽 이 아닐까 싶습니다. http://www.research.att.com/~bs/bs_faq.html#pronounce -- 쌀밥
저분 홈페이지에 가면 wav 파일인가로 있던 거 같은데 홈페이지가 기억이 안나네요. "뱐"하고 "비얀"의 중간 정도 아닐까요 --이호재
한글로 쓴다면 비얀 스트라우스트럽 정도? --세벌
한국어로 하면 비아네 스트라우스트럽 이 아닐까 싶습니다. http://www.research.att.com/~bs/bs_faq.html#pronounce -- 쌀밥
지금 웨이브 파일로 들어보니까요.. 비아네 스트럽-스트룹..에 가깝게 들리네요. 맞게 들은건지.. -- Selmo
Bjar-ne Strou-strup 라고 본인이 말했습니다. 성과 이름 각각 2음절에 BJ 둘다 강세가 없다고 합니다. 뱌네 스트로-스트럽 정도가 적당할것 같습니다. -씨엔Bijarne Stroustrup씨 언제부턴가 Texas A&M University에서 교수하고 있더군요...^^;