Hello World
Hello World 같은 프로그램은 겉으로만 간단해 보일 뿐이다.
public class Main {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
이런 프로그램이 컴퓨터에서 실제로 작동하기 위해서는 다음과 같은 과정이 수행됩니다.
- 컴퓨터가 이해할 수 있도록 고수준 코드의 문자열을 분석해서 프로그램이 수행하려는 작업의 의미를 찾아낸다.
- 대상 컴퓨터의 기계어로 그 의미를 다시 쓴 저수준 코드를 생성해야 한다. (컴파일)
기계어란?
- 미리 약속된 2진 코드로 구성된 추상화 개념이다.
- 이 추상화를 명확히 하려면 하드웨어 아키텍처(hardware architecture)를 반드시 구현해야 한다.
Nand에서 테트리스까지
Pc, 스마트폰, 서버 등 모든 범용 컴퓨터는 Nand To Tetris 기기다.
- 컴퓨터는 기본적으로 기초 논리 게이트를 기본으로 한다.
- Nand는 산업에서 가장 널리 사용되는 게이트다.
- 범용 컴퓨터는 테트리스 게임 외에도 상상력을 자극하는 어떤 프로그램도 실행할 수 있도록 프로그래밍할 수 있다.
추상화와 구현
복잡한 시스템을 다루기 좋은 모듈로 '분할과 정복'하는 인지 능력은, 각 모듈의 추상화와 구현을 식별하는 사고방식에 의해 강화된다.
추상화(abstraction)
- 모듈이 '무엇을 하는지'
구현(implementation)
- '어떻게 하는지'를 가리킨다.
시스템 공학에서 가장 중요한 규칙
어떤 모듈이든 구성 블록으로 사용할 때는 모듈의 추상화에만 집중하고, 상세 구현은 완전히 무시해야 한다는 점이다.
- 복잡한 문제를 잘 정의된 모듈로 구분하고
- 사이에 인터페이스를 만들자.
이것이 바로 추상화 (= 모듈식 설계)
앞으로 가야할 길
1장 | 불논리 |
2장 | 불연산 |
3장 | 메모리 |
4장 | 기계어 |
5장 | 컴퓨터 아키텍처 |
6장 | 어셈블러 |
7장 | 가상 머신 I: 프로세싱 |
8장 | 가상 머신 II: 제어 |
9장 | 고수준 언어 |
10장 | 컴파일러 I: 구문 분석 |
11장 | 컴파일러 II: 코드 생성 |
12장 | 운영체제 |
13장 | 후기: 더 재미있는 여행? |
'서적 > 밑바닥부터 만드는 컴퓨팅 시스템' 카테고리의 다른 글
논리 게이트 (0) | 2024.04.10 |
---|---|
불 논리 (Boolean Logic) - 1.1 불 대수 (0) | 2024.04.09 |