소프트웨어 사색
Rust
[하마] 이승현 (wowlsh93@gmail.com)
2020. 6. 16. 09:42
현대 프로그래밍에서 가장 중요한 오류들인 동기화 문제( 레이스컨디션이나 데드락등 )는 C++같은 언어로 개발한 제품들에서 굉장히 많은 문제를 발생시키곤 한다. 윈도우즈 오류의 대부분이 동기화문제, 메모리관리 문제라니까..
그중 동시성에서 레이스컨디션 문제는
1. 가변변수인데 게다가 동시접근가능 할 때 발생된다.
즉
2. 가변변수가 없거나 ㅡ 순수함수형
3. 동시접근예방 ㅡ Actor패턴 , CSP (예방이지 불가는 아님)
둘 중 하나만 충실 하면 근본적으로 없앨수 있다는 얘기이다.
1번 경우는 뮤텍스등을 통해 직접 보호 장치를 해야 하는데 , C++,Java, Go 같은 착한 (방종 or 자유로운) 부모하에서 인간의 실수는 비일비재 하다. 배움이 모자르고 막나가는 아이들도 생겨남.
근데 러스트는 엄한부모라 자식 (프로그래머) 에게 관련 지식(스마트포인트류,LifeTime,RefCell등등)을 강제 요구하고, 각종 메모리를 사용하는 규칙이 이미 단단히 정해져있기 때문에 오류가능성을 컴파일 타임에 알려준다.
만약 팀을 결성하고 C++만큼 빠른 성능에 다가 무엇인가 오류없는 결과물을 만들고자 출발 할 때, 러스트를 선택하면 팀내에 최소한 막나가는 아이들은 없다는 안도감은 가질 수 있겠다.