개발자를 희망하는 초보의 자기개발 이야기

정적 타입 언어와 동적 타입 언어, 강타입 언어와 약타입 언어 본문

언어 공통

정적 타입 언어와 동적 타입 언어, 강타입 언어와 약타입 언어

클라우드아실 2024. 3. 19. 09:00
반응형

출처 : 이건 벨로그Jee

정적 타입 언어(Static Typed Languages)

변수가 선언될 때 타입이 결정된다.
프로그램이 실행되기 전에, 컴파일 시간에 변수의 타입을 검사하며, 타입 에러는 주로 컴파일 시간에 발견되기 때문에, 실행 전에 많은 오류를 방지할 수 있다.
예: C, C++, Java, Rust 등


동적 타입 언어(Dynamic Typed Languages)

변수의 타입이 실행 시간에 결정된다.
타입 검사가 실행 시간에 이루어지며, 변수는 여러 타입의 값들을 담을 수 있다.
타입 에러는 프로그램이 실행될 때 발견될 수 있으며, 런타임 에러로 이어질 수 있다.
예: Python, JavaScript, Ruby 등

 

이 두 타입 시스템 간의 주요 차이는 타입의 안정성과 유연성에 관한 절충에서 발생한다.
정적 타입 언어는 보통 더 안정적이고 예측 가능하지만, 더 많은 코드 작성을 요구할 수 있다.
반면, 동적 타입 언어는 더 유연하고 개발 속도가 빠를 수 있지만, 런타임 오류의 가능성이 더 높다.

 

강타입 언어

다른 형끼리의 변환이 금지되어있고, 만약 변환을 하고 싶다면 명시적으로 타입을 선언해줘야한다.
(자료형이 맞지 않을 시 에러 발생)

예 : Java, Python, Ruby

 

약타입 언어

다른 형끼리의 변환이 가능하며, 암묵적으로 변환을 해주기도 한다.

예 : C, JavaScript, PHP

 

정리

  • 자동 형 변환 가능 유무에 따라 강타입 / 약타입
  • 자료형의 결정 시점에 따라 정적 타입 / 동적 타입 언어
반응형