
고등학교 시절이나 정보처리기사, 대학교에서 배운내용을 되짚어보겠다.
다양한 프로그래밍언어는 사람이 해석할 수 있는 언어로 되어있지만
컴퓨터에서 그 고급언어를 처리하기 위해서는 컴퓨터가 알아들을 수 있도록변환이 필요하다.
고급언어를 컴퓨터가 받아들일 수 있도록 변환해주는 시스템을 컴파일러라고 알고있다.
[코딩 - 컴파일링 - 기계어로변환 - 시스템 처리]
자, 알고있는 지식과 인터넷에 나와있는 내용을 대조 해보자.

다들 많이 찾는 위키백과에서는 다음과 같이 정의를 하고있다.
우선 내가 알고 있는 지식과 크게 다르지 않다고 볼 수 있다.
하지만, 여기서 끝나면 겉핥기 이기때문에 더 알아보자...
컴파일러는 말 그대로 번역을 해주는 과정이라고 생각하면 되는데,
각 분류를 하자면 네가지로 나눌 수 있다고 한다.
원시 코드를 바로 기계어로 변환하는 정적 컴파일(Static Compilation)
원시 코드를 바이트코드로 변환하는 바이트코드 컴파일(Bytecode Compilation)
바이트코드 등의 중간 코드를 기계어로 변환하는 AOT 컴파일(Ahead-Of-Time Compilation)
실행시 최초 한 번에 한해 컴파일을 거치는 JIT 컴파일(Just-In-Time Compilation)
위 네가지로 분류가 된다고 하는데 통상적으로 배우는 컴파일은 첫번째인 정적컴파일에 해당한다.
종류를 알았으면 실행단계를 알아 보겠다.
컴파일러의 실행 단계
구문분석 : 사용자가 작성한 구문코드를 분석하고 추상구문 트리를 ㅇ성하는데, 맞지 않는 코드같은경우는 사용자에게 알려준다.(Syntax Error,, 등등)
최적화 : 생성한 추상구문을 최적화 단계를 거친다.
코드 생성 : 최적화 단계를 거친 코드를 목적코드를 생성한다.
링킹 : 여러 목적코드를 묶어 하나의 실행파일을 생성한다.
위와 같이 실행단계가 이루어지는 것을 확인했다.
이번 키워드로는 'Compiler'라는 것을 알아보았다.
고등학교 시절에도 배우고, 대학교 시절에도 배웠다.
그리고 정보처리기능사와 정보처리기사를 취득할 때도 배웠다.
하지만 단순히 점수를 높게 맞거나 학점을위한 과정이었을 뿐, 심도있게
이 기술에 대해서 직접 알아본것은 처음이었다.
직접 검색을 하고 관련 자료들을 찾아보면서 새로운 지식을 얻는 기회도
되었고, 알고있는 지식이 올바른지 아닌지를 확인하는 기회도 되었다.
처음엔 '이정도만 알면 되겠지', '이정도면 괜찮지 않나?' 라는
안일한 생각을 했던 것 같다.
더욱 공부하고 발전하며 공부를 해야겠다.