Rust가 떠오른 이유 : 안전성, 쾌적한 사용 - 우아한 스터디 및 잇츠 스터디

GoldenDusk·2024년 5월 11일
0

Rust

목록 보기
1/4

TMI

프로그래밍 러스트 책에 있는 것을 정리

스터디

잇츠 우먼 스터디 1기 Rust 스터디에 선발되어서 이번주부터 스터디 하게 됨

현재 배달의 민족과 잇츠 2기 뽑는 중

난 1기라서 우아한 스터디만 신청 가능함

우아한 스터디

잇츠스터디

Rust를 쓰는 이유 - chapter 1

텍스트

1. C언어, C++언어의 문제점

int main(int argc, char **argv){
	unnsigned long a[1];
    a[3] = 0x7ffff7b36cebUL;
    return 0;
}

이 프로그램에는 결함이 있다. 배열 a는 요소가 하나뿐이므로 a[3]이라고 쓰는건 C 프로그래밍 언어 표준 상 미정의 동작이라고 한다.

미정의 동작이란

본 국제 표준이 요건을 부과하지 않는, 이식할 수 없거나 잘못된 프로그램구문 요소 또는 잘못된 데이터를 사용할 때의 동작

미정의 동작은 단순히 예측할 수 없는 결과를 내는 것으로 끝이 아닌, 표준은 노골적으로 프로그램이 무엇이든 할 수 있게 허락한다.

C, C++는 미정의 동작을 회피하기 위한 책임이 프로그래머에게 있음

C, C++의 미정의 동작을 회피하기 위한 규칙이 수 백 개로 결과 책임이 프로그래머에게 있는 것임 이는 품질 문제와 더 나아가 보안 결함으로 주된 원인이 됨

2. 안전성

Rust의 약속 : 컴파일러의여러 검사를 통과한 프로그램에는 미정의 동작이 없게 하겠다는 것

즉, 러스트는 대상을 잃은 포인터, 중복 해제, 널 포인터 역참조를 전부 컴파일러 시점에서 잡는다. 또한 배열 참조를 컴파일
시점 검사와 실행 시점 검사로 보호하기 때문에 버퍼 오버런이 없다고 한다. 즉, 앞 선 c언어의 문제를 오류메세지와 함께 안전하게 종료시킨다.

아직, 러스트가 탐지할 수 있는 버그의 양에는 한계가 있지만, 코드에서 미정의 동작만 사라져도 개발 특성이 크게 좋아진다고 함

3. 병렬 프로그래밍

C언어와 C++은 동시성을 제대로 이용하기 어려워, 싱글 스레드 코드로 도저히 성능을 낼 수 없을 때만 동시성에 의존한다.

러스트는 데이터가 변경되지 않는 한 스레드 간에 자유롭게 공유할 수 있고, 변경되는 데이터는 동기화 기본 요소를 써야만 접근 가능하다.

즉, 러스트는 최신 멀티 코어 기기의 성능을 제대로 활용하기 위한 최적의 언어로 만들어 준다.

러스트 생태계는 복잡한 작업 부하를 프로세서 풀에 고루 분배할 수 있게 도와주고 Read-Copy-Update 같은 무잠금 동기화 기법을 쓸 수 있게 해주는 등, 일반적인 동시성 기본 요소의 역할을 뛰어넘는 다양한 라이브러리 제공한다.

4. 빠른 속도

Rust의 빠르다의 의미

프로그램 설계 시 Rust의 경우, 밑바닥에 있는 머신의 성능을 최대한 활용하는데 기꺼이 도와준다.

효율적인 기본 값을 가지고 설계된 언어로서, 메모리의 사용 방식과 프로세서의 관심이 할애되는 방식을 제어할 수 있게 도와준다.

범용 프로그래밍 언어

범용 언어를 사용하면 누구나 성능이 좋지 않은 코드를 작성할 수 있다.

범용 언어는 프로그래머의 편의성을 중시하기 때문에 하드웨어 자원 관리를 직접적으로 제어하기 어렵다. 따라서 메모리 관리나 프로세서 활용 측면에서 비효율적인 코드가 작성될 수 있다.

Rust

범용 언어는 프로그래머의 편의성 위주로 설계되어 하드웨어 자원 관리가 어렵지만, Rust는 시스템 자원 활용을 최적화하도록 저수준 제어를 허용하는 언어로 하드웨어 자원을 최대한 활용 할 수 있다.

Rust는 메모리 사용 방식과 프로세서 활용 방식을 프로그래머가 직접 제어할 수 있게 한다. 효율적인 기본 값(default)을 제공하여 저수준 하드웨어 제어를 용이하게 해준다.

이를 통해 Rust는 시스템 자원을 최적화된 방식으로 활용할 수 있다. 메모리 사용량을 최소화하고, 프로세서 연산을 효율적으로 배분할 수 있다. 결과적으로 높은 성능과 효율성을 가진 프로그램을 작성할 수 있다.

profile
내 지식을 기록하여, 다른 사람들과 공유하여 함께 발전하는 사람이 되고 싶다. gitbook에도 정리중 ~

4개의 댓글

comment-user-thumbnail
2024년 5월 12일

에휴 부러워

1개의 답글