자바의 겉모습

2001년 4월

이 에세이는 자바가 왜 의심스러웠는지에 대해 다른 프로그래머들과 나눈 대화에서 발전했습니다. 자바에 대한 비판이 아닙니다! 이것은 해커의 레이더에 대한 사례 연구입니다.

시간이 지나면서 해커들은 좋은 (그리고 나쁜) 기술을 알아보는 감각을 키웁니다. 자바가 왜 저에게 의심스럽게 느껴졌는지 글로 써보는 것이 흥미로울 것 같았습니다.

이 글을 읽은 어떤 사람들은 이전에 다뤄지지 않았던 주제에 대해 쓰려는 흥미로운 시도라고 생각합니다. 다른 사람들은 제가 이해하지 못하는 것에 대해 쓰는 것처럼 보여 곤란해질 것이라고 말합니다. 그러니 혹시라도 도움이 될까 하여 분명히 말씀드리자면, 저는 여기서 자바(한 번도 사용해 본 적 없음)에 대해 쓰는 것이 아니라 해커의 레이더(많이 생각해 본 주제)에 대해 쓰고 있습니다.


“겉모습만 보고 책을 판단할 수 없다”는 격언은 책이 평범한 판지 표지로 판매되어 각 구매자가 자신의 취향에 따라 제본하던 시절에 유래했습니다. 그 시절에는 겉모습만 보고 책을 판단할 수 없었습니다. 하지만 출판은 그 이후로 발전했습니다. 오늘날의 출판사들은 겉모습만 보고도 책을 판단할 수 있도록 표지를 만드는 데 많은 노력을 기울입니다.

저는 서점에서 많은 시간을 보내며 이제는 출판사들이 책에 대해 말하고자 하는 모든 것, 어쩌면 그 이상을 이해하게 된 것 같습니다. 서점에서 보내지 않은 시간은 대부분 컴퓨터 앞에서 보냈고, 어느 정도는 기술도 겉모습만 보고 판단하는 법을 배운 것 같습니다. 운이 좋았을 수도 있지만, 저는 정말 형편없는 기술 몇 가지를 피할 수 있었습니다.

