들어가며
- 습관을 들이기 위해 하루 하루 일지를 작성할 예정
Code, 하드웨어와 소프트웨어에 숨어 있는 언어 [찰스 펫졸드]
논리와 스위치
- 오우, 기본적인 이진법의 기초 개념을 활용한 불을 끄고 키는 것부터 시작해서, 전기를 이용한
부호 code
통신, 이진법, 팔진법, 십육진법을 통해 드디어논리
에 도착했다. - 아리스토텔레스 논리학 왈 연역법이라 불리는
삼단논법
이 기본이다.
모든 인간은 죽는다. 소크라테스는 인간이다. 따라서 소크라테스도 죽는다.
- 컴퓨터의 기본이 되는 논리식 AND, OR을 가르쳐 준다.
논리 게이트
- 음.. AND게이트다. 학부시절 배웠던
논리회로
는 지루하기만 했었는데.. - 전기적인 신호가 있을때와 없을때를 1, 0으로 보고, 이러한 전기적 신호가 논리적으로 어떠한 개념을 가지는지 논리 게이트를 통해 풀어내고 있다.
애매하게 고양이 종류를 찾는 고객의 요구 사항을 논리게이트로 풀어서 선택을
자동화
했다.
- AND, OR, NOT AND (NAND), NOT OR (NOR), 인버터 까지
테스트 주도 개발로 배우는 객체 지향 설계와 실천 [스티브 프리먼, 냇 프라이스]
경매 스나이퍼 개발 의뢰
- 어떠한 개발을 시작하기 전 준비해야될 사항과, 대략적인 요구사항, 그리고 최초 골격을 어떻게 생성해 진행할지에 대한 내용
실용주의 프로그래머 [앤드류 헌트, 데이비드 토머스]
구부러지거나 부러지거나
가역성 reversibility
,결합도 coupling
결합도 줄이기 decoupling
,디미터 법칙
,메타 프로그래밍
,사전적 결합 temporal coupling
결합도 줄이기와 디미터 법칙
결합도를 낮추라
- 그 객체에게 직접 물어보자. 직접 객체를 헤집고 다닌다면, 의존성이 폭발할 수도 있다. 진짜로..
디미터의 법칙 객체의 모든 메서드는 자기 자신, 메소드로 넘어온 인자, 자신이 생성한 객체, 직접 포함하고 있는 객체만 호출 한다.
- 다만, 어느 곳에서나 그렇듯이 이책에서도
트레이드 오프
를 강조 하고 있다. - 디미터 법칙은 주 계약자가 모든 하부 객체를 관리하고 역할을 위임하며, 단순 요청을 전달만 하는 메서드를 강제함으로,
성능 저하
와메모리 과부하
같은 점을 강조한다. - 이는 어떤 종류의 소프트웨어에서는 치명적일 수도 있으므로, 선택적으로 사용해야 한다.
메타 프로그래밍
- 동적 설정, 배경 색, 프롬프트 텍스트, 알고리즘 선택, 사용할 데이터베이스 제품, 미들웨어 기술, 사용자 인터페이스 스타일 등 시스템 및 층까지 선택 가능하게 하라.
통합하지 말고 설정하라.
격언
좋은 울타리는 좋은 이웃을 만든다 - 로버트 프로스트 아무리 뛰어난 천재라도 세부사항에 집착하면 그 재능이 발휘되지 않는 법이다 - 레비의 8번째 법칙
Reference
- 찰스 펫졸드, 『 Code, 하드웨어와 소프트웨어에 숨어있는 언어 』, 인사이트(2010 10 11), 인용.
- 스티브 프리먼, 냇 프라이스 지음, 이대엽 옮김, 『 테스트 주도 개발로 배우는 객체 지향 설계와 실천 』, 인사이트(2013 06 20), 인용.
- 앤드류 헌트, 데이비드 토머스 지음, 김창준, 정지호 옮김, 『 실용주의 프로그래머 』, 인사이트(2005 08 02), 인용.