written by 김시찬 (chanywa), 2004-01-08
modified 2006-06-29
Homepage : http://chanywa.com
Email : chany@chanywa.com
"Turbo C/C++와 Borland C++은 뭐가 다르죠?"
"Borland C++과 Visual C++의 차이점은 뭐예요?"
필자의 메일로, 홈페이지 게시판으로, 그리고 인터넷상의 지식검색이나 프로그래밍 카페 등에서 초보자들이 궁금해하는 것 중에 대표적인 질문이라는 생각이 든다.
하지만 제대로 된 답변보다는 잘못된 정보를 제공하는 것을 너무나 많이 본 탓에 그 동안 벼루다 결국 몇자 적어 본다.
마음같아서는 영어실력을 마음껏 발휘해서 원문을 해석한 문장도 올리려고 하였으나, 괜히 점수만 깎일 것 같아서 참기로 했다 ^^;;; 윗 글의 첫 문장을 보면 대략 읽어보면 알 수 있듯이, 터보씨는 터보사도 아니고 MS사도 아닌, 1987년 볼랜드사에서 출시한 제품이라는 것을 알 수 있다.
Turbo C/C++
지식검색이나 혹은 프로그래밍 관련 사이트를 돌아다니다 보면 Turbo C의 유래에 대한 말들이 참 많다. 뭐 MS사 꺼라는 둥, Turbo사는 Borland사와는 다른 회사라는 둥... 아래는 외국판 PC Magazine에 올라온 글을 인용한 것이다. 앞으로는 근거없이 엉뚱한 정보를 제공하는 사람이 없었으면 좋겠다.
Version 1.5 shipped on five 360KB diskettes of uncompressed files, and came with sample C programs, including a stripped down spreadsheet called mcalc.
Turbo C 2.0 has a debugger, a fast assembler, and an extensive graphics library.
Turbo C has been largely supplanted by Turbo C++, introduced circa September, 1990 for both MS-DOS and Microsoft Windows.
["Compiling the facts on C", Richard Hale Shaw, PC Magazine, September 13, 1998, pages 115-183].
볼랜드사는 1983년에 설립되어서 저가형 소프트웨어와 Turbo계열인 Turbo Pascal, Turbo C, Turbo Prolog 등에 의해서 유명해졌다. 이러한 Turbo계열의 개발툴들은 최초의 통합환경이었음에도 불구하고 저가형이었다.
요즈음은 대부분 공개소프트웨어로 전환되어 있는 상태이며, 크기도 작아 인터넷을 통해서 아주 쉽게 배포가 되고 있다. 그래서 C 언어를 처음 공부할 때에 가장 많이 사용하는 컴파일러 이기도 하다. 물론 국내의 경우에는 특수(?)한 상황 덕분에 그 값비싼 Visual C++로 교육받는 곳도 참 많지만 말이다.
오래전부터 나온 Turbo 계열은 도스용만 있는 것이 아니라, 윈도우용도 있으며 더군다나 공개버전이 많아서 아직까지도 학생층에서는 많이 애용되고 있다.
이 언어의 특징은 국내의 경우 상당수의 C 언어 개발자가 이용하기 때문에 자료나 소스, 자문을 구하기도 쉽다는 점이다. 비싼 가격 덕분에 교육용으로 Trial 버전이 존재하나 실행파일은 만들 수 없다. 물론 많은 사람들이 그 비싼 정품을 어디서 구했는지 잘 쓰고는 있겠지만...;;
윈도우 프로그래밍이 가능하므로 OS에서 제공하는 Win32 API를 사용하긴 한다. 하지만 MS사에서 독자적으로 만든 MFC 라이브러리를 사용한다. 사용하기 불편하고 복잡한 API들을 클래스로 묶어서 나름대로 사용하기 편하게 MFC라는 걸 만들어 제공하는 것이 Visual C++이다.
Visual C++
도스와 윈도우를 만든 Microsoft사에서 나온 대표적인 컴파일러이다. 물론 그 전에는 MS C/C++이 있었으나, Turbo 계열에 밀려서 기를 못폈었다. 그런 후에 윈도우 환경이 많이 보급되면서 Visual C++ 또한 영향력있는 개발툴로 자리잡아와서 현재는 윈도우 프로그래밍의 대표적 언어 및 개발툴이라 할 수 있다.
언뜻보기에 Visual이라는 단어가 이름에 붙어있지만 사실상 원 단어의 뜻과는 거리가 멀다. 제일 처음에 기본 윈도우를 만들때만 비주얼하고 그 이후에는 어쩔 수 없는 노가다의 연속이다.
그래도 옛날 텍스트환경의 MS C보다는 비주얼한 것은 사실이다. ^^;;
C++ Builder
이것은 당연히 볼랜드사 제품이다. Turbo C/C++와 Borland C++를 거쳐 다음 단계로 컴포넌트 위주로 작성되는 RAD Tool이다. 그래서 무척 만들기 쉽다는 장점이 있다. Visual Basic 처럼 마우스로 끌어다 놓기만 해도 프로그램이 가능하기 때문이다. 게다가 윈도우 프로그래밍을 처음하는 사람이라면 Visual C++보다 훨씬 쉽게 접근이 가능하다는 장점이 있다.
하지만 외국에 비해 국내에서는 그다지 사용자층이 많지가 않다. 그래서 문서나 책은 물론 관련 사이트 조차도 그리 많진 않다. 그래도 지금은 아주 많아진 편이다. 내가 처음 접할 때만 해도 국내판 C++ Builder 책은 2권인가 3권이 전부였다. 그것도 구버전 책이라서 할 수 없이 영문 PDF만을 뒤적거렸을 정도니까 말이다.
우수한 소프트웨어 개발 도구를 이용하여 전통적인 개발 방법보다 더 적은 시간과 비용으로 더 좋은 품질의 소프트웨어를 개발하는 방법
개인적으로 써본 느낌으로는 C++이라는 느낌이 크게 와닿진 않았다는 점이다. 물론 C++로 동작을 한다. 코드들도 클래스들로 구성되어진다. 반면에 원하는 부분을 클릭해서 거기에서 동작할 코드 삽입해주고, 아니면 마우스로 끌어다놓아주는 등의 작업을 하다보면 Visual C++ 작업시 클래스를 무척 많이 따져야 했던 것에 비해 엄청 편하게 느껴졌다.
굳이 비교하자면 Visual Basic과 비슷한 느낌이랄까...
C++과 Visual C++은 뭐가 달라요?
예전에 홈페이지에 올라온 질문에 대해 필자가 답변을 달았던 글이다.
부족한 글이긴 하지만, 나름 쉽게 썼다고 생각되는 글이기에 여기에도 적어본다.
일반적으로 C++에 대한 공부를 할때에는 ANSI를 기준으로 하는데,
주로 도스용 혹은 리눅스용 C++ 정도를 배우게 됩니다.
즉, int main(void) 뭐 이런식으로 되어 있는 것 말이죠.
그런데, 윈도우 프로그래밍으로 옮겨오게 되면서 좀 복잡해졌어요.
도스에서는 그냥 printf()하면 될 것도 윈도우에서는 훨씬 복잡한 과정을 거치게 됩니다.
사실 윈도우에서는 문자라는게 존재하는 것이 아니라, 글자 하나하나까지 모두 그림인 셈이거든요. 거기다가 동시에 여러가지 프로그램을 사용할 수 있도록 처리도 해줘야 하고, 그런 것들 때문에 화면 속도가 느리니 가능하면 빠르게 하도록 최적화도 시켜줘야 하구요...
이런 것들을 다 처리하려니까 너무 힘들더라는 거죠. 그래서 윈도우용 함수를 따로 만들었어요. 예를 들면, 새 윈도우를 생성하는 함수, 윈도우를 없애는 함수, 혹은 크게 하거나 작게 하거나, 숨기거나 다시 보여주거나 하는 등... 바로 이런 기능들을 할 수 있는 것들을 Windows API라고 합니다.
그런 후에 막상 매번 개발을 하다보니, 어떤 윈도우 프로그램을 만들더라도 공통적인 부분이 있더라는 거죠. 동작하는 프로그램은 서로 다르지만 윈도우 만드는 기능, 지우는 기능, 숨겼다 보여주는 기능 등등은 어떤 윈도우 프로그램을 만들 때라도 사용하게 됩니다. 게다가 함수들을 사용하기도 까다로워서 힘들었습니다. 입력해줘야 하는 파라메터도 엄청 많고, 한 동작을 하기 위해 호출해줘야 하는 함수가 몇개나 되기도 하구요.
그래서 나온 것이 OWL, MFC 등의 라이브러리 입니다. 좀 더 간결하게 윈도우 프로그램을 작성할 수 있게 만든 거죠. 한마디로 여러가지 클래스, 함수, 변수들을 모아서 별도의 클래스나 함수로 만든 집합체(라이브러리, Library)입니다.
OWL은 볼랜드사에서 만든 것이고, MFC는 MS사에서 만든 것이라는 차이점이 있습니다. 그래서 각각 OWL은 Borland C++, MFC는 Visual C++에 포함되어 있습니다.
그리고 참고로, Visual C++로 작성한다고 꼭 MFC 프로그램만은 아닙니다. Visual C++이란 것은 단지 개발도구일 뿐이고, 거기에서 도스용과 같은 ANSI C나 C++을 작성하실 수도 있고, Windows API 프로그래밍도 하실 수 있습니다.
다른 그래픽 라이브러리를 사용하실 경우엔 OpenGL같은 3차원 그래픽 프로그램, DirectX를 이용한 게임 프로그램 등을 작성하실 수 있는 거죠.
Visual C++을 공부한다는 말은 좀 포괄적인 이야기고, 차라리 C++을 공부한다 혹은 WinAPI를 공부한다 혹은 MFC를 공부한다, 그런데 툴은 Visual C++을 사용한다 혹은 Borland C++을 사용한다 그렇게 말씀하시는게 더 나을 것 같습니다.
간단하게 마무리하며...
글의 첫머리에서 언급했듯이 이것은 초보자들이 가지는 질문에 대한 답글 정도로 보면 되겠다. 어차피 성격이 조금씩 다른 언어들이기에 그것들을 정확한 수치 등으로 비교하기에는 무리가 있을 것이니 고급 사용자들을 위한 정보로는 부족할 수 밖에 없을 것이다.
이 글로써 조그만 궁금증을 해결한 사람이 한명이라도 있다면 그것으로 충분하다. <끝>
'develop' 카테고리의 다른 글
논리적 오류 해결하기 (0) | 2004.05.05 |
---|---|
독학인가, 강습인가 (0) | 2004.04.27 |
for문 날씬하게 사용하자 (2) | 2004.04.19 |
어떤 언어를 선택해야 하나 (2) | 2004.01.08 |
구구단을 무시하지 마라 (0) | 2004.01.06 |
댓글