사용자:다메즈마/Rust 편집하기

이 문서는 리브레 위키의 사용자 문서이며, 일반적인 항목이 아닙니다.

리브레 위키의 정책에 따라, 이 문서에는 블로그, 이메일 주소, SNS 계정 등의 개인정보 및 친목 관련 요소가 있는 외부 사이트의 언급과 링크 노출이 금지됩니다. 또한, 이 문서에서는 다른 사용자를 언급해서는 안 됩니다.


편집하면 당신의 IP 주소가 공개적으로 기록됩니다. 계정을 만들고 로그인하면 편집 시 사용자 이름만 보이며, 위키 이용에 여러 가지 편의가 주어집니다.

편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.

최신판 당신의 편집
1번째 줄: 1번째 줄:
{{인용문|Rust is a systems programming language that runs blazingly fast, prevents nearly all segfaults, and guarantees thread safety.|러스트 공식 홈페이지 }}
'''Rust'''(러스트)는 모질라 재단에서 제작중인 프로그래밍언어이다. 2015년 8월 8일 기준 최신버전은 1.2.0이다
'''Rust'''(러스트)는 모질라 재단에서 제작중인 프로그래밍언어이다. 2015년 10월 14일 기준 최신버전은 1.3.0이다
== Rust의 제작방향 ==
== Rust의 제작방향 ==
모질라 재단에서 왜 굳이 새로운 언어를 만들어야 했는가? 그 이유는 기존 프로그래밍 언어들에게 각각의 단점이 있었기 때문이다.
모질라 재단에서 왜 굳이 새로운 언어를 만들어야 했는가? 그 이유는 기존 프로그래밍 언어들에게 각각의 단점이 있었기 때문이다.
17번째 줄: 16번째 줄:
* 기타 스크립트 언어들은 이러한 무거운 프로그램을 제작하는데 적합하기 않았다.
* 기타 스크립트 언어들은 이러한 무거운 프로그램을 제작하는데 적합하기 않았다.


한편 이러한 기존 언어들은 장단점이 있어서 곤란할 때, 모질라는 역발상을 하게 되었다
한편 이러한 기존 언어들은 장단점이 있어서 C++이 제일 적합하다 프로그래머의 몸값이 비싸다(...)라는 점이 있어서 곤란할 때, 모질라는 역발상을 하게 되었다


