🦀 Rust Learning Ebook
EN KO

🦀 Chapter 1: Rust 소개

弘益人間 (Hongik Ingan)

"널리 인간을 이롭게 하라"

WIA Rust Learning Standard는 안전하고 효율적인 프로그래밍을 통해 인류에게 더 나은 소프트웨어를 제공한다는 철학을 바탕으로 합니다.

1.1 Rust란 무엇인가?

Rust는 Mozilla Research에서 개발한 시스템 프로그래밍 언어로, 메모리 안전성, 동시성, 성능을 동시에 달성하도록 설계되었습니다. 2015년 1.0 버전이 출시된 이후, Stack Overflow 개발자 설문조사에서 8년 연속(2016-2023) "가장 사랑받는 언어" 1위를 차지했습니다.

[i] 정의: Rust는 가비지 컬렉터 없이 컴파일 타임에 메모리 안전성을 보장하는 현대적 시스템 프로그래밍 언어입니다.

1.1.1 Rust의 탄생

Rust는 2006년 Mozilla의 엔지니어 Graydon Hoare가 개인 프로젝트로 시작했습니다. 당시 C/C++로 작성된 Firefox 브라우저의 메모리 안전성 문제를 해결하기 위한 목적이었습니다.

항목 내용
창시자 Graydon Hoare
후원사 Mozilla Research (2009-2020), Rust Foundation (2021-현재)
첫 공개 2010년
1.0 출시 2015년 5월 15일
핵심 철학 안전성, 속도, 동시성

1.1.2 왜 메모리 안전성이 중요한가?

Microsoft와 Google의 보고서에 따르면, 주요 소프트웨어의 보안 취약점 중 70%가 메모리 안전성 문제에서 발생합니다. 대표적인 예시:

Rust는 이 모든 문제를 컴파일 타임에 방지합니다. 코드가 컴파일되면 메모리 안전이 보장됩니다.


1.2 시장 채택률과 성장

Rust는 학술적 연구 단계를 넘어 산업계에서 광범위하게 채택되고 있습니다.

1.2.1 주요 기업의 Rust 도입

기업 활용 분야 주요 프로젝트
Mozilla 브라우저 엔진 Servo (실험적 브라우저 엔진), Firefox 일부
Microsoft Windows 커널 Azure IoT Edge, Windows 보안 컴포넌트
Google Android OS Android 13+ 시스템 컴포넌트
Amazon 클라우드 인프라 Firecracker (서버리스 컴퓨팅), Bottlerocket OS
Meta (Facebook) 백엔드 서비스 Mononoke, Diem (Libra) 블록체인
Cloudflare Edge 컴퓨팅 Workers 런타임
Discord 백엔드 서비스 메시지 라우팅 (Go에서 Rust로 전환)

1.2.2 개발자 커뮤니티 성장

Stack Overflow 개발자 설문조사 (2016-2024)


1.3 핵심 개념

1.3.1 소유권 (Ownership)

Rust의 가장 독특한 기능은 소유권 시스템입니다. 모든 값은 하나의 소유자를 가지며, 소유자가 스코프를 벗어나면 값이 자동으로 해제됩니다.

소유권 3원칙

  1. Rust의 각 값은 소유자(owner)가 있다
  2. 한 번에 하나의 소유자만 존재할 수 있다
  3. 소유자가 스코프를 벗어나면 값이 버려진다(dropped)
fn main() {
    let s1 = String::from("hello");
    let s2 = s1;  // s1의 소유권이 s2로 이동

    // println!("{}", s1);  // 에러! s1은 더 이상 유효하지 않음
    println!("{}", s2);  // OK
}

1.3.2 빌림 (Borrowing)

소유권을 이전하지 않고 값을 사용하려면 빌림을 사용합니다. 참조(&)를 통해 값을 빌릴 수 있습니다.

fn main() {
    let s1 = String::from("hello");
    let len = calculate_length(&s1);  // s1을 빌림

    println!("The length of '{}' is {}.", s1, len);  // s1 여전히 유효
}

fn calculate_length(s: &String) -> usize {
    s.len()
}

1.3.3 수명 (Lifetime)

수명(Lifetime)은 참조가 유효한 범위를 나타냅니다. 컴파일러가 댕글링 참조(dangling reference)를 방지합니다.

1.3.4 제로코스트 추상화

Rust의 고수준 추상화는 런타임 오버헤드가 없습니다. 다음 두 코드는 동일한 기계어로 컴파일됩니다:

고수준 코드 (이터레이터) 저수준 코드 (루프)
let sum: i32 = numbers
    .iter()
    .filter(|x| **x > 0)
    .sum();
let mut sum = 0;
for x in &numbers {
    if *x > 0 {
        sum += *x;
    }
}

1.4 Rust의 역사

