프로그래밍의 규칙/한빛미디어

 

재미있게 읽었다. 최종 평점은 5점 만점에 4점.서커펀치사의 고민과 해결방안으로써의 규칙을 통해 더 나은 개발 방법을 되돌아볼 수 있는 계기가 되었다. 일종의 서커펀치 게임 개발사의 모범사례(Best Practice) 모음집인 셈이다. 번역은 나쁘지는 않았다. 군데군데 좀 더 매끄러운 표현이 떠오르긴 했지만, 맥락을 이해하지 못할 정도는 아니었다. 역자분이 게임 업계의 경험이 있었다면 더 좋지 않았을까 하고 생각했다. 아주 획기적인 발상의 전환을 제공해준다거나 새로운 고민을 던져 주지는 않지만, 생각의 파편을 정리해 가면서 나만의 생각, 팀만의 생각을 만들어 갈 수 있는 좋은 텍스트북이라 생각된다. 

 

어쩌다 보니 최근 읽은 책들이 코드 리팩토링에 관한 내용을 많이 다루고 있다. 반쯤 읽다가 이 책 때문에 멈춘 길벗의  <읽기쉬운 코드>도 비슷한 내용이 겹친다. 상호 보완되는 측면이 있는데... 개인적으로는 C++을 예제로 삼은 '프로그래밍의 규칙'이 C#을 예제로 삼은 '읽기쉬운 코드'에 비해 좀 더 많이 와 닿은 측면도 있다.(하지만 일부에서는 Modern C++ 이후 해결방안이 나왔는데도 불구하고 예전 방식이 소개되어서 살짝 아쉽긴 했다. 역주라도 달렸으면 좋았을텐데.. 예를 들어 c++에는 선택적 인수가 없다고 적혀있는데 C++17부터는  std::optional을 통해  인수가 '존재하지 않음'을 표시해 줄 수 있다.) 다시 '읽기 쉬운 코드'로 복귀해서 읽어볼 생각이다.

 

차례를 다시 보니 순서대로 읽어도 되지만,  문제에 대한 이해 및 (저자의) 개선 방법, 코드 리뷰와 코드 문서화, 디버깅, 개발자의 편향성과 극복 방안으로 나눠서 읽어볼 수 있겠다. 물론 겹치는 영역도 많고, 임의로 내가 구분해 본 것이니, 참조만 하시고~.

문제를 바라보는 관점 규칙 1 최대한 단순하게, 그러나 너무 단순하지 않게
규칙 4 일반화에는 세 가지 사례가 필요하다
규칙 5 첫 번째 최적화 교훈: 최적화하지 말라
규칙 8 실행되지 않는 코드는 작동하지 않는다
규칙 10 복잡성을 격리하라
규칙 14 네 가지 맛의 코드
규칙 16 코드가 아닌 결과에서부터 작업하라
규칙 17 더 쉽게 해결되는 큰 문제도 더러 있다
코드 리뷰와 문서화 규칙 3 좋은 이름은 최고의 문서다
규칙 6 코드 리뷰의 세 가지 장점
규칙 9 요약 가능한 코드를 작성하라
규칙 12 큰 팀에는 강력한 컨벤션이 필요하다
규칙 18 코드가 스스로 이야기하게 하라
디버깅 규칙 2 버그는 전염된다
규칙 7 실패 케이스를 제거하라
규칙 13 산사태를 일으킨 조약돌을 찾으라
규칙 15 잡초를 뽑으라
규칙 19 평행 재작업
개발자의 편향성 규칙 11 두 배 좋은가
규칙 20 계산하라
규칙 21 때로는 못질을 해야 한다

 

 

내용들 하나하나가 재미있는 생각거리를 던져주었는데, 에필로그의 한 문단이 와 닿았다.

 

코드를 어떻게 작성할 지에 대한 아이디어를 정리했다면 팀은 훨씬 더 효율적으로 일할 수 있을 것... 규칙은 여러분의 논의를 구조적으로 만들어 주며, 코드를 어떻게 작성할 지에 관한 합의에 이르는 프레임워크를 제공할 수있다.
....
여러분이 하는 일이 서커펀치의 프로젝트와 성격이 많이 다르다면 어떤 규칙은 잘 맞지 않을 수 있다. 그렇다면 규칙을 따르지 마라. 교리가 아니라 유용한 규칙일 뿐이다. 하지만 수용하기 어렵더라도 규칙이 잘 맞을 가능성이 있다.

 

맞는 말이다. 모두 각각의 상황과 문제가 있으니, 최적의 답을 찾아가는 과정은 달라질 수 있다. 하지만 자신에게 불편함을 무의식적으로 피하는 개인들, 특히 개발자들의 편향을 인지하고, 그에 따라 유용성을 판단하여 수용 여부를 결정해야 한다.

대체로 저자의 주장에 공감하는 편인데. 특히 '너무 엄격하게 문제의 정의에 갇히지 말고, 오히려 문제를 단순화하면 솔루션을 단순화할 수 있다'거나 '코드에 기교를 부릴 수록 컴파일러는 우리가 의도하는 바를 알아내기 어렵다' 등의 문구에는 적극적으로 찬성할 수 밖에 없었다.

 

이 책은 팀의 문화를 만들어 가고 싶은 중니어 이상의 개발자 또는 팀장이라면 비판적인 시선을 가지고 읽어보면 좋은 내용이 많다. 

 

최근 한빛에서 나오는 몇몇 책들이 손에 쥐기 쉬운 크기로 나오는데, 개인적으로 마음에 든다. (Tidy First도 이 크기)

 

