5878
2016-04-13 18:30:07
1
본문 내용에 큰 틀에서 동의하지만 일부 반론을 하지면, 포인터는 하드웨어를 몰라도 쓸 수 있습니다. 어차피 일반적인 응용 프로그램의 개발자들이 다루는 메모리는 개발 언어의 문법과 운영체제에 의해 추상화 된 공간입니다.
그리고 C 언어의 기반이 되는 함수는 수학적 의미에서의 함수가 아닙니다. 수학적 의미의(그리고 함수형 언어들의) 함수는 주 작용 하나만 수행하는 것이고 부수 작용이 없어야 합니다(물론 100% 없을 수는 없죠).
하지만 C, C++, Java 등의 주류 언어들의 함수는 대부분 부수 효과를 일으키는게 목적입니다. 추상화의 정도는 부수효과를 어디까지 제한할 것인가로 볼 수 있죠.
추상화와 포인터는 큰 관계가 없다고 보는게 맞지 않을까요? 오히려 추상화는 값의 접근 및 변경 가능성(C++에서는 const 키워드나 protected, private 키워드 같은)과 변경을 허용하는 범위(프로시저 내부, 클래스, 전체 프로그램 등)에 더 큰 관련이 있는 것 같아요.