洪民憙 (홍민희) 블로그

이하의 글은 2010년에 쓴 것입니다. 오래된 글인 만큼, 현재의 생각과 전혀 다른 내용도 많이 포함되어 있고, 당시와는 상황이 많이 달라진 점도 있습니다. 또한, 그 당시에 잘못 알려졌던 정보도 포함되어 있을 수 있습니다. 어찌됐든 저는 제 오래된 글이 회자되는 것을 저어합니다. 읽기에 앞서 양해를 부탁드립니다.

Java만 하는 사람들은 진짜 Java만 한다. Java는 한번 제대로 하려고 마음 먹으면 너무 배울 것이 많기 때문에 더 그렇다. Java밖에 안 하니까 우물안 개구리가 되기 십상이다.

Java에 배울 것이 많다는 것이 Java의 심오함을 대변하는 것은 아니다. 사실은 그 반대다. Java에는 Java 자체가 해결해주지 못하는 문제들이 너무 많기 때문에 디자인 패턴부터 시작해서 온갖 workaround가 판을 치기 때문에 배울 것이 더 많아진다. 정작 Java에 몰두한 사람들은 그것들이 workaround가 아니라 굉장히 우아한 해결책이라고 느끼는 것이 더 큰 문제다. 그 사람들이 workaround를 우아한 해결책이라고 믿는 이유는 그것들이 Java의 문제를 해결하는 것이 아니라, 프로그래밍 본질적인 문제를 해결하는 것이라고 착각하는 경우가 많기 때문이다. 예를 들어 디자인 패턴의 꽤 많은 전략이 다른 언어에서는 필요하지 않은 경우가 많다. 하지만 Java만 하던 사람은 Java 외의 다른 언어를 진지하게 배워볼 시간이 없었기 때문에1 Java가 갖는 문제를 프로그래밍 본질의 문제로 보기 쉽다. 그렇게 Java 진영에서 우아한 해결책들로 알려진 workaround를 하루하루 체득해가며 세월을 보내는 것이다.

Hibernate가 좋은 ORM이라고 칭찬하는 글을 보며 문득 저 사람에게 SQLAlchemy를 보여주면 뭐라고 할지 궁금하다는 생각이 들어 이런 글을 쓴다.


  1. 뭐 C++ 정도를 더 알고 있을 수는 있지만, 나는 C++와 Java 사이의 거리가 Java와 Haskell, Lisp 사이의 거리에 비하면 거기서 거기인 언어라고 본다.