C++ 편집하기
최신판 | 당신의 편집 | ||
24번째 줄: | 24번째 줄: | ||
== C와의 차이점 == | == C와의 차이점 == | ||
− | C++의 개발이 C언어를 기반으로 이루어졌기 때문에 대부분의 C 프로그램은 C++ [[컴파일러]]에서도 문제없이 컴파일된다. 초기 C++ 컴파일러는 일단 C++ 코드를 C로 변환하고 그걸 C로 컴파일하는 방식을 사용했을 정도였다. 하지만 OOP나 일반화 프로그래밍이란 것은 단순한 문법이 아니라 '''코딩의 패러다임'''을 말한다. 그래서 C++ 방식으로 코딩하려면 해당 코드에서 C++에 새로 도입된 것을 추가하는 것이 아니라 설계부터 시작해 완전히 새로 해야 하는 경우가 많으므로, 초임자 입장에서는 서로 다른 별개의 언어로 보고 접근하는 것이 안전하다. 그래서 C로 프로그래밍에 발을 들여 놓은 후 C++이나 [[ | + | C++의 개발이 C언어를 기반으로 이루어졌기 때문에 대부분의 C 프로그램은 C++ [[컴파일러]]에서도 문제없이 컴파일된다. 초기 C++ 컴파일러는 일단 C++ 코드를 C로 변환하고 그걸 C로 컴파일하는 방식을 사용했을 정도였다. 하지만 OOP나 일반화 프로그래밍이란 것은 단순한 문법이 아니라 '''코딩의 패러다임'''을 말한다. 그래서 C++ 방식으로 코딩하려면 해당 코드에서 C++에 새로 도입된 것을 추가하는 것이 아니라 설계부터 시작해 완전히 새로 해야 하는 경우가 많으므로, 초임자 입장에서는 서로 다른 별개의 언어로 보고 접근하는 것이 안전하다. 그래서 C로 프로그래밍에 발을 들여 놓은 후 C++이나 [[JAVA]]로 업그레이드 테크를 하는 학생들에게 C++ 언어의 프로그래밍을 요구한다면, C에서는 구조체라는 개념이 있더라도 C++의 '''입출력 객체'''를 이용하는 정도를 넘지 못하고 절차적 프로그래밍을 그대로 따라가는 C 스타일의 프로그램이 나오기 일쑤다. 그 이유는 C++의 객체지향이 다른 객체 지향적 언어에 비해 이해하기 만만한 개념이 아닌 데다가 C++의 객체 지향은 C를 유지하면서도 수정된 부분에 신경을 써야한다. 다른 객체 지향 언어보다 더 많은 공부가 필요하다. 사실 C++의 객체 지향이 다른 언어와 비교하였을 때 개념적인 면에서는 많은 차이가 있는 것은 아니나, 실제 다른 언어에서는 무조건 NEW를 통해 힙에 생성해야 하는 객체를 스택에서도 생성하고, 함수 인자 전달 시 여러 규칙이 많아 복잡해 보인다. 큰 맥락을 이해하면 직관적으로 이해되는 부분이지만, 그렇게 되기까진 오랜 시간이 걸린다. <ref name="나무위키">〈[https://namu.wiki/w/C%2B%2B C++]〉, 《나무위키》</ref> |
== 성능 == | == 성능 == |