들어가기에 앞서
콕 집어서 말할 순 없지만, 러스트 프로그래밍 언어는 역량 강화 (empowerment)에 근간을 두고 있습니다. 여러분이 지금 어떤 종류의 코드를 작성하고 있건 간에, 러스트는 여러분에게 더 멀리 나아가고, 더 다양한 분야에서 더 자신감 있게 프로그래밍할 역량을 줍니다.
예를 들어 메모리 관리, 데이터 표현, 동시성 등 저수준의 정보를 다루는 ‘시스템 수준’ 프로그래밍을 생각해 봅시다. 예로부터 이 분야는 악명 높은 함정을 피하고자 수년 동안 관련 지식을 쌓아온 소수 정예만이 다가갈 수 있는 난해한 영역으로 여겨져 왔습니다. 그리고 이런 사람들마저도 코드에 취약점 공격, 충돌이나 손상의 위험이 없도록 심혈을 기울여 작업해야 합니다.
러스트는 이런 오래된 문제를 제거하는 동시에 여러분에게 친숙하고 세련된 도구를 제공함으로써 이 장벽을 부숩니다. 저수준 제어에 ‘살짝만 발을 담글’ 필요가 있는 프로그래머는 여느 때처럼 충돌이나 보안 허점의 위험을 떠맡을 필요도, 까다로운 툴체인의 세세한 특징을 학습할 필요도 없이 러스트로 자신의 목적을 달성할 수 있습니다. 게다가 이 언어는 속도와 메모리 사용량 측면에서 효율적인 신뢰할 수 있는 코드로 자연스럽게 인도하도록 설계되었습니다.
이전부터 저수준 코드를 작성하던 프로그래머는 러스트를 사용하여 야망을 키울 수 있습니다. 예를 들면, 러스트에서 병렬화를 도입하는 것은 비교적 위험도가 낮은 작업입니다. 컴파일러가 고전적인 실수를 잡아주거든요. 또한 실수로 충돌이나 취약점을 발생시키지 않을 것이라는 확신을 가지고 코드에 대한 더 공격적인 최적화를 수행할 수 있습니다.
러스트는 저수준 시스템 프로그래밍에만 국한되지 않습니다. CLI 앱, 웹 서버 등 수많은 종류의 코드를 편하게 작성할 수 있을 정도로 표현력이 풍부하고 개발자 친화적으로 설계되어 있습니다. 이 책을 읽다 보면 CLI 앱과 웹 서버 두 경우에 대한 간단한 예제가 나올 것입니다. 러스트로 작업하면 한 분야에서 구축한 기술을 다른 분야에도 써먹을 수 있습니다. 웹 앱을 작성하면서 러스트를 배운 다음, 같은 기술을 라즈베리 파이를 대상으로 적용해 볼 수 있지요.
이 책은 사용자의 역량을 강화할 러스트의 잠재력을 완전히 담아내었습니다. 친근하고 접근하기 쉬운 텍스트로 러스트에 대한 지식뿐만 아니라 프로그래머로서의 능력과 자신감도 향상시킬 수 있도록 노력했습니다. 그럼, 바로 시작해서 배울 준비를 해보죠. 러스트 커뮤니티에 오신 것을 환영합니다!
— Nicholas Matsakis, Aaron Turon