2007년 10월 4일 목요일

고슬링, 다음 Java 버전에서는 unsigned 좀 부탁해요.

제임스 고슬링 가라사대,
"In programming language design,
one of the standard problems is that the language grows so complex that nobody can understand it.
One of the little experiments I tried was asking people about the rules for unsigned arithmetic in C.
It turns out nobody understands how unsigned arithmetic in C works.
There are a few obvious things that people understand, but many people don't understand it."

요약하면 unsigned 타입은 불필요한 복잡성만 부르기 때문에 자바에 넣지 않았다는 겁니다.

하지만 기존의 C/C++ 소프트웨어들, unsigned 타입을 지원하는 또 다른 언어와 상호 운용성을 제공하기 위해서는 이 점은 치명적인 약점입니다. 간단한 통신 프로그램을 작성하려 그래도 C 언어로 작성한 프로그램에서 unsigned 데이터를 패킷에 담아 보내기라도 하면 요 녀석을 요리하는데 여간 귀찮은 것이 아닙니다.

오, 저기 자바 전문가께서 한 말씀 하시는군요. "그런 건 JNI를 이용하면 되잖아." JNI는 두 가지 이유에서 답이 아닙니다.

   1. Native에서 unsigned로 처리를 한다 해도 이 녀석을 다시 Java의 타입 세계로 불러들이려면 어차피 같은 일을 또 해야 합니다.
  2. 복잡성 때문에 unsigned를 뺐다고 하면서 더 복잡한 JNI를 권하는 것은 모순입니다.

물론, 이런 일을 처리하는 유틸리티 클래스를 만들어서 쓰면 어느 정도 일이 줄기는 합니다만unsigned 데이터를 다루기 위해 원래 데이터의 2배나 되는 타입을 선택해야 하고, 이로 인해 발생하는 계산의 "귀찮음"은 여전히 남습니다. 이런 일은 그렇지 않아도 다른 논리로 복잡한 프로그래머의 머리를 더 피곤하게 만듭니다.

그러니 부탁입니다, 제임스 고슬링.
제발 다음 버전의 Java에서는 unsigned 타입을 넣어주세요.

댓글 없음:

댓글 쓰기