오브젝트, 코드로 이해하는 객체지향 설계: 들어가며

이전에 진행했던 객체지향의 사실과 오해 스터디 글 👇

 

객체지향의 사실과 오해: 들어가며

약 4개월간의 클린 아키텍처 스터디를 끝내고 객체지향의 사실과 오해 책을 읽기로 했다. 사실 순서를 굳이 따지자면 객체지향의 사실과 오해 -> 클린 아키텍처 -> Object 순으로 읽는 것이 좋다는

yatta.tistory.com

 


 

4/23일부터 오브젝트 스터디를 진행하기로 했다. 2주에 한 번씩 2챕터씩 진행한다.

스터디 첫날 진행 방식

1) 책의 모든 코드를 작성해본다

2) 테스트 코드를 작성한다

 

첫날을 진행해보고 어떤식으로 진행할지 점차 수정해나갈 것 같다. 

 

어려울 것 같아 걱정이 되지만 최대한 꼼꼼히 열심히 해나갈 예정이다.

 

아래는 오브젝트 들어가는 글 정리로 이어진다.

들어가며: 프로그래밍 패러다임

 

우리가 사용하는 패러다임은 '한 시대의 사회 전체가 공유하는 이론이나 방법, 문제의식 등의 체계'를 의미한다.

 

토마스 쿤은 <과학혁명의 구조> 책을 세상에 내놓는다. 그리고 과학이 단순한 계단식 발전의 형태가 아니라 새로운 발견이 기존의 과학적 견해를 붕괴시키는 혁명적인 과정을 거쳐 발전해왔다고 주장했다. 이를 '과학 혁명'이라 불렀다.

과학혁명이란 과거의 패러다임이 새로운 패러다임에 의해 대체됨으로써 정상과학의 방향과 성격이 변하는 것이고, 이를 패러다임 전환이라고 부른다.

 

이 책에서 이야기하는 패러다임 전환이란 절차형 패러다임에서 객체지향 패러다임으로의 변화를 가리킨다.

 

프로그래밍 패러다임이 중요한 이유는 무엇일까?

프로그래밍 패러다임은 개발자 공동체가 동일한 프로그래밍 스타일과 모델을 공유함으로써 불필요한 의견 충돌을 방지한다. 이것이 바로 이 책이 쓰여진 이유다. 이 책은 객체지향 패러다임에 관한 책이다.

프로그래밍 언어와 프로그래밍 패러다임을 분리해서 설명할 수는 없다. 프로그래밍 언어의 특징과 프로그래밍 스타일은 해당 언어가 채택하는 프로그래밍 패러다임에 따라 달라지기 때문이다. (ex c-절차형 패러다임 기반, java-객체지향 패러다임 기반, 리스프-함수형 패러다임 기반)

 

토마스 쿤의 주장에서 동일하지 않은 것이 있다.

1) 쿤은 상이한 두 가지 패러다임이 함께 존재할 수 없다고 주장했다.

프로그래밍 패러다임에서는 이야기가 달라진다. 절차형에서 객체지향 패러다임으로 전환되었다고 두 패러다임이 함께 존재할 수 없는 것은 아니다. 하나 이상의 패러다임을 수용하는 언어를 다중패러다임 언어라고 부르기도 한다. (스칼라)

2) 쿤은 과거의 패러다임과 새로운 패러다임은 개념이 달라 비교할 수 없다고 주장했다.

프로그래밍에서 절차형 패러다임과 객체지향 패러다임을 비교하는 것은 가능하다. 절차형 패러다임 기반 위에 객체지향 패러다임이 구축되었기 때문이다.

프로그래밍 패러다임은 혁명적(revolutionary)이 아니라 발전적(evolutionary)이다.

=> ✏️ 객체지향 패러다임을 주로 사용하더라도 다른 패러다임을 배우는 것이 도움이 된다는 사실을 기억해라. 객체지향이 정답은 아니다.

 


 

책은 동일한 프로그래밍 스타일을 학습 시키기 위하여 객체지향 패러다임에 대해 설명할 것이라 말한다.

하지만 그럼에도 객체지향이 정답은 아니고, 상황에 따라 다른 패러다임을 적용할 수 있는 시야를 길러야 한다고 말한다.

 

이 책을 통해 우리는 '정답'이 아니라 '방법'을 학습하는 것이라는 걸 알고 학습하면 좋을 것 같다.