잠깐 보니까 김포픈가가 메타프로그래밍을 깐다 하고 우왕좌왕 하더라 (대충 보다가 맘)


메타 프로그래밍 개념이 없는데, 거기게 대해서 비판을 하려니까 큰 어려움을 겪는 것 같더군.



메타 프로그래밍이란, 니가 어떤 문제를 풀때 그 문제에 대한 프로그래밍을 하는 대신에 (다른 차원)에 대해서 프로그래밍 해서 문제를 쉽게 풀어나가는 테크닉이여.


하나의 예를 들면 매크로 같은 거지. 니가 클로져 같은 언어에 능숙해지면 보통 문제를 해결하려 할때 먼저 프로그래밍 언어를 문제 도메인에 적합한 언어로 확장하는데, 이런걸 메타 프로그래밍이라 하는 거여. 이렇게 문제 도메인 전용 언어를 만들면 더 간단하고 개념적으로 이해하기 쉬운게 보통이고, 내부적으로는 코드 제네레이션을 해야 되는 거여. 즉, 니가 두어줄 코딩하면 수십 수백줄 코드가 맨 밑바닦 언어로 자동 생성한다고나 할까? 이렇게 되는 거여.


니가 이 개념을 잘 알려면, 프로그래밍 언어를 확장해서 다른 언어로 만드는 과정을 해봐야 된다. 근데 보통의 프로그래밍 언어로는 이게 쉽지 않지.


클로져 같은 언어는 이게 쉽게 됨. 니들이 뒤를 캐보면 알겠지만, 예전에 잘나가던 프로그래머들 중에  다른 언어에서 클로져로 전향한 프로그래머들이 있는데, 메타 프로그래밍이 쉽다는 것도 그 이유 중 하나지. 니가 존나 능력이 되는 프로그래머라면 거기에 맞는 툴을 써야 된다.


물론 니가 존뉴비면 이런 사실을 알수도 없거니와, 알 필요도 없기 때문에 걍 패스하면 된다.




한줄요약: 현대적 프로그래밍 언어의 선택이란, 명확하면서도 중요한 거여