OKJSP(http://okjsp.pe.kr/seq/108722)에 갔다가.. 좋은 글이 있길래 퍼왔습니다..
어느 정도 공감가는 글이고.. Java 개발자라면 한번 쯤은 읽어봐야 하지 않나 싶습니다..
그러나 이 분이 말하는 그 단점만 있는것은 아니고 잘짜여진 MVC모델은 좋은 퍼포먼스를 낸다고 생각합니다..
한번 쭉 읽어보시길...
more..
자바(Java)라... 그 역겨움이란...
한동안 자바 월드에 대해서 별 생각없이 지내고 있었는데, 2007년이 끝나가는 이 시점에 다음과 같은 제목의 글이 신문기사를 우연히 보고, 한마디 해야 하겠다는 생각이 든다.
원문 제목: "자바 vs C" 금융권 프레임워크 논쟁속 티맥스 "자바" 공급 주도 (2007/09/27)
원문 링크: http://www.dt.co.kr/dtspelst_financeit_view.html?gisaid=2007092702010560611002
세상을 채우고 있는 주요 프로그래밍 언어 중에, 코볼/Ada/FOTRAN/LISP 같은 놈들만 빼놓고 나머지는 모두 수준급으로 구사할 수 있는 선임 개발자로서 판단해 보건데, 언어자체의 기본적인 특성만 보자면 Java는 C/C++의 전통을 계승받은 언어로서 후대에 물려줘야할 훌륭한 성과라고 생각하는 바이다. 그리고 본인도 심심찮게 자바로 프로그래밍을 하고 있으며, 코딩 할 때마다 '역시 좋은 언어야...'라는 생각이 들기도 한다.
'만약에, 이 언어를 시스템 프로그래밍에 쓸 수 있으면, 완벽해 질 텐데...' 라는 생각을 거의 매일 하면서 살고 있는 개발자로서의 의견이다.
일단 자바는 좋은 언어이다. 하지만 자바를 둘러싼 주변 환경은 사실 구린내가 구질구질하게 날 정도로 역겨운 곳이 아닐 수 없다고 말해주고 싶다. 이는 '자바계의 리더들'이 무지무지 똑똑하지만 고집불통의 구제불능의 개발자들이기 때문이다. 누군가 영어로 Smart Moron이라고 표현 했던 게, '자바계의 리더들'에게 딱 어울리는 표현이다.
만약 자신이 '한 자바 하는 개발자'라고 자타가 공인하는 사람이라면, 내가 비난하는 '자바계의 리더'가 바로 당신일 지도 모른다.
자바계를 보면 유난히 '프레임웍'에 집착하는 현상을 볼 수 있다. 이게 자바계 리더들이 가지는 편향적인 성향 중에 하나인데, 모든 문제를 '프레임웍'으로 바라보려는 시각이 있기 때문이다.
예를 들어 인터넷 웹애플리케이션을 개발하는 곳에서는 거의 정석이라고 불리다시피했던 프레임웍 중에 하나가 바로 '스트럿츠(Struts)' 프레임웍인데... 이거 진짜 대략 난감한 프레임웍이다. 왜냐하면, 초보 PHP 개발자가 2시간 내에 할 수 있는 일을 초보 JSP/Struts-MVC 개발자는 2일을 줘도 못 끝내는 일이 발생하기 때문이다.
도대체 프레임웍을 도입한 곳에는 쉬운 일이 뭐고 어려운 일이 뭔지 구분이 안된다. 도대체 쉬운 일이란 존재하지 않는다. 간단한 변수 하나 고쳐서 웹페이지에 표시하는 것이 뭐 그렇게 대단히 어려운 일이라고... 도대체 일이 진도가 안나가는 것이다.
진도가 안 나가 하도 답답해서 옆에 가서 들여다 보고 있노라면, 산더미 같이 많은 파일들을 헤메느라 거의 하루 종일 Eclipse가지고 길찾기만 하고 있다. 사실 Jsp/Struts-MVC 개발자 중의 업무시간 30% 정도는 아마 파일 찾기 위해 브라우징하는데 시간을 쓰지 않을까...
비슷한 규모의 PHP 개발자들에게 똑같은 일을 시켜 놓으면, 절대 그렇게 헤매지 않고, 그냥 쉽게 끝내는데... 자바 개발자들은 이상하다... 싶다.
혹자(또는 구린내 나는 자바 리더)는 이런 얘기를 할 것이다. "그야 그 개발자가 초보거나, 능력이 없어서 그렇지..." 이런 말을 하면, 내가 해 줄 말이 있다. "엿먹어라!" 내가 같이 일하는 개발자들의 실력도 몰라서 이러는 것 같니? 똑같은 일이 비슷한 실력의 PHP 개발자에게는 거의 껌이거든...? 개발자의 실력 문제가 아니라는 것이다. 문제는 프레임웍이지... 아니, 좀더 정확하게 표현하면, 자바 진영의 편향된 아집 때문이지...
아무것도 모르고 '리더급 선배'들이 하는 말이라면, '옳은가보다' 하면서 따라가는 불쌍한 후배들을 보면, 안타깝고 측은할 뿐이다. MVC가 짱이라니 그렇게 해야만 하나 보다... Struts가 짱이고 그거 못하면 웹개발자로 살아남기 힘들다니 그거 배워야 하겠다...라고 생각하지 않을 수 있는가? 좀더 윗 레벨로 가면, SOA 아니면 무슨 큰 일이나 나는 것 처럼 떠들어 대는 인간들이 그 인간이 '구린내 나는 리더급 선배들'이다.
몹쓸 인간들...
"Struts/MVC가 그렇게 좋으면 왜 PHP로 개발하는 것보다 시간이 4~5배는 더 걸리는데?"
(이 질문은 아마도, SOA 가 그렇게 좋으면, 왜 그 기반으로 개발된 사이트 유지보수에 PHP로 개발한 사이트 유지보수 비용보다 몇곱절 더 들어가는데?라는 질문으로 바꿀 수도 있다.)
이런 질문을 하면, 또 돌아오는 정확한 대답을 난 알고 있다. "MVC가 잘 정돈 되어서 유지보수성이 좋잖아..."라고 대답할 것이 틀림없을 것이기 때문이다.
엿먹어라! 그럼 왜 Struts/MVC 개발결과물에 비즈니스 로직 하나 고치려면, PHP개발 때보다 4~5배는 시간이 더 걸리는데?
오죽 Struts-MVC가 나쁜 짓을 많이 했으면, Struts 만든 저자들도 스스로 자아비판하고, Struts-MVC를 죽이려고 하는 것일까...
니가 영어좀 하면, 이거 읽어보렴: http://www.jroller.com/RickHigh/entry/is_struts_dead_part_iii
(여기서 주목할 점은 원 저작자들이 Struts-MVC를 "죽이려"드는 것이다. 그냥 죽게 놔두지 않고 의도적으로 'kill'하려는 것은, 자기들의 잘못을 시인하고, 되도록이면 빨리 세상을 원래대로 회복 시키려는 것을 의미하는 것이다. 나쁜 짓을 얼마나 크게 저질렀다고 생각했으면, 의도적으로 자기 피조물들을 죽이려고 드는 것일까... 그래도 일부 양심이 살아 있는 인간들이 자바계에 있는 것으로 봐서, 완전히 절망적인 상황은 아닌 것 같다.)
내가 비난하는 '리더중'에 한사람은 이런 반응을 보일 것이다. "Struts같은 구식 프레임웍가지고 생트집 잡지 말라고..." 당연한 반응이다. 이미 그 '구린내 나는 리더들'은 또다른 프레임웍으로 추종자들을 골탕먹일 완벽한 준비가 되어 있을 테니까... "구식 Struts 쓰지 마시고, 최신 유행 X 프레임웍이 있어요. 그게 짱입니다. 아니면 Y 프레임웍이 있어요. 그게 젤 좋아요." 스프링(Spring)이 그중에 하나이다.
알고보면 새로운 프레임웍도, 오십보 백보, 거기서 거기다. 모름지기 선배이면 선배로서 역할을 제대로 해야 하는 것이지... 후배들을 구렁텅이로 몰아가다니...
사실 자바의 역사를 보면 자바 진영에서는 이런 일이 한두번 일어난 것이 아니다.
초기 자바가 업계에 소개되었을 때, 97~99년 사이에 광풍이 일어났지... 그때 망한 팀 많지... 섣불리 자바에 뛰어 들었다가...
EJB 가 소개될 즈음에 또한번의 광풍이 휘말렸지... 그때 또 상당수의 자바 팀들이 망했지... 아마...
그러고 나서, Struts-MVC, 이 썩을 놈들이 또 나왔다 이거지...
사실 자바 진영에서 이런 기막힌 일들이 자주 일어나는 것은 좀 심각한 분석의 대상이 될 필요가 있다. 그쪽 인간들이 속이기 좋아 하는 것인지 추종자들이 맹목적으로 속기 쉬운 인간들인지...
그게 뭔 상관이여... Man/Month 부풀리기 좋은데, 부풀려서 고객들에게 돈 더 받아 먹을 수만 있으면 그게 짱이지... 개발자가 죽어 나자빠지든 말든... 이렇게 생각하는 인간들이 자바 진영에 더 많아서일까...?
아니면, 멋있잖어? 이 복잡해 보이는 거, 이해 못해? 이해가 안 가? 너 바보여! 나 잘났어. 그니까 내가 니보다 월급 더 받아야 혀... 이렇게 생각하는 인간들이 많아서 그럴까...?
아니면 둘다일까?
하여간 분석 대상이여... 자바 진영은...
---- 여기쯤에서 ----
오해하지 마시길... 난 지금까지 나온 언어 중에서 자바를 Python 다음으로 좋아하고, C++과 거의 동급으로 생각하고 있는 사람이여...
자바 그 자체는 무죄라고 생각하는 사람이랑께... 이 글을 읽고 심기가 불편해진 니가 짠 자바코드 보다 내가 짠 자바코드가 결코 적지 않을껴... 쓰레기 Struts-MVC 로 짠 코드는 1/5 로 카운트 해야 하는 거 알지...?
자바를 둘러싼 인간들의 일반적인 속성이 문제지... 걔네들은 뭐 하나 간단하게 놔 두는 법이 없이 뭐든 복잡하게 만들어 버리는 이상한 버릇이 있다니까...
걔네들에게 오염되지 않고, 순수자바(음. 용어를 바꿔야 하겠군) 아니 자바 언어 핵신 파트만 가져다가 쓰는 것은 언제나 찬성이여...
자바 언어 핵심에는 또 다른 함정이 도사리고 있기는 하다... 아마도 그 자바 언어 핵심에 숨겨진 함정과 그 뒤에 또라이들이 만든 복잡성의 쓰레기들이 아마 어떤 철학적인 연관성이 있을 지도 모른다... 헉... 정말 그럴 지도 모른다.
쓰레기들로부터 자바를 독립시켜야 혀... 아마도 gcj 가 완성되면, 쓰레기들로부터 분리가 되지 않을까 싶은데...
-----
그래서 "자바 vs C 금융권 프레임워크 논쟁"을 보면 좀 어의가 없다. 기사 내용중에 "안정성" 가지고 C가 낫니 뭐니 하는 헛소리를 들으면 울화통이 터진다. C만이 유일한 시스템 프로그래밍 언어라고 생각하는 개발자들도 '프레임웍으로 무장한 자바개발자'만큼이나 꼴통이기 때문이다.
C언어만을 고집하는 인간들은 도대체 '생산성'이 뭔지 모른다. 반대로 '프레임웍/자바 개발자'들은 '단순성'이나 '성능/효율성' 이런게 뭔지 도통 모른다.
나는 자바가 꼴통같은 아집에서 벗어나면, C/C++만큼의 성능/효율을 보이면서 자바 고유의 생산성과 안정성을 확보할 수 있을 것이라고 생각한다. 시스템 프로그래밍언어로 설계되고 있는 'D 언어'가 그 가능성을 정확하게 보여 주고 있다. 사실 'D 언어'는 언어만 보자면, Java와 한줌의 차이도 없는 동일한 언어라고 해도 과언이 아니다. 사실상 동형에 가까운 'D 언어'는 시스템 프로그래밍에 사용할 만큼의 성능과 효율성을 만족시키면서도 비슷한 안정성과 생산성을 보장하고 있다. 좀더 두고 볼 일이지만... 사실상 Java/C#/D는 같은 언어라고 봐도 무방할 정도의 위치에 있다고 할 수 있기 때문에, C/C++의 시스템 프로그래밍 전통을 이어받은 시스템 개발자로서, Java를 사랑하는 사람으로서, 굳이 D언어까지 갈 필요없이 Java가 D언어 역할을 하면 되는데... 라는 아쉬움이 생긴다.
-----
이 글을 읽고 자기 욕하는 것 같아서 기분 나쁘다고 생각이 들면, 화장실에 가서 욕한번 크게 내지르고, 그 후로 반성하고 바른 생활을 하도록... 후배들한테 새로운 것을 가르쳐 줄 때는 좀 배우기 쉽게 간단하게 해서 가르쳐 주란 말이다.
이런 질문을 할 지도 모른다. "금융권에 들어가는 프레임웍은 Struts같은 그런 프레임웍이 아닌데요?" 그건 나도 알어... 근데 "자바계의 리더들이 만들었다면" 아마도 거의 100% 확실한 확률로 동일한 철학을 가지고 만들어 졌을 것이고, 그렇다면 틀림없이 구린내가 날 것이라는 것이다. "무지무지 복잡해서 도대체 배우는 것이 불가능한 것", 그 이상도 아니고 그 이하도 아니라는 것이다.
----
여기서 한마디 더... 배우고 쓰기 쉽도록 만들라고 했더니, Struts-MVC 같은 괴물을 만들어 내놓고도 버젓이 "어때? 명쾌하잖어, 쉽지?" 이러는 놈들이 자바 진영의 리더들이니 한마디 더 하지 않을 수 없다.
배우기 쉽고, 간단하다의 정의는... 코딩에 필요한 타이핑 타수가 줄어드는 것을 의미하는 것이여. 그 이상도 그 이하도 아니여. 알겄냐?
코드의 길이는 짧아야 하고, 한 라인의 길이도 짧아야 하고, 변수 명, 클래스 명도 짧아야 하고, 멤버/메소드 갯수도 적어야 하는 것이여... 오픈해야 할 소스 파일의 갯수가 적은 것이 간단한 것이여...
게으르게 타이핑하기. 그게 단순함의 진수여... 뭔 말인지 알겄지?
사실 이 "쉽다"에 대한 이 정의를 얘기해 봐야 자바 쓰레기들이 알아 들을 지 모르겠다. 도대체 "쉽고 간단한 것"을 구경이나 해 봤어야지...
진짜 "쉽고 간단하다"가 뭔지 모르겠거든, 똑같은 일을 하는 Python 코드를 한번 들여다 봐... 그럼 뭔 소린지 이해가 갈껴... 그냥 라인수/글자수만 세 보면 돼... 어렵냐...? 어려우면 그냥 그렇게 살어... 그것도 삶의 한 방편이라고 인정해 줄께. 단, 니들만 그렇게 살어... 불쌍하고 가엾은 후배들까지 끌어들이지 말란 말이다.
----
꼴통 자바가 세상을 야금야금 갉아 먹고 있어서 한마디 해야만 직성이 풀릴 거 같아서 지껄인다. 이런 넋두리를 내지른다 한들... 달라지지 않을 텐데... 그래도 어느 순간엔가, 애증이 엇갈리는 그 자바로 코딩을 하고 있는 나를 보면... 참... 할 말이 없다.
--上善若水.
댓글 없음:
댓글 쓰기