Effective Java 2nd Edition

Java 2009. 9. 20. 22:05
Effective Java 2nd Edition 의 번역판이다. 첫번째 판에 java5 이후에 대한 내용 (Generic , Enum , Annotation 등) 이 추가되었다.  첫 판에서 객체지향 Enum 패턴을 소개했었는데, 2판에서는 Enum을 써라 라고 내용이 바뀐 것을 보니 감회가 새롭다.

번역은 전반적으로 잘 된 편이다. 다만 마음에 안드는게 하나 있는데, Reflexive를 "재귀"라고 번역한 것이다. 재귀라는 말을 들으면 누구나 Recursive를 떠올리지 Reflexive를 생각하지는 않을 것이다. 이것 때문에 읽는데 약간 고생했다. 이렇게 번역한 것에 뭔가 심오한 뜻이 있는지도 모르겠다. (하지만 번역한 분에게 물어볼 방법이 없으니 확인 불가)

Java 프로그래머라면 꼭 읽어봐야 할 것이다.

책 정보 보러가기








Posted by lispholic
,
에이콘에서 특이한 책이 출간되는데, 다른 프로젝트 관련서와 달리 망해가는 프로젝트를 살리는 방법에 대해 다룬다.

이 책에 대한 내용을 살펴보니 같은 출판사에서 나온 또 다른 특이한 책이 떠오른다.















드리밍 인 코드
원대한 비전, 뛰어난 사람들, 막대한 자금.  그러나 수렁으로 빠지는 프로젝트...

망해가는 프로젝트에서 나올 수 있는 경우는 거의 다 나오지 않았나 하는 생각이 든다.












 두 책을 같이 펼쳐놓고 읽어보면 (수렁으로 빠지는 프로젝트 이야기와 프로젝트를 수렁에서 건지는 이야기) 상당히 재미있을 것 같다.

현재 에이콘에서 트랙백이벤트 중이다.

도서정보페이지

Posted by lispholic
,

Scala에서의 리스트

Scala 2009. 8. 22. 17:52

Scala 는 기본적으로 Lisp과 유사하게 head - tail 스타일의 LinkedList 를 사용한다. 그런데 Scala의 immutable주의와 리스트가 혼합되면서 약간 특이한 구조가 되었다.

일반적으로 대부분의 언어에서는 리스트와 유사한 자료구조는 뒤에 데이터를 넣는 것이 효율적이다 (C++의 vector , java의 ArrayList , python 의 리스트 등). 그리고 다른 자료구조 (C++ 의 deque 등)도 뒤에 넣는 것이 앞에 넣는 것에 비해 특별히 비효율적이지는 않기 때문에 대부분 아무생각없이 뒤에 넣는 방식을 쓴다. 그리고 뒤에 넣으면 나중에 넣은게 뒤에 있게 되므로 좀 더 자연스럽다.

그런데 Scala의 기본 List 는 정반대이다. List 를 immutable 로 만들기 위해 리스트에 데이터를 넣을 때 원래의 리스트를 수정하지 않기로 결정했고, 그래서 새로 만든 노드를 원래 리스트의 앞에 붙인다. (head - tail 구조인 리스트에서 원래의 리스트를 수정하지 않고 뒤에 자료를 추가하는 방법은 없다.)

그래서 리스트를 붙이는 연산자인::는 약간 특이하게 동작하는데 오른쪽 매개변수에 대해 메소드를 호출하는 식으로 동작한다. 즉

        "abc" :: Nil

위의 코드는 실제로는 아래처럼 동작하고, 새로 만든 노드를 리턴한다.

        Nil.::("abc")

이해는 하겠는데 뭔가 사파스럽다.

Posted by lispholic
,