러스트 매크로 :
품격이 없음
무식하게 소스를 스트링으로 해체해서 갖고놈 (유아적 발상)
근본이 없고 미개하며 야만적임
IDE가 지원을 포기했음
제네릭이랑 따로 놀고있음
C++ TMP :
제네릭 프로그래밍인 템플릿에 근거했기 때문에 전통과 유구한 역사가 있음
코드가 우아하고 고급스러움
코드 마개조를 할 때에도 품격을 잃지 않고 타입레벨의 예의범절을 지킴
constexpr 등으로 런타임 코드들과 친절한 소통이 가능함
러스트 매크로 :
품격이 없음
무식하게 소스를 스트링으로 해체해서 갖고놈 (유아적 발상)
근본이 없고 미개하며 야만적임
IDE가 지원을 포기했음
제네릭이랑 따로 놀고있음
C++ TMP :
제네릭 프로그래밍인 템플릿에 근거했기 때문에 전통과 유구한 역사가 있음
코드가 우아하고 고급스러움
코드 마개조를 할 때에도 품격을 잃지 않고 타입레벨의 예의범절을 지킴
constexpr 등으로 런타임 코드들과 친절한 소통이 가능함
간단한 매크로를 짤땐 우아하다가 복잡도가 증가하면 proc-macro 가 필요하게 되고 statement 에 까지 박아넣으려고 proc-macro-hack 까지 썼을땐 고통스러웠음. 러스트 매크로는 아직 확실히 별로야
템플릿이랑 비교하려면 trait를 가져와야지 왜 매크로
메타 프로그래밍 이야기잖아
매크로는 그냥 타이핑 줄여주는 용도지 타입레벨에선 아무 의미없는데
아 빌드 타임에 뭐 할때도 필요하긴함 include_str!같은거
proc_macro 같은거 생각해보셈
무슨 필드 만지고 이런거 말하는거임? 그건 템플릿이 아니라 RTTI랑 비교해야하지 않냐
C#으로치면 trait는 interface고 derive는 Reflection인데
걍 TMP의 표현력에 대응하는게 러스트 매크로라는 말인데.. 러스트 trait이랑 제네릭만으로 TMP랑 같은일을 못하잖슴
러스트에서 컴파일 재귀도 매크로로 하는거잖슴
반대로 템플릿만으로 proc macro랑 같은일 못하잖아 역할로 비교해야 맞지
걍 둘다 메타프로그래밍 수단으로서 말한거
내가 몰라서 그런데 TMP로 구조체 필드단위로 접근가능함?
RTTI같은거 안쓰고
근데 러스트가 엄밀히 따지면 코드파스트리를 직접 편집하니까 더 표현력이 높긴 하겠지..
근데 메타프로그래밍하는게 꼭 정적 리플렉션만 있는건 아니잖슴
저건 REPL_TYPE 매크로 쓰잖아
유저가 직접 REFL_FIELD로 필드정보 입력하자너
러스트에서 proc-macro 쓰는 대부분의 경우가 derive로 저런거 알아서 만들어서 특정 trait 구현시키기 위함임
코드가 우아하고 아름답다?..(흠)
코드량만 늘리고 뭐 자동으로 되게 해주는건 하나도 없으면서 에러는 인간이 이해할 수 없게 만드는 C++ 템플릿 말이냐? 템플릿 노답이라 10년째 콘셉트 만들고 있는건 알고 있지?