
타입 검사는 프로그램의 type safety를 보장하기 위한 장치이며,
언제(컴파일/실행 시점) 검사하느냐와 얼마나 엄격하게 검사하느냐에 따라 프로그래밍 언어가 분류됨:
- Static vs Dynamic: 언제 타입을 검사하느냐
- Strong vs Weak: 얼마나 엄격하게 타입을 검사하느냐
Static Typing (정적 타입 언어)
- 변수의 타입이 컴파일 시점(compile time)에 결정
- 한 번 선언된 타입은 변경 불가
- 예: Java, C, C++, Scala
- 장점:
- 오류를 개발 초기에 발견 가능
- 더 빠르고 최적화된 실행 코드 생성
- 단점:
- 개발 초기 속도가 느리고 코드가 길어지기(장황해지기) 쉬움.
- 유연성이 부족.
Dynamic Typing (동적 타입 언어)
- 변수의 타입이 실행 시점(run time)에 객체에 따라 결정
- 동일 변수에 서로 다른 타입의 객체 할당 가능
- 예: Python, JavaScript, PHP, Ruby
- 장점:
- 코드 작성과 테스트가 빠름
- RTTI 기반으로 reflection, dynamic dispatch 가능
- 단점:
- 실행 중 타입 오류 가능
- 최적화 수준이 낮을 수 있음
관련 용어
- RTTI (Run-Time Type Information): 프로그램 실행 중 객체의 실제 타입 정보를 조회·판별할 수 있도록 제공되는 메커니즘.
- Reflection: 실행 중 타입 정보를 이용해 클래스, 메서드, 필드 등의 구조를 조회하거나 동적으로 호출·조작하는 기능.
- Dynamic Dispatch: 호출 시점에 객체의 실제 타입을 기준으로 어떤 메서드를 실행할지 런타임에 결정하는 방식.
Strongly Typed (강타입 언어)
- 타입 규칙을 엄격히 적용
- 자동 타입 변환이 거의 허용되지 않음
- 타입 불일치 시 오류 발생
- 예: Python, Java
Weakly Typed (약타입 언어)
- 타입 안전성 제약이 느슨함
- 자동 타입 변환을 많이 허용
- 예: PHP, C
- 특징:
- 문자열과 숫자의 연산이 암묵적으로 허용될 수 있음
같이 보면 좋은 자료들
https://dsaint31.tistory.com/511
[Python] Dynamic Typed Language vs. Static Typed Language
Python은 대표적인 dynamic (typing) langauge 이다. (dynamic language는 대부분 interpreter language 임.) 좀 더 엄밀하게 애기하면,Dynamic Language란 특정 동작이나 사항들이 runtime(실행 시간)에 결정되는 특징을 가
dsaint31.tistory.com
https://dsaint31.tistory.com/518
[Python] Strong Typing이란? with Object
Strong Typing 이란?Python은 object에 대해 Strong Typing을 채택하고 있다.이는 Object가 mutable type이냐 immutable type이냐에 상관없이 implicit type conversion이 엄격하게 제한됨을 의미한다. 좀더 정확하게는 서로
dsaint31.tistory.com
2023.10.23 - [Python] - [Python] Programming Language and Introduction of Python.
[Python] Programming Language and Introduction of Python.
Computer and Programhttps://dsaint31.tistory.com/436: computer 의 정의와 program 의 정의 [CE] Computer and Program.1. 정의: 개인적으로 선호하는 Computer의 정의는 다음과 같음 (wikipedia).A computer is a machine that can be program
ds31x.tistory.com
'Python' 카테고리의 다른 글
| PyPI에 wheel을 업로드하기 (0) | 2025.12.21 |
|---|---|
| 개발 디렉토리를 pip package로 설치하기 - pip install -e . (0) | 2025.12.21 |
| Python의 함수에서 return 의 이해 (0) | 2025.12.07 |
| Recursive Function and Recurrence Relation (1) | 2025.12.05 |
| scikit-image: Low Pass Filter (0) | 2025.10.21 |