http://www.rust-lang.org/ 의 내용을 한글로 번역하며 부가설명을 붙여가며 공부할 계획이다. 그를위한 첫장 지금 시작해보자.
현재 Rust 는 Github 에서 오픈소스 형태로 개발되고 있으며 LLVM 기반의 중간언어형태의 컴파일과 C/C++ 컴파일을 지원한다. LLVM 을 기반으로 한다는 것은 곧 플랫폼에 종속적이지 않은 Multi platform 형태의 컴파일이 가능하다는 뜻이다. LLVM 에 대해서는 Rust 의 기본적인 시스템을 이해한 후에 알아보도록 하자.
참고로 git 주소는 https://github.com/mozilla/rust
rust tutorial http://rusttutorial.blogspot.kr/
Rust (a safe, concurrent, practical language )
러스트는 교정기이며 블럭구조화된 표현 언어이다. 러스트는 보이기에는 C 언어 계열과 닮았으나 syntactic 과 semantic 의 구체적인 부분이 매우 다르다. 이는 "크게 프로그래밍한다" 라는 관점을 지향하도록 디자인 되어 있으며 이는 큰 시스템의 완결성, 유용성 그리고 동시성을 보존하는 경계를 생성하고 유지한다는것을 뜻한다.
러스트는 명령적인 절차적 혼합과 동시적 행동, 객체지향 그리고 순수한 함수 스타일을 지원한다. 또한 제네릭 프로그래밍과 메타 프로그래밍을 지원하며 이 둘은 정적 , 동적 두 스타일 모두 가능하다.
전체 구성의 간략한 요약
Type System : 정적, 암시적, 직선적, 대수적, 지역적 추론
Memory safety : null 이 없거나 Dangling pointer, buffer overflows 가없다.
Concurrency : 메시지 전달을 통한 경량 task, 공유 메모리 부재
Generics : 타입 class들과 함께하는 type 파라미터
Exception handling : 복구 작업 격리와 풀기(unwinding)
Memory model : 선택적 지역-task GC , 지역 분석과 안전 포인터 타입
Compilation model : AOT(ahead-of-time) 또는 C/C++ 호환
License : dual MIT / Apache 2
맛뵈기
use core::rand::RngUtil; fn main() { for ["Alice", "Bob", "Carol"].each |&name| { do spawn { let v = rand::Rng().shuffle([1, 2, 3]); for v.each |&num| { print(fmt!("%s says: '%d'\n", name, num)) } } } }
댓글 없음:
댓글 쓰기