C++의 위력

익명 사용자의 이미지

한때 C++를 무지 싫어했는데..
생각이 바뀐다.

C로 된 거대한 소스화일을 보면,
왜 C++를 써야 하는지 이해가 된다.

C++의 가장 조그마한 장점, 즉,
클래스를 만드는 것만 이용해도,
C코드는 획기적으로 효율적이 될수 있다.

상속이니 템플릿이니 하는 기타 여러가지
장점들은 들먹일 필요도 없다.

예를 들어 a.c와 b.c 에 각각 자료구조가 있다면,
C에서는 각각 함수를 만들어야 할것이다.

struct AA;

a_get();
a_put();
a_insert();

struct BB;

b_get();
b_put();
등등..

이런것이 한두개면 무리가 없겠지만, 만약 수십,수백,수천개의
소스화일로 이루어진 대형프로젝트라면..

이름붙이는것부터 장난이 아니다.

a_put(); b_put(); c_put(); 등등이 난립할것이다.

구조체 이름또한 마찬가지다.

구조체를 외부변수로 정의했기때문에,
우리는 수많은 구조체및 자료구조등의
이름을 기억하고 일일히 염두에 둬야한다.

그러나 클래스 안에 있다면 상황은 달라질것이다.

C++에서는 단지 클래스를 만든것만으로도,
이 많은 단점들을 획기적으로 개선시킬수 있다.
생각해보면 놀랍지 않은가!

정말 놀랍다!!!

---이제서야 깨달은 초보씀.----

익명 사용자의 이미지

그것보다 더 중요한 점은...
결합도를 낮추고, 응집도를 높이는 모듈화를 할 수 있다는 점입니다.
객체지향의 세가지 특징(캡슐,상속,다형)은 이 모듈화에 핵심이 있습니다.
모듈화를 한다는 뜻은 재사용,유지/보수와 관련이 있고요.
즉 객체지향의 진정한 의미는 하드웨어 모듈(칩)처럼 소프트웨어 모듈도 완벽하게
(결합도와 응집도) 만들어 조립식의 프로그램을 가능하게 하자는 것이죠.
궁국적으로는 CBD로 통합니다.
곰곰히 생각해 볼 수록 엄청난 의미가 있는 것이죠...

정호종 wrote..
한때 C++를 무지 싫어했는데..
생각이 바뀐다.

C로 된 거대한 소스화일을 보면,
왜 C++를 써야 하는지 이해가 된다.

C++의 가장 조그마한 장점, 즉,
클래스를 만드는 것만 이용해도,
C코드는 획기적으로 효율적이 될수 있다.

상속이니 템플릿이니 하는 기타 여러가지
장점들은 들먹일 필요도 없다.

예를 들어 a.c와 b.c 에 각각 자료구조가 있다면,
C에서는 각각 함수를 만들어야 할것이다.

struct AA;

a_get();
a_put();
a_insert();

struct BB;

b_get();
b_put();
등등..

이런것이 한두개면 무리가 없겠지만, 만약 수십,수백,수천개의
소스화일로 이루어진 대형프로젝트라면..

이름붙이는것부터 장난이 아니다.

a_put(); b_put(); c_put(); 등등이 난립할것이다.

구조체 이름또한 마찬가지다.

구조체를 외부변수로 정의했기때문에,
우리는 수많은 구조체및 자료구조등의
이름을 기억하고 일일히 염두에 둬야한다.

그러나 클래스 안에 있다면 상황은 달라질것이다.

C++에서는 단지 클래스를 만든것만으로도,
이 많은 단점들을 획기적으로 개선시킬수 있다.
생각해보면 놀랍지 않은가!

정말 놀랍다!!!

---이제서야 깨달은 초보씀.----

익명 사용자의 이미지

옳으신 말씀인데...

클래스 디자인은 힘뎌요.,... 쥘...

열심히 해야지.

익명 사용자의 이미지

그 이유로 C++ 의 위력을 논하는 것은 무리가 있다고 봅니다. 이름 장식을
하기 때문에 C++ 은 다른 언어와 연동하는 게 쉽지 않아졌습니다. 윈도우즈
에서는 g++ 과 vc++ 을 같이 쓰는 게 쉽지 않습니다. 이름 장식 규칙이
서로 다르기 때문이죠. 자바도 native 메소드를 C 와 연동하도록 되어있죠.
virtual 함수의 집합체인 COM 객체나 그와 유사한 형태를 제안해서 사용하면
극복할 수 있을런지 모르지만, 포트란 (77)같이 구조체가 없는 언어는
그것도 할 수가 없습니다.
많은 사람들이 말하는 C++ 의 위력은 C++ 언어 자체의 위력보다는 대부분
객체 지향 기법의 위력을 말한다고 생각합니다. 그 다음, 그 위력을
자기가 능숙한 언어에 알맞게 구현 가능하면 되겠죠. 그래서 C 나 C++ 이나
그 위력을 향유하는 데 별반 차이가 없다고 생각합니다.

익명 사용자의 이미지


C++을 위력을 알기에는 멀고도 먼길....

크~

알고 싶으시면 java를 공부해 보시는 것도 좋을 듯