728x90
반응형
메타프로그래밍
메타프로그래밍(Metaprogramming)이란 자기 자신 혹은 다른 컴퓨터 프로그램을 데이터로 취급하며 프로그램을 작성·수정하는 것을 말한다. 넓은 의미에서, 런타임에 수행해야 할 작업의 일부를 컴파일 타임 동안 수행하는 프로그램을 말하기도 한다.
메타 프로그래밍에 이용되는 언어를 메타 언어라고 하고, 메타 프로그래밍의 대상이 되는 언어를 대상 언어라고 한다. 한 프로그래밍 언어가 자기 자신의 메타 언어가 되는 것을 반영이라고 한다. 메타 프로그래밍이 동작하는 방식은 세 가지 종류가 있다 -위키백과-
컴파일 되었을때 1010101와 같이 컴퓨터가 이해할 수 있는 언어로 변환 되는것이 아닌
코드를 수정하거나 생성하는 프로그래밍이라고 볼 수 있다.
정확하게 어떤 기법과 기술이라는것이 아닌 그러한 개념 전반을 메타 프로그래밍이라고 부른다.
어떤 프로그램이 다른 언어로 또는 같은 언어로 작성된 코드를 수정하는것이 메타 프로그래밍 범주에 들어간다.
- 템플릿 메타 프로그래밍 : 컴파일러가 컴파일 할떄 코드를 생성하여 일종의 코드 생성 기능
- 리플렉션 : 런타임시 실행되며 실행 중인 코드를 분삭하여 동적으로 코드를 생성하거나 조작
장단점
장점
- 컴파일 타임에 최적화가 이루어지므로 결과 실행 시 수행 속도가 빨라질 수 있다.
- 무결성, 소스 코드의 재활용 등으로 복붙등의 과정을 줄일 수 있어 무결성 및 관리성이 높아진다.
- 여러 가지 기능을 템플릿에 정의해서 작성하고 이를 결과 언어로 적절하게 표현하기 때문에 기능상 확장을 손쉽게 가져 올 수 있다.
단점
- 컴파일에 의해서 새로운 코드가 생성되는 구조이기 때문에 컴파일에 대한 의존도가 높아지며 이식성의 문제가 발생 할 수 있다.
- 일반적으로 템플릿 메타프로그래밍은 또 다른 형식으로 프로그래밍하기 때문에 코드 자체가 난해진다.( 해독성 의 문제)
메타프로그래밍의 예
타입스크립트
- 자바스크립트에 타입을 추가
- 타입 정보를 사용하여 컴파일 타임에 코드를 검증하여 높은 안정성 제
- 타입스크립트로 작성된 코드를 컴파일 하면 기계어가 아닌 자바스크립트 코드가 나온다.
- complie 대신에 transplie이라고도 한다.
자바, 스프링의 어노테이이션
- 사전적 의미로는 주석이라는 뜻을 가지고 있다.
- 소스 코드에 추가해서 사용하는 메타 데이터의 일종이며 테이터 처리 방법이 아닌 컴파일 과정과 실행 과정에서 코드를 어떻게 처리해야 하는지를 알려주기 위한 정보다.
- 컴파일러에게 코드 문법체크 하도록 정보 제공
- 런타임시 특정 기능을 실행하도록 정보 제공
- 실행, 배포시 특정 코드를 자동으로 생성할 수 있도록 정보 제공
반응형
'Dev > etc' 카테고리의 다른 글
download all files from an object in MinIO (0) | 2023.03.29 |
---|---|
함수형 프로그래밍 (0) | 2023.02.23 |
데이터 중심 아키텍처(DB/SQL 중심) (0) | 2023.02.08 |
데코레이터 패턴 (0) | 2022.12.02 |
전략패턴 (0) | 2022.12.02 |