시스템 프로그래밍 언어의 혁신
Rust와 Go는 현대적 시스템 프로그래밍을 위한 새로운 언어로 주목받고 있습니다. 정보처리기사 시험에서는 Rust의 소유권 시스템, Go의 고루틴과 채널, WebAssembly가 핵심 출제 범위입니다.
Rust 핵심 개념
Rust는 메모리 안전성을 컴파일 타임에 보장하는 시스템 언어입니다. GC 없이도 메모리 안전합니다.
- 소유권(Ownership): 각 값은 하나의 소유자만 가짐. 소유자가 범위를 벗어나면 메모리 자동 해제
- 빌림(Borrowing): 불변 참조(&T)는 여러 개 동시 허용. 가변 참조(&mut T)는 하나만 허용
- 생명주기(Lifetime): 참조의 유효 범위를 컴파일러가 추적. Dangling Pointer 방지
- Result와 Option: 에러와 null을 타입 시스템으로 처리. 런타임 패닉 방지
- 강점: 메모리 안전, C 수준 성능, 스레드 안전(Fearless Concurrency)
- 활용: WebAssembly, 임베디드, 운영체제(Linux 커널), 파이어폭스
Go 핵심 개념
Google이 개발한 간결한 동시성 언어입니다. 빠른 컴파일, 정적 타입, GC 내장
- 고루틴(Goroutine): 경량 스레드(2KB 스택). go 키워드로 생성. 수만 개 동시 실행 가능
- 채널(Channel): 고루틴 간 통신. “메모리 공유 대신 통신하라” 철학. make(chan int)
- select: 여러 채널 중 준비된 것 처리. 비차단 채널 통신
- 인터페이스(Interface): 덕 타이핑. 명시적 구현 선언 불필요. 메서드 시그니처만 일치하면 됨
- 강점: 간결한 문법, 빠른 컴파일, 내장 동시성, 단일 바이너리 배포
- 활용: 클라우드 인프라(Kubernetes, Docker, Terraform)
WebAssembly(Wasm)
- 정의: 브라우저에서 실행되는 바이너리 포맷. C/C++/Rust 코드를 브라우저에서 네이티브에 가까운 속도로 실행
- WASI(WebAssembly System Interface): 브라우저 외부(서버, 엣지)에서 Wasm 실행. 보안 샌드박스
- 활용: 브라우저 게임, 이미지 편집, 암호화 라이브러리, 서버리스 함수
정보처리기사 기출 핵심 정리
- Rust = 소유권·빌림·생명주기로 컴파일 타임 메모리 안전
- Rust 불변 참조 N개 가능, 가변 참조 1개만 가능
- Go 고루틴 = 경량 스레드(2KB), 채널 = 고루틴 간 통신
- Go 인터페이스 = 덕 타이핑, 명시적 선언 불필요
- WebAssembly = 브라우저에서 고성능 바이너리 실행