- Overview
하드웨어(프로세서, 메모리, 디스크, 네트워크)와
소프트웨어(os, 컴파일러, 라이브러리, 프로토콜)이
어떻게 합쳐져 프로그램을 실행하는지 배운다.
- 재미있는 사실
- int는 정수가 아니고 float은 실수가 아니다.
50000*50000=? (overflow)
(1e20+(-1e20))+3.14 = 3.14(ok)
1e20+((-1e20)+3.14) = ?
- 컴퓨터는 랜덤을 만들 수 없다
- 어셈블리어를 알아야 한다.
- 버그의 원리를 알 수 있다
- 비효율적인 코드의 원리를 알 수 있다
- 시스템 소프트웨어를 짤 수 있다
- 메모리에 관해
- 메모리는 할당되고 해제되어야 한다
- 시간과 공간을 모두 생각해야 한다.
- 메모리 퍼포먼스는 동일하지 않다(캐시, 가상 메모리)
- 메모리 접근 오류
- 점근적 복잡도만 중요한 것이 아니다
- O(n)이라고 O(n^2)보다 항상 빠르지 않다
상수를 고려해야 한다!
- a[i][j] 순회가 a[j][i] 순회보다 20배 빠르다
메모리 구조를 알면 빨라질 수 있다!