최근 회사에서 하는 일은, GVM(java)으로 된 코드를 BREW(C?)로 바꾸는 것이다. 아는 사람들은 알겠지만 java는 편리한 API가 있기 때문에 따로 삽질을 해야만 하는 경우를 덜어준다. 가령 배열의 길이를 배열이름.len으로 구할 수 있는 것이라든가 util의 Random 클래스라든가...
그런데 옮길 때는 편리한 API를 쓸 수록 힘들어진다. 그리하여 어쩔 수 없이 함수의 인자로 배열의 길이를 넘긴다든가 하는 극약처방을 내리기도 한다. 가져다 써야하는 함수인데 java 코드만 보고 썼다가는 컴파일 단계에서 '이 헤더 파일에는 그렇게 안 되어 있으니 확인하시오'라는 에러메시지가 뜰테니까.
그냥 코드 옮기면서 고생하고 있는 점... 아무 생각없이 기계적으로 옮긴다고 해서 쉽다고는 하지만, java의 Object 클래스가 쓰이는 경우는 void 포인터 어레이를 사용해서 지시를 하고, 어떤 동작을 하는지 API를 뒤져서 알아내서 똑같은 일을 하는 함수를 '따로' 만들어야 하므로 생각보다 어려웠다. 클래스 설계하고 밑바닥부터 만드는 건 훨씬 어렵겠지 ? |