검색
색인
러스트 프로그래밍 언어, Rust programming language

안전성, 속도, 병행성에 초점을 맞추어 모질라(Mozilla)에서 개발한 범용 시스템 프로그래밍 언어.
C나 C++, Go 언어와 같은 시스템 프로그래밍 언어에 속하며, 쓰레기 수집(garbage collection) 없이 안정적인 메모리 해제 기능을 지원한다. 또한 병행(concurrent) 프로그래밍 제공과 멀티 코어(multi-core) 프로세싱을 지원할 수 있는 병렬 처리 프로그래밍 제공이 강점이다. 오픈소스이다.

※ 모질라(Mozilla): 1998년 넷스케이프 구성원이 설립한 자유 이용 소프트웨어(free software) 커뮤니티

2006년에 모질라 개발자인 그레이던 호어(Graydon Hoare)의 개인 프로젝트로 시작되어, 2009년에 모질라의 차기 웹 브라우저 엔진 프로젝트인 서보(Servo) 개발을 위한 목적의 프로젝트로 전환되었다. 러스트는 C/C++와 동등한 수준의 속도를 달성하면서 메모리 오류를 완전히 없애는 것을 목표로 한다. 즉, C++로 개발 시 프로그래머가 메모리 관리 오류(예: 널 포인터, 댕글링 포인터, 데이터 레이스 등)를 야기하기 쉬워, 러스트는 C++에서와 같은 메모리 오류 발생을 줄이는 데 중점을 두었고, 컴파일 시점에 메모리 오류를 가능한 찾아내어 해결할 수 있도록 만들어졌다.
또한 함수형 프로그래밍 언어에서 발전된 타입 시스템(type system)을 도입하였으며, 클래스(class) 대신 트레이트(Trait)라는 새로운 방법을 사용하여 다형성을 지원한다. C/C++에서의 매크로가 단순한 문자열 치환으로 전처리기를 통해서 처리하는 반면, 러스트의 매크로는 문법의 일부로 컴파일러에서 처리하여 언어 확장 및 쉬운 모듈화를 지원한다. 모듈들은 크레이트(Crate)라고 하는 단위로 묶여서 실행 파일이나 라이브러리로 배포될 수 있다. 카고(Cargo)라는 패키지 관리 프로그램을 통해 빌드 및 패키지 배포를 자동화한다. 사용자는 필요한 라이브러리를 카고를 통해 자동으로 다운로드할 수 있다.
모질라는 러스트 1.0 버전을 2015년 5월에 공식적으로 공개하였고 그 후 지속적으로 개선된 버전을 공개하여 2016년 12월 러스트 1.14, 그리고 2019년 1월에 가장 최신 버전인 1.32.0을 공개하였다. 마이크로소프트 윈도(Microsoft Windows), 리눅스(Linux), 맥OS(Mac OS X), 안드로이드 등 운영 체제에서 Rust를 지원한다.
다음 예시는 Hello world와 변수 x 값 22를 출력한다.

fn main() {
// Print text to the console
println!("Hello World!");
let x = 10 + 12 /* variable x */
println!("Is 'x' 10 or 100? x = {}", x);


[참고] 프로그래밍 용어:
* 널 포인터(null pointer): 포인터가 가리키는 값이 없는 것
* 댕글링 포인터(dangling pointer): 적절한 타입의 유효한 객체를 가리키고 있지 않는 포인터
* 데이터 레이스(data races): 임의 메모리 영역을 두 스레드(thread)가 순서없이 같이 할당되어 데이터 오류나는 경우(즉, 예기치 못한 동작으로 메모리 오류)
* 타입 시스템(type system): 변수, 함수 등의 타입(型) 속성(정수형, 실수형, 등)을 지정하는 체계
* 클래스(class): 객체 지향 프로그래밍에서 객체 내부 데이터 구조와 동작을 정리하여 정의한것.
* 다형성(polymorphism): 변수, 객체, 함수, 메소드 등의 각 요소가 다양한 타입을 갖을 수 있는 성질
* 트레이트(trait): 특정 타입으로 정의하지 않고 미지정(unknown) 타입으로 메소드 정의(다형성 지원에 활용)
* 크레이트(Crate): 러스트 컴파일 단위 모듈
* 카고(Cargo): 러스트 패키지 관리 프로그램