참신한 언어고 재밌는 언어긴 한데 아직은 좀 기다려봐야하지 싶다.
일단 쓰면서 좀 불편했던 점은
1. 오버로딩이 없다. 이건 호불호가 갈릴만한 내용인 것 같긴 한데 기본적으로는 오버로딩이 안되더라. 스택 오버플로 뒤져보면 traits로 workaround하는 방법이 몇 추천되긴 하는데 막상 쓰려면 오버로딩만큼 깔끔하게 코드가 나오지가 않아서 좀 불만.
2. 오너쉽 개념이 이해가 어렵다. 내 머리가 빠가라 그렇겠지만 그래도 어렵더라. 런타임 에러가 될 소지가 있는 부분을 컴파일러가 가능한한 막아주는 게 장점이라고 하던데, 내 느낌에 C/C++은 알수 없는 런타임 에러와의 싸움이라면 rust는 컴파일러와의 싸움임.
3. 개수가 32개가 넘는 배열은 clone이 안ㅋ됨ㅋ. 이건 처음에 접했을 때 좀 많이 어처구니가 없었다. 언어 자체가 그런걸 어쩌겠냐마는 아직도 이 점은 이해가 안됨.
3. abi가 unstable하다. 거기다 찾기도 어려워. 이건 일반 응용 프로그램을 짜는데는 지장이 없겠지만 rust로 커널을 짠다거나 완전 low level을 다룬다거나 할 때는 문제가 될 여지가 좀 있어뵌다.
go가 system programming이 가능하다는걸 장점으로 내세웠다가 슬며시 빼고서는 concurrent를 장점으로 내세웠던 것처럼 rust도 그렇게 될 가능성이 없지는 않을 것 같다.
너무 불편했던 것만 적은것 같아서 장점도 적자면
에러가 발생하기 쉬운 c/c++의 for문을 아예 없애버리고 range와 iterator를 기본으로 사용한건 탁월한 선택인 것 같다. c++도 boost::range를 쓸 수 있고 차기 표준에도 range 추가가 논의되고 있으니 이 점은 딱히 c++에 비해 큰 장점은 아닌 듯?
타입 추론이 강력해서(근데 아마도 이 장점 때문에 오버로딩이 안되는 단점이 생기지 않았을까 싶긴 하지만) 잘 쓰면 간결하고 명확한 코드가 되더라. 대충 Vec<_> 쓰면 알아서 _에 해당되는 타입을 찾아줌.
테스트와 문서화가 내장됨. c++은 boost::test나 google test 등등의 유닛테스트 라이브러리를 끌어와야하는데 rust는 test 코드 작성하면 cargo test로 그냥 테스트할 수 있어서 편하더라. 코드 자체에 넣어둔 테스트 루틴은 테스트할 때만 사용돼서 그냥 사용할 때는 bloat될 여지도 없어뵈고.
내가 아직 rust를 깊게 파본게 아니라서 몰라서 생기는 단점일 수도 있겠지만 어쨌든 첫인상은 그랬어. 틀린게 있으면 알려주면 감사!!
제가 볼 땐, 러스트도 조만간 C++이 다 흡수해 버림. 분명 좋은 언어이긴 한데, 좋은 언어라고 성공했으면 벌써 C#이 자바 따라 잡았겠지.
러스트 빠는 그 분에게는 슬픈 말이겠지만, 러스트 성공 요인은 5% 예상합니다.
러스트 빠는 그 분에게는 슬픈 말이겠지만, 러스트 성공 확률은 5% 예상합니다.
노성님 말대로 10년 후 살아남은 언어 쓰면 됨 : |
삼성이 밀어주는 소문이 있다는데?
rust 보면 최근에 webrender라는 괴물을 만들어냄. 애초에 그래픽스에 대한 병렬처리를 큰 문제없이 개발할수있으니까 c++로는 저런 괴물 만들어내기 어려울듯. 관심있는흉들은 github에 봐라. 차트보면 캐쩐다.