프로그래밍과 잡담

Rust 언어를 한번 보고 있다.. 본문

프로그래밍

Rust 언어를 한번 보고 있다..

크레온 2016. 12. 5. 17:06

이 언어는 모질라에서 만든 언어이며, 모질라에서 이 언어로 웹브라우저 엔진을 만들고 있다고 한다.


Rust는 C++과 거의 동일한 속도로 동작하며,  동시성,  멀티코어, 메모리 안전성을 지원하는데, 특히 메모리 안정성을 강조한다.  메모리 안정성은 좀 특이한 방식으로 처리하고 있다. 소유권이라는게 있어가지고 있어서 마음대로 막 공유를 못하게 해서 안정성을 강화한다고 한다.  컴파일 타임에 메모리 문제를 걸러낸다고 한다.


근데 장점만 있느냐,  단점으로는 컴파일러가 되게 엄격하다.. 메모리를 안정성을 담보 하기 위해서, C나 C++은 넘어가는 부분도 Rust 컴파일러는 넘어가지 않는다.. 그리고 신생언어다보니 IDE가 없다.  vim, emacs, 비주얼 스튜디오, IntelliJ 에 플러그인 방식으로 해서 있긴한데, 초창기다보니  IDE가 썩 별로다.. intellisense가 잘 동작을 안한다던지 하는 등의 문제가 있다. vim이나 emac는 쓰던 사람들이나 쓰는 에디터다 보니, 난 하나도 모르겠음..


프로그래밍을 안해본 사람이 이 언어를 할 경우, 상당히 어려울 거다.. 고로 초보자를 비추.

C/C++을 하던 사람들한테는 할 만하다.  Java나 C#을 하던 사람들한테는 조금 어려울 지도..


요 몇일 동안 살펴봤는데 Rust라는 언어가 개념이 좀 이해하기가 어렵다..


난 자바나 C#을 해서 그런지 문법도 생소하다..


C 스타일이긴 한데.. 기존 자바처럼 클래스를 이용하는게 아니라.. trait 이나 struct 로 객체지향을 만들고 그러는데..

상당히 생소하다..


간단한 예로..


자바는 아래와 같다.


class Test{


public int Add(int x, int y){

return x+y;

}

}


그냥 Test 클래스에 더하는 메소드가 있는 클래스다.


근데 Rust를 자바 처럼 만들면, 아래 처럼 만든다..


pub struct Test {

}

impl Test{

pub fn new(val : i32) -> Test{
Test{ }
}

pub fn add(&self, x: i32, y: i32) -> i32{
x + y
}

}


Rust는 클래스가 없고 구조체에다가 메소드를 다는 방식으로 만드는거 같다.


다른 언어들과 다른 점으로 러스트는 모든 변수가 읽기 전용이다.


let tmp = 10;

tmp = 20; //이라고 쓰면 컴파일 오류가 발생한다.



변경 할 려면 아래 처럼 해야 한다.

let mut tmp = 10; // mut를 붙여야만 값을 변경 할 수 있다.

tmp = 20;



음... Rust는 C 언어를 대체하기에는 좀 어려워 보이고, 잘 하면 C++ 정도는 대체할 수 있을 거라 본다.


일단 메모리 안정성이 최대 장점이니까.  C++은 메모리 관리가 쉽지가 않고 영 지랄같은 문법이며 각종 런타임에러가 발생하는걸 막을 수 있으니까, 잘만 한다면 C++를 대체하지 않을 까라고 생각한다..  먼 미래겠지 아마도..



추가

아 근데.. 너무 제약이 심하다.  기존의 방식으로 하면 계속 컴파일 에러가 발생한다.


이  소유권이라는게 계속해서 제약을 가하네.. 쯥..








반응형
Comments