diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 00000000..e3e837a7 Binary files /dev/null and b/.DS_Store differ diff --git a/2021/.DS_Store b/2021/.DS_Store new file mode 100644 index 00000000..068ef4ad Binary files /dev/null and b/2021/.DS_Store differ diff --git a/2023/.DS_Store b/2023/.DS_Store new file mode 100644 index 00000000..88f52aa4 Binary files /dev/null and b/2023/.DS_Store differ diff --git a/2023/FundamentalsOfSoftwareArchitecture/.DS_Store b/2023/FundamentalsOfSoftwareArchitecture/.DS_Store new file mode 100644 index 00000000..1dd94258 Binary files /dev/null and b/2023/FundamentalsOfSoftwareArchitecture/.DS_Store differ diff --git a/2023/RadicalCandor/.DS_Store b/2023/RadicalCandor/.DS_Store new file mode 100644 index 00000000..c12fd412 Binary files /dev/null and b/2023/RadicalCandor/.DS_Store differ diff --git a/2023/TheEssenseOfObjectOrientation/.DS_Store b/2023/TheEssenseOfObjectOrientation/.DS_Store new file mode 100644 index 00000000..33ec8e24 Binary files /dev/null and b/2023/TheEssenseOfObjectOrientation/.DS_Store differ diff --git a/2023/TheEssenseOfObjectOrientation/harryho/ch01-04.md b/2023/TheEssenseOfObjectOrientation/harryho/ch01-04.md new file mode 100644 index 00000000..d9175518 --- /dev/null +++ b/2023/TheEssenseOfObjectOrientation/harryho/ch01-04.md @@ -0,0 +1,31 @@ +객체지향의 사실과 오해 1장 ~ 4장 + +이 책은 비전공자인 내가 본격적으로 부트캠프에서 iOS 과정을 밟아나가던 프로그래밍에 대해 잘 모르던 시기에 추천 받아서 한 차례 읽었었다. 당시 기본 문법만 익힌 상태에서 읽었을 때는 어떤 개념은 코드로 연상하면서 이해가 +되었는데, 어떤 부분은 개념이 잘 와닿지 않았다. 이제 다시 읽었을 때는 객체지향 패러다임이 꽤나 사람의 인지와 자연스러운 성향을 고려해서 만들어진 사람 친화적인 하지만 현실과는 사뭇 다르다는 생각이 든다. 
 + +# 발견과 상상력 +객체라는 것은 사람이 인지하고 발견한 것의 상태와 행동을 추상화한 것이다. 추상화라는 것이 세부적인 것 보다는 그 객체를 나타내는 간추려진 특징이라 생각해보면 세부적인 것을 모두 구현하지 않았다는 것에 현실과 객체지향은 +다른 점이 명백하다. 예를 들어서 사람을 정의할 때 이족 보행, 눈 코 입 등으로 특징을 정할 수도 있겠지만, 현실에서의 사람은 수많은 원소와 화학적인 반응의 결합체다. 이런 세부적인 것을 모두 발견해내고 원리를 알아냈을 때 +비로서 현실과 컴퓨터의 세계는 같아지는 것 아닐까란 생각이 든다. 즉 지금도 로봇이 개발되고 사람 형태를 띄지만 완벽하게 닮지 않은 이유도 현실과 다른 관점을 지니기 때문이 아닐까? 따라서 사람의 인지 능력과 인지한 것의 +조합만큼의 상상력이 객체를 결정하기에, 발견과 상상력이 중요한 요소라 생각이 들었다. + +# 자율성 +커피 공화국과 이상한 나라의 엘리스 등을 통해 객체의 역할, 책임, 협력을 예시로 드는데 관심이 갔던 부분은 객체의 자율성이다. 단순히 객체의 자율성이 무엇인가란 생각을 했을 때 쉽게 와닿지 않았는데, 메세지가 전달 되었을 때 +맡은 책임을 스스로 완수 할 수 있다는 관점으로 이해가 되었다. 이 때 완수를 하는 방법은 다양하게 구현할 수 있으며, 메세지에 대한 책임을 스스로 지닌다. 그리고 이런 자율성, 즉 스스로 어떤 책임을 잘 할 수 있는 상태일 때 +협력에서 시너지를 발휘할 수 있다는 점에서 공감을 하였고, 내가 객체라면 스스로 어떤 책임을 할 수 있어 협력에 참여할 수 있는가?를 스스로 되물었다. + +# 상태와 행동 +상태를 행동으로 인해 생겨난 결과로 이야기한 부분도 흥미 깊었다. 그리고 객체지향을 행동 중심으로 바라보는 관점도 인상이 깊었는데, 상황과 맥락에 따라서 행동이 달라진다는 점이, 사람의 심리와도 어느 정도 비슷한 부분이 +있다고 생각이 들었다. 사람도 처한 상황과 상태에 따라 행동의 결과가 달라지기도 하니까 말이다. 따라서 행동에 따른 결과가 늘 좋지만은 않겠지만, 좋은 결과를 통해 상태를 좋게 유지한다면 스트레스를 덜 받지 않을까? 란 생각도 +하였다. 상태를 애써 바꾸려고 하기 보다는 행동으로 발생한 상태를 잘 파악하면서 좋은 결과를 하는 행동을 하는 것이 중요해 보인다. 그게 쉽지만은 않겠지만 + +# 협력 +어떤 공동의 목표를 위해 객체가 서로 메시지를 주고 받으며 협력하는 관점은 실제 사람이 모여 일을 처리해나가는 방식과 유사하다. 그러나 객체라는 것은 우리가 인지하는 부분으로 추상화된 개념이며, 또 때로는 어떤 비현실적인 +부분으로 구현되기에 협업의 형태가 완전히 같다고 할 수 없을 것 같다. 한편으로 사람을 객체로 비유하자면, 어떤 메세지를 받았기에 요청에 응답하는 것일까? 생체적인 변화나 인간의 탄생 이런 것들이 어떤 메세지를 받았기에 +나타는 결과일까? 좀 딴길로 새서 생각을 해보기도 했다. 최초로 메세지를 전달한 자는 누구인가? + + +# 논의할 점 +1. 역할, 책임, 협력, 상태, 행동, 타입 및 추상화 등등 개념적인 것들이 실제 컴퓨터 메모리와 성능 관점으로 가면 어떻게 생각해볼 수 있는 것일까? 타입이란 것은 0과 1로 이루어진 것들을 조금 더 쉽게 구분하기 위해 의미를 부여한 것인데, 그렇다면 실제 메모리에서 어떻게 타입이 구분되는 것일까? + +2. 잘 설계된 객체? 설명을 곰곰히 고민해보면 잘 설계된 객체는 스스로 자신이 맡은 일을 잘 하는 객체같다. 그리고 신과 같은 객체는 자멸한다고도 하는데, 과연 정말 그런건가? 그래서 신은 없어진건가? 그렇다면 All in one 머신이나 기계들은 잘 설계된 것이 아닌가? diff --git a/2024/.DS_Store b/2024/.DS_Store index 8dd2db36..c92d3475 100644 Binary files a/2024/.DS_Store and b/2024/.DS_Store differ