독서 - 생각하는 기계

Jake·2023년 7월 14일
0

독서

목록 보기
1/1

CS 관련 책을 빌리려 도서관에서 갔다가 바로 옆에 꽂혀있는 표지가 특이한(가운데 구멍이 뚫려있다?) 얇아보이는 책이 둥그러니 있길래 읽어보았다

책을 읽기 전 생각하는 기계 라는 제목이 흥미로웠다

책의 표지는 튜링머신? 을 형상화 하는 것 같았다

집에 돌아와 책을 펼쳐서 3장 프로그래밍 을 읽어보니 나름 아는 내용? 도 나오고 해서 흥미롭게 읽어보았다

예를 들어 재귀함수에 대한 개념을 설명할때 아동용 프로그래밍 언어 로고에서 그림을 그리는 거북을 예시로 설명하며 프로그래밍 언어로 어떻게 그림을 그릴 수 있는지에 대한? 귀여운 내용들이 있었다

여기에서 객체 지향 언어에 대한 내용도 있었다

나는 평소 Java 언어를 사용하다 보니 이 말의 의미가 무엇인지 생각해보게 되었다

"객체지향의 가장 큰 이점은 객체들이 독립적으로 지정되고 새 프로그램을 만들기 위해 결합될 수 있다는 점이다" - 대니얼 힐리스

여기서 두가지 포인트가 있다고 생각한다

1번째는 "객체들이 독립적으로 지정된다"
2번째는 "객체들이 결합될 수 있다"

이 생각을 하기 전 객체가 무엇이 될 수 있을까에 대한 고민을 해보았다

그러다가 문득 어느 책에서 보았던 글귀가 생각이 났다

"세상은 수많은 객체들로 이루어져있다"

주변에서 쉽게 볼 수 있는 보이는 물체에서 찾아보면 어떨까? 생각을 하였고 이동 장치(버스, 지하철, 자동차 등 많지만 앞으로는 쉽게 자동차라고 말하겠습니다)를 객체로 생각하게 되었다

자동차가 좋은 예시는 아닐 수 있지만 객체로 생각해본 이유는 아래와 같다

  1. 주변에서 쉽게 볼 수 있다
  2. 객체 간의 규칙, 체계 등이 있다 (신호, 도로 등)
  3. 객체는 모두 다르게 행동한다

첫번째 포인트에서 "말하는 객체들이 독립적으로 지정된다" 는 각 자동차들이 독립적으로 행동함으로써 지정되었다고 생각을 했고

두번째 포인트에서 말하는 "새 프로그램을 만들기 위해 결합될 수 있다" 에서 물론 프로그램이 소프트웨어가 될 수도 있지만 프로그램이란 결국 어떠한 목표를 달성하기 위한 방법이라 생각되어 일상생활에서 접할 수 있는 사람이 만들어낸 도로 규칙, 도로의 흐름, 수요에 맞는 버스 및 지하철 공급, 개인 자동차 사용 등을 생각해보았다

이는 결국 사람의 이동을 위한 것이라는 하나의 목표를 위해 프로그램된 것이며 객체간의 결합이 잘 되었다고 생각한다

그렇다면 다시 돌아가, 대니얼 힐리스가 위 글귀를 통해 말하고자 하는것은 무엇이었을까 ?

이점이라는 것은 다른 것에 비해 좋은점 이다

다른것이 무엇이 있을까 ?

쉽게 떠올릴 수 있는 것은 절차지향 언어이다

Stranger(정말 이름이 이거다..) 님의 말을 빌려보면

객체지향 프로그래밍의 반대 개념이 절차지향이라고 오해하는 분들이 많은데 절대 반대개념이 아닙니다. 어디까지나 프로그래밍 접근 방법이 조금 상이할 뿐 정반대 개념이 아니죠. 대개 절차적 프로그래밍은 '데이터를 중심으로 함수'를 만들어 쓰는편이고, 객체지향은 '데이터와 기능(함수)들을 묶어 하나의 객체'로 만들어 씁니다. - Stranger

출처 - 객체지향과 절차적 프로그래밍

즉, 절차적 프로그래밍에 비해 객체 지향적으로 프로그래밍을 하게 되었을때의 이점은 데이터와 기능들을 묶어서 사용했을때 객체간에 잘 결합이 되어 그 시너지를 발휘할 수 있다는 의미로 해석된다

자동차들은 교통법이라는 규칙 아래 잘 결합이 되어 현재 우리의 삶에서 많은 도움이 되고 있다고 생각한다 이러한 현상 또한 사람이 잘 프로그래밍을 한 결과가 아닐까? 하는 생각으로 위 글귀에 대한 나의 생각을 마무리해보려 한다

0개의 댓글