-
Meta programmingcoding 2015. 7. 21. 18:25
메타프로그래밍은 코드로 코드를 생성하는 것이다. 코드를 데이터로 처리한다. 코드를 실행한 결과로 데이터 대신 코드가 리턴된다. 일명 Macro 라고도 한다. 이런 특성을 활용해 비슷한 코드를 줄일 수 있고 DSL(Domain specific language)를 만들 수 있다. 인공지능이나 분석에도 유리하다. 함수형 언어들이 대체적으로 메타프로그래밍을 지원한다.
메타프로그래밍은 두 가지가 있다. 첫 째는 코드로 코드를 생성하는 것이다. 둘 째는 코드로 코드를 생성하고 생성된 코드로 다시 코드를 생성한다. 첫 째는 한단계만 생성하는 것이고 둘 째는 몇 단계로 계속 생성하는 것이다. 보통 한단계 메타프로그래밍은 지원하는데 다중 메타프로그래밍을 지원하는 경우는 드물다. LISP, Clojure가 다중 메타프로그래밍이 가능하다.
함수형 언어의 절정은 Macro다. 잘 쓰면 개발자의 상상력을 무한히 펼칠 수 있다. 그러나 조심해야 한다. Macro는 작은 입력의 차이가 큰 결과의 차이를 만들기 때문이다. 자동으로 생성된 코드가 무슨 짓을 할지 모른다.
'coding' 카테고리의 다른 글
OkHttp VS Apache HttpClient (5) 2022.02.18