-
자바와 C언어, 어떤 것을 선택해야?IT topics 2007. 7. 26. 12:00반응형내가 회사에서 메인으로 사용하고 있는 컴퓨터 언어는 C언어다. 가끔 C++을 사용하기도 하고 윈도 프로그래밍을 할려면 MFC나 Win32 API를 이용한 프로그래밍도 한다. 그렇다 하더라도 내 메인 컴퓨터 언어는 C언어다. 이게 내 밥줄이며 내 기술이다. 이것 덕분에 지금까지 그나마 회사에서 잘 써먹고 있는 것이라 생각이 든다.
요즘들어 웹2.0에 관심이 많아져서 관련 글들도 블로그에 쓰고 관련 자료들도 인터넷을 통해서 이리저리 찾아보기도 하고 포럼이나 세미나에도 가끔 참석해서 주변 지식을 넓히고 있는 상황이다. 그런데 계속적으로 웹2.0에 대해서 공부하면서 느끼는 점은 지금 내가 하고있는 일과는 전혀 매치가 안되고 있다는 것이다.
웹2.0은 말 그대로 웹이다. 인터넷의 한 종류인 웹은 이제는 아예 인터넷을 대표하는 기술이 되어버렸다. 그만큼 웹이 크게 성장했다는 뜻이다. 이 웹이라는 녀석을 다루다보면 자주 등장하는 것이 웹 페이지, 웹 사이트며 이 웹 사이트를 구성하고 있는 웹 언어들이 존재한다. HTML이라 불리는 웹 페이지 문서 언어와 ASP, PHP, JSP라 불리는 웹 스크립트 언어가 그것이다. 그리고 요즘은 웹2.0이 뜨면서 XML과 AJAX가 웹 언어의 대세를 이끌고 있다고 본다.
그리고 웹2.0의 중심에는 Java(자바)라는 언어가 있다. 이 자바는 1990년대 중반에 선마이크로시스템(이하 Sun)에서 만든 오브젝트 중심의 언어(이하 OOP)다. C++이라는 OOP의 연장선상에 있다고 봐도 좋을 것이다. JVM이라 불리는 자바 가상 머신 위에서 동작을 하며 어떤 플랫폼(OS, Computer 모두)에서도 JVM만 있으면 다 돌아가겠끔 만든 것이 바로 자바다. 지금으로부터 대략 10여년전에 만들어진 언어니 10년정도의 역사를 지니고 있다고 본다.
자바는 2000년대초에 한번 크게 붐을 이뤘다. 닷컴 열풍이 몰아친 그 때에 자바 애플릿과 자바스크립트라 불리는 자바 언어(솔직히 애플릿은 자바라고 말하기 좀 그렇다고 생각한다. 그래도 구성 자체는 자바로 되어있으니 자바의 한 종류라고 하자)가 웹 페이지의 디자인 부분을 맡으면서 자바를 이용한 많은 웹 서비스 프로젝트들이 붐을 이뤘다. 그래서 한때 확 떴다가 2002년 이후로 좀 세력이 떨어진다. 닷컴버블이 사라진 이후 웹에 대한 환상이 깨지고 그와 동시에 자바에 대한 환상도 깨진 것이다. 그래서 풀죽어있는채로 있다가 2004년 하반기부터 다시 자바가 뜨기 시작했다. 그것은 MS가 C#이라는 자바와 비슷한 성질의 언어를 발표했을 때와 비슷하다. MS는 .NET이라는 자바의 JVM과 비슷한 플랫폼을 만들고 그 위에 C#이라는 언어를 사용해서 어떤 플랫폼에서도 사용할 수 있는 언어를 발표했다(그렇다 치더라도 MS OS군에서만 돌아가는 C#은 자바에 비할바가 못된다). 그때와 동시에 자바도 다시 부활했다고 본다.
웹2.0이 붐을타고 일어나서 전세계를 강타했고 그 중심에는 XML과 더불어 AJAX라는 기술이 있었다. AJAX는 Asynchronous JavaScript and XML의 약자로 비동기형 자바스크립트와 XML이라는 뜻인데(그냥 직역이다) 역시 자바로 구성되어있는 것이 특징이다. AJAX의 확산으로 인해 자바는 다시 부활하게 된다. 즉, 내가 요즘 관심을 갖고있는 웹2.0의 중심에는 자바가 있었다는 얘기다. XML도 자바와는 잘 붙는다고 한다.
왜 이런 이야기를 하는가 하면, 내가 사용하고 있는 C, C++ 언어는 말 그대로 시스템 언어들이다. C언어는 서버 프로그래밍을 할때나 아니면 임베디드 프로그래밍(휴대폰이나 PMP, PDA 등의 기기의 펌웨어 프로그래밍 등)에서 많이 쓰이고 있다. C언어가 고급 언어이면서도 어셈블러와 같은 저급 언어의 성질도 같이 갖고 있어서 임베디드 프로그래밍을 할 때 유리하기 때문이다. 서버 프로그래밍도 마찬가지다. C++과 같은 OOP 계열 언어를 쓰면 아무래도 퍼포먼스에 있어서 좀 떨어지기 때문에 C언어를 많이 쓴다. 그러나 C, C++로는 웹2.0 시대에서 제대로 밥 벌어먹기 힘들다는 얘기를 많이 듣는다. C, C++언어는 웹 언어가 아닌 철저하기 플랫폼에 의존적인 언어이기 때문이다. 그 얘기는 윈도에서만 돌아가는 프로그램이라던지, Linux에서만 돌아가는 프로그램이라던지, 이런식으로 OS에 철저하게 의존적인 프로그램만 만들 수 있다는 얘기다. 여러 플랫폼에서 돌아가게 할려면 각 플랫폼 별로 컴파일을 새로 해야하는 불편함이 있다. 웹 언어들은 플랫폼에 상관없이 웹 브라우저만 존재하면 어디서든 구동되는 프로그램을 만들 수 있다. 웹 사이트가 그 대표적인 예다. 물론 ActiveX 등의 기술을 사용하면 윈도에 Internet Explorer에서만 돌아가겠지만 그런거 안쓰고 순수하게 웹 스크립트 언어를 사용하면 어떤 플랫폼에도 관계없이 구동되는 웹 프로그램을 만들 수 있다. 그리고 나는 그 중심에 자바가 있다는 사실을 깨달았다.
요즘 자바 프로그래머들을 많이 찾고 있다. 한때 자바가 선풍적으로 인기가 있었을 때 자바 프로그래머들이 많았는데 닷컴버블 이후 자바의 인기가 뚝 떨어지자 자바 프로그래머가 많이 윈도 프로그래머로 돌아섰다. 그 얘기인즉 자바 대신에 MFC, WIn32 API등의 윈도 프로그래밍을 선택했다는 얘기다. 혹은 웹 프로그래머로 돌아섰다. 진정한 자바 엔지니어가 아닌 그저 자바 스크립트 정도만 만들 수 있는, 애플릿 정도만 만들 수 있는 그런 수준의 프로그래머로 돌아간 것이다. 물론 자바 스크립트나 자바 애플릿을 만드는 것이 하찮은 일은 아니다. 그것도 나름대로의 영역을 가지고 있으며 웹 사이트에 있어서 중요한 요소라고 생각한다. 하지만 좀더 깊은 수준까지는 못가는 것이 안타까울 뿐이다. 자바 프로그래머들은 자바 애플릿이나 자바 스크립트를 만들 수는 있지만 자바 애플릿이나 자바 스크립트만을 만들 수 있는 웹 프로그래머는 자바를 이용한 다른 응용 프로그램을 만들 수는 없다. 그래서 지금에 와서 자바 프로그래머들을 많이 찾는데 그러한 자바 프로그래머가 많이 부족한 상태다. 그만큼 단가도 많이 올라갔다.
내가 이 글을 쓰는 이유 중 하나는 내가 처음부터 C를 선택하지 않고 자바를 선택했으면 지금의 이 길이 아닌 어쩌면 웹2.0의 중심에 있었을지도 모른다는 생각과 지금보다는 좀 더 나은 생활을 하고있지 않을까 하는 생각이 들었기 때문이다. 나는 메인이 C, C++이기 때문에 내가 선택할 수 있는 직업의 범위가 제약이 있다고 본다. 자바도 물론 그렇다. 하지만 자바는 C, C++보다는 그 선택의 폭이 더 넓다. 그리고 좀 더 비싼 가격으로 채택될 수 있다는 점이 나를 가슴 아프게 한다.
물론 C, C++을 이용해서 시스템 프로그래밍을 하는 것과 요즘 인기를 끌고 있는 임베디드 프로그래밍을 하는 것도 매력있고 재미난 일이다. 하지만 시스템 프로그래밍과 임베디드 프로그래밍은 그 수효가 적다. 응용 프로그램쪽이 더 많은 사람을 필요로 하기 때문이다. 희귀성은 있을지 몰라도 다양성이 없는 것이 아쉽다. 윈도 프로그래밍도 마찬가지라 본다. 요즘 모든 엔터프라이즈 서비스들이 응용 프로그램 분야에서 웹 프로그램으로 돌아가고 있고 그 중심에는 자바가 있다는 것이 나를 갈등하게 만든다.
현재 회사에 자바 책을 갖다놓고 조금씩은 보고있다. 예전에 잠깐 공부한 적도 있고 그래도 C, C++을 다룬지가 벌써 10년정도 되었기 때문에 자바를 습득하는 것은 그다지 어렵지 않다고 본다. 다만 아쉬운 점은 자바로 프로젝트를 한 경험이 전무한 나로서는 실전에서 자바를 제대로 잘 쓸수가 있을까 하는 두려움을 갖는 것이다. 친구녀석이 일단 소규모 프로젝트를 같이 진행해보자고 해서 나름 생각하고 있다.
지금에서 주종목을 바꾼다고 해도 의미는 없을 것이다. 그래도 무기를 하나 갖고 있을 필요는 있다고 생각한다. C와 C++을 이용해서 언제까지나 계속 프로그래밍을 하기에는 한국이라는 시장은 너무 많은 것을 요구하기 때문이다. 열심히 노력하는 수 밖에 없다는 생각이 든다.
ps) 오래전에 쓴 글인데 스프링노트에 저장해뒀다가 이제야 마무리한다. 그런데 그때 생각했던 내용과는 좀 틀리게 쓰인거 같다. 전체적으로 다시 정리할 필요가 있을 듯.
ps2) 그렇다고 해서 내가 C나 C++을 폄하하는 것은 아니다. 지금 내가 사용하고 있는 주요 언어가 바로 C고 C++이다. 리눅스에서건 윈도에서건 말이다. 다만 자바도 C나 C++처럼 잘 다뤘으면 하는 생각에서 써봤다.반응형댓글