|
| 1 | +--- |
| 2 | +title: PLDI 2025 여행기 |
| 3 | +date: 2025-06-28 |
| 4 | +author: Bongjun Jang |
| 5 | +kor_author: 장봉준 |
| 6 | +tags: |
| 7 | + - Trip |
| 8 | + - PLDI2025 |
| 9 | +classes: wide |
| 10 | +--- |
| 11 | + |
| 12 | +|  | |
| 13 | +| :-: | |
| 14 | +|<b> 학회장과 광화문이 가까워 밤에 뛰러 나가는 겸 구경갈 수 있었다 </b>| |
| 15 | + |
| 16 | +PLDI 2025는 태어나 처음으로 참가하는 국제학회였다. |
| 17 | +그 중에서도 세계 최고 프로그래밍 언어 학회 PLDI가 우리나라 서울에서 열린 점이 아주 특별했다. |
| 18 | +전세계 연구자들이 우리나라로 찾아오고, 거기다 내 연구를 우리나라에서 발표하기도 했으니 이보다 멋진 경험을 찾기는 힘들 것 같다. |
| 19 | + |
| 20 | +전세계에서 모인 빼어난 학생들과 연구자들을 만나 이야기하며 연구 아이디어 이야기로 동기를 부여받기도 하고, |
| 21 | +연구하며 어려웠던 점이나 사람 사는 이야기를 하면서 같은 커뮤니티의 일원으로 동질감을 느끼기도 하였다. |
| 22 | +이 기행문을 통해 PLDI 2025 5일간 나의 경험을 공유해보고자 한다. |
| 23 | + |
| 24 | +## PLDI 워크샵 |
| 25 | + |
| 26 | +PLDI 첫 2일은 워크샵으로 시작했다. |
| 27 | +그 중에서 첫날 오전에는 egglog 튜토리얼에, 오후에는 PLMW이 열려 참석하였다. |
| 28 | + |
| 29 | +### egglog 튜토리얼 |
| 30 | + |
| 31 | +egglog는 equality saturation 워크로드를 위해 구현된 egg(https://github.com/egraphs-good/egg)와 Datalog를 통합한 프레임워크다. |
| 32 | +equality saturation은 나의 관심 분야인 컴파일러 최적화에서 최근 많은 관심을 끌고 있는 기술이다. |
| 33 | +예를 들어, 최근 등장한 Cranelift 컴파일러(https://github.com/bytecodealliance/wasmtime/tree/main/cranelift) 는 e-graph를 사용해 컴파일러 최적화기와 코드 생성기를 구현해 컴파일러 구현에 새로운 방향을 제시하고 있다. |
| 34 | +튜토리얼에서는 egglog를 이용해 추론 규칙(Inference Rule, Deductive Reasoning)과 재작성 규칙(Rewrite Rule)을 선언하고 이를 통해 간단한 프로그램 분석기를 구현하는 방법, 코드 최적화기를 구현하는 법을 다뤘다. |
| 35 | +튜토리얼의 자세한 내용은 https://github.com/[egraphs-good/egglog-tutorial](https://github.com/egraphs-good/egglog-tutorial)에서 확인할 수 있다. |
| 36 | + |
| 37 | +튜토리얼을 통해 e-graph가 정말 흥미로운 연구대상임을 다시 느꼈다. |
| 38 | +컴파일러 최적화기를 만들어낼 수도 있고, 프로그램 분석기를 만들어낼 수도 있다. |
| 39 | +e-graph의 적용 분야는 자동증명기, 프로그램 합성기, 그리고 새로운 재작성 규칙 발견(https://dl.acm.org/doi/10.1145/3485496)까지도 나아가고 있다. |
| 40 | +지금 내가 하고 있는 컴파일러 최적화 연구도 어떻게 e-graph의 지평을 넓힐 수 있을지 기대된다. |
| 41 | + |
| 42 | +### PLMW |
| 43 | + |
| 44 | +첫날 오후에는 PLMW에 참석하였다. PLMW는 멘토링 워크샵으로 워크샵 양일 모두 열렸는데, |
| 45 | +나는 그중에서도 첫날 서로 얼굴과 이름을 익히고 가까워질 수 있는 자리에 참석하였다. |
| 46 | + |
| 47 | +특히 PL Card 프로그램에서 재밌는 기억이 많다. 이 프로그램은 카드 뭉치에서 카드를 뽑아 적혀있는 제시어를 설명하는 퀴즈 게임이다. |
| 48 | +카드에 금지어도 적혀있었는데 금지어를 말하지 않고 제시어를 설명하는 게 꽤 고역이었다. |
| 49 | +예를 들어, "C++" 제시어를 설명하려고 하는데 "C"나 "Programming", "Language" 처럼 당연히 떠오르는 단어를 말하지 않고 "C++"을 제한시간 안에 설명하려고 하니 꽤 난이도가 있었다. |
| 50 | +Constrained Decoding이 걸려 토큰 확률 분포가 고장난 언어모델이 된 기분이었다. |
| 51 | +"C++"에 대한 나의 설명은 "Rust wants to get rid of it"이었는데, 같은 테이블에 있던 누군가 바로 맞췄던 기억이 난다. |
| 52 | + |
| 53 | +또, "Garbage Collection"도 문제로 나와 나는 "C++은 이게 없는데 Java에는 있어"라고 설명했었다. |
| 54 | +그런데 퀴즈가 끝나고 누군가 C++ standard에 Garbage Collection이 있지만 이를 따르는 C++ 구현체가 없다는 설명을 해줬다. |
| 55 | +정말로 찾아보니 C++ 스탠다드에 Garbage Collection이 있었다. |
| 56 | +도대체 C++에 없는 기능은 무엇이고, 그리고 이런 사실을 어떻게 아는 것일까. |
| 57 | +프로그래밍 언어 고수들의 세계에 왔다는 생각이 들었다. |
| 58 | + |
| 59 | +PLMW 세션을 통해 포르투갈에서 컴파일러를 연구하고 있는 Lucian과 친해졌는데 |
| 60 | +내가 매일같이 사용하는 Alive2를 개발한 Nuno Lopez 교수님에게 지도를 받는 학생이었다. |
| 61 | +Lucian은 마지막 날 내 발표에 찾아와 질문을 하기도 했고, PLDI 5일간 종종 만나 좋은 대화도 많이 나눴다. |
| 62 | + |
| 63 | + |
| 64 | + |
| 65 | +PL 연구에 HCI의 원리를 적용하는 법에 대한 발표도 흥미로웠다. |
| 66 | +연단이 아니라 무대 중간으로 나와 발표 내내 청중의 흥미를 끌어내는 발표 방식도 인상적이었다. |
| 67 | +HCI의 사용자 연구는 사용자가 겪는 문제를 이해하고, 문제에 대한 해결책을 디자인하고, 해결책의 효과를 입증하는 과정을 거친다. |
| 68 | +사용자들이 겪는 문제를 사용자들이 원하는 해결책으로 해결가능한 경우가 많지 않기 때문에 문제를 제대로 이해하는 것이 중요하다는 것에 공감하며 강연을 들었다. |
| 69 | +PL과 HCI는 서로 거리가 먼 분야로 여겨지는데, 이 두 분야를 결합하는 아이디어가 있다는 것이 놀라웠다. |
| 70 | + |
| 71 | +### RPLS (Real-World Programming Language Specification) |
| 72 | + |
| 73 | +둘째날 열린 RPLS에서 오전 세션이 특히 재미있었다. |
| 74 | +그 중에서도 인터프리터, 컴파일러, 번역검산기 등 PL 도구를 자동으로 생성해내는 K-Framework 연구가 기억에 남는다. |
| 75 | + |
| 76 | +K-Framework (이하 K) 발표는 제목부터 강력했다. |
| 77 | +["Programming Languages Must Have Formal Semantics. Period."](https://pldi25.sigplan.org/details/rpls-2025-papers/2/Programming-Languages-Must-Have-Formal-Semantics-Period-). |
| 78 | +발표가 끝나고 연사인 Xiaohong Chen과 커피를 마시며 K에 대해 심도 있는 설명을 들을 수 있었다. |
| 79 | +그 중에서 K의 설계 철학 그리고 올바름(Correctness)에 대한 설명이 기억에 남는다. |
| 80 | + |
| 81 | +먼저, K는 연구 프로젝트로 시작했지만 이론보다 사용성에 더 무게를 두고 설계했다는 점이 흥미로웠다. |
| 82 | +아무리 강력한 이론도 실제 세계에서 외면 받는다면 큰 족적을 남길 수 없는 게 사실이다. |
| 83 | +그래서 K는 프로그래밍 언어 개발자들이 사용할 수 있는 도구들 즉 인터프리터, 컴파일러, 번역검산기 등을 자동으로 생성하고 바로 사용할 수 있도록 기능적인 측면을 강조하며 개발되었다고 한다. |
| 84 | + |
| 85 | +또한, 올바름은 우리가 "무엇을 믿어야하는가"를 잘 따져봐야 논의할 수 있는 것이기 때문에 조심스럽게 접근해야한다는 설명도 들었다. |
| 86 | +만약에 Z3 기반의 번역검산기를 사용한다고 해보자. 이 번역검산기의 결과를 그대로 사용한다면 우리는 Z3가 사용하는 논리 기반을 그대로 믿는 것이 된다. |
| 87 | +하지만 정말로 그 논리 기반을 믿을 수 있는가? 게다가 Z3의 구현이나 번역검산기의 구현에 헛점은 없는가? |
| 88 | +이는 수학에서 어떤 공리계를 믿어야 하는지를 의심하는 것과 비슷해 보였다. (참고: [수학의 선택공리 논쟁](https://en.wikipedia.org/wiki/Axiom_of_choice#Criticism_and_acceptance)) |
| 89 | + |
| 90 | +이런 점으로 미루어 볼 때, 거대한 K를 어떻게 그대로 믿을 수 있을까? |
| 91 | +만약 K에 버그가 있다면 K가 만들어내는 모든 도구들도 신뢰할 수 없게 된다. |
| 92 | +그래서 K는 K가 하는 모든 것에 자동으로 증명을 생성한다. 모든 것을 신뢰하지 않고 증명한다. 증명에 사용되는 공리도 매우 적어서 신뢰 문제에서 더 자유로울 수 있다는 설명이었다. 신뢰해야 하는 것이 적어서 더 신뢰할 수 있는 시스템이라는 설명이 재미있었다. |
| 93 | + |
| 94 | + |
| 95 | +## 기억에 남는 발표들 |
| 96 | + |
| 97 | +### [Program Synthesis from Partial Traces](https://dl.acm.org/doi/abs/10.1145/3729316) |
| 98 | + |
| 99 | + |
| 100 | + |
| 101 | +PLDI 본행사 첫째날 프로그램 합성(Program Synthesis) 세션에서 발표된 논문이었다. |
| 102 | +발표 흐름에 맞춰 자연스럽게 진행되는 슬라이드 흐름과, 잘 정리된 내용이 독보적인 발표였다. |
| 103 | +AWS 연구 인턴으로 진행된 프로젝트였는데, 클라우드 서비스를 사용할 때 남는 API 로그(Partial Traces)를 통해 |
| 104 | +사용자가 자주 반복하는 일들을 원클릭으로 한번에 실행할 수 있는 프로그램으로 만들어주는 것이 아이디어다. |
| 105 | +예를 들어, 가상머신 인스턴스를 종료하고, 종료되지 않았다면, 강제로 종료하는 것을 사용자가 반복해 이것이 로그로 남는다면 |
| 106 | +이 전체 과정을 사용자가 원클릭으로 다시 사용할 수 있는 프로그램으로 만들어주는 것이다. |
| 107 | + |
| 108 | +질문 시간에 정보보호개론 조교를 하며 가상머신 150개를 세팅하던 경험이 떠올라 내 경우에도 사용할 수 있는지 물어봤다. ("This is exactly the tool I need!") |
| 109 | +프로그램 로그만 잘남고, 내가 하는 일들이 API 단위로 잘 정리되어 있다면 안될 이유는 없다는 답을 들었다. |
| 110 | +발표가 끝나고 나서 복도에서 만나 더 얘기를 했는데, 가상 머신이 모종의 이유로 작동을 멈추는 경우, 모든 가상머신을 한번에 세팅하면 안되는 이유 등 여러 엣지 케이스들에 대해 같이 생각을 해봤는데 재미있는 결론이 났다. |
| 111 | +만약 조교 업무를 1년마다 반복하게 된다면, 해가 갈수록 엣지 케이스를 더 잘 해결하는 프로그램을 합성하게 될 것이다. |
| 112 | +그런데 이전에 합성해둔 프로그램을 이용해 새로운 케이스에 대해 더 잘하는 프로그램은 어떻게 만들 것인지 잘 알려진 방법이 없는 것이다. 이 방법을 찾으면 아마 박사학위를 하나 더 받을 수 있겠다고 농담하며 이야기는 일단락되었다. |
| 113 | + |
| 114 | +### Lean |
| 115 | + |
| 116 | +둘째날 기조연설과 Industry 세션에서 모두 Lean에 관한 이야기가 나왔다. |
| 117 | +예전 NYU 부전공 프로그램에서 프로그램 검증 수업을 청강했던 경험이 내용을 이해하는 데 많은 도움이 되었다. |
| 118 | +NYU에서는 Rocq(그 당시에는 Coq이라 불렀다)를 사용했었는데, 비슷한 시스템인 Lean이 최근 이렇게까지 성장했다는 사실이 놀라웠다. |
| 119 | + |
| 120 | +아침 기조연설에서는 Lean의 창시자, Leonardo de Moura가 Lean의 여러 면모를 설명했다. |
| 121 | +최근 테렌스 타오가 Lean을 적극적으로 사용하는 모습을 보여주면서 많은 관심을 끌고 있다는 것은 알았지만 기조연설을 통해 몰랐던 사실을 더 많이 배울 수 있었다. |
| 122 | +특히나 Lean을 증명보조기 종류 중 하나로만 생각했었는데 자동증명기와 일반적인 프로그래밍 환경까지 통합되어 여러 분야에 사용될 가능성이 많아보였다. 최근 내가 하고있는 컴파일러 최적화 검증을 자동화하는 데에도 도움이 되지 않을까 생각했다. |
| 123 | + |
| 124 | +오후 Industry 세션에서는 AWS 공순호 박사님이 Lean을 이용해 AI를 훈련시키는 연구 방향에 대해 이야기해주셨다. |
| 125 | +잘 해결되지 않는 어려운 문제에 대해 LLM이 사실상 동전던지기보다 나은 점이 없다는 위트있는 시작과 함께 강연이 시작되었다. |
| 126 | +강연은 AI를 훈련시킬 데이터가 고갈되어가는 세상에서 Lean과 같이 엄밀한 시스템이 새로운 데이터를 합성시키는 역할을 할 수 있다는 것이 핵심이었다. 또한 AI가 Lean과 상호작용하며 강화학습을 통해 성능을 향상시킬 수 있다는 점도 재미있는 연구방향이었다. |
| 127 | + |
| 128 | +PLDI가 끝나고 Lean을 더 공부해보기 위해 Lean의 기반인 Dependent Type Theory도 간략하게 공부해보고, |
| 129 | +테렌스 타오가 공개한 Lean으로 작성된 해석학 교재를 따라가보며 증명도 작성해보았다. |
| 130 | +아직 내가 이걸 사용해서 어떤 일을 할 수 있을지 감은 안오지만 Lean이 저변을 계속 넓혀가고 있는 만큼 |
| 131 | +언젠가 다시 Lean을 만날 날이 오지 않을까 생각이 들었다. |
| 132 | + |
| 133 | +## 연구 발표 |
| 134 | + |
| 135 | + |
| 136 | + |
| 137 | +나는 PLDI 본행사 마지막날 오전 컴파일러 세션에서 발표하게 되었다. |
| 138 | +태어나 처음으로 하는 학회 연구발표가 PLDI라니 정말 뜻깊고 신기한 경험을 했다. |
| 139 | +첫 발표, 그리고 PLDI 발표이니 만큼 15분안에 연구 결과의 핵심을 뚜렷하게 전달하기 위해 많은 노력을 했다. |
| 140 | +설명은 최대한 단순명료하게 다듬고, 연구의 배경이나 개념이 생소할 경우를 대비해 오해가 없도록 내용을 준비했다. |
| 141 | +그리고 관중이 압도되지 않도록 애니메이션을 통해 한번에 하나씩만 설명하도록 발표 내용을 준비했다. |
| 142 | +연구실 리허설에서 교수님과 다른 분들이 슬라이드의 작은 점 하나하나, 그리고 발표 흐름의 오류까지 꼼꼼하게 찾아주신 덕분에 가능했다. |
| 143 | + |
| 144 | +발표 전날에 마지막 점검을 했다. 호텔에서 치맥을 시켜놓고 태은님, 수진님, 그리고 동재님이 발표를 다시 한번 점검해주셨다. |
| 145 | +마지막 점검이었는데 내 입, 슬라이드 애니메이션 그리고 몸짓이 동기화된 것을 확인하니 기분좋은 자신감이 솟아났다. |
| 146 | +긴장한탓에 말을 빨리 해서 주어진 15분보다 시간을 덜 쓰긴 했지만 |
| 147 | +다음날 무대에서는 이것만 조심하면 되겠다고 다짐하며 치맥과 함께 마지막 발표 준비를 마쳤다. |
| 148 | + |
| 149 | +PLDI 본행사 마지막날 11:50에 발표를 시작했다. |
| 150 | +슬라이드 애니메이션을 모두 머리에 외우고 무대 가운대로 와서 설명할 생각이었는데 (스티브 잡스처럼 하고 싶었다), |
| 151 | +생각과 다르게 프로젝터 빔이 내 눈에 닿는 바람에 옆으로 비켜 설명해야했다. |
| 152 | +무대 구조가 예상과 달라 조금 당황하긴 했지만 전날 밤 리허설을 상기시키며 15분을 최대한 모두 사용하려고 주의하며 발표를 진행했다. |
| 153 | +발표 도중 연구에 관심을 가져주신 분들이 슬라이드 내용을 사진으로 찍어가는 경우도 볼 수 있었고, |
| 154 | +발표를 마치고 남은 시간에 질문도 여러번 받았다. |
| 155 | +세션을 모두 마치고 추가적인 질문도 받아서 준비한 내용을 성공적으로 전달한 것 같아 많은 보람을 느낄 수 있었다. |
| 156 | +연구실 내부 리허설, 전날 점검 그리고 발표 당일까지 격려과 많은 관심을 보내주신 연구실 분들께 감사하다는 말을 전하고 싶다. |
| 157 | + |
| 158 | +## 네트워킹 경험 |
| 159 | + |
| 160 | + |
| 161 | +|  | |
| 162 | +| :-: | |
| 163 | +|<b> 컴파일러 세션에서 발표중인 Chris Fallin </b>| |
| 164 | + |
| 165 | +이번 PLDI 2025에서 다른 연구자들과 네트워킹한 경험도 빼놓을 수 없다. |
| 166 | + |
| 167 | +최근 연구하고 있는 Cranelift 컴파일러의 리드 개발자인 Chris Fallin, Cranelift 컴파일러의 최적화 규칙과 코드 생성 규칙의 검증 도구 [Crocus](https://dl.acm.org/doi/10.1145/3617232.3624862)를 작성한 Alexa VanHattum도 만나 얘기할 수 있었다. 최근 Cranelift에 최적화 규칙을 추가하는 PR을 4개 보냈었는데 Chris Fallin이 나를 알아보는 신기한 경험도 하고, 내 연구 방향에 대해 설명하는 기회도 가졌다. 내 연구를 알아보는 사람들이 있다는 걸 느끼고, 사람들에게 도움을 줄 수 있는 연구를 더 열심히 해야겠다는 다짐을 했다. |
| 168 | + |
| 169 | +우연히 Lean의 창시자 Leonardo de Moura와 옆자리에 서게 되어 Lean 개발 이야기도 생생하게 들을 수 있었다. |
| 170 | +또한, 내가 자주 사용하는 [Alive2](https://github.com/AliveToolkit/alive2)의 창시자인 Nuno Lopez도 만나 얘기해볼 수 있었는데, 스마트폰없이 피처폰만으로 서울을 돌아다니는 무용담을 들을 수 있었다. (생각해보니 같이 사진이라도 찍을 걸 그랬다!) |
| 171 | + |
| 172 | +또한 우리나라에서 PL을 연구하시는 다른 분들도 만나는 기회도 가졌다. |
| 173 | +연세대학교 정기웅 박사과정님의 소개로 고려대학교 전민석 박사님, 우리학교 강지훈 교수님 연구실의 안해찬님, 이정인님을 만나 같이 식사자리를 가졌다. |
| 174 | +이와 더불어 서울대학교 연구실에 계시는 대학원생분들은 어떤 분야에 관심을 가지고 계시는지도 알 수 있었다. |
| 175 | +우리나라에서 정형검증에 관심을 가진 분들이 많이 있다는 것을 느꼈고, 시간이 날 때마다 나도 전산논리를 다시 공부하고 Lean을 익혀야겠다는 생각을 했다. |
| 176 | + |
| 177 | +## 마치며 |
| 178 | + |
| 179 | +이번 PLDI 2025는 다른 연구자들과 만나 내 시야를 넓히고 재미있는 아이디어들을 배울 수 있었던 최고의 학회였다. |
| 180 | +최대한 많이 배워가고자 모든 세션에 적극적으로 참여하고자 했고 들은 모든 연구발표에 대해 최대한 질문을 하려고 노력했다. |
| 181 | +이런 학회에서 직접 발표까지 하다니, 정말로 영광스러운 기회였다. |
| 182 | +컴퓨터 과학자로서 한발짝 성장한 느낌이다. |
| 183 | +5일 모두 참여를 지원해주신 허기홍 교수님께 깊은 감사를 드린다. |
0 commit comments