Rust의 미래
먼저 뻔한 이야기부터 짚고 넘어가겠습니다. 제목이 조금 선정적이라는 점은 저도 압니다. 또 제가 무슨 자격으로 Rust의 미래를 이야기하느냐고 생각하실 수도 있겠지요. 결국 저는 Rust 코어 팀의 일원도 아니고, Rust 생태계의 주요 기여자도 아닙니다. 제 대답은 이렇습니다. 안 될 이유가 있나요? 시스템 프로그래밍 전반, 특히 Rust의 미래를 생각해 보는 일은 재미있습니다.
출처: FreePik.com에서 제공한 일러스트
Rust 코어 팀이 몰두하고 있는 단기 목표에 관해서는 들어 보셨을 겁니다. 더 빠른 컴파일 시간과 한층 완만한 학습 곡선이 대표적입니다. 이 글에서 다루려는 내용은 그런 것이 아닙니다. 대신 앞으로 5년에서 10년 뒤 Rust가 빛을 발할 수 있는 조금 더 이색적인 분야를 살펴보고 싶습니다. 크게 도약하려면 뿌리와 날개가 모두 필요합니다.
데이터 과학
현재 데이터 과학 분야에서 가장 인기 있는 언어는 Python, Java, R, C++입니다.

프로토타입은 대부분 Python이나 R 같은 동적 타입 언어로 작성되지만, 알고리즘이 프로덕션 수준의 품질에 도달하면 확장성을 위해 C++ 같은 더 빠른 언어로 다시 작성하는 경우가 많다는 사실을 우리는 확인해 왔습니다. 가까운 미래에 Rust가 C++의 만만치 않은 경쟁자가 된다고 해도 이상할 것은 없습니다. Rust로 작성된 머신 러닝 라이브러리 leaf의 벤치마크는 이미 놀라울 정도로 인상적입니다.
블록버스터급 게임
게임도 Rust가 빛을 발할 수 있는 또 다른 분야입니다. 게임 스튜디오 입장에서는 큰 노력 없이 여러 플랫폼을 지원할 수 있다는 점이 재정적으로 매력적입니다. Cargo와 rustup은 크로스 컴파일을 쉽게 해 줍니다. 현대적인 라이브러리도 대규모 게임 개발에 필요한 도구의 빈틈을 서서히 메우고 있습니다. Rust의 Vulkan 3D 그래픽 API 지원은 이미 동급 최고 수준일지도 모릅니다. 하지만 결정적인 강점은 안전성과 성능을 독특하게 결합했다는 데 있습니다. 게임을 플레이어 100만 명에게 출시하고 그들이 여러분에게 돈을 퍼붓는다면, 게임이 충돌하지 않도록 확실히 해야겠죠… 그렇지 않나요?
그렇다고 해도 최초의 AAA급 Rust 게임이 나오려면 아직 먼 미래일 수 있습니다. 2017년 당시 Blizzard가 Rust를 어떻게 보고 있었는지는 여기서 확인할 수 있습니다.
시스템 엔지니어링
어쩌면 언젠가는 Rust 코어에 대한 형식 검증도 보게 될지 모릅니다. 그렇다면 RustBelt 같은 프로젝트가 우주 산업처럼 안전을 중시하는 분야에 새로운 기회를 열어 줄 수 있습니다. Rust로 제어되는 우주선을 화성에 안전하게 착륙시킬 수 있다면 멋지지 않을까요? (또는 Rust의 정신적 후계 언어로 말입니다.) SpaceX가 이미 Rust를 실험하고 있는지도 궁금하군요…
다른 언어와의 통합
아직 언급하지 않은 분야도 많습니다. 예를 들면 금융 및 의료 소프트웨어, 과학 계산 등이 있습니다. 몇 가지만 꼽아도 그렇습니다. 어느 분야에서든 Rust는 잘 맞을 수 있습니다. 현재 가장 큰 진입 장벽은 아마도 방대한 레거시 코드일 것입니다. 많은 산업에서 쉽게 다시 작성할 수 없는 대규모 Cobol, C 또는 Fortran 코드베이스를 유지하고 있습니다.
다행히 Rust는 다른 언어와도 매우 훌륭하게 연동된다는 사실이 입증되었습니다. 강력한 C 호환성 덕분이기도 하고, 런타임이나 가비지 컬렉터가 없기 때문이기도 합니다. 흔히 사용하는 방식은 안전성과 성능 요구 사항이 까다로운 애플리케이션의 핵심 부분을 Rust로 최적화하고 나머지는 그대로 두는 것입니다. 장기적으로 이런 공생 관계는 더욱 강해질 것이라고 생각합니다. C 코드를 Rust로 자동 변환하려는 Corrode 같은 야심 찬 프로젝트도 있습니다.
맺음말
전반적으로 안전성, 성능 또는 시스템을 완전히 제어하는 능력이 중요한 분야에서 Rust의 잠재력은 매우 크다고 생각합니다. Rust나 Crystal 같은 언어를 사용하면 한 부류의 오류는 과거의 일이 됩니다. 널 포인터도 없고, 세그멘테이션 폴트도 없고, 메모리 누수도 없고, 데이터 경쟁도 없습니다. 미래 세대의 프로그래머들이 이 모든 것을 당연하게 여기게 되리라는 점이 저는 고무적입니다.
글을 무작위로 읽기