지금까지는 자바가 저에게는 형편없는 기술처럼 느껴집니다. 저는 자바 프로그램을 한 번도 작성해 본 적이 없고, 참고 서적을 훑어본 적도 없지만, 자바가 그리 성공적인 언어가 되지 못할 것이라는 예감이 듭니다. 제가 틀릴 수도 있습니다. 기술에 대한 예측은 위험한 일입니다. 하지만 일종의 타임캡슐로서, 제가 자바의 겉모습을 좋아하지 않는 이유를 말씀드리겠습니다:

  1. 너무나도 열정적으로 과대광고되었습니다. 진정한 표준은 홍보할 필요가 없습니다. C나 Unix, HTML은 아무도 홍보할 필요가 없었습니다. 진정한 표준은 대부분의 사람들이 그것에 대해 들을 때쯤이면 이미 확립되어 있는 경향이 있습니다. 해커의 레이더 화면에서는 Perl이 자바만큼, 혹은 그 이상으로 크며, 이는 오직 그 자체의 장점 덕분입니다.

  2. 수준이 낮게 설정되었습니다. 원래 자바 백서에서 Gosling은 자바가 C에 익숙한 프로그래머들에게 너무 어렵지 않도록 설계되었다고 명시적으로 말합니다. 자바는 또 다른 C++로 설계되었습니다. 즉, C에 더 발전된 언어에서 가져온 몇 가지 아이디어를 더한 것입니다. 시트콤이나 정크 푸드, 패키지여행을 만드는 사람들처럼, 자바의 설계자들은 자신들만큼 똑똑하지 않은 사람들을 위한 제품을 의식적으로 설계했습니다. 역사적으로 다른 사람들이 사용하도록 설계된 언어는 좋지 않았습니다: Cobol, PL/I, Pascal, Ada, C++. 좋은 언어는 그 언어를 만든 사람들 자신을 위해 설계된 언어였습니다: C, Perl, Smalltalk, Lisp.

  3. 다른 속셈이 있습니다. 누군가 언젠가 사람들이 책을 쓰고 싶어서가 아니라 할 말이 있어서만 책을 쓴다면 세상이 더 나은 곳이 될 것이라고 말했습니다. 마찬가지로, 우리가 항상 자바에 대해 듣는 이유는 프로그래밍 언어에 대해 할 말이 있어서가 아닙니다. 우리는 자바를 Sun이 Microsoft를 약화시키려는 계획의 일부로 듣습니다.

  4. 아무도 사랑하지 않습니다. C, Perl, Python, Smalltalk, Lisp 프로그래머들은 자신들의 언어를 사랑합니다. 저는 자바를 사랑한다고 말하는 사람을 한 번도 들어본 적이 없습니다.

  5. 사람들이 강제로 사용합니다. 제가 아는 자바 사용자 중 많은 이들이 어쩔 수 없이 사용하고 있습니다. 자금을 받기 위해 해야 한다고 느끼거나, 고객이 원할 것이라고 생각하거나, 경영진으로부터 지시받은 일이기 때문입니다. 이들은 똑똑한 사람들입니다. 만약 기술이 좋았다면 자발적으로 사용했을 것입니다.

  6. 요리사가 너무 많습니다. 최고의 프로그래밍 언어는 소규모 그룹에 의해 개발되었습니다. 자바는 위원회에 의해 운영되는 것 같습니다. 만약 자바가 좋은 언어로 판명된다면, 그것은 위원회가 좋은 언어를 설계한 역사상 첫 번째 사례가 될 것입니다.

  7. 관료적입니다. 제가 자바에 대해 아는 바가 적지만, 일을 처리하는 데 많은 프로토콜이 있는 것 같습니다. 정말 좋은 언어는 그렇지 않습니다. 그들은 당신이 원하는 것을 하게 하고 방해가 되지 않습니다.

  8. 가짜 힙스터입니다. Sun은 이제 자바가 Perl이나 Python처럼 풀뿌리, 오픈소스 언어 노력의 결과인 척합니다. 하지만 이 언어는 우연히도 거대 기업에 의해 통제됩니다. 따라서 이 언어는 대기업에서 나오는 다른 모든 것과 마찬가지로 칙칙하고 투박할 가능성이 높습니다.

  9. 대규모 조직을 위해 설계되었습니다. 대규모 조직은 해커와 다른 목표를 가지고 있습니다. 그들은 평범한 프로그래머들로 구성된 대규모 팀이 사용하기에 적합하다고 (믿어지는) 언어를 원합니다. U-Haul 트럭의 속도 제한 장치처럼, 바보들이 너무 많은 피해를 입히는 것을 막는 기능을 가진 언어 말입니다. 해커들은 자신들을 깔보는 언어를 좋아하지 않습니다. 해커들은 그저 을 원합니다. 역사적으로 대규모 조직을 위해 설계된 언어(PL/I, Ada)는 패배했고, 해커 언어(C, Perl)는 승리했습니다. 그 이유는 오늘날의 십대 해커가 내일의 CTO이기 때문입니다.

  10. 엉뚱한 사람들이 좋아합니다. 제가 가장 존경하는 프로그래머들은 대체로 자바에 매료되지 않았습니다. 그럼 누가 자바를 좋아할까요? 한 언어와 다른 언어를 구분하지 못하지만 언론에서 자바에 대해 계속 듣는다는 것을 아는 정장 입은 사람들; C++보다 더 좋은 것이 있다는 사실에 놀라는 대기업 프로그래머들; 그리고 취업에 도움이 될 만한 것이라면 무엇이든 좋아할 준비가 된 주입식 교육을 받은 학부생들(이것이 시험에 나올까요?). 이 사람들의 의견은 바람과 함께 변합니다.

  11. 그 아버지(Sun)가 곤경에 처해 있습니다. Sun의 비즈니스 모델은 두 가지 측면에서 약화되고 있습니다. 데스크톱 컴퓨터에 사용되는 것과 동일한 저렴한 Intel 프로세서가 이제 서버용으로도 충분히 빠릅니다. 그리고 FreeBSD는 서버용 OS로서 Solaris만큼이나 좋습니다. Sun의 광고는 산업용 애플리케이션에는 Sun 서버가 필요하다고 암시합니다. 이것이 사실이라면 Yahoo가 Sun 서버를 가장 먼저 구매했을 것입니다. 하지만 제가 그곳에서 일할 때 서버는 모두 FreeBSD를 실행하는 Intel 박스였습니다. 이것은 Sun의 미래에 좋지 않은 징조입니다. 만약 Sun이 어려움에 처하면, 자바도 함께 끌어내릴 수 있습니다.

  12. 국방부(DoD)가 좋아합니다. 국방부는 개발자들이 자바를 사용하도록 장려하고 있습니다. 이것은 저에게 가장 치명적인 신호처럼 보입니다. 국방부는 나라를 훌륭하게 (비록 비싸게) 방어하지만, 그들은 계획과 절차, 프로토콜을 사랑합니다. 그들의 문화는 해커 문화와 정반대입니다. 소프트웨어 문제에 있어서 그들은 잘못된 선택을 하는 경향이 있습니다. 국방부가 정말 좋아했던 마지막 프로그래밍 언어는 Ada였습니다.

명심하세요, 이것은 자바에 대한 비판이 아니라 그 겉모습에 대한 비판입니다. 저는 자바를 좋아하거나 싫어할 만큼 충분히 알지 못합니다. 이것은 제가 자바를 배우고 싶어 하지 않는 이유에 대한 설명일 뿐입니다.

프로그램을 작성해 보기도 전에 언어를 무시하는 것이 무모해 보일 수도 있습니다. 하지만 이것은 모든 프로그래머가 해야 하는 일입니다. 세상에는 너무 많은 기술이 있어서 그것들을 모두 배울 수는 없습니다. 겉으로 드러나는 징후를 보고 어떤 것이 시간을 들일 가치가 있는지 판단하는 법을 배워야 합니다. 저는 마찬가지로 Cobol, Ada, Visual Basic, IBM AS400, VRML, ISO 9000, SET 프로토콜, VMS, Novell Netware, CORBA 등을 무모하게 무시했습니다. 그저 뭔가 잘못된 냄새가 났을 뿐입니다.

자바의 경우 제가 틀렸을 수도 있습니다. 한 거대 기업이 다른 기업을 약화시키기 위해 홍보하고, '주류' 청중을 위해 위원회가 설계했으며, 하늘 높은 줄 모르고 과대광고되고, 국방부가 사랑하는 언어가 그럼에도 불구하고 제가 프로그래밍하고 싶을 만큼 깨끗하고 아름답고 강력한 언어일 수도 있습니다. 그럴 수도 있지만, 그럴 가능성은 매우 낮아 보입니다.