잠깐 보니까 김포픈가가 메타프로그래밍을 깐다 하고 우왕좌왕 하더라 (대충 보다가 맘)
메타 프로그래밍 개념이 없는데, 거기게 대해서 비판을 하려니까 큰 어려움을 겪는 것 같더군.
메타 프로그래밍이란, 니가 어떤 문제를 풀때 그 문제에 대한 프로그래밍을 하는 대신에 (다른 차원)에 대해서 프로그래밍 해서 문제를 쉽게 풀어나가는 테크닉이여.
하나의 예를 들면 매크로 같은 거지. 니가 클로져 같은 언어에 능숙해지면 보통 문제를 해결하려 할때 먼저 프로그래밍 언어를 문제 도메인에 적합한 언어로 확장하는데, 이런걸 메타 프로그래밍이라 하는 거여. 이렇게 문제 도메인 전용 언어를 만들면 더 간단하고 개념적으로 이해하기 쉬운게 보통이고, 내부적으로는 코드 제네레이션을 해야 되는 거여. 즉, 니가 두어줄 코딩하면 수십 수백줄 코드가 맨 밑바닦 언어로 자동 생성한다고나 할까? 이렇게 되는 거여.
니가 이 개념을 잘 알려면, 프로그래밍 언어를 확장해서 다른 언어로 만드는 과정을 해봐야 된다. 근데 보통의 프로그래밍 언어로는 이게 쉽지 않지.
클로져 같은 언어는 이게 쉽게 됨. 니들이 뒤를 캐보면 알겠지만, 예전에 잘나가던 프로그래머들 중에 다른 언어에서 클로져로 전향한 프로그래머들이 있는데, 메타 프로그래밍이 쉽다는 것도 그 이유 중 하나지. 니가 존나 능력이 되는 프로그래머라면 거기에 맞는 툴을 써야 된다.
물론 니가 존뉴비면 이런 사실을 알수도 없거니와, 알 필요도 없기 때문에 걍 패스하면 된다.
한줄요약: 현대적 프로그래밍 언어의 선택이란, 명확하면서도 중요한 거여
사실 C++을 깊이 알진 못하지만 C++의 메타프로그래밍이나 루비나 리습에서의 eval같은 애들이 하는 역할 이런건 관심있게 본적이 있어서요. 재밌겠단 생각은 했는데 오늘 김포프 영상을 보니까 그게 과연 필요할까 생각하게 되더라구요. 메타프로그래밍의 역할이 코드 중복을 방지하거나, 런타임에선 굉장히 복잡하게 돌아가는 일을 심플하게 평가단계에서 끝내주는 것이기 때문에 매력적인거잖아요. 근데 실무자라고 하는 사람이 나와서 이런 일을 하는 경우가 거의 없다 이런식으로 말해버리니까, 경험이 부족한 사람으로서 혼란스럽다고나 할까...
러스트는 그냥 대놓고 쓰라고 있던데
메타 프로그래밍 결과물을 이해하려면 도메인에 대해서 알아야 되는게 보통이기 때문에 이해하기 어려운 것은 사실이다. 하지만, 톱 프로그래머라면 도메인을 이해하고 남이 써논 메타 프로그래밍도 이해할 수 있고 비판할 수 있는 능력이 되야 됨. 물론 톱이 아니라면 톱이 만들어 논걸 그냥 갖다 쓰기에 급급하겠지만. 요약해주면 능력에 맞는 프로그래밍을 하되, 니가 무능하다고 능력자가 만들어 놓은 것이 무용하다는 궤변은 펴지 말것
응 Lisp 쟁이들이 Clojure 를 많이 쓰고 있어. 근데 Lisp 커뮤니티에서도 매크로에 대해선 Lisp 의 꽃이라고 말하는 사람이 있는가하면, 필요 이상으로 남발하면 스파게티보다 더 거지같은 코드 된다고 까는 사람도 있고 여러가지야.
전역용사/아무리 그래봐야 메타프로그래밍은 리스프 계열의 파워를 따라 갈 수가 없다.
ㅇㅇ/니 말이 바로 조 위에서 내가 한 말이다.
클로져 톱 프로그래머들이 만들어 놓은 기능들은 대부분 메타프로그래밍을 한 것 들이지. 조팝들은 촉수할 수 없는 코딩이여 (물론 나도 도메인 지식이 없어서 손 못댐)
메타프로그래밍은 일단 제대로 알기 전까지는 쓰고싶지 않은 놈들중에 하나예요. 워낙 말들 하는게 극명한데 결론은 다 비슷하더라구요 니가 초 고수가 되기 전까지는 쓰지마라 뭐 이런 결론?
틀닦이 아파트 노인정 김여사님이랑 등산 갔다 사우나하고 왔니? ㅋㅋㅋ 그래 나대지 말고 얌전히 갤러리 주제에 맞는 글이나 쓰렴 우쮸쮸~
야이미친이 뭘 좀 아네 본문은 길어서 안읽었지만 매크로를 예로 드는 순간 뭘 알고 얘기하는 놈인걸 단박에 느낄 수 있었다 관련도 없는거 주절주절 장황하게 나열하는 프갤놈들보다 실력자인듯
그 dsl이라는게 장점이자 단점이 되는거지. 누가봐고 쉽고 명확하면 장점이지만 너만의 언어로 전혀 이해할수없는 코드를 만들어낼 가능성도 다분히 크기 때문에 주의를 해야되는것. 이런 분야에서는 고수와 하수의 차이가 극명하게 드러남
ㄴ 얌마 정신차려라. Dsl이란 니가 그 도메인 지식이 없으면 만드는 것도 이해하는 것도 불가능한거여. 니가 그 도메인 지식의 뭐를 모르는지 알면 그걸 배우고 이해하려 해야지 조또 모르는 데 다른 사람이 해논걸 보고 이해하려 든다는 자체가 조팝 인증이여. 얼서 조팝들 불평소리만 줃어듣고 나불거려?