아까 낮에도 본 글인데... 코멘트를 할까말까 하다가, 방금 몇자(?) 적었습니다.
그대로 옮기겠습니다.
반박글 달리는 게 귀찮아서 넘 조심스럽게 쓴 거 같기도 하고... 쩝~
p.s.
글 쓰고 보니.. 앗!!!
전 고수도 아닌데 감히 리플을 달았네용... ^^;;
----------------------------------------------------------------
여전한 C++ 프로그래머의 입장에서 바라본 자바
이 름: 박지훈.임프
직 업: Software/Hardware
작성날: 2002년 01월 16일 02시 54분
저는 C++ 프로그래머입니다. C부터 시작하면 10년 좀 넘게 썼습니다.
자바는 곁에서는 많이 바라봤습니다만,
(집사람이 경력이 좀 되는 자바 프로그래머라서 많이 훔쳐봅니다)
업무에 도입할 멋진 기회가 없어서 아직 C++만 사용합니다.
개발툴로서는 C++Builder를 선호하구요.
아래 어떤 분은 C++의 비생산적인 면 때문에 자바가 대세라는 식으로
말씀을 하셨는데.. C++Builder는 자바 못지않게, 또 어떤 부분에서는
자바 이상으로 생산성이 높은 C++ 컴파일러입니다. 또 커버하는 영역
에 있어서도 자바보다 넓으면 넓었지 좁진 않습니다.
아.. 그냥 코멘트니까 별 신경쓰실 필욘 없겠습니다.
(가끔 C++Builder가 순수 C++이 아니라고 주장하시는 분이 있어서
짚고 넘어가는데... C++Builder는 판매되는 C++ 컴파일러중 ANSI/ISO
스펙을 가장 잘 지키는 컴파일러로 인정된 컴파일러입니다.)
또 어떤 분은, 자바로 가는 것이 흐름이기 때문에 자바만 하는 것이
당연하다고 하셨습니다. 엄밀히 말하면, 반만 맞는 말입니다.
어떤 관점에서 바라본 대세이냐가 문제입니다.
닷넷까지 포함해서 자바의 흐름은 일정 기간내에 가장 빠르게 성장하는
부문이라는 면에서는 대세라고 할 수 있습니다.
중요한 것은, 개발에 있어 새로운 컨셉이 나타난다고 해서 기존의
시장이 위축되거나 더욱이 사라지지는 않는다는 것입니다.
자바가 등장하기 전에 C/C++로 개발을 해오던 대부분의 개발 시장은
아직도 그대로 C/C++을 사용해서 개발하고 있습니다.
물론 기존의 C/C++ 시장의 어느정도는 자바, 혹은 앞으로 닷넷으로
이탈해나갈 수 있습니다. 하지만 남아있는 시장의 규모도 그대로 성장
합니다.
자바와 닷넷이 대세라는 여론(?)때문에 새롭게 프로그래밍을 공부하기
시작하는 학생들의 대부분, 그리고 기존의 C/C++ 개발자 중 상당수가
그 흐름을 쫓아가고 있습니다. 덕분에 이제 C/C++ 개발자는 상당히
부족한 상황이 되어 있습니다.
인력시장을 잘 보시면, 자바쪽 엔지니어는 구인하는 업체마다 금방금방
충원이 되어나가지만 C/C++ 인력을 구하는 업체는 상당히 오랜기간
구인광고가 걸려있음을 자주 보게 됩니다.
대세라는 말은 상황에 따라 거짓일 수도 있습니다.
현재 자바 프로그래머는, 털어놓고 말해서 서울시내만해도 수없이 많은
교육기관에서 대량생산을 하고 있는 상황이 아닙니까.
자바가 지금까지도 상당히 급격히 성장하는 시장이라는 것은 틀림
없지만, 우리나라의 현실을 보면 양산되는 자바 프로그래머의 숫자가
몇배, 몇십배로 더 많습니다. 취업을 위한 대세를 생각한다면 오히려
C/C++이 대세일 수도 있겠습니다.
쓸데없는 이야기를 했나요.
그럼 조금 본론으로 접근해서..
자바를 옹호하는 많은 분들이 무시하신 것 같습니다만, 저는 김종원님의
다음과 같은 말에 주목합니다.
"필자는 자바 가상기계를 만들었을 정도로 자바 자체에 대해서 관심도 높고 좋은 언어라고 생각한다"
적어도 김종원님이 자바에 대해 잘 몰라서 그런 몰상식한 말을 한다..
는 말을 들을 정도는 아니겠구요. 그리고...
당연한 것이지만, JVM을 자바로 만들지는 않습니다.
C/C++과 어셈블리로 만들지요. JVM은 논리적으로 하드웨어 시스템에
OS를 더한 것이니 당연히 시스템 프로그래머의 입장이십니다.
결국 김종원님은 자바를 아주 잘 아시기는 하지만 역시 C/C++ 프로그
래머의 입장에서 자바를 바라본 것은 맞는 것 같습니다.
이런 입장이라면.. 제 시각이 김종원님과 거의 일치할 것 같습니다.
변호하려는 생각보다는, 김종원님의 설명이 불충분한 부분에 대해
제가 감히 몇줄 정도는 부연을 할 수 있을 것 같다는 생각이 들어서입
니다. 김종원님이 지적하시는 자바의 약점은 단순히 시스템 접근성의
부족은 아닌 것으로 생각합니다.
C/C++ 이 아무리 범용화되었다고 하더라도 태생이 분명 시스템 프로
그래밍 언어입니다. 시스템 프로그래머의 입장에서는, 각 라인들, 각
키워드들이 어떻게 시스템에서 해석되고 얼마만큼의 CPU 클럭을 먹게
될 것인지, 그리고 각 장치들에 어느정도의 로드를 주게 될 것인지를
염두에 두어야 합니다.
C/C++의 언어 스펙 곳곳에 이런 기본적인 목표에 대한 설계가 묻어있
습니다. C/C++이 몸에 익혀진 프로그래머의 입장에서는 자연히 별로
필요가 없는 부분에서조차 성능이 절대로 무시할 수 없는 중요한 목표
중 하나가 됩니다.
그런 C/C++ 프로그래머의 관점에서는, 물리적인 시스템과 OS를 거의
완전히 투명하게 만들어버리는 자바는 시스템을 무시하는 언어라고
보이게 됩니다.
물론 자바에서도 코드 레벨 최적화가 가능하고, 그 최적화의 가능성
정도가 C/C++ 못지않을 수 있습니다. 그런데 그 코드레벨 최적화의
가능성과 선택의 정도는 JVM의 구현에 따라 절대적으로 영향을 받게
되지 않습니까. 그래서 자바의 코드 최적화에 관련된 데이터의 소스는
대부분 JVM 벤더.. 특히 썬이 주류를 이루게 됩니다.
물론 JVM의 내부를 어느정도라도 이해하는 개발자는 독자적으로 가설
을 세우고 테스트를 해봄으로써 새로운 최적화의 방법을 찾아낼 수
있습니다.
제가 느끼기에는, 김종원님이 말씀하신 "자바만 아는 프로그래머"가
아닌 프로그래머, 즉 시스템을 이해하는 자바 개발자가 바로 위의
새로운 최적화 솔루션을 찾아낼 수 있는 개발자라고 생각합니다.
그 시스템을 이해하는 방법이 반드시 C/C++이어야 할 필요는 없겠지만
상당히 밀접한 관계가 있을 것은 당연하겠구요.
물론 김종원님의 의견은 웹 및 엔터프라이즈 프로젝트에서는 상당히
무색한 면도 있겠습니다. 웹 개발은 프로그래밍 로직이 아주 단순하기
때문에 기타 다른 영역에 비해 로우레벨 최적화가 아주 쉽습니다.
또한 일반적인 코딩 패턴 외에 특수한 작업을 할 경우가 드물기 때문에
미리 제시된 최적화의 방법외에 다른 솔루션을 찾아야 할 경우도 드뭅니다.
그래서 웹에 최적화되어 있는 언어인 자바에서 웹 작업만을 주로
한다면 자바만 안다고 해서 생기는 문제는 거의 없거나 무시할 수 있을
정도일 거라고 생각합니다.
저는 모바일은 전혀 모릅니다만... 아무래도 모바일 분야에서는 웹과는
좀 다르리라 생각합니다. 모바일은 하나의 분야일 뿐이라고 보기엔
모바일을 제외한 모든 분야가 거의 그대로 포함되기 때문에, 다른
분야에 비해 지극히 단순한 프로그래밍 로직만을 갖는 웹 분야와는
달리 최적화의 가능성도 많겠고, 또 그 필요성도 클 것이 당연하리라
생각합니다.
그래서 자바 모바일 프로그래밍을 위해서는 JVM에 대한 이해는 필수
적일 것이고.. 김종원님의 말씀대로, C/C++에 맞먹는 시스템 접근
능력도 많이 필요할 수 있을 것 같습니다.
오해는 없었으면 합니다.
자바가 모바일 플랫폼으로서도 훌륭할 것이라고 믿고 있습니다.
모바일 분야라면 업무의 특성상 개발자에게 시스템에 대한 이해도가
요구될 것이고, 역시 업무의 특성상 개발 언어에게 시스템에 대한 접근
능력이 요구될 것이라는 뜻입니다.
장황한 본론에 어떻게든 결론을 붙여보려고 노력하자면...
김종원님의 생각은 일반론이라고 받아들이기엔 무리가 많을 것 같습니다.
특히 현재 현업 자바 개발자들의 대부분이 웹 및 엔터프라이즈 개발자
라는 것을 고려하면 더욱 그럴테구요.
하지만 꼭 한번 생각해보고 넘어가야 할 좋은 컬럼임에도 틀림없다고
생각합니다.
자바가 플랫폼에 독립적인 언어이기는 하지만, 거꾸로 JVM을 플랫폼
으로 생각해보면 자바만큼 플랫폼에 종속적인 언어도 없습니다.
어떤 프로그래밍 언어도 플랫폼에 완벽히 독립적일 수는 없고,
그만큼 개발자에게는 플랫폼-시스템에 대한 이해가 기본으로서 갖추어
져야 한다는 말씀 아닙니까.
|