동적 타입 언어

EenSung Kim·2021년 9월 9일
0

"선언이 아닌 할당에 의해"


타입

모든 데이터들은 메모리에 저장되고 컴퓨터는 데이터를 메모리로부터 읽어서 사용합니다. 그리고 메모리는 당연하게도 공간적인 제약을 가지고 있죠. 따라서 메모리를 효율적으로 활용하기 위해서는 각 데이터가 가지는 크기만큼 공간을 확보해야 합니다.

다만 모든 데이터에 크기에 딱 맞도록 공간을 확보하는 작업은 도리어 비효율적인 방법이 됩니다. 맞춤 정장이 기성 정장보다 비싼 이유와 비슷하게 이해할 수 있을 것 같은데요. 컴퓨터는 각 데이터를 일일히 파악해서 공간을 확보하기보다는 데이터를 큰 틀에서 분류해두고 그 틀에 따라 확보해야 하는 공간의 크기를 결정합니다.

그 틀이 바로 타입입니다. 자바스크립트 엔진은 타입에 기초해 메모리 공간을 확보하고, 또 타입에 근거해 메모리를 읽어내려가게 되죠. 또한 읽어온 데이터를 어떻게 해석할지 여부 또한 타입을 바탕으로 결정합니다.


동적 타입 언어

변수를 선언할 때 어떤 타입의 데이터를 할당할지 여부를 함께 선언해야 하는 언어를 정적 타입 언어라고 하고, 어떤 타입의 데이터가 할당되느냐에 따라서 변수의 타입이 결정되는 언어를 동적 타입 언어라고 합니다. 자바스크립트는 후자인 동적 타입 언어에 해당하는 언어입니다.

동적 타입 언어는 보다 더 유연함을 갖춘 언어입니다. 변수에 값을 할당해 타입이 결정되었다고 해도, 얼마든지 재할당을 통해 타입을 바꿀 수 있죠. 하지만 반대로 신뢰도는 낮다고 할 수 있습니다. 타입이 바뀌기 때문에 예상하지 못한 오류가 생길 수도 있기 때문입니다.

따라서 어느 언어가 더 낫다고 말할 수는 없습니다. 중요한 것은 자바스크립트가 변수에 어떤 값을 할당할 때 타입이 결정되는 형태의 동적 타입 언어라는 것을 이해하고, 그에 걸맞는 방식으로 코드를 작성하는 것입니다. 발생할 수 있는 오류를 미연에 방지하고 오해하지 않을 수 있도록 코드를 작성해 가독성을 높여야 하는 것이죠.


outro

오늘은 모던 자바스크립트 Deep Dive 를 읽으면서 타입에 대해 배운 내용을 정리해봤습니다. 앞부분은 아무래도 기초적인 내용을 다루고 있는 만큼 읽어내려가는 것이 한층 수월한 느낌입니다만, 수월하다고 해서 내용까지 가볍지는 않습니다. 특히 연관해서 등장하는 CS 적인 지식들이 많은 도움이 되는 것 같습니다.

profile
iOS 개발자로 전직하기 위해 공부 중입니다.

0개의 댓글