본문 바로가기

기타잡동산이

c, c++, C#의 개념

<< C >>

1969년의 어느 날 AT&T Bell 연구소의 켄 톰슨(Ken Thompson)은 연구소 한쪽에서 놀고 있는 DEC PDP-7 컴퓨터를 발견하고는 재미있는 생각을 한가지 떠올렸다. 그는 PDP-7에서 컴퓨터 게임을 만들어 동작시켜보고 싶었는데, 그러한 컴퓨터 게임을 탑재해 운용할 수 있는 OS를 만들기로 한 것이다. 그는 OS를 제작하기 시작했고, UNIX를 만들어냈다.

몇 년 후 이렇게 개발된 UNIX를 위해 데니스 리치(Dennis Ritchie)가 C언어를 개발했다. 톰슨에 의해 대부분 어셈블리어로 만들어졌던 UNIX는 C언어로 다시 작성되었다. 초기의 UNIX는 PDP-7에서만 동작했지만 이후 다른 기종의 컴퓨터에서도 사용할 수 있도록 이식되었으며 C언어 역시 UNIX를 따라 다양한 기종의 컴퓨터에 이식되었다.

C언어라는 이름은 어떻게 붙여졌을까? 톰슨은 UNIX를 만든 다음 해에 B언어라는 프로그래밍 언어를 개발했었다. B언어는 BCPL(Basic Combined Programming Language)언어의 많은 개념들을 계승했는데, BCPL의 앞 이니셜을 따서 "B"라고 명명되었다. 리치는 C언어의 설계에 관한 주요 개념중 상당부분을 바로 B언어로부터 가져왔고, B언어를 계승한다는 의미로 그가 만들어낸 새로운 언어에 "C"라는 이름을 붙인 것이다.

<< C++ >>

C++는 AT&T Bell 연구소의 비얀 스트로스트럽(Bjarne Stroustroup)에 의해 1980년에 개발되었다. 그 때는 C++라는 이름 대신 "C with Classes"라고 불려졌는데, 정식으로 C++라는 이름을 얻게 된 것은 그로부터 몇 년이 지난 1983년 부터였다.

C++는 C언어를 확장한다는 의미에서 명명된 것이다.

스트로스트럽 교수가 C++를 고안할 당시 C언어는 시스템 내부를 다룰 수 있는 저수준(low-level) 언어이고, CPU가 달려있는 컴퓨터라면 어디서든 사용할 수 있었으며, 이미 상당한 수준의 라이브러리 함수들을 갖추고 있었다. 무엇보다 많은 프로그래머들이 C를 사용하고 있었다. C++는 이러한 장점을 가진 C언어를 기반으로 보다 쉽고 효율적으로 프로그램을 작성할 수 있도록 새롭게 만들어졌다.

<< C# >>

윈도우 95 초기 버전이 출시된 1995년 윈도우에는 인터넷 기능이 포함되어 있지 않았습니다. 그 때만 해도 마이크로소프트(이하 MS)는 인터넷의 잠재성을 깨닫지 못하고 있었습니다. 얼마 후 인터넷의 폭발적인 성장과 더불어 넷스케이프 웹브라우저, 자바 애플릿, 자바 스크립트 등의 인터넷 관련 기술이 등장해 시장을 급속하게 넓혀갈 때 MS는 부랴부랴 익스플로러와 비주얼 베이직을 변형한 비주얼 베이직 스크립트를 개발했습니다.

당시 인터넷 관련된 핵심 이슈는 자바라는 네트워크 언어였습니다. 인터넷 개발에 늦게 발을 들여 놓은 MS는 선마이크로시스템즈(이하 SUN)가 개발한 자바를 임의로 변형해 익스플로러에 탑재했습니다. 또한 윈도우 개발 환경인 비주얼 스튜디오에도 자바 기술을 포함시켰습니다. 자바의 폭발적인 인기에도 불구하고 당시에는 변변한 자바 개발 툴이 없었는데 MS에서 비주얼 J++라는 강력한 자바 개발툴을 개발해 시장에 무료로 공급하기 시작했습니다. 실제 자바를 개발한 SUN은 MS의 이러한 자바 개발 정책을 지켜보고 자바 언어의 기득권을 빼앗길 수 있다는 위기의식을 느끼게 되었고, 곧 법정 소송을 진행해 더 이상 MS가 자바를 변형해 사용할 수 없다록 제동을 걸었습니다. 이후 MS는 자바 관련 프로그램을 개발할 수 없게 되었습니다. 특히 자바 개발 툴인 비주얼 J++는 프로그램 관련 책자까지 모두 회수하라는 법원의 판결이 떨어졌습니다.

아이러니하게도 자바를 오늘날 가장 많이 사용하는 네트워크 언어로 만든 주역인 MS는 더 이상 자바 관련 기술을 사용할 수 없게 된 것입니다. 하지만 이미 시대의 대세는 인터넷을 기반으로 하는 분산 네트워크 기술로 옮겨가고 있었습니다. 특히 그 핵심 기술로 자바가 확고한 위치를 차지하고 있었으며 IBM, 오라클, BEA 등 대형 IT업체에서 자바를 중심으로 이러한 분산 네트워크 기술을 구현하기 시작했습니다. 이러한 상황을 타개하기 위해 MS에서 발표한 기술이 바로 .NET(이하 닷넷)입니다.

닷넷을 짧게 요약하면, "애플리케이션, 서비스가 유기적으로 통합되기 위한 MS의 제품군과 기술 환경 및 서비스"라고 말할 수 있습니다. 즉, 자바 기술에 대응하기 위한 MS의 새로운 차세대 인터넷 환경이 바로 닷넷입니다. 닷넷은 자바가 제공하는 라이브러리인 JDK와 비슷한 라이브러리의 집합이며, 이 라이브러리를 가장 효율적으로 사용해 개발할 수 있는 언어로 C#언어를 새롭게 만들어 발표했습니다. C#은 MS의 자바 대응 전략의 핵심언어입니다. C#은 자바와 비슷한 용도로 사용되며 MS의 핵심 언어인 비주얼 베이직의 생산성과 비주얼 C++의 성능을 결합한 새로운 차세대 주력 언어입니다.