Skip to content

Commit e699f48

Browse files
authored
week4.md
1 parent 7784513 commit e699f48

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

week4/jl/week4.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
### 의문점: `python3``pypy3`의 차이점은 무엇일까??
2+
3+
- 결과부터 언급을 하자면 `Python3``pypy3`은 언어와 문법은 동일하지만 전자는 **JIT(Just-In Time)** 컴파일 방식을 도입하였고, 그렇기 때문에 `pythn-on3`에 비해서 실행 속도가 빠른 것이다.
4+
- **JIT 컴파일**은 프로그램을 실행하기 전에 컴파일을 하지 않고, 프로그램을 실행하는 시점에서 필요한 부분을 그때 그때 컴파일 한다.
5+
- 따라서 자주 쓰이는 코드를 cache에 저장하여 인터프리터 언어의 느린 속도를 개선할 수 있다.4
6+
- 물론 간단한 코드에서는 `python3`이 메모리, 속도 모든 측면에서 우세하고 복잡한 코드에 한해서 `pypy3`이 우세하기 때문에 주의깊게 써야 한다.
7+
8+
9+
- 기본적으로 `python3`은 인터프리터이면서 컴파일러 언어이며, 개발자가 작성한 python code를 **컴파일**하여 bytecode로 바꾸고 interpreter(=가상머신)이 코드가 동작하게 실행한다.
10+
11+
#### 컴파일 언어 vs 인터프리터 언어
12+
1. 컴파일 언어
13+
- 개발자가 작성한 source code를 모두 기계어로 바꾼 후 가상 머신에 넣어 기계어 코드를 실행한다.
14+
- source code를 기계어로 compile하는 과정에서는(=`C`에서 build하는 과정) interpreter 언어에 비해 시간이 소요되나, 런타임 상황에서는 이미 source code가 기계어가 되어있어 빨리 실행이 가능하다.
15+
ex) `C`, `Java`, `C++`, `C#`
16+
2. 인터프리터 언어
17+
- 한줄씩 일ㄱ어 바로 명령어를 실행한다.
18+
- 런타임 상황에서 오히려 한번씩 읽기 때문에 그때 실행 속도가 느리다.
19+
- 물론 build를 할 필요는 없지.
20+
ex) `Python`, `Ruby`, `SQL`, `JavaScript` `R`
21+
22+
#### `Python3` vs `CPython`
23+
- `Python3`이 인터프리터 + 컴파일러 언어라고 했다.
24+
- 그 이유는 `Python``C`로 구성된 언어이기 때문이다.
25+
- 엄밀히 말하면 `python``C`로 구성되어 있고 우리는 `CPython`이라는 python 구현체를 사용한다.
26+
- 즉, `CPython`이 인터프리터이면서 컴파일러이다.

0 commit comments

Comments
 (0)