MIT, "The Missing Semester of Your CS Education"
https://missing.csail.mit.edu/
- 플랫폼 독립적 : OS에 상관없이 사용 가능
- 인터프리터 언어 : 소스코드를 compile하지 않고 바로 실행할 수 있게 지원하는 프로그램 실행 방법
→ 소스코드를 기계어로 번역하는 과정 없이, 소스코드를 실행 시점에 해석하여 컴퓨터가 처리- 객체 지향 : 실행 순서가 아닌, 단위 모듈(객체) 중심으로 프로그램 작성
→ 하나의 객체 : 행동(method) + 속성(attribute)- 동적 타이핑 언어 (Dynamic Typing) : 프로그램 실행 시점에 데이터 타입 결정
변수는 값을 저장하는 장소로, 메모리 주소를 가지고 있음
→ 값이 변수(메모리 주소)에 할당되는 것
→ 선언되는 순간 메모리 특정영역에 물리적인 공간이 할당됨
컴퓨터의 구조
→ 폰 노이만(John von Neumann) 아키텍쳐
→ 프로그램을 실행할 경우, 정보를 먼저 메모리에 저장시키고 CPU가 순차적으로 그 정보를 해석하고 계산하여 사용자에게 결과값 전달
- (CPU ⇒ 제어 장치 + 산술 논리 장치)
기본 자료형(primitive data type)
- 데이터 유형마다 차지하는 메모리 공간의 크기가 다름
- 1byte x 1024 = 1MB, 1MB x 1024 = 1GB
컴퓨터의 모든 값은 이진수로 변환되어 메모리에 저장
→ 단순한 실수값도 이진수로 변환하면 무한소수가 됨 (컴퓨터가 실수를 저장하기 어려운 이유)
- 실수값 이진수 변환
(ex) 68.625를 이진수 변환하면?
1. 정수부(68)는 그대로 이진수 변환
→ 100 0100
2. 2를 곱하는데, (1) 1로 딱 떨어지거나 (2) 첫번째 결과의 소수점과 동일할 때까지
- 0.625 x 2 = 1.250 ... 1
- 0.250 x 2 = 0.500 ... 0
- 0.500 x 2 = 1.000 ... 1
→ 101 (위부터 순서대로 붙이기)
(결과) 1000100.101