Python은 대표적인 dynamic (typed) langauge
이다. (dynamic language는 대부분 interpreter language 임.)
좀 더 엄밀하게 애기하면,
Dynamic Language란 특정 동작이나 사항들이 runtime(실행 시간)에 결정되는 특징을 가진 Programming Language를 가르킴. comile 시점이 아닌 runtime에 해석되고 실행되며, type이나 호출할 method나 접근할 attribute가 runtime에 해석된다는 특징을 가지고 있다. 유연성이 높고 높은 생산성을 가지나, 성능은 static language 보다 떨어지며 코드가 길어질 경우 오류 탐지가 쉽지 않다는 단점을 가짐.
Static (Typed) Language
Programming Language들 중에서 comiler language들의 경우 대부분이 static language로서
- variable을 사용하기 전에 반드시 declaration(선언)을 해야하고,
- 이때 해당 variable의
tyep
이 명시적(explicitly)으로 정해지며 explicit casting
(명시적 형변환)을 하는 경우를 제외하곤 해당 type이 변하지 않음.
C
, C++
, Java
등이 static language의 대표적 예들임.
Static Language에서
variable은 type이 지정되며,
decalration의 시점에
해당 type에 따른 적절한 크기의 memory location에 binding (실제 data가 저장되는 공간을 의미)됨.
Dynamic (Typed) Language
Dynamic Language들은 대부분 interpreter를 사용하며,
Variable은 단순히 특정 object (=memory가 할당되어 있고 특정 type을 가짐)를 참조하는 name (or reference) 에 불과함
(즉, Type이 없음).
Variable assignment (변수에 값을 할당)할 때 해당 variable이 가르키는 object가 결정되는 것임.
- assignment를 다시 할 경우, 해당 variable이 가르키고 있는 object가 바뀌는 것임.
- 만일 다른 type의 object를 assignment했다면 마치 variable의 type이 바뀐 것처럼 보임
(엄밀하게 애기하면 type이 바뀌는 것이 아닌 참조 대상 object 자체가 바뀐 것임.)
2023.06.13 - [Programming] - [Python] Strong Typing이란? with Object - 이 같은 dynamic language는 static language에 비해 수행속도가 느리다는 단점을 가짐.
Python은 대표적인 dynamic language로서
Python Virtual Machine (PVM)을 통해,
수행속도가 느리다는 단점을 개선하면서 dynamic language의 편리함을 유지하고 있다.
Dynamic Language에서 Variable은
어떤 object에 가르키는(참조하는) name (=reference)에 불과하며
type 등의 속성을 가지고 있지 않음.
참고로, Python에서 object는 type을 가진다.
Python Virtual Machine이란
2023.06.05 - [Programming] - [Python] Interpreter and PVM (Python Virtual Machine)
'Programming' 카테고리의 다른 글
[WSL] Install WSL (Windows Subsystem for Linux) (0) | 2023.06.12 |
---|---|
[Python] Python 소개? (0) | 2023.06.12 |
[Python] Keyword란? (Soft Keyword 포함) (0) | 2023.06.11 |
[Python] Comments and Docstrings (0) | 2023.06.11 |
[Basic] namespace, frame, and context (0) | 2023.06.11 |