CS 6120: 고급 컴파일러 자기주도 온라인 강좌 (2020)

12 hours ago 4

Hacker News 의견들
  • 동적 컴파일러 부분은 거의 전부 트레이스 컴파일에 대한 내용에 가깝다. 일반적으로 트레이스 컴파일은 막다른 길이었고 여러 번 버려져 왔음
    여기서 더 중요한 개념은 타입 피드백, 추측 실행과 역최적화, 빠른 컴파일러와 계층화라고 봄
    강의 전체는 좋아 보이고, 이렇게 많은 자료가 온라인에 공개된 것도 훌륭함

    • 트레이싱은 역사적으로 조직 원리로는 실용적이지 않다는 게 드러났지만, 배워두면 사고를 넓혀주는 개념이라고 생각함
      말한 것처럼 산업계에서 실제로 잘 작동하는 것에 대한 맥락을 더 제공하고 싶음
    • PyTorch의 torch.compile 작업을 하고 있는데, 이것도 트레이싱 컴파일러임
      다만 이 영역은 꽤 좁을 수 있고, 전통적인 컴파일러와도 많이 달라서 우리가 하는 일 중 일부를 보면 꽤 불편해할지도 모름
    • JAX도 트레이싱 컴파일러
      물론 TraceMonkey나 LuaJIT와는 문제 공간이 극단적으로 다르다는 건 알고 있음
    • TraceMonkey 논문이 박사 자격시험 읽기 목록에 있었고, 마침 그 시험 시기가 TraceMonkey가 SpiderMonkey에서 제거되던 때와 겹쳤음
      당시 개발자 중 한 명, 아마 Jason Orendorff였던 사람과 이야기했는데, 트레이싱은 잘 안 풀린다고 했고, 제한적인 조건에서는 가능할 수도 있다고 봤음
      다만 그 조건이 무엇이었는지는 완전히 잊어버림
    • 트레이스 컴파일은 막다른 길이 아님
      LuaJIT는 큰 프로그램에서도, 수억 대의 서버와 기기에서도 잘 작동함
      학자들조차 이 상투적인 얘기를 계속 반복하는 게 정말 안타까움. 모르는 게 약이라는 말이 떠오름
  • 이전 관련 글들:
    CS 6120: Advanced Compilers: The Self-Guided Online Course - https://news.ycombinator.com/item?id=39577878 - 2024년 3월, 댓글 102개
    Advanced Compilers: Self-Guided Online Course - https://news.ycombinator.com/item?id=35130975 - 2023년 3월, 댓글 82개
    Advanced Compilers: Self-Guided Online Course - https://news.ycombinator.com/item?id=25386756 - 2020년 12월, 댓글 232개

  • 이 강의가 왜 고급인지 조금 헷갈림. 대부분의 주제, 예를 들어 죽은 코드 제거, 데이터 흐름, 지배자 분석, SSA 형식은 컴파일러 첫 강의에 들어갈 것처럼 보임

    • 강의 번호가 꽤 규칙적이라 “입문 컴파일러” 강의가 뭔지 찾아볼 수 있음: https://www.cs.cornell.edu/courses/cs4120/2026sp/?schedule
      짧게 말하면 컴파일러는 사실상 두 과목으로 나뉘고, 첫 과목은 컴파일러를 만들기 위한 최소 요소인 어휘 분석, 구문 분석, 코드 생성, 레지스터 할당을 다룸
      두 번째 과목은 최적화 컴파일러를 만드는 방법에 해당함
    • 관련 자료를 엄청 많이 읽었지만, 그런 내용은 대부분에 포함되지 않았음
      실제로 컴파일러든 인터프리터든 백엔드는 거의 항상 “독자에게 맡기는 연습문제”로 남겨짐
      클로저를 만드는 법, 환경을 추적하는 법, 패턴 매칭, 메모리 표현 등 아직 찾아내야 할 게 얼마나 많은지 상상하기 어려울 정도임
      흥미로운 모든 것은 직접 찾아봐야 함
      추신: 이건 그중 한 해 분량일 뿐임: https://gist.githubusercontent.com/mamcx/e1743571b9a1ea163a7...
    • 비전문가들은 대개 구문 분석부터 시작하고 백엔드를 접하지 못하는 경우가 많다고 봄
      인터프리터와 컴파일러 책을 두 권 읽었는데, 백엔드는 많이 다루지 않았음
      아마 백엔드 입문 강의에 가까운 것 아닐까 싶음
    • 그럼 무엇이 고급인지 궁금함. 죽은 코드 제거, 데이터 흐름, SSA, 명령어 선택, 레지스터 할당을 제대로 다루면 사실상 백엔드의 98% 에 가깝다
  • 이런 식의 자기 주도형 온라인 대학 수준 컴퓨터과학 강의가 또 있을까?

    • 수십 개는 있음. “mooc”로 검색하면 됨
      어떤 교수들은 “mooc” 프레임워크 밖에서도 강의와 과제를 공개함
      댓글로 질문했을 때 답해준 교수도 있었음. 인터넷은 아직 꽤 멋질 때가 있음
  • Nora Sandler의 Writing a C compiler와 비교했을 때, 독자가 얻을 수 있는 이득은 어떻게 다를까?

    • 그 책은 학부 수준 컴파일러 강의에서 얻는 내용에 더 가깝고, 이 강의는 그보다 더 고급 내용을 다룸
      초보자나 취미로 파보는 사람이라면 그 책이나 비슷한 수준의 자료로 시작한 뒤, 이 강의를 시도하면서 빈틈을 채우는 편이 좋음
  • 고급 단계로 들어가기 전에 볼 수 있는 기초 컴파일러 자기 주도형 강의도 있을까?

  • Rust 컴파일러를 다룬 팟캐스트를 봤는데, 시스템을 크래시시킬 수 있는 코드인지 판단하는 데 어떤 지점에서는 기계학습 알고리즘이 들어간다고 했던 것 같음

    • 그런 얘기는 들어본 적이 없고 거의 틀렸다고 확신함. 물론 “기계학습”이라는 말이 넓긴 함
      출처가 있을까?
  • alexia massalin이 요즘 microunity 특허 로열티를 받는 것 말고 뭘 하고 있는지 정말 궁금함

Read Entire Article