뻘소리
메타프로그래밍
멜데스
2016. 8. 18. 12:06
메타프로그래밍이란 자기 자신 혹은 다른 컴퓨터 프로그램을 데이터로 처리함으로써 프로그램을 작성·수정하는 프로그램을 작성하는 것을 말한다. 넓은 의미에서, 런 타임에 수행해야 할 작업의 일부를 컴파일 타임 동안 수행하는 프로그램을 말하기도 한다.
메타 프로그래밍에 이용되는 언어를 메타 언어라고 하고, 메타 프로그래밍의 대상이 되는 언어를 대상 언어라고 한다. 한 프로그래밍 언어가 자기 자신의 메타 언어가 되는 것을 반영이라고 한다.
메타 프로그래밍이 동작하는 방식은 세 가지 종류가 있다[출처 필요]. 첫째 방식은, 런타임 엔진의 코드를 API를 통해 프로그램에 노출시키는 방식이다. 둘째 방식은, 문자열이나 혹은 다른 형태로 된 프로그래밍 명령을동적으로 수행시키는 방식이다. 둘째 방식을 이용하면 프로그램이 프로그램을 작성하게 할 수 있다[1]. 한 언어가 이 두 방식을 동시에 취할 수도 있으나, 대개의 언어들은 둘 중 한 방식으로 치우치는 경향이 있다.
셋째 방식은, 해당 언어의 범주를 완전히 벗어나는 것이다. 범용 프로그램 변환(program transformation) 시스템은 일반적인 메타프로그래밍을 직접 구현한다. 이와 같은 방식은 해당 언어에서 메타 프로그램 지원 여부와 상관없이 거의 모든 대상 언어에 적용될 수 있다.
출처 - 위키