C++은 객체지향형 언어라고 한다.
보통 "Class"라고 부르는 C++의 자료형 때문이다.
C++에서는 함수와 변수를 묶어서 Class로 표현한다.
덕분에, 특정 동작을 하는 모듈을 상속을 통해, 쉽게 설계할 수 있고,
강력한 추상화를 지원한다.
추상화를 통해, C언어에서는 만들기 어려웠던 것들도, C++에서는 쉽게 구현이 가능해지는것도 있다.
어쨌든 C++은 C언어보다는 진보된 언어이다.
그러나, 장점이 많지만, 단점도 존재한다.
바로, 속도가 느려진것이다.
C언어에서는 클래스포인터등을 사용하지 않고, 주로 전역변수등을 통해, 쉽게 속도향상이 가능했다.
그러나, 전역변수를 많이 사용할 수록, 복잡한 프로그램은 작성이 어려워진다.
유지보수 또한 매우 어려워진다.
C언어에서도 구조체를 통해, 상속을 구현할 수 도 있다.
원리는 C++와 동일하다.
단, C에서는 클래스포인터를 따로 처리해주지 않으므로, 동일한 동작을 하는 코드를 작성했을때는, C++로 작성한 프로그램이 더 빠르다.(컴파일러가 지원해주지 않으니)
장점이 있다면, 단점도 있다.
Class의 멤버함수, 변수를 참조, 호출하기위해서는 this라고 하는 클래스 포인터가 필요하며, this 포인터 참조를 한번은 더 해야한다.
가끔 호출하는 멤버함수나 변수는 성능에 문제가 없으나, 매우 자주 호출되는 기능을 멤버함수나 변수로 만들경우, 엄청나게 느려질 수 도 있다.
컴퓨터가 발전함에따라, 메모리양이 늘어나고, 속도도 빨라져, C++로 작성해도, 큰 불편함은 없었다.
아니, 사실은 잘 못느낄 뿐이었다.
C++로 작성한 프로그램을 사용하다가, C로 작성된 프로그램을 사용하면, 매우 빨리, 매우 부드럽게, 잘 동작하는것을 느낄 수 있다. 물론, 기능은 떨어진다.
하지만 그만큼의 가치가 있는지 묻고 싶다.(대부분 어쩔 수 없다.)
C++언어는 상속이라는 과정을 통해, 어떤 기능을 호출하면, 마치 양파을 까듯이, 하나 하나 호출하는 방식으로 동작한다.
그러니 당연히 느릴 수 밖에 없다.
C언어로도 C++처럼 동일한 방식으로 작성한다면, 동일하거나, 더 느리다.
그러나, C언어는 위에서도 설명했지만, 비교적 간단한 기능을 프로그램하며, 사람이 직접 전역변수등을 통해, 직/간접적으로 최적화를 시킨다.
그러므로, 속도는 매우 빠르다.
C언어의 단점은 위와 같은 방식으로 전역변수를 많이 사용할 경우, 규모가 큰 프로그램은 작성이 어려워진다.
또한 스파게티 코드라고 부르는 디버깅이 난해한 프로그램이 자주 탄생한다.
규모가 큰 프로그램은 C++로 작성하는것이 좋고, 소규모의 간단하고, 속도가 필요한 프로그램은 전역변수를 많이 사용하는 C언어처럼 작성하는것이 좋다.
C++언어로도 C코드를 만들 수 있다. 당연한 소리.
C++언어로 C와 똑같은 방식으로 프로그램이 가능하다.
어쨌든, 최신 컴퓨터를 사용하는 사람은 잘 못느끼지만, 10년전 20년전 컴퓨터를 사용하는 사람도 많다.
오래된 컴퓨터를 사용하는 사람들에게는 C++언어로 작성된 프로그램은 느릴 수 밖에 없다.
윈도우 운영체제도 내부적으로 C함수로 작성되던 것이, 이제는 점점 C++클래스로 바뀌고 있다.
덕분에 윈도우 업그레이드를 할 수록, 전체적으로 무거워진다.
최신 윈도우에 불필요한(?)기능이 많기도 하지만, C++ 언어의 클래스 때문에 느려지는것 한몫한다.
윈도우XP를 사용하던 컴퓨터에 윈도우7을 설치하니, 너무 느려서, 답답하다.
똑같은 프로그램을 실행하는데도 말이다.
대부분의 사용자들은 최신 컴퓨터에, 최신 기술을 선호한다.
그러나, 최신 기술들은 대부분, 속도면에서 더 느려진다.
동일한 작업을 하는데 있어, 필요이상의 고급 하드웨어와 많은 프로그램 코드를 사용하고 있지는 않은지?
그래도, 최신 컴퓨터와, 최신 운영체제와, 최신 프로그램을 선호하는 사람이 더 많은것은, 어쩔 수 없는 인간의 특성인듯 싶다.
"짜증나면, 컴퓨터를 바꿔라"....???
어쨌든, 이런 특성을 지닌 인간이 설계한 기계는, 가격을 낮추거나, 규모를 축소하는데, 많은 어려움이 있다.
대부분의 개발자들은 컴퓨터의 운영체제가 지원해주는 편리한 기능들을 마구(?) 가져다 사용한다.
그리고나서, 최소 사양을 결정지을때는, 동작하기도 어려운 버벅임을 해결하는데, 고생도 한다.
때로는 아예 실행이 안되는 경우도 있다.
인터넷 뱅킹을 하는데, 여러가지 설치프로그램들이 덕지덕지 설치해야한다.
윈도우XP라면, 서비스펙2이상을 설치해야하고, .Net프레임워크, XML 등도 설치해야한다.
설치가 안되면, 아예 동작이 안된다.
물론 윈도우7에서는 기본적으로 설치가 되어 있다.
사람들은 현재의 편리함을 위해, 약간의 성능 희생하고, 점점 느려지는 컴퓨터를 원망하기도 한다.
물론, 컴퓨터가 느려지는것이, C에서 C++로 바뀌었기때문만은 아니다.
그러나, 상당 부분 영향이 있는것은 사실이다.
하드웨어는 점점 빨라졌지만, 소프트웨어는 오히려 점점 느려졌다.
요약 : 컴퓨터가 점점 느려지는 원인중에 하나는 C++ Class의 영향도 무시할 수 없다.