/ FRAGMENTARY-KNOWLEDGE

What is Meta Programming?

Introduction

특정 형태의 코드를 작성한 후 컴파일하면 그 코드가 의미하는 다른언어의 코드( JavaC++ )가 생성되는 프로그래밍을 지칭합니다.


메타프로그래밍 이란?

메타프로그래밍( template metaprogramming )이라고 불리는 프로그래밍 기법은 template을 기반으로 compiler에게 다른 언어의 프로그램 코드를 생성하도록 하는 방식을 지칭합니다. 결과물이 machine code가 아닌 다른 프로그래밍언어로 전환되는 것이기 때문에 compiler라는 용어대신에 transpiler라는 표현을 쓰기도 합니다.


장점과 단점

이런 Meta Programming은 다음과 같은 장점과 단점을 가지고 있습니다.

Advantage

  • 컴파일 타임에 최적화가 이루어지고 결과적으로 실행 시 수행속도가 빨라질 수 있습니다.
  • 일반화 프로그래밍( Generic Programming )이 가능합니다. 프로그래머는 처리할 구조와 데이터에 집중하고 컴파일러에 의해 특정 언어로 변환이 되는 구조이기 때문입니다.
  • 결과로 도출되는 언어가 갖지 못하는 여러가지 개념들을 template에 정의해서 작성하고 이를 결과언어로 적절하게 표현하여 기능상의 확장을 손쉽게 가져올 수 있습니다.

Disadvantage

  • 일반적으로 Template Metaprogramming은 또 다른 형식으로 프로그래밍 하기 때문에 코드 자체가 더 난해합니다. 즉, Readability에 문제가 있습니다.
  • compiler에 의해서 새로운 코드가 생성되는 구조이기 때문에 compiler에 대한 의존도가 상당히 높습니다. 따라서 이식성의 문제가 발생할 여지를 가지고 있습니다.

End.