더북(TheBook)

컴파일 방식의 프로그래밍 언어는 더 엄격하다. 엄격한 정도는 언어를 설계한 사람들이 여러분에게 얼마나 많은 고통을 주고 싶은지에 달려 있다. 예를 들어 러스트는 매우 엄격하고 완벽주의적이며 오류가 없는 프로그래밍 언어로, 언어계의 독일식 공학이라 할 수 있다. C 역시 독일식 공학이라고 할 수 있지만, 조금 다르다. 규칙을 어기다가 나중에 대가를 치르는 경우가 있기 때문이다. 두 언어 모두 정적 타입 언어로, 한 번 선언된 변수는 타입을 변경할 수 없다. 하지만 러스트는 C#과 같이 강하게 타이핑되는 반면, C는 약하게 타이핑된다고 볼 수 있다.

강한 타이핑(strong typed)약한 타이핑(weakly typed)은 서로 다른 타입의 변수에 다른 타입의 값을 할당할 수 있는지, 즉 프로그래밍 언어가 얼마나 관대한지를 의미한다. 그런 의미에서 C는 보다 유연하다. 포인터를 정수에 할당하는 데 문제가 없으며 반대의 경우도 문제없다. 반면에 C#은 보다 엄격하다. 포인터/참조나 정수 타입은 서로 호환되지 않는다. 표 2-2는 다양한 프로그래밍 언어가 어떤 범주에 속하는지 보여준다.

▼ 표 2-2 프로그래밍 언어의 타입 엄격성

 

정적 타입의 변수는 런타임 시 변경할 수 없다.

동적 타입의 변수는 런타임 시 변경할 수 있다.

강한 타이핑: 서로 다른 타입으로 대체할 수 없다.

C#, 자바, 러스트, 스위프트, 코틀린, 타입스크립트, C++

파이썬, 루비, 리스프

약한 타이핑: 서로 다른 타입으로 대체할 수 있다.

비주얼 베이직, C

자바스크립트, 비주얼 베이직 스크립트

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.