객체지향


함수형


데이터 지향


절차지향


이 방법론은 결국 어떤 추상화 방법을 도입하느냐임


이 방법론의 본질은 무엇이냐. 어떻게 추상화를 입히느냐임.


객체지향은 상태+행위를 묶는것이 추상화


함수형은 순수 함수와 불변성으로 추상화


데이터 제향은 데이터의 레이아웃과 캐시 로컬리티로 추상화한다


절차 지향은 프로그래밍의 시간순을 추상화하는거임


결국 언어에 상관없이 사고하는 방식인 지향을 익히면 일종의 추상화 훈련이 끝나는거임.


문제는 우리의 대부분의 교육이 하드웨어 레벨의 교육에 머물러 있고, 이러한 영역은 추상화가 얇고 물리적 제약이 강함


가령 객체지향의 실제 구현은 버츄얼 테이블 영역에서 구현되는데, 이 버츄얼 테이블은 객체지향에서 몰라도 코드를 짤 수 있지만, 실제 언어,커널에서는 모르면 안됨.


커널과 드라이버 영역에서는 이러한 추상화 기법이 통하지 않는 영역임


이러한 하드웨어적 사고방식을 계속 유지하면 당연히 펌쟁이랑, 임베디드 같은 사고방식이 될수밖에 없음


하지만 애플리케이션 영역은 이 지향이라는 추상화 기법을 바탕으로 도메인 로직이라는 영역을 생각하면서 만들어가는거


결국 지향이라는 추상화 방법론을 통해서 틀을 잡고, 그 틀을 통해서 프로그램을 보는 관점을 어디 층위에 둘 것인가 두는게 중요함.


내가 집중할 레이어를 생각하고 프로그래밍을 하는거지.


결국 애플리케이션 프로그래밍의 제 1절차는 지향이라는 것


즉 추상화란 무엇인것이라는 걸 체감하면서 깨닫는거


즉 프로그래머가 자신의 멘탈 모델을 만들고부터 시작하는것뿐임.


자신만의 멘탈 모델을 만들고 그 추상화 기법을 보완하면서 공부하는거지.


그리고 프로그래머의 멘탈 모델은 제각각 다름.


문제는 자신의 멘탈 모델과 층위가 어디인가부터 인식하는게 중요하다 나는 생각함.


자기가 잘하는 영역에서 시작해야지