# 정적타입 vs 동적타입 ## 용어 * 동적 언어 (dynamic language) - 런타임에 데이터 타입을 결정하는 언어. * 정적 언어 (static language) - 컴파일 타입에 데이터 타입을 결정하는 언어. ## 정적 언어가 미래다 * 프로토타이핑이 목적이라면 동적 언어의 생산성을 즐길 수 있다. * 하지만 프로덕션에서는? * 동적 언어 코드를 검증하기 위해서는 실행을 해봐야 한다. * 코드베이스가 커질수록 런타임에 문제를 찾기 어려워진다. * 정적 언어로 만든 코드베이스는 필연적으로 레거시가 된다. * 개발 환경에서의 intellisense가 정적 언어의 생산성을 훨씬 높일 수 있다. * 정적 언어의 코드 양이 많다는 건 이제 큰 문제가 아님. (타입추론) ## 정적 타이핑을 선택하는 동적 언어들 * 자바스크립트는 타입스크립트, 플로우 등으로 사실상 동적 언어로서의 정체성을 잃어가고 있다. * 파이썬도 mypy 같은 정적 타입 체커가 있음. * 루비에 이어 얼랭도 정적 타입 지원을 시작함. ## 참고자료 * [Jukka Lehtosalo, "4백만 줄의 파이썬 타이핑을 위한 여정", 최경재 역, 2019.](https://ryanking13.github.io/2019/10/03/our-journey-to-type-checking-4-million-lines-of-python.html) * [강성훈, "<마비노기 듀얼> 서버, 동적 타입 언어에서 반 정적 타입 언어로의 변신", NDC, 2016.](http://cosmic.mearie.org/2016/04/kailua/ndc2016-slides.pdf)