얼마전 제가 있는 곳의 OB 선배님이 오셔서 여러가지 말씀을 하셨습니다. 그런데 하신 말씀중에 약간은 좀 놀라운 얘기를 듣고 여러분은 어떠신지 해서

이렇게 글을 올려봅니다. 그 선배님이 이런 질문을 하셨습니다.

'여러분은 자신이 짠 코드를 컴파일해보는 시기가 언제인가요?'

저 같은 경우는 어느 한 기능에 대해 여러가지 상황들을 생각하고 정리하여 코딩을 다 해본 후 어느정도 맞겠구나 라는 생각이 되면 컴파일을 하고

그 기능이 제가 생각한 대로 되는지 확인하기 위해 테스트 & 디버깅을 해봅니다. 그리고 이어서 이런 질문을 하시더라구요.

'여러분은 자신이 짠 코드에 대해 어느정도 확신을 가지고 컴파일을 하시나요?'

굉장한 실력자가 아닌 이상, 아무래도 100% 확신을 가지고 컴파일 하시는 분은 없으리라 생각됩니다.(아닌가;;;)

문법적인 실수가 있을 수도 있고, 논리적으로 잘못 생각한 부분도 있을 수 있습니다. 저 같은 경우는 80% 정도 확신을 가지고 컴파일을 합니다.

그러면서 다음과 같은 얘기를 하시더군요.

'지금 제가 일하는 곳에서는 2GB가 되는 소스를 주면서 그중 원하는 정보를 추출하는 코드를 작성해보라고 하더군요. 예를 들어 C 파일에서

전역으로 선언된 변수의 정보를 cpp 파일에서 추출해보라는 겁니다. 전역변수니까 extern을 사용하면 되겠지 라는 생각으로 코드를 작성하고

컴파일을 했습니다. 그런데 컴파일 시간이 무려 6시간 이었습니다;; 두번 컴파일하면 퇴근해야 합니다;;;

컴파일이 끝나고 오류가 나오더군요;; 저 전역 변수를 찾을 수 없다나;; 그래서 c와 cpp 파일의 차이때문인가 라는 생각으로 extern "C" 를 사용하여

해보았습니다. 두려운 마음으로 컴파일... 안되더군요.. 여러분은 C 언어를 얼마나 알고 코딩하십니까? C 컴파일러에 대해 얼마나 알고 코딩하십니까?

자신의 작성한 프로그램이 메모리에 어떻게 올라가는지 알고 계십니까?

컴파일시간이 6시간이나 되는 소스에서 추가 코딩을 해야 하는 상황이라면, 정확히 알고 코딩하셔야 합니다. 조금 추가해보고 컴파일하고, 논리적으로

많이 생각해보지 않고 컴파일해보고 하는 습관은 좋은 습관이 아닙니다. 물론 너무 많은 코드를 테스트도 해보지 않고 계속 작성하는 것 역시 좋은 습관은

아닙니다. 제가 말씀드리고자 하는 것은 언어에 대해 정확히 알려고 노력하시라는 것, 컴파일러가 자신의 코드를 어떻게 메모리에 맵핑시키면서 exe 파일을

만들어내는지 아시라는 것, 컴파일러가 자신의 코드를 exe 파일로 만들때 어떤 과정을 거치며, 그 과정은 어떻게 이루어지는지 아시라는 것입니다. '


이 선배님의 말씀이 100% 맞다고 할 수도 없지만, 공감가는 부분은 많았습니다. 여러분은 어떻습니까? 자신이 처음부터 개발하는 프로젝트가 아닌 상황이고,

그 코드의 양은 대용량이어서 컴파일 시간이 아주 오래걸리는 상황입니다. 위의 두 질문에 대해 여러분의 의견을 듣고 싶습니다.