EMDI는 지금도 개발중

러스트 프로그래밍 언어 (Rust Programming Language) 본문

IT/용어정리

러스트 프로그래밍 언어 (Rust Programming Language)

EMDI 2021. 1. 7. 14:04

러스트(Rust)는 모질라 리서치에서 개발한 범용 프로그래밍 언어로, C, C++, Go언어와 같이 컴파일 기반의 언어이자 시스템 프로그래밍 언어에 속한다. 러스트(Rust)와 Go는 비슷한 시기에 등장하고 두 언어 모두 C, C++을 서로 다른 방향에서 대체하려 한다는 점때문에 많이들 이 두 언어를 비교한다.

러스트(Rust)는 인터넷에서 실행되는 서버 및 클라이언트 프로그램을 개발하는데 적합한 언어를 목표로 설계되었다. 그렇기에 러스트 = 안전하고, 병렬적이며, 실용적인 언어. 순수 함수형 프로그래밍, 액터 기반 병렬 프로그래밍, 명령형 프로그래밍, 객체 지향 프로그래밍 스타일을 지원.

* Rust의 장점들

빠르다 러스트 코드는 여러 플랫폼에 걸쳐 기본 시스템 코드로 컴파일된다. 바이너리는 자체 포함되며 런타임이 없고, 생성된 코드는 C 또는 C++로 작성된 코드와 함께 기능한다.
안전하다 러스트는 안전하지 않은 메모리 사용을 시도하는 프로그램을 컴파일링 하지 않는다. 대부분의 메모리 오류는 프로그램이 실행 중일 때 발견된다. 러스트의 구문과 언어 은유는 다른 언어에서 흔히 나타나는 메모리 관련 문제(null 또는 댕글링 포인터, 데이터 레이스 등)가 절대 생산까지 영향을 미치지 않도록 보장한다. 컴파일러는 이러한 이슈에 플래그를 지정하고 프로그램이 실행되기 전에 수정하도록 강제한다.
간접비용이 적게 발생한다 러스트는 엄격한 규칙을 통해 메모리 관리를 통제한다. 러스트의 메모리 관리 시스템은 '소유'라고 불리는 메타포를 통해 언어 구문으로 표현된다. 러스트 언어에서 주어진 가치는 한 번에 하나의 변수에 의해서만 소유되거나 유지, 조작될 수 있다. 러스트 프로그램의 모든 메모리는 소유권 메타포를 통해 추적되고 자동으로 방출된다.
융통성이 있다 러스트는 필요하다면 어느 정도의 위험도 감수할 수 있도록 되어 있다. 러스트의 안전 장치는 C, C++의 'raw pointer'와 같이 메모리를 직접적으로 조작해야 하는 경우 부분적으로 비활성화 시키는 것이 가능하다. 러스트의 메모리 안전 오퍼레이션은 절대로 완전히 비활성화 될 수 없다. 안전 오퍼레이션을 부분적으로 비활성화 한다고 해도 일반적인 사용 사례에서는 '안전벨트'를 풀을 필요가 거의 없으므로, 결과적으로는 안전의 기본 값이 훨씬 높은 소프트웨어가 탄생하게 된다.
사용하기 쉽다 러스트 바이너리를 생산하는 데 필요한 모든 것은 같은 패키지에 담겨 있다. GCC와 같은 외부 컴파일러는 러스트 생태계(소스로부터 컴파일하는 C 라이브러리 등) 밖에서 다른 구성요소를 컴파일하는 경우에만 필요하다. 마이크로소프트 윈도우 사용자들 역시 이등 시민 취급을 받지 않아도 된다. 러스트 툴 체인은 윈도우에서도 리눅스 및 맥OS에서와 같은 기능을 한다.
크로스-플랫폼 언어이다 러스트는 리눅스, 윈도우 및 맥OS의 세 가지 주요 플랫폼에서 모두 작동한다. 만약 개발자가 교차 컴파일하거나, 현재 실행하고 있는 것과 다른 아키텍처나 플랫폼에 대한 바이너리를 생산하고 싶다면 조금 더 많은 작업이 수반되지만, 러스트의 일반적인 임무 중 하나는 그러한 작업에 필요한 무거운 짐을 덜어 주는 것이다.
강력한 언어 기능을 제공한다 기존 사용하던 익숙한 언어보다 더 적은, 혹은 빈약한 기능을 가진 새로운 언어를 가지고 작업하고 싶어 하는 개발자는 거의 없을 것이다. C++ 같은 언어와 비교했을 때, 러스트가 지닌 기능들은 훨씬 개발자의 구미를 당기게 할 만하다. 매크로(Macros), 일반론(generics), 패턴 매칭(patternmatching) 및 구성은 러스트의 중요 기능들이다.
유용한 표준 라이브러리를 가지고 있다 러스트의 주요 목표 중 하나는 C와 C++ 개발자들이 가능하면 러스트를 사용하도록 장려하는 것이다. 그러나 C와 C++ 사용자는 컨테이너, 컬렉션 및 반복기를 사용하고, 문자열 조작을 수행하고, 프로세스와 스레딩을 관리하고, 네트워크 및 파일 I/O를 수행하는 등 적절한 표준 라이브러리를 원하고 있다. 러스트는 그 모든 것, 그리고 그 이상을 표준 라이브러리 안에서 할 수 있다. 크로스-플랫폼 언어인 러스트의 표준 라이브러리는 플랫폼 간에 신뢰성 있게 포팅할 수 있는 것들만 포함할 수 있다. 리눅스의 epoll과 같은 플랫폼별 기능은 libc, mio 또는 Tokio와 같은 타사 라이브러리의 기능을 통해 지원될 수 밖에 없다.
다양한 서드파티 라이브러리 '크레이트'를 가지고 있다 프로그래밍 언어의 유용성을 평가하는 한 가지 척도는 서드파티를 사용해 얼마나 많은 것을 할 수 있느냐이다. 러스트 라이브러리의 공식 저장소인 카고(Cargo)는 약 1만 개의 크레이트를 열거하고 있다. 이들 중 상당수가 공통라이브러리 및 프레임워크에 API 결합하고 있기 때문에 러스트는 그러한 프레임워크와 함께 하나의 언어 옵션으로 사용될 수 있다. 그러나 러스트 커뮤니티에서는 아직까지 전체적인 품질 및 효용성에 기초한 상세한 소개나 크레이트 순위를 공개하고 있지 않기 때문에, 직접 사용해 보거나 커뮤니티에서 설문조사를 해 보지 않고는 어떤 크레이트가 최선인지 선택할 방법이 없다.
IDE 지원이 훌륭하다 러스트 컴파일러로부터 마이크로소프트 비주얼 스튜디오 코드와 같은 IDE에 실시간 피드백을 제공하는 러스트 랭기지 서버(Rust Language Server)를 도입했다. 러스트 랭기지 서버는 기본 구문 체킹 이상의 피드백을 제공한다.

출처 : blog.naver.com/sundooedu/221706592707

 

Go언어와 비교해보는 시스템 프로그래밍 언어 러스트(Rust)

러스트 언어(Rust Language)는 모질라 리서치에서 개발한 범용 프로그래밍 언어로, 최근 인기가 급상승하...

blog.naver.com

 

Comments