회원가입을 하면 원하는 문장을
저장할 수 있어요!
다음
회원가입을 하면 원하는 문장을
저장할 수 있어요!
다음
요즘에는 선택할 수 있는 프로그래밍 언어가 아주 많기 때문에 실제 개발 프로젝트를 진행해야 하는 경우, 어떤 언어를 선택해야 할지 고민하는 사람들이 많습니다. 어떤 언어는 한 번 선택하고 나면 다른 언어로 바꾸는 것이 너무나도 어려운 경우가 있기 때문에, 주의를 기울여서 개발 언어를 골라야만 합니다. 이번 시간에는 여러분이 올바른 결정을 하는 데에 도움이 될 수 있도록, 일반적으로 많이 사용되는 언어인 C#과 C++을 알려드리겠습니다.
C++과 C#은 모두 객체지향 프로그래밍(OOP) 언어입니다. 참고로 둘 중에서는 C++이 더 사용하기 어렵다는 평가가 많습니다. 두 언어 모두 데스크톱 애플리케이션은 물론 웹 애플리케이션에서도 사용될 수 있지만, 현재는 양쪽 모두에서 C#이 훨씬 더 많이 쓰이고 있습니다. C++은 게임이나 운영체제, 그리고 PC나 서버에 있는 하드웨어를 제어하는데 필요한 아주 기초적인 수준의 프로그래밍에서 많이 사용되며, 그렇기 때문에 더 권위 있는 언어로 인식되고 있습니다.
만약에 여러분이 만들고자 하는 것이 웹이나 데스크톱에서 실행되는 간단한 애플리케이션이고, 개발자들이 직접 언어를 선택할 수 있는 권한이 주어진다면, 그들은 대부분 여러분에게 C#을 선택하라고 추천할 것입니다. 컴퓨터의 하드웨어를 직접 제어해야 한다거나 C#을 이용하는 것이 효율적이지 않은 애플리케이션을 개발해야 한다면, 개발자들은 여러분에게 C++을 추천할 가능성이 높습니다.
◆ 객체지향
: 문법이 조금 다르긴 하지만 클래스(class), 상속(inheritance), 다형성(polymorphism)이라는 개념은 같습니다.
◆ 컴파일 언어
: 인터프리터(interpreter) 방식인 자바와는 다르게 C#과 C++은 컴파일(Compile)을 해야 하는 언어입니다. 즉, 애플리케이션을 PC나 서버에서 실행하기 위해서는 (인간의 언어와 비슷하게 작성한) 코드를 컴파일 해서, 컴퓨터가 이해할 수 있는 바이너리(binary) 코드로 바꿔줘야 한다는 뜻입니다. C++이나 C#으로 작성된 이후에 컴파일 과정을 거친 대표적인 예는, 여러분이 컴퓨터에서 실행할 수 있는 '.exe' 확장자를 가진 파일들이 있습니다.
◆ 바이너리(binary)의 크기
: 앞에서도 언급했듯이, 두 개의 언어는 코딩한 내용을 컴파일 해서 바이너리 파일로 바꿔야 합니다. C#에는 컴파일을 하면서 수많은 오버헤드와 라이브러리가 함께 포함됩니다. 그에 비해 C++은 훨씬 더 가볍습니다. 그래서 컴파일을 하고 나면, C++에 비해서 C#으로 작성된 바이너리의 크기가 훨씬 더 커지게 됩니다.
◆ 성능
: C++은 고급 언어들이 효율적이지 않은 경우에 많이 사용됩니다. C++의 코드는 C#의 코드보다 훨씬 빠르기 때문에, 성능이 중요한 애플리케이션인 경우에는 C++을 사용하는 것이 더 좋습니다. 예를 들어서 네트워크 분석 소프트웨어의 경우에는 C++ 코드로 작성되는 것이 훨씬 좋은 반면에 일반적인 워드 프로세서와 같은 애플리케이션은 C#으로 작성된다고 하더라도 성능에서는 그다지 문제가 발생하지 않습니다.
◆ 가비지 컬렉션(Garbage collection)
: 가비지 컬렉션이란 시스템에서 낭비되는 메모리 자원을 회수하는 작업입니다. C#을 사용한다면 가비지 컬렉션을 크게 신경 쓰지 않아도 됩니다. C++을 사용한다면, 자동적으로 가비지 컬렉션이 수행되지 않기 때문에, 여러분의 객체가 사용하는 메모리를 직접 할당하고 해제해 주어야 합니다.
◆ 타깃 플랫폼
: 마이크로소프트가 C# 프로그램을 다른 플랫폼에서도 사용할 수 있게 하기 위해서 노력하고 있기는 하지만, C#으로 만든 프로그램들은 주로 윈도우(Window) 운영체제를 겨냥해서 만들어집니다. 반면에 C++을 사용하면, 맥, 윈도우, 그리고 리눅스(Linux) 등 어떤 플랫폼에서도 구동할 수 있게 프로그램을 코딩할 수 있습니다.
◆ 프로젝트의 유형
: C++ 프로그래머들은 주로 하드웨어를 직접 제어하는 애플리케이션이나 다른 언어를 사용할 때보다 더 뛰어난 성능이 필요한 어플리케이션 작업을 많이 합니다. C++ 프로그램들은 서버 애플리케이션, 네트워킹, 게임, 그리고 여러분의 PC에 있는 장치 드라이버에서도 사용되고 있습니다. C#은 일반적으로 웹, 모바일, 데스크톱 애플리케이션에서 사용됩니다.
◆ 컴파일러 경고
: C++에서는 문법적으로 틀리지만 않는다면 거의 모든 작업을 수행할 수 있습니다. 그래서 유연성을 가진 언어이긴 하지만, 컴퓨터에서 실제로 피해를 일으킬 수도 있습니다. C#은 훨씬 더 보호체계를 잘 갖추고 있어서, C++에서라면 허용될 수도 있는 심각한 에러들을 허용하지 않고, 컴파일러가 에러를 표시해서 경고를 해줍니다.
C++은 플랫폼이나 지향하는 애플리케이션이라는 면에서 보자면 활용할 수 있는 분야가 더 많기는 하지만, 개발자들의 수가 많지는 않은 편입니다. 웹이나 모바일 애플리케이션을 제작하는 용도로는 잘 사용되지 않기 때문입니다. 여러분의 프로젝트가 아주 기초적인 수준의 프로세스를 처리해야 한다면, 여러분은 C++ 개발자가 필요할 것입니다. 그리고 속도와 성능이 중요한 서버용 소프트웨어를 개발할 때도 C++을 사용할 수 있습니다. 결론적으로 말해서, C#보다는 C++이 훨씬 더 많은 곳에서 사용할 수 있기는 하지만, C++을 사용하는 것이 언제나 비용 대비 효율적인 방법은 아닙니다.
여러분의 프로젝트에서 사용하기 위한 언어를 선택할 때, 가장 좋은 방법은 여러분이 계획하고 있는 프로젝트를 사전에 알린 후에, 개발자들로부터 직접 의견을 들어보는 것입니다. 각각의 장단점을 잘 알고 있는 개발자들은 경험을 바탕으로 조언해줄 수 있습니다. 그렇게 얻은 정보들은 여러분의 프로젝트에 적합한 것이 어떤 것인지를 결정하는데 큰 도움을 줄 것입니다.
> 이 글은 'C# vs. C++: Which Language is Right for Your Software Project?'을 각색하여 제작되었습니다.