댓글에서 한명이 계속 말하던데
난 개인적으로는 틀린 말이라고 생각함
러스트가 C에 비해 추상화 수준이 높다는 말의 근거가 뭔지는 모르겠지만
아마 날 포인터 산술 연산의 제한이나 C에 비해 복잡한 제어 구문 혹은 표현식들, 소유권과 라이프타임 규칙들이 있을텐데
사실 러스트를 깊게 파고 unsafe한 기능들까지 알아야 한다면 결국 러스트에서도 포인터 연산을 해야 하는건 매한가지임
패턴 매칭같은 고수준 제어 구문들이 어셈과 일대일 매칭시키기는 어렵기 때문에 로우레벨 공부를 하기 어렵다는 건 어느 정도 맞는 말이지만
사실 이건 C가 극단적으로 단순한 언어 설계를 가지고 있기 때문이지 러스트의 추상화 계층이 문제라고는 생각하지 않음
아예 가상 머신이나 인터프리터같은 런타임 위에서 돌아가며 GC가 돌아가는 언어들과 비교해 보면 러스트의 추상화 계층은 최근 나오는 언어들 중 그나마 가장 단순한 편임
소유권이나 라이프타임 규칙들은 대부분 어차피 실제 실행되는 순간에는 별 상관이 없고 오직 정적 타입체킹시에만 확인하고 넘어가니까 패스
개인적으로 러스트를 공부하면서 오히려 언어 자체를 배우는 경험으로만 놓고 보면 C보다 CS 공부에 좋다고 느꼈던 점들은
튜토리얼 수준의 많은 C 교재에서 짚고 넘어가지 않는 위험한 행동이나 미정의 동작들을 컴파일러와 튜토리얼 모두에서 바로잡고 넘어간다는 점이었음
사실 실제 개발을 한다는 관점에서 우리가 왜 CS 지식을 배워야 하는지를 물어본다면 결국 자기도 모르는 사이에 쓰는 위험하거나 성능상 패널티가 있는 동작들을 피하기 위해서인데
러스트는 초급 튜토리얼 수준에서는 이러한 부분을 컴파일러가 바로잡아주고,
중급 이상의 튜토리얼에서는 어차피 unsafe한 기능들을 사용하니 실제로 무슨 일이 벌어지는지를 조금 더 자세히 설명해 주는 경우가 많으니
이 부분이 언어 자체를 배우는 것 뿐만 아니라 실제 기계의 동작이 어떻게 이루어지는지를 이해하는 데도 도움이 되었던 경우가 많음
그리고 무엇보다 CS 지식을 깊게 파고들다 보면 C 또한 결국 언어와 컴파일러라는 추상화 계층 위에서 노는 언어기 때문에
사실 C에서 제공하는 추상화 계층이 실제 기계의 동작과는 일치하지 않는 경우도 있다는 것을 알게 됨
뭐 예를 들어 메모리가 sequential하고 모든 위치에 대해 같은 비용으로 접근 가능하다
틀린 얘기지만 C 자체만 놓고 보면 이런 사실을 알아낼 방법이 없잖아?
결국에는 C가 다른 언어보다 기계와 더 가까운 언어인 것은 사실이지만 CS 지식을 공부한다는 측면에서는 결국 언어 자체보다는 기계의 동작을 이해해야 하는 순간이 오고
그렇게 되면 사실 언매니지드 언어라면 뭐가 되었든 큰 차이가 없어지는 순간이 온다는 말임
그렇게 따지면 C고 나발이고 베릴로그로 회로 설계하는게 가장 좋은데 왜 그건 안함?
개고수
ㄹㅇ C만 저수준이라고 빠는애들 특징이 C abstract machine이 뭔지 모른다는거임
러스트 컴파일러 에러 붙들고 있으면 어느샌가 cs는 어느정도 익히게 되는듯
그냥 러스트 배울 지능이 없어서 열등감에 무지성 억지 부리는 도배충인거 같던데 엄청 공들여서 반박했네 - dc App
가상화=추상화라는 뉘양스만 빼면 좋네
가상화가 추상화 레이어 중 하난데 이상한걸로 트집잡네
@ㅇㅇ(211.234) 좋다는데도 뭐라함
위에 가상머신 어쩌구 말하는거야? 지적이 너무 독자들을 초딩으로 보는거 같음
개추
ㅋㅋ 개소리하네 너 러스트코드보고 현재 스택프레임 구조 바로 그려짐? 애초에 러스트 포함해서 네이티브 컴파일하는 언어들은 전부다 함수화해서 링커한테 보내는데, 그게 바로 보이는건 c 가 제일임.
너가 러스트 코드 보고 그게 어떻게 컴파일될지 그려지면 인정하는데 안그러는데 이런글 쓰는거면 걍 개줫밥년이라는 말밖에 해줄말이 없음.