월별 글 목록: 2017년 5월월

Scala

스칼라를 대략 2년정도 써오고 있는데 (그러고 보니 참 오래 됐구나…) 꽤 만족스럽다. 하지만 요즘은 스칼라를 많이 쓰면 쓸수록 자바(정확히 말하면 jvm)에 대한 공부를 더 하고 싶다는 욕심이 생긴다. 스칼라 자체가 jvm 위에서 동작하게 만들어져 있기 때문에 내가 작성한 코드가 실제 jvm위에서 어떻게 작동하는 지에 대해서는 거의 알지 못한다. 그래서 코드 최적화를 할 때 어느 부분을 바꿔야 더 성능이 향상될 지에 대해서는 대부분 감으로 때려 맞추는 경향이 있다. 기계어로 컴파일 되는 언어에서 느린 오퍼레이션들 (메모리 할당, 불필요한 루프문, 객체 생성, generic 사용…) 은 대체적으로 jvm에서도 느리기 때문에 어찌어찌 끼워 맞출 수는 있지만 완벽하게 이해하지 못하는 코드를 작동시키는 것은 일반적으로 언제나 불안하기 때문에. 그러고 보면 학교에 있을 때 cpu 아키텍쳐나 리눅스 커널에 대해서는 배웠지만 jvm에 대해서는 전혀 자세히 가르쳐 주지 않았기 때문에 여태 알 필요가 없었던 것 같다. 하지만 앞에서 말했듯 스칼라는 정말 매력적인 언어이고 이 언어를 더 잘 쓰기 위해서는 넘어야 할 산인 듯 하다. 이런건 어떻게 공부해야 하지?