어디 Java로 프로그래밍을 배우려 해! 떼잉 쯧
- 컴퓨터 구조를 이해하지 못하면 보안에 취약한 프로그램을 만들기 쉽다- 라는 논리
- 학교에서 누구나 코딩을 배워야 한다: 는 질 낮은 개발자를 회사에 많이 공급해서 개발자 급여를 낮추고 이를 통해 회사가 이익증가 이유다 - 라는 논리
- 프로그래밍을 배웠지만 깊이 부족으로 불만스러운 사람들을 위한 책
- 프로그래밍의 단계
-
- 우주를 이해한다
-
- 3살짜리 아이에게 설명한다
- 현재 교육은 2번에 초점. 하지만 첫번째가 수반되어야함!
-
- “대부분의 코딩 스쿨에서 프로그래머라면 꼭 배워야 하는 것처럼 가르치고 있는 애플리케이션 프로그램 개발은 다른 사람이 만든 기본 요소를 임포트 하는 방법과 이를 서로 붙이는 방법일 뿐이다. 이 기술만 사용해도 오랫동안 직업을 유지할 수 있지만, 각 블록을 붙이는 풀을 실제로 이해하면 훨씬 더 좋을것이다”
비트부터 시작하자
- 0과 1로 어떻게 온갖 큰 수와 소숫점과 마이너스값을 표현하는지 알려줌.
- 최적화에 최적화를 거듭한다 (e.g. 맨 왼쪽 비트는 1일테니 이를 생략해서 1비트를 더 사용하기, 특정 표현법이 0을 표현하는 방법이 2가지니 이를 더 빈틈없이 쓸 방법 찾기 )
- 이렇게 최적화에 대한 여러 사람들의 노력으로, 비트를 인코딩하는데 여러 표준이 있다.
컴퓨터가 0과 1을 어떻게 인식할까
- 근대에는 두 톱니바퀴를 돌려 상대적인 회전 속도로 곱셈, 나눗셈 등 계산함: 이를 통해 다이얼을 돌려 천문학 계산을 함. 복잡한 톱니바퀴를 통해 미적분 계산 가능.
- 전자기술에서 아날로그는 연속적인것, 디지털은 이산적인걸 뜻함. (자는 아날로그 손가락으로 세는건 디지털)
- 컴퓨터는 전기를 빛의 속도로 움직이며 계산. 이는 부품끼리 거리가 가까울수록 빠름. 그래서 모든걸 작게 만들어야 빠르게 계산가능.