왜냐하면
C 구조체랑 포인터를 쓰는 이유가 데이터를 구조적으로 관리해야하는건데
이 경험을 바탕으로 이 구조체와 포인터가 불편하기때문에 state를 캡슐화하기 위해서 OOP를 쓴거거든
근데 구조체를 모르고 클래스를 배우니까 왜 구조체에 비해서 클래스를 쓰게 됐는지에 대한 체감이 잘 없음.
프로그래밍의 역사가 따지고보면 불편함의 요소잖아.
원래 구조체는 데이터 집합의 고통을 해결하기위해서 나오고, OOP는 구조체 포인터가 결합되면 상태가 동기적으로 일관성 있게 유지되지 않아서
클래스라는 개념이 나온거거든
결국 동일 구조체가 여러 함수에서 접근해버리니까 상태 일관성이 붕괴하고 이걸 막기 위해서 은닉이라는 개념이 등장하거든
즉 상태는 내부에서만 외부는 특정 메서드만, 이게바로 캡슐화인데
구조체가 데이터를 담는다면 클래스는 데이터의 상태를 관리한다는 개념으로 확장되고
메모리적 관점에서도
구조체가 정적 메모리 레이아웃을 쓰고, 이제 이 정적인 메모리로 관리하면 관리가 힘들기때문에
스냅샷으로 메모리에 남으니까 본질적으로 클래스를 쓰게 된거거든
이게 대가리가 깨져봐야 아는건데 이 경험 자체가 거세됨. 물론 반드시 여기까지 알 필요도 없지만 이 경험의 유무가 굉장히 크다 생각하는데
실무를 뛸때는 달리기니까 기초를 다 알 필욘 없지만
적어도 교육을 받을때는 달리기 위한 성장을 하는 시기라 어느정도의 단계가 필요한데 그 단계를 생략해버리는 느낌이라 더 빡세보임
요새 애들 공부 과정보면 솔직히 좀 빡세보임
아님 레퍼런스만 알면돼 포인터 필요없어 포인터가 있으면 더 복잡해질뿐
레퍼런스도 알고 포인터도 알고
행위가 상태를 결정해야하는데 상태 자체를 외부참조해버리면 문제가 생겨버리니까
ㄹㅇ