[Python] Dynamic Typed Language vs. Static Typed Language

2023. 6. 11. 23:16·Programming
728x90
728x90

Python은 대표적인 dynamic (typed) langauge 이다. (dynamic language는 대부분 interpreter language 임.)

 

좀 더 엄밀하게 애기하면,

Dynamic Language란 특정 동작이나 사항들이 runtime(실행 시간)에 결정되는 특징을 가진 Programming Language를 가르킴. comile 시점이 아닌 runtime에 해석되고 실행되며, type이나 호출할 method나 접근할 attribute가 runtime에 해석(and 체크)된다는 특징을 가지고 있다. 유연성이 높고 높은 생산성을 가지나, 성능은 static language 보다 떨어지며 코드가 길어질 경우 오류 탐지가 쉽지 않다는 단점을 가짐.

https://medium.com/android-news/magic-lies-here-statically-typed-vs-dynamically-typed-languages-d151c7f95e2b


Static (Typed) Language

Programming Language들 중에서 compiler language들의 경우 대부분이 static language로서

compile time에 type에 대한 검사가 이루어짐!

 

다음의 특징을 가짐.

  • variable을 사용하기 전에 반드시 declaration(선언)을 해야하고,
  • 이때 해당 variable의 tyep이 명시적(explicitly)으로 정해지며
  • explicit casting(명시적 형변환)을 하는 경우를 제외하곤 해당 type이 변하지 않음.

C, C++, Java 등이 static language의 대표적 예들임.

 

Static Language에서
variable은 type이 지정되며,
decalration의 시점에
해당 type에 따른 적절한 크기의 memory location(실제 data가 저장되는 공간을 의미)에 binding 됨.

Dynamic (Typed) Language

Dynamic Language들은 대부분 interpreter를 사용하며,

Runtime에 Type Check가 일어남.

 

아래의 내용은 Strong Typing과 Dynamic Typing이 사용되는 Python의 관점에서 설명한 내용임:

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을 가진다 (Strong Typing에 의해 object는 type이 고정됨).

 

자세한 내용은 다음을 참고: https://medium.com/android-news/magic-lies-here-statically-typed-vs-dynamically-typed-languages-d151c7f95e2b

 

Magic lies here - Statically vs Dynamically Typed Languages

Type Checking

medium.com


Python Virtual Machine이란

2023.06.05 - [Programming] - [Python] Interpreter and PVM (Python Virtual Machine)

 

[Python] Interpreter and PVM (Python Virtual Machine)

대학생이었을 때와 막 졸업했을 때에 개인적으로 가지고 있던 편견 중 하나가 script language를 매우 하찮게 생각했고, compiler language 만을 programming language로 생각했던 것이다. 지금 돌이켜보면 이불

dsaint31.tistory.com

 

'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
'Programming' 카테고리의 다른 글
  • [WSL] Install WSL (Windows Subsystem for Linux)
  • [Python] Python 소개?
  • [Python] Keyword란? (Soft Keyword 포함)
  • [Python] Comments and Docstrings
dsaint31x
dsaint31x
    반응형
    250x250
  • dsaint31x
    Dsaint31's blog
    dsaint31x
  • 전체
    오늘
    어제
    • 분류 전체보기 (740)
      • Private Life (13)
      • Programming (56)
        • DIP (104)
        • ML (26)
      • Computer (119)
        • CE (53)
        • ETC (33)
        • CUDA (3)
        • Blog, Markdown, Latex (4)
        • Linux (9)
      • ... (351)
        • Signals and Systems (103)
        • Math (172)
        • Linear Algebra (33)
        • Physics (42)
        • 인성세미나 (1)
      • 정리필요. (54)
        • 의료기기의 이해 (6)
        • PET, MRI and so on. (1)
        • PET Study 2009 (1)
        • 방사선 장해방호 (4)
        • 방사선 생물학 (3)
        • 방사선 계측 (9)
        • 기타 방사능관련 (3)
        • 고시 (9)
        • 정리 (18)
      • RI (0)
      • 원자력,방사능 관련법 (2)
  • 블로그 메뉴

    • Math
    • Programming
    • SS
    • DIP
  • 링크

    • Convex Optimization For All
  • 공지사항

    • Test
    • PET Study 2009
    • 기타 방사능관련.
  • 인기 글

  • 태그

    signals_and_systems
    fourier transform
    linear algebra
    Optimization
    Vector
    SS
    Probability
    검사
    Python
    SIGNAL
    opencv
    function
    Programming
    Convolution
    math
    인허가제도
    Term
    signal_and_system
    numpy
    random
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dsaint31x
[Python] Dynamic Typed Language vs. Static Typed Language
상단으로

티스토리툴바