정적 타입 언어는 자료형이 고정된 언어입니다. 정적 언어는 자료형을 컴파일 시에 결정합니다. 따라서 소스코드 상에 자료형을 지정해줍니다. 정적 언어의 대표적인 종류는 C, C#, C++, JAVA 등이 있습니다.
정적언어는 컴파일 시 타입에 대한 정보를 결정하기 때문에 속도가 빠르고, 타입 에러로 인한 문제점을 초기에 발견할 수 있으므로 타입의 안정성이 올라갑니다.
동적 타입 언어는 타입이 동적으로 변하는 언어입니다. 동적 언어의 자료형은 실행될 때 결정됩니다. 정수형으로 선언된 변수가 문자형으로도 저장되고 객체로도 저장될 수 있습니다. Python, Javascript 등의 언어가 있습니다. (파이썬은 3.6 버젼부터 정적타입도 지원)
C++, C
int a = 9;
Javascript
let i = 0;
i = "Hello world!"
강타입 언어는 자료형이 맞지 않을 시에 에러를 발생 시키며 암묵적 변환을 지원하지 않습니다.
약타입 언어는 자료형이 맞지 않을 시에 암묵적으로 타입을 변환하는 언어입니다.
약타입 Javascript
1 + "1" (O)
1 + [] (O) 결과 '1'
약타입 C++
int a = 10;
unsigned int b = a;
강타입 Python
1 + "1" (X)
강타입 Go
var num1 int = 17
var num2 float32 = 13.3
var num3 float32 = num1 + num2 (X) 컴파일 에러