밑줄 친 문구들이 꽤 있지만, 몇개만 넘겨가면서 소개하면 다음과 같다.

  • 미래의 자신은 타인과 다를 바 없다.
  • 세상 모든 일이 그렇듯이 최고의 결과는 균형에서 비롯된다.... 불확실성에 대한 반응으로 자기 자신에게 편안한 결정을 내린다면 앞으로도 매번 같은 선택을 할 위험이 있다.
  • 로그 파일은 단순히 어떤 일이 있었는지만 기록하는 것이 아니라 해당 문제를 재현하는데 필요한 모든 데이터를 ㄷ담고 있어야 한다.
  • (훌륭한 프로그래머는 쉬운 문제든 어려운 문제든 쉽게 푼다.) 단순한 솔루션을 유지하는 스펙트럼이 얼마나 더 넓은가로 프로그래머의 수준을 평가할 수 있다. 훌륭한 프로그래머의 핵심 역량은 어려워 보이는 문제를 올바른 관점에서 바라보면 사실은 쉽다는 사실을 인식하는 능력이다.
  • 프로그래머는 대개 문제를 프로그래밍으로 해결하려는 편향이 있으나, 프로그래밍이 모든 문제의 올바른 해결책인 것은 아니다.
  • 대부분의 프로그래머는 장기적 이점보다 단기적 비용을 우선시하는 경향이 있고, 그래서 나중에 후회하는 경우가 많다. 올바른 문제 해결책을 알고있지만 작업량 때문에 주저하고 있다면 용기를 내서 작업을 진행하자.

 

반응형

 

그냥 복잡한 머리를 비울 겸, 골든래빗 잡학툰 중 암호학 책을 집었습니다.

생각보다 술술 재미있게 읽혀서 이틀만에 다 읽었어요.

잡학툰 초기 책들은 뭐랄까 퀄리티가 조금 떨어진다고 생각했는데, 항공전 이후로 괜찮은 것 같습니다. (개인 의견이며, 아마도 제가 더 흥미를 가지는 주제라 그렇게 느낄 수도 있다고 생각합니다.)

 

암호학에 대한 역사도 재미있네요. 암호화 방법도 아주 쉽게 잘 설명하고 있습니다.

 

  • 기원전 499년, 히스티아이오스는 페르시아에 반기를 들도록 자신의 조카이자, 사위인 아리스타고라스에게 메시지를 보냈다. 가장 믿는 노예의 머리를 면도하고 머리에 문신을 한 다음 머리카락이 자란 뒤에 그를 아리스타고라스에게 보냈다.
  • 사이테일scytale, 대체법.. : 키를 두께가 다른 원기둥으로 읽었던 방법과 다른 알파벳으로 교체하는 방법. 영어 철자의 빈도로 분석 가능.
  • 소설속 암호학
    • 애드가 앨런 포: 황금 풍뎅이 (황금충.... 포 사후 프랑스 시인 보들레르가 번역 출간.... 포 번역가로 알려졌다가 악의 꽃 이후 작가로 명성을 쌓음)
    • 코넌 도일: 춤추는 인형: https://ctan.org/pkg/dancers <- 글꼴
  • 회전판 2개를 이용. 같은 글자여도 다른 글자로 암호화하여 판독하기 힘들게 만들기

 

 

 

  • 에니그마의 지문: 이건 나중에 힘든 문제를 풀기 위한 접근 방식으로도 인사이트를 준다. 패턴 인식
    • 영국 블레츠리 파크 GC&CS. 필립 스튜어트 밀너배리. -> The Hut Six Story. 
    • 튜링의 암호 해석: The known-plaintext attack(KPA) BOMBE.  튜링의 집에 도둑이 들어 그가 동성애자인 것이 밝혀짐 -> 자살 1954년 6월 7일 -> 2013년 12월 24일 엘리자베스 2세의 동성애죄 사면 조치
    • 노트에 따르면 사이안화 칼륨 중독으로 사망. 자살설에 대한 정확한 근거는 없다고..
    • 세계대전에서 미국의 참전은 영국이 미국과 독일을 도청했기 때문.. o.o 역시 우방이긴 하지만... 아 007도 영국이군.
  • RSA
    • 컴퓨터의 등장. 키 교환. 공개키/대칭키 등등.
    • 그런데 암호학을 연구했던 사람들이 암호화폐를 연구하는 사람들과 비슷한 느낌을 준다. 히피/반정부 주의자. 1972년 스탠포드 AI연구의  위트필드 디피, 조교수 헬만이 원거리 키 교환 알고리즘 개발
    • 소수! prime number의 특징.-> 이때까지 본 책 중에 제일 쉽게 암호화에서 소수가 사용되는 방식을 설명...
    • "Squeamish Ossifrage" RSA quiz
    • RSA-2048(2048비트를 이용, 십진법 617자리)
 

결정적 사건으로 배우는 암호학 - 예스24

이 한 권이면 누구든 ‘암호학’ 잡학러가 될 수 있다세상을 지탱하는 극비의 기술 암호학과 셜록 홈즈, 앨런 튜링, 비트코인이 어떤 관련이 있을까?정보의 속성과 인간 욕망의 결정체, 암호학

www.yes24.com

 

 

연관 도서: 인사이트의 비밀의 언어.. 연달아 읽을까; 

 

 

비밀의 언어(THE CODE BOOK) - 예스24

암호 제작과 해독의 투쟁,암호의 진화 과정에서 쌓여 간 과학적 유산,컴퓨터 보안의 현재와 양자 컴퓨터의 미래를 살펴본다암호의 역사, 그리고 제작과 해독의 투쟁을 통해 진화해 간 암호학의

www.yes24.com

 

반응형

+ Recent posts