- 내가 가장 좋아하는 언어는 파이썬. 그럼에도 불구하고 나는 모든 곳에 - 간단한 스크립트까지 - 자바를 사용한다.
- 몇 가지 경험들:
- 자바 베이스인 회사에서 테스트 시나리오를 자바스크립트로 작성하였음. 하지만 스택 트레이스 추적이 어렵고, 자바랑 자바스크립트 사이 브릿지 코드를 작성하느라 괜한 수고를 했음.
- 로그를 json 포맷으로 저장하고 있었는데, 동료 개발자가 이 로그를 다루는
logcat이라는 프로그램을 만듦. 그 프로그램에 만족했지만, 이후 비슷한 프로그램을 자바로 만들자 10배 이상의 성능 향상을 보였음. - 자바에 대한 풍부한 경험과 자료 덕분에, 웹 서비스를 만드는 점에서 파이썬보다 자바가 빨랐음. 엄밀히 말하면 이건 한 언어를 사용함에 따른 이점임.
- 자바에 대한 가장 뜨거운 논쟁은 verbose(장황함). 하지만 이건 전혀 단점이 아님. 아래의 두 코드를 보라.
// java
Map<String,User> userIdMap = new HashMap<String,User>();
// python
userIdMap = {}
- 하지만 실제로 파이썬 코드는 아래처럼 작성되어 있을 가능성이 더 많다. (그렇지 않다면, 정말 유지보수하기 힘들 것이다)
# Map from user ID to User object.
userIdMap = {}
- 즉, 동적 타입 언어를 쓰는 것은 30분만에 멋진걸 만들기 위해 14일 이후의 생산성을 희생하는 것과 같다.
- 스택오버플로우는 ASP.NET 을 써서 (2010년에) 5대의 서버로 60,000,000 페이지뷰를 버텼다.
- 단위 테스트의 예시를 보자. 단위 테스트를 작성하고 유지보수하는 것은 시간을 소모한다. 특히, 타입으로 간단히 확인할 수 있는 예외사항들은 동적 타입 언어의 유닛 테스트로 잘 잡히지도 않는다 (예: 파서)
- (파이썬을 쓰지 않는 이유 중 하나를 추가하자면) 즉석 해결책(quick hack)은 점점 커져서 매우 중요한 툴이 되는데, 그걸 재작성할 여유는 없어서 결국 쓸 때마다 퍼포먼스와 유지보수에 허덕이게 된다.
- 마지막으로, 다른 정적 타입 언어들 대신 자바를 선호하는 이유들
- C/C++는 내 업무에 적용하기 어려움
- C#은 크로스 플랫폼 지원이 부족함
- Scala는 너무 복잡함
- D, Go 같은 다른 언어는 내 업무에 투입하기엔 너무 새 것임
- 제가 이 글을 긱뉴스에 가져온 몇 가지 이유가 있습니다:
- "난 자바가 진짜 좋아!"라는 글을 처음 봐서 신기했습니다 (제목만 보고 반전이 있을 줄 알았는데...)
- 본인만의 (자바로 만든) 공구상자를 가지고 있다는 점이 재밌었습니다. 뭔가 주머니에서 주섬주섬 고대무기를 꺼내는 노인의 이미지가 생각났어요.
- 저는 개인적으로 자바스크립트와 파이썬을 많이 좋아합니다. 그러나 얼핏 보면 이 언어들도 '타입을 어떤식으로든 도입' 쪽이 대세로 느껴집니다 (typescript for javascript, typing/mypy for python). 이런 상황에서, 이 글을 보니 제가 (타입을 전혀 강제하지 않는 방식으로) 정적 타입 언어를 쓰는게 약간은 자기만족에 가깝지 않나 하는 생각이 들었습니다.
- 저자는 자바와 파이썬에 대한 경험을 갖고 있어서 그 두 언어를 직접적으로 비교했지만, 굳이 그렇게 한정지어 생각할 필요는 없는 것 같습니다. 보다 넓은 관점에서 정적 타입과 동적 타입 언어에 대해 여러분은 어떤 생각을 가지고 계신가요?
PS. 특정 언어를 무의미하게 비하하지는 맙시다 :D