코드가 존재하리라 코드도 자동으로 생성되는 요즘 시대에 코드보다는 모델이나 요구사항에 더 집중해야 할까요? 필자는 그렇지 않다고 얘기하고 있습니다. 코드는 요구사항을 상세히 명시하는 작업이고 실제 세계를 기계가 이해할 수 있도록 하는 추상화를 도와주기에 코드가 사라질 가망은 전혀 존재하지 않습니다. 앞으로도 지속해서 추상화 수준은 높아질 것이고 모호한 요구사항을 완벽히 분석해 알맞은 프로그램을 만드는 기계가 나올 확률도 매우 낮습니다. 결론적으로 코드는 요구사항을 표현하는 하나의 언어임에 집중해야 합니다. 나쁜 코드 코드를 작성하는 저희 프로그래머에게 있어서 좋은 코드가 중요하다는 것은 명확한 사실입니다. 긴 시간 동안 나쁜 코드로 인해 불편함을 많이 겪어 왔기 때문입니다. 나쁜 코드는 생산성을 떨어뜨리..
추상화를 통한 복잡성 극복 초기 지하철 노선도는 실제 지형을 반영하여 구불구불한 노선과 불규칙한 역간의 거리를 사실적으로 표현하였다. 하지만 지하철 노선도에서 중요한 정보는 얼마나 사실적으로 지형을 묘사했는지가 아닌 출발지, 도착지, 최단경로, 환승 등과 같은 직관적인 정보이다. 이후 해리 백이라는 사람이 지하철 노선도의 핵심은 지도가 당연히 가져야 하는 정확성이 아닌 목적에 집중해야 함을 깨닫고 혁신적인 지하철 노선도를 개발하게 된다. 이는 지하철 노선도를 추상화한 것이다. 현실 세계는 매우 복잡하고 예측이 불가능하다. 따라서 이해하기 쉽고 예측할 수 있도록 분해하고 단순화하는 전략을 사용한다. 따라서 진정한 추상화란 불필요한 부분을 제거하며 사물의 본질을 드러나게 하는 것으로 시작한다. 불필요한 부분..
객체 지향과 인지 능력 인간은 본능적으로 세상을 독립적이고 식별 가능한 객체의 집합으로 바라보기 때문에 객체 지향 패러다임은 직관적이고 이해하기 쉽다. 이러한 객체 지향은 실존하고 구체적인 개념뿐만 아니라 추상적인 개념도 포함되게 된다. 예를 들어 과거의 결제 내역과 지금 진행 중인 결제 내역을 구분하는 것은 어렵지 않은 일이다. 객체를 세분화시키는 행위는 복잡성을 줄여 이해를 높이고자 하는 것이다. 객체, 그리고 이상한 나라 작가는 객체를 설명하기 위해 이상한 나라의 앨리스 이야기를 예를 들어 설명하고 있다. 앨리스는 아름다운 정원에 들어가기 위해 자신의 키를 변화시켜야 하는데 변화는 앨리스의 행동 때문에 발생한다. 글을 읽으며 나도 모르게 앨리스의 키는 멤버변수가 될 수 있을 것이고, 키를 변화시키는..
객체 지향? 객체 지향이라는 말을 보거나 들었을 때 처음 드는 생각은 클래스이다. 관련 있는 데이터를 한 곳에 모아둔 것, 데이터를 다루기 위한 기능을 정의한 것 이를 객체 지향의 용어로 바꾼다면 추상화, 캡슐화, 다형성으로 표현 가능하다. 하지만 서문을 보자마자 객체를 잘못 이해하고 있다는 생각이 들었다. 작가님이 이 책을 통해 전하고자 하는 내용은 객체의 특징을 얼마나 잘 이해하고 있느냐가 아닌 객체를 객체답게 바라보고자 하는 것이다. 이 책을 읽고 다음의 목표를 천천히 달성해 나가야한다. 클래스가 아닌 객체를 바라보는 것 객체를 협력하는 공동체로 바라보는 것 객체에게 적절한 역할과 책임을 부여하는 것 앞선 개념을 프로그래밍 언어에 적용하는 것 객체 지향의 배경 실세계의 정보를 프로그램으로 구현하기 ..