{{인용문|어차피 이렇게 된거 C++보다 메모리 관리가 용이하고 쓰레드의 사용이 쉬운 언어를 만들자!}}
{{인용문|어차피 이렇게 된거 C++보다 메모리 관리가 용이하고 쓰레드의 사용이 쉬운 언어를 만들자!}}
한편, 모질라 소속의 개발자였던 그레이던 호어의 개인 프로젝트였던 Rust를 매의 눈으로 발견하고 이를 지원하게 되었다.
== 특징 ==
이러한 사정으로 개발이 시작된 Rust이기 때문에 C++의 단점을 보완하기 위한 몇가지 특징이 존재한다.
=== 변수의 기본은 상수 ===
변수는 기본적으로 상수(바꿀 수 없는 상태)이다. 처음에 선언했을 때의 값을 가지고 계속 보존하고 있으며, 코드 중간에 값을 수정하는 일을 금지한다. 물론 모든 변수가 상수이면, 프로그래밍을 짜기 어렵기 때문에, 변수를 선언할 때, '''mut'''이라는 키워드를 넣어주면 변수의 값을 중간에 바꿀 수 있다.
<source lang="rust">
fn main()
{
    let a = 5;
    println!("{}",a);
    a = 10;
    println!("{}",a);
}
</source>
이러한 코드는 Rust에서는 동작할 수 없다. Rust에서는 기본적으로 모든 변수는 변경불가가 기본상태이기 때문이다. 따라서 '''mut'''키워드를 추가해 줘야 한다.
<source lang="rust">
fn main()
{
    let mut a = 5;
    println!("{}",a);
    a = 10;
    println!("{}",a);
}
</source>
Rust에서 기본 변수의 상태를 변경불가로 둔 것은 멀티 프로세싱과 메모리 안정성에 중요도를 둔 결과다. 멀티프로세싱에서 제일 문제가 되는 것은 여러 스레드에서 한 데이터를 접근할 때인데 기본 상태를 변경 불가로 두면, 데이터의 수정을 제한 시킬 수 있으므로, 스레드의 데이터 변경에 의한 문제를 미리 방지할 수 있고, 최적화 또한 쉽게 이룰수 있으며, 문제가 생기더라도 확인해야 하는 구간이 적어진다.
=== 메모리의 소유권한 ===
기본적으로 C++의 메모리 관리는 '''프로그래머가 다 해야하는 것'''이다. 최신 라이브러리에서 shared_ptr이나 unique_ptr같이 메모리 관리를 도와주는 것이 있기는 하지만, 기본은 프로그래머에게 맞기는 것이기 때문에 사용하는 것은 선택사항이다.
이에 반해 자바의 메모리 관리는 '''가상머신이 해야 하는 것'''이다  프로그래머는 기본적으로 메모리 관리에 신경쓸 필요가 없으며, 실제 메모리에 떨어지게 만들었다. 물론 고급으로 나아갈 수록 프로그래머가 쓰레기 수집에 신경을 써야 하지만 기본은 가상머진이 하는 것이다.
C++의 메모리 관리와 자바의 메모리 관리는 각각 장단점이 있다. 이러한 장단점을 절충한 Rust의 메모리 관리의 사상은 '''메모리에 소유권을 주고, 소유권을 컴파일할 때 감시한다'''이다.
Rust의 모든 데이터는 소유자가 있으며, 기본적으로 데이터의 소유권은 한 곳에만 있다. 만약에 소유권을 빌렸다면 소유자(함수)가 끝나기 전에 반환해야 한다
<source lang="cpp">
#include<iostream>
void func(int  a){
    std::cout<<a<<std::endl;
   
}
int main()
{
int a = 5;
func(a);
std::cout<<a<<std::endl;
return 0;
}
</source>
Rust
<source lang="rust">
fn func(a:i32){
    println!("{}",a);
}
fn main()
{
    let a = 5;
    func(a);
    println!("{}",a);
}
</source>
== C/C++를 대체하기 위한 프로그래밍 언어 ==
앞서 설명했드시 기본적으로 웹브라우저 엔진 제작을 위해 나온 언어이며, C++를 대체하기 위해서 나왔다. 따라서 컴파일 결과물이 가상머신이나 인터프리터를 거치지 않는 기계어로 나온다.
== 라이브러리 ==
cargo라고 하는 프로젝트 관리 프로그램이 있으며, 세팅 파일로 라이브로리를 관리하므로 C/C++보다 라이브러리 관리가 편하다.
== 멀티 스레드 지원 ==
최근에 나온 프로그래밍 언어인만큼 언어 표준에 스레드 라이브러리가 있다.
리브레 위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-동일조건변경허락 3.0 라이선스로 배포됩니다(자세한 내용에 대해서는 리브레 위키:저작권 문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
글이 직접 작성되었거나 호환되는 라이선스인지 확인해주세요. 리그베다 위키, 나무위키, 오리위키, 구스위키, 디시위키 및 CCL 미적용 사이트 등에서 글을 가져오실 때는 본인이 문서의 유일한 기여자여야 하고, 만약 본인이 문서의 유일한 기여자라는 증거가 없다면 그 문서는 불시에 삭제될 수 있습니다.
취소 편집 도움말 (새 창에서 열림)

| () [] [[]] {{}} {{{}}} · <!-- --> · [[분류:]] · [[파일:]] · [[미디어:]] · #넘겨주기 [[]] · {{ㅊ|}} · <onlyinclude></onlyinclude> · <includeonly></includeonly> · <noinclude></noinclude> · <br /> · <ref></ref> · {{각주}} · {|class="wikitable" · |- · rowspan=""| · colspan=""| · |}

이 문서에서 사용한 틀: