1. 정적 타입 언어 (Statically Typed Language)
정의 정적 타입 언어는 코드를 실행하기 전인 컴파일(Compile) 시점에 변수의 타입을 결정하고 검사하는 언어입니다. 코드를 작성할 때 변수에 들어갈 데이터의 형태(숫자, 문자, 배열 등)를 개발자가 명시적으로 선언해야 합니다.
특징
- 안정성: 컴파일 단계에서 타입 불일치로 인한 오류를 미리 발견할 수 있어, 실행 중 발생할 수 있는 치명적인 버그를 크게 줄여줍니다.
- 실행 속도: 실행할 때 타입을 판별하는 과정을 거치지 않으므로, 일반적으로 런타임 속도가 빠르고 메모리 관리가 효율적입니다.
- 유지보수: 코드 자체가 하나의 문서 역할을 하여, 대규모 프로젝트나 협업 시 다른 개발자가 코드를 파악하기 쉽습니다. IDE(통합 개발 환경)의 자동 완성 및 에러 검출 지원도 매우 강력합니다.
- 단점: 변수를 선언할 때마다 타입을 지정해야 하므로 코드가 길어지고, 초기 개발 속도가 상대적으로 느려질 수 있습니다.
- 대표 언어: Java, C++, C#, TypeScript, Go
2. 동적 타입 언어 (Dynamically Typed Language)
정의 동적 타입 언어는 프로그램이 실제로 작동하는 **런타임(Runtime, 실행 시점)**에 변수의 타입을 결정하고 검사하는 언어입니다. 개발자가 타입을 선언할 필요 없이, 변수에 값을 할당할 때 그 값에 따라 자동으로 타입이 지정됩니다.
특징
- 유연성과 생산성: 타입에 얽매이지 않고 자유롭게 코드를 작성할 수 있어, 초기 개발 속도가 매우 빠르고 코드가 간결해집니다.
- 타입 변경의 자유: 하나의 변수에 숫자를 넣었다가, 나중에 문자열을 넣는 식으로 타입 변경이 자유롭습니다.
- 단점: 프로그램을 직접 실행해 보기 전까지는 타입 관련 에러를 발견하기 어렵습니다. 서비스 운영 중에 예상치 못한 타입 에러(예: 숫자와 객체를 더하는 연산)로 인해 프로그램이 중단될 위험이 있습니다.
- 단점: 프로젝트 규모가 커지면 함수에 어떤 타입의 데이터가 들어오고 나가는지 추적하기 어려워 유지보수 비용이 증가합니다.
- 대표 언어: JavaScript, Python, Ruby, PHP
3. 핵심 차이 요약
- 검사 시점: 정적 타입 언어는 실행 전(컴파일 시점)에 검사하고, 동적 타입 언어는 실행 중(런타임)에 검사합니다.
- 타입 선언: 정적 타입 언어는 변수 선언 시 타입을 반드시 적어야 하지만, 동적 타입 언어는 값만 할당하면 됩니다.
- 타입의 가변성: 정적 타입 언어는 한 번 지정된 변수의 타입을 중간에 바꿀 수 없고, 동적 타입 언어는 실행 도중 언제든지 다른 타입의 값을 덮어쓸 수 있습니다.
'Coding Study > FrontEnd Study Note' 카테고리의 다른 글
| JSX란 무엇인가? (0) | 2026.02.26 |
|---|---|
| CSS 명시도 (0) | 2026.02.26 |
| Core Web Vitals란? (0) | 2026.02.23 |
| 함수형 프로그래밍 (0) | 2026.02.23 |
| dvh, svh, lvh (0) | 2026.02.23 |