C++ Insights: 컴파일러 눈으로 본 C++ 소스, GitHub 스타 4.5k
- C++ Insights는 C++ 소스 코드를 컴파일러가 해석한 형태로 풀어서 보여주는 도구. GitHub 스타 4.5k, 포크 266, 커밋 1,165개, 브랜치 5개.
- 웹 버전 cppinsights.io에서 설치 없이 코드를 붙여넣어 변환 결과를 확인할 수 있음. 저장소에는 Clang 21 지원과 bash/zsh/fish 자동완성 스크립트가 들어감.
- 토론에서 README 예제에 람다 캡처를 넣었으면 좋겠다는 요청이 나옴. 컴파일러 변환이 가장 극적으로 드러나는 부분이라며 여러 댓글이 동의함.
- 댓글 작성자가 C++ → Clang → JS 트랜스파일러를 직접 만들어 HTML 위에서 값 변화를 단계별로 보여준다고 소개함. 입력값을 바꾸면 JS 레이어가 다시 계산해 값이 갱신됨.
- Benzi라는 언어 무관 도구를 만든 사람도 등장. 9개 언어를 지원하지만 C++ 쪽 깊이는 C++ Insights가 더 깊다고 봄.
Hacker News opinions
도구는 cppinsights.io에서 바로 쓸 수 있음. 설치 없이 코드 붙여넣으면 컴파일러가 본 모습이 나옴.
README 예제에 람다 캡처가 있었으면 좋겠음. 진짜 컴파일러 마법은 거기서 터지는데.
ㄴ 맞는 말임.
ㄴ 샘플 코드를 툴에 넣어보면 직접 볼 수 있음.
이런 거 진짜 좋아함. C++ → Clang → JS 트랜스파일러를 직접 만들어서 HTML 위에서 값 변화를 단계별로 보여주게 했음. 입력값을 바꾸면 JS 레이어가 다시 계산해서 값이 바뀌는 것도 보임. 그게 아니면 상태 변화만 뽑아서 CSV로 파싱했을 텐데 트랜스파일까지 한 이유가 그거임.
C++ 하면서 '컴파일러가 대체 뭘 생각하는 거야' 싶었던 적이 많은데 이거 써봐야겠음.
나 이걸로 람다 이해했음. 좋은 도구임.
도구는 좋은데 언어가 이런 도구를 필요로 한다는 게 좀 씁쓸함. 내 코드의 첫 해석이 당연히 보여야 하는 거 아닌가. 최적화나 컴파일러 트릭 문제가 아니라 언어 자체 문제임. 수학처럼 생각을 형식화하는 도구여야 하는데 변호사가 되어야 이해할 수 있으면 곤란하지 않나.
ㄴ C++만 그런 건 아님. 파이썬 데코레이터, 러스트 매크로도 마찬가지고 웬만한 언어 컴파일러는 안 보이는 코드를 만들어냄. C++이 그 양이 많고 추측하기 어려울 뿐임.
ㄴ 언어가 필요로 하는 게 아님. 입문자용 교육 도구임. 익숙해지면 자동으로 처리돼서 문제를 생각할 때 신경 안 씀. POD 타입의 복사 생성자나 operator= 디슈가링, static_cast 같은 건 원래 의식하지 않음.
ㄴ 무슨 언어가 컴파일이 단순한데. 컴파일 언어가 싫은 건가.
Benzi라는 걸 만들었는데 같은 걸 언어 무관하게 함. 9개 언어를 지원함. 다만 C++ 깊이는 이쪽이 더 깊을 듯.