본문 바로가기

프로그래밍

2. 사람들은 왜 동적 타이핑을 싫어할까?

안녕하세요, 푸불입니다.

최근에는 입문 언어가 Python이 대세가 되었습니다.

그리고 비교적 접근성이 좋다는 이유로 Javascript를 선호하는 경우도 많이 보입니다.

일단 기본적으로 이런 언어들은 동적 타이핑 언어입니다. 즉, 문자열인지, 정수인지, 실수인지 따위를 지정해줄 필요가 없는 언어라는 거죠.

그래서 입문자 입장에서는 자료형이라는 개념을 하나 덜어낼 수 있기 때문에 굉장히 라이트하게 느껴지는거고, 이런 언어들을 입문자 입장에선 쉽게쉽게 배울 수 있다는 겁니다. 

 

하지만 이유는 모르겠지만, 파이썬이나 자바스크립트의 동적 타이핑을 가루가 되도록 까는 사람들을 가끔 만날 수 있습니다.

처음엔 이 상황이 이해가 안됩니다. 위에서 말했다 시피, 정적 타이핑보다 배우기 쉬운데 왜 싫어하지?

 

그래서 그 이유를 이 글을 통해 설명해보려고 합니다.

 

1. 코드 힌트

즉, 자동완성이 됩니다. 동적 타이핑의 경우, 해당 변수에 뭐가 들어가 있을지 예상이 불가능합니다.

반면 정적 타이핑은 변수가 어떤 타입인지 알고 있습니다.

타입이 정해지면 호출 할 수있는 메소드 같은것도 정해지기 때문에 자동완성이 가능하고,

이 때문에 꽤나 편리해집니다.

 

2. 런타임 에러 대신 컴파일 에러가 난다

런타임 에러는 컴파일 에러보다 잡기가 힘듭니다.

왜냐하면 더럽게 무거운 프로그램을 빌드해서 실행한 뒤에서야 파악할 수 있기 때문입니다.

반면 컴파일 에러는 텍스트 에디터에서 잡히기 때문에 디버깅 하기 훨씬 손쉽습니다.

예를들어, Python의 5+"3"은 런타임 에러가 납니다.

그러나 C#의 경우 컴파일 에러가 납니다.

 

3. 빠르다

동적 타이핑이라고 할지라도 내부적으론 타입이 정해집니다.

단지, 적당히 상황에 맞게 자동으로 바뀔 뿐입니다. 

그렇기 떄문에 처음부터 정해지는 정적 타이핑에 비해서는 느릴 수 밖에 없습니다.

 

4. 동적 타이핑도 결국 타입을 신경써줘야한다

파이썬이나 자바스크립트는 변수에 자료형이 없기 때문에, 종류에 상관 없이 값을 집어 넣을 수 있습니다.

그러나 변수에서 그걸 꺼내쓰는 입장에선, 어떤 자료형인지 알아야합니다.

이게 문자열인지, 뭔지 알아야지 그에 맞는 처리를 하니까요.

그러나 동적 타이핑은 뭐가 들어 있는지 알 수가 없습니다.

그렇기 때문에 동적 타이핑은 프로그램의 유지보수를 어렵게 만듭니다.

어차피 신경써야하는거, 처음부터 명확하게 정해놓고 그때그때 확인할수 있는 게 더 나을테니까요 (정적 타이핑)