Book

1/31 실용주의 프로그래머 : 직교성, 가역성

Daniel0617 2019. 2. 3. 22:11

10분 정도 독서하고 느꼈던 점 및 기억에 남는 부분을 작성하고자 합니다.
맞춤법 및 명확하지 못한 표현 등 기타 부족한 글이나 매일 하루 작성하는데 의의를 두고 해보려고 합니다.
가볍게 시작하지 않으면, 기껏 블로그를 만들어 놓고서 활용하지 못할 것 같아 간단간단 하게라도 작성해보고자 합니다.

부족한 게시글에 대해 어떠한 피드백든 남겨주신다면, 너무나 감사합니다.

첫번째 독서는 ' 실용주의 프로그래머 ' 입니다.

(이미 조금 읽은 상태라 내용이 점프하게된 점 사뿐히 이해해주시고 넘어간다면 ㄱㅅㄱㅅ )


 실용주의 프로그래머 책을 읽으면서 프로그래머로써 코딩 할 때 어떤 부분들을 고려해야 하는지 하나씩 배워간다.
우선 어제 읽었던 내용 중에는 직교성에 대해 깊이 공감하게 되었다. 코딩에 정답이 존재하지 않는다. 단지 어떤 목표. 기능을 구현하기 위해 여러 방법이 있을 뿐 여기에 대한 정답이 존재하지 않는다. 다만, 가장 중요한 점은 얼만큼 효율적이고 효과적인 내용이냐의 문제이다.


 직교성은 이러한 코드 자체의 특징적인 관점으로 보았을 때 대단히 중요한 문제이다. 책에서 말한 예시는 가변적인 요소에 코드를 의지하지 말라는 것이다. 예를 들자면, 지역 번호로 지역을 나누었던 변수가 존재한다고 가정 해보자. 만약 국가에서 일괄적으로 지역 번호가 바뀌게 된다면, 어떻게 되겠는가...? '02'는 서울 '031'은 경기도 등으로 짜여진 코드가 한순간 변경되어야 하는 것이다. 정말 드물겠지만 실질적으로 일어날 수 있는 일 아닌가??? 따라서 작가는 이렇게 말하고 있다.

컴퓨터 내에서 독립적으로 작동할 수 있는 변수를 생각해야 한다고 말해주고 있다. 세상에 가변하는 값으로 변수를 설정할 경우 직교성을 유지하지 못한다고 말한다. 어떤 누구는 세상 어떤 것도 독립적인 것은 없다라고 말하겠지만, 작가는 그만큼 다른 매개체와 관련성이 적은 것을 추구하라는 의미이다.

 금일 읽었던 내용은 가역성이다. 가역성은 미래에 대한 불명확성을 어느 정도 고려하라는 것이다. 예를 들어, 네발 자전거지만, 추후 두발 자전거로 사용하기 위해 양쪽 바퀴를 빼낼 수 있는 것을 고려해야 한다. 만약, 단순히 4발 자전거라는 이유로 양쪽 바퀴를 분할되지 않게 고정해 놓았다면 평생 4발 자전거를 타야 된다는 불편함이 발생한다.

이것을 고려해 코드를 작성해야 한다는 것인데, 새로운 미래에 대한 고려가 코드 내에 분명히 필요하다는 것이다.

두가지 주제에 대해 잠시 생각할 수 있었는데, 알면 알수록 코드는 단순히 작성하고 끝나는 것이 아닌 것 같다. 확장성, 재사용성, 미래 상황에 대한 가역성, 직교성, 속도의 효율성 등 기능 구현을 넘어 생각해야 할 부분들이 너무나 많다. 그렇기에 재밌기도 하지만, 점점 코드를 작성할 때 단순히 기능 구현에만 그치지 않는 것 같다. 메소드 자체를 어떻게 나눌 것인지, 메모리 과부하는 안 일어날 것인지 등등 너무 많은 것들을 고민하게 된다. 한번에 잘할 수 있는 것이 아니기에 기능 구현 → 코드 효율화와 같이 한개씩 한개씩 단계를 밟아 나아가야 할 것이다.


'Book' 카테고리의 다른 글

곁에 두고 읽는 니체  (0) 2022.09.01
이펙티브 엔지니어  (0) 2022.08.15
함께 자라기  (0) 2022.06.20
1만 시간의 재발견  (0) 2019.09.01