위쪽 세상
- 고수준 언어 Jack으로 짠 Hello World
// 101 프로그래밍 과목의 첫 예시
class Main {
function void main() {
do Output.printString("Hello, World");
do Output.println(); // 새 라인
}
}
- 텍스트 덩어리 → 컴파일 → 기계어 → 하드웨어 아키텍처 → 칩 → 논리 게이트 → Nand/Nor 기초 논리 게이트 → 물리학! ⚛️
추상화
좋은 모듈 설계는 서로 독립적으로 만드는 것이다.
- 추상화
- 어떤 개체의 본질을 포착하여 간결한 방식으로 구별해 내는 정신적 활동.
- 예술, 과학의 핵심
- 컴퓨터 과학
- '개체가 어떻게 동작하는가?' ⇒ '개체가 무엇을 하는가?'
- 층층이 쌓임 → 높은 단계의 기능을 구성
밑바닥 세상
- 하향식(top-down): 높은 수준에서 낮은 수준으로. 더 세밀한 구체화.
- 상향식(bottom-up): 낮은 수준에서 높은 수준으로. 더 높은 추상화.
- 이 책은
- 고수준 프로그래밍 언어를 작성하고 실행하기 (9, 12장)
- 고수준 프로그램을 기계어로 번역하는 하드웨어의 영역. (6, 7, 8, 10, 11장)
- 하드웨어 픗랫폼을 실제로 구현 (1~5장)
고수준 언어의 영역
- 잭 프로그래머가 목표가 아니라 컴파일러와 운영체계를 만들기 위함.
하드웨어 영역으로 내려가는 길
- 프로그램이 실행되려면 → 컴파일
- 컴파일러
- 구문 분석
- 코드 생성
- 재귀적으로 구문 분석 트리 분석
- 중간 코드 생성
- 가상 머신 구현
- 어셈블러
하드웨어 영역
- 핵(Hack): 단순성과 기능 사이에 균형을 잡도록 설계된 범용 컴퓨터 시스템
- 책의 구성
- 기초 논리 게이트 구성 (1장)
- 조합 논리와 순차 논리 칩 쌓아 올리기 (2, 3장)
- 일반적인 컴퓨터 아키텍처 설계 (4, 5장)
- 소프트웨어 계층 (6~8장)
- 객체 기반 언어 (9장)
- 이를 위한 컴파일러 (10, 11장)
- 간단한 운영체계를 설계하고 구현 (12장)