연도 주요 이벤트
2006 Graydon Hoare가 개인 프로젝트로 시작
2009 Mozilla가 프로젝트 후원 시작
2010 최초 공개 발표
2012 Alpha 릴리스 (0.1)
2015 Rust 1.0 정식 출시 (안정 버전 보장)
2018 Rust 2018 Edition (언어 개선)
2021 Rust Foundation 설립 (AWS, Google, Microsoft 등 참여)
2021 Rust 2021 Edition
2024 Rust 2024 Edition (안정성과 생산성 개선)

1.5 주요 활용 사례

Rust는 성능과 안전성이 모두 중요한 다양한 분야에서 활용됩니다.

1.5.1 시스템 프로그래밍

1.5.2 웹 브라우저

1.5.3 블록체인과 암호화폐

1.5.4 웹 어셈블리 (WebAssembly)

Rust는 WebAssembly의 최고 지원 언어입니다. 브라우저에서 네이티브 수준의 성능을 제공합니다.

1.5.5 게임 개발

1.5.6 백엔드 서비스


1.6 왜 Zero-to-Rust인가?

많은 프로그래밍 교육 자료가 "Python이나 JavaScript를 먼저 배우라"고 권장합니다. 하지만 WIA Rust Learning Standard는 다른 접근을 제안합니다.

1.6.1 Rust First의 장점

장점 설명
올바른 습관 형성 처음부터 메모리 관리와 타입 안전성을 배우면 좋은 코딩 습관이 형성됩니다
깊은 이해 컴퓨터가 실제로 어떻게 작동하는지 이해하게 됩니다
최고의 에러 메시지 Rust 컴파일러는 문제를 정확히 알려주고 해결 방법까지 제시합니다
다른 언어 쉽게 배우기 Rust를 이해하면 다른 언어는 더 쉽게 느껴집니다

1.6.2 컴파일러는 당신의 선생님

Rust 컴파일러는 세계에서 가장 친절한 컴파일러입니다. 단순히 "에러"라고 말하지 않고, 무엇이 잘못되었는지, 왜 잘못되었는지, 어떻게 고쳐야 하는지 알려줍니다.

예시: Rust 컴파일러의 친절한 에러 메시지

error[E0382]: borrow of moved value: `s1`
 --> src/main.rs:4:20
  |
2 |     let s1 = String::from("hello");
  |         -- move occurs because `s1` has type `String`
3 |     let s2 = s1;
  |              -- value moved here
4 |     println!("{}", s1);
  |                    ^^ value borrowed here after move
  |
  = note: this error originates in the macro `println`
help: consider cloning the value if the performance cost is acceptable
  |
3 |     let s2 = s1.clone();
  |                ++++++++

1.7 WIA 철학: 弘益人間

WIA Rust Learning Standard는 고대 한국의 건국 이념인 弘益人間 (홍익인간)을 바탕으로 합니다.

弘益人間 (Hongik Ingan)

"널리 인간을 이롭게 하라"

안전하고 효율적인 소프트웨어는 인류의 삶을 개선합니다. Rust를 배움으로써 더 안전한 디지털 세상을 만드는 데 기여할 수 있습니다.

이 교육 과정은 다음 원칙을 따릅니다:


1.8 챕터 요약

주요 개념:

  1. 메모리 안전성: Rust는 컴파일 타임에 메모리 안전을 보장하여 보안 취약점의 70%를 예방합니다
  2. 소유권 시스템: Rust의 고유한 소유권 시스템은 가비지 컬렉터 없이도 메모리를 안전하게 관리합니다
  3. 제로코스트 추상화: 고수준 코드를 작성해도 C/C++와 동일한 성능을 얻을 수 있습니다
  4. 산업계 채택: Microsoft, Google, Amazon 등 주요 기업들이 프로덕션 환경에서 Rust를 사용합니다
  5. 친절한 컴파일러: Rust 컴파일러는 에러를 찾아주고 해결 방법까지 제시하는 훌륭한 교육 도구입니다

1.9 복습 문제

  1. Rust가 메모리 안전성을 보장하는 핵심 메커니즘은 무엇인가요?
  2. 소유권 시스템의 3가지 원칙을 설명하세요.
  3. 왜 주요 소프트웨어 취약점의 70%가 메모리 안전성 문제에서 발생하나요? 구체적인 예시를 들어보세요.
  4. 제로코스트 추상화란 무엇이며, 왜 중요한가요?
  5. Rust를 첫 프로그래밍 언어로 배우는 것의 장점은 무엇인가요?
  6. 弘益人間 철학이 Rust 학습과 어떻게 연결되나요?

1.10 다음 장 예고

2장에서는 Rust 개발 환경을 설정하고 첫 번째 Rust 프로그램을 작성합니다. Cargo 빌드 시스템, 프로젝트 구조, 그리고 "Hello, World!" 프로그램을 통해 Rust 개발의 기초를 다질 것입니다.


Chapter 1 완료 | 약 16페이지

다음: Chapter 2 - 시작하기

📚 전체 Ebook 구매하기

EN $99 | KO $99 | Bundle $159

🛒 WIA Book