Rust 배우기 – 03. 기초 배우기
🚀 Rust, 이제는 두렵지 않아요: 프로그래밍 초보자를 위한 친절한 첫걸음
혹시 ‘Rust’ 하면 머릿속이 하얘지시나요? 복잡하고 어렵다는 이야기만 듣고 시작도 못 해보신 건 아닌가요?
프로그래밍 세계는 마치 끝없이 펼쳐진 광활한 우주와 같습니다. 그중에서도 Rust는 최근 몇 년간 가장 뜨거운 별처럼 주목받고 있는 언어입니다. 하지만 그만큼 ‘어렵다’, ‘진입 장벽이 높다’는 인식이 강한 것도 사실입니다. 마치 거대한 산맥 앞에 선 등산객처럼, Rust를 시작하려는 많은 초보자분들이 두려움을 느끼곤 합니다.
하지만 이 글은 바로 그 두려움을 깨뜨리기 위해 존재합니다. Rust는 단순히 어려운 언어가 아니라, 안정성과 성능이라는 두 마리 토끼를 모두 잡을 수 있는 강력한 도구입니다. 복잡한 개념 뒤에 숨겨진 Rust의 매력을 쉽고 명확하게 파헤쳐, 여러분도 자신 있게 Rust의 세계로 첫 발을 내디딜 수 있도록 안내하겠습니다.
Rust, 왜 이렇게 핫한 걸까요?
Rust가 개발자들 사이에서 선풍적인 인기를 끄는 데에는 분명한 이유가 있습니다. 바로 메모리 안전성(Memory Safety)과 동시성(Concurrency)을 높은 수준으로 보장하면서도, C/C++에 버금가는 뛰어난 성능을 제공하기 때문입니다.
전통적으로 메모리 안전성은 개발자가 직접 신경 써야 하는 부분이었고, 이로 인해 많은 버그와 보안 취약점이 발생했습니다. Rust는 컴파일 시점에 이러한 메모리 관련 오류를 대부분 잡아내어, 런타임 오류나 보안 문제 발생 가능성을 획기적으로 줄여줍니다. 이는 특히 서버, 시스템 프로그래밍, 게임 엔진 등 안정성과 성능이 극도로 중요한 분야에서 Rust를 대체 불가능한 언어로 만들고 있습니다.
초보자를 위한 Rust 학습 로드맵: 무엇부터 시작해야 할까?
Rust의 강력함은 매력적이지만, 처음부터 모든 것을 다 알려고 하면 금방 지치기 쉽습니다. 초보자 여러분께는 다음 단계를 따라가는 것을 추천합니다.
- 개발 환경 설정: Rust 설치 및 VS Code 연동 가장 먼저 할 일은 Rust를 여러분의 컴퓨터에 설치하는 것입니다.
rustup이라는 도구를 사용하면 매우 간편하게 Rust를 설치하고 관리할 수 있습니다.- Windows: https://rustup.rs/ 에서
rustup-init.exe다운로드 후 실행 - macOS/Linux: 터미널에
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh명령 실행 Rust 설치 후, Visual Studio Code (VS Code)에rust-analyzer확장 프로그램을 설치하면 코드 자동 완성, 오류 검사 등 개발 편의성을 크게 높일 수 있습니다.
- Windows: https://rustup.rs/ 에서
- ‘Hello, World!’를 넘어서: 기본 문법 익히기 모든 프로그래밍 언어의 시작은 ‘Hello, World!’입니다. Rust에서도 마찬가지입니다.
1234fn main() {println!("Hello, Rust!");}
이 코드를main.rs파일로 저장하고 터미널에서rustc main.rs(컴파일) 후./main(실행) 명령을 통해 실행해보세요. 이후 변수(variables), 데이터 타입(data types), 함수(functions), 조건문(if/else), 반복문(loops) 등 기본적인 문법을 익혀나가야 합니다. Rust는 다른 언어와는 조금 다른 독특한 개념들을 가지고 있는데, 처음에는 이 부분을 주의 깊게 살펴보는 것이 좋습니다. - Rust의 핵심: 소유권(Ownership)과 빌림(Borrowing) 이해하기 Rust를 배우는 데 있어 가장 중요하면서도 초보자들이 가장 어려워하는 부분은 바로 ‘소유권’ 시스템입니다. Rust는 메모리 관리를 컴파일 시점에 결정하여 런타임 성능 저하를 막고 메모리 안전성을 확보합니다. 이를 위해 ‘소유권’, ‘빌림(Borrowing)’, ‘생명주기(Lifetimes)’라는 개념을 도입했습니다.
- 소유권(Ownership): Rust에서는 각 값이 특정 ‘소유자’를 가집니다. 소유자가 스코프 밖으로 나가면 값은 자동으로 해제됩니다.
- 빌림(Borrowing): 데이터를 복사하지 않고 참조하여 사용할 수 있게 하는 기능입니다. 빌림에는 가변 빌림(mutable borrow)과 불변 빌림(immutable borrow)이 있으며, Rust는 이 둘의 규칙을 엄격하게 관리하여 데이터 경합(data race)을 방지합니다.
이 개념이 처음에는 매우 생소하고 까다롭게 느껴질 수 있습니다. 하지만 이 ‘소유권’ 규칙을 이해하는 것이 Rust 실력 향상의 열쇠입니다. 공식 문서나 다양한 튜토리얼에서 이 부분을 집중적으로 다루니, 여러 번 반복해서 학습하고 예제를 직접 실행해보는 것이 중요합니다.
- 실전 프로젝트: 작은 프로그램부터 시작하기 이론 학습과 병행하여 실제 작동하는 작은 프로그램을 만들어보는 것이 실력 향상에 가장 효과적입니다.
- 예시 1: 간단한 계산기 프로그램: 사용자의 입력을 받아 덧셈, 뺄셈, 곱셈, 나눗셈을 수행하는 콘솔 기반 계산기를 만들어 보세요. 이 과정에서
std::io모듈을 사용한 사용자 입력 처리,match표현식을 활용한 연산자 분기 등을 경험할 수 있습니다. - 예시 2: 할 일 목록(To-Do List) 애플리케이션: 메모리에 할 일 목록을 저장하고, 추가, 삭제, 완료 표시 기능을 구현하는 콘솔 애플리케이션을 만들어 보세요.
Vec(가변 배열) 또는HashMap(해시 맵)과 같은 컬렉션 타입을 사용하며, 구조체(struct)를 정의하여 할 일 항목을 표현하는 방법을 배울 수 있습니다. - 예시 3: 파일 처리 유틸리티: 특정 디렉토리의 파일 목록을 출력하거나, 특정 확장자를 가진 파일만 필터링하는 간단한 명령줄 도구를 만들어 보세요.
std::fs모듈을 사용하여 파일 시스템에 접근하는 방법을 익힐 수 있습니다.
- 예시 1: 간단한 계산기 프로그램: 사용자의 입력을 받아 덧셈, 뺄셈, 곱셈, 나눗셈을 수행하는 콘솔 기반 계산기를 만들어 보세요. 이 과정에서
