cc : "너가 말하는 그런 류의 프로그래밍을 Systems Programming이라고 하자."
"그러면 이제 Systems Programming을 배우는데 있어서 C언어가 Rust에 비해 가지는 장점이 무엇인가라는 질문을 할 수 있지"
C 의 System programming 대항마로 Rust 를 예로 드는데,
일단 C++ / Java / C# 의 조상은 C 라고 봐도 무방할 정도임.
Rust 의 점유율은? 보시다시피임.
학문적으로 공부하는데 있어 의미 없는 프로그래밍 언어는 많지 않음.
물론 순수하게 수학, 물리 평생 공부해도 좋은 학문임.
대신 배고픔으로부터 기초학문이 구원해주지 않음.
적당히 타협하고 적당히 스까야한다~
성능비교? C / C++ 과 거의 비슷한 성능을 보임.
특히 Mandelbot 처럼 재귀적 연산집약적 파트는 컴파일러만 잘 주물러 두면 꽤 성능을 발휘할 수 있음.
그래서 Rust 도 꽤 좋은 성능을 냄. 하지만 현재로선 C / C++ 에 비해 메모리를 두 배 이상 사용하게 됨.
어떤 알고리즘에선 Rust 가 오히려 메모리를 조금 적게 소모할 수도 있음. 하지만 컨셉상 대개 불리함.
Embedded? 128KB ~ 256KB 지원하는 코어들 많음. 사용 메모리가 곧 제조단가 상승 요인이 됨.
하지만 Rust 가 돌아가는 환경 자체가 별로 없는데,
Rust 문법을 구동하기 위해서 C 나 C++ 로 이미 만들어진 임베디드 백엔드 위에 Rust 를 구현한다면
시스템 프로그래밍 언어적인 장점이 그닥 없음.
즉, Rust 가 시스템 프로그래밍 언어로서의 장점을 갖기 위해서는 타겟 시스템의 바이너리 코드를 직접
제너레이팅 해야함. 그러면 다시 원점으로 돌아가게 되고 Rust 가 돌아가는 시스템환경이 많지 않음.
cc : "지금 바로 떠오르는 건, 잘못된 수동 메모리 관리로 시스템이 터지는걸 지켜보면서"
" '아... 로우레벨 프로그래밍은 정말 어렵구나'라고 느껴볼 수 있다라는게 있고
하하. 메모리 직접 관리하는게 그리 어렵진 않음.
그리고, rust 를 잘 다루면서 메모리를 직접 잘 다룰 수 없다는건,
정작 그 사람은 rust 언어와 같은걸 만들 수 없다는걸 의미함.
그게 단지 rust 언어에 국한되는 이야긴 아님.
cc : "듣도보도 못한 임베디드 장비에서 듣도보도 못한 방식으로"
"시만틱이 뜯어고쳐진 C언어 소프트웨어가 돌아가는걸 지켜보면서"
" '아..대체 나는 뭘 만들고 있는거지?'라고 생각해 볼 수 있다는 장점도 있겠네"
1. 듣도 보도 못한 임베디드 장비 -> 아마 이친구는 임베디드 장비란것에서 직접 개발해본 적이 없을듯.
즉, 정작 자신이 임베디드란걸 제대로 듣도 보도 못했을듯.
끽해야 Atmel128 코드 같은거 학생들이 올린거 눈에 스쳐 넣었겠지.
듣도 보도 못한 방식으로 -> 그래서 그런거겠지.
아주 다양한 변종들을 경험해봤지만, 듣도 보도 못한 방식이랄것 까진 없음.
1) int 가 8비트인 환경이 있긴함.
2) 임베디드 인라인 어셈블리가 쓰이기도 함.
3) 레지스터에 직접 접근하는 intrinsic 을 깔고 가는 경우도 있음.
4) Memory mapped IO 를 통해 독특한 동기 / 비동기 방식의 IO를 사용하기도 함.
하지만 이건 듣도 보도 못한 방식 수준이 아니라 평범한거임.
5) 가끔 아주 오래된 C 표준이나 C 표준에서 조금 어긋난 정도를 만날 수도 있음.
VC++ 과 G++ 정도의 차이만큼도 아님.
2. 아.. 대체 나는 뭘 만들고 있는거지?
그건 스스로가 멍청한거임.
임베디드 짜달아 복잡할 것도 없음.
3. 솔까말, 임베디드 업계에서
rust 로 임베디드 개발해서 상용화 성공한 회사를 듣도 보도 못한 사람들이 더 많지 않을까?
한줄 요약.
다 안해보고 하는 소리.
하지만 난 임베디드에서도 C++ 을 쓰는걸 좋아하지. C 는 좀 따분하니깐.
어떤 논쟁이든 터무니 없는 논쟁은 모두 안 해본 애들이 일으킵니다. 대표적으로 학벌논쟁이 있겠네요.
cc횽 까지 마셈 ㅡㅡ
난 cc 를 까는게 아냐. 그냥 fact 를 말한거임.
크..... 역시 코세형님