# 1.2 스위프트 언어의 특징

&#x20;

<figure><img src="https://mblogthumb-phinf.pstatic.net/MjAyMDA5MDRfMjY0/MDAxNTk5MTg4MjU0NDU2.HKthr61lqUd5_ZKjwM6Ma_Pu2OKty90mb3HxLMWJyocg.q8mcr-9JpVSy5BDtlO1Kga23NJTQp_4dX6BDR3m_Nl4g.PNG.jdusans/image.png?type=w800" alt=""><figcaption><p>프로그래밍 언어들의 생산성과 성능 그래프</p></figcaption></figure>

위 그림은 스위프트의 개발 생산성과 앱 성능에 대한 포지셔닝 그래프 입니다. 상대적으로 언어에 대한 진입 장벽이 낮고 개발하기 쉬운 자바스크립트나 파이썬, 루비와 같은 동적 바인딩 타입의 언어는 생산성이 좋지만 성능이 부족한 경우가 많고, 성능이 좋은 언어일수록 진입 장벽이 높고 개발하기 어려워 생산성이 낮은 경우가 많습니다. 이에 비해 스위프트는 개발 생산성과 앱 성능 모두에서 만족할 만한 결과를 가져오는 언어로 포지셔닝되어 있습니다.

&#x20; 스위프트는 데이터 타입 추론 기능에 의해 컴파일러가 알아서 변수와 상수의 타입을 결정하기 때문에 마치 동적 바인딩 언어인 것처럼 착각되기도 하지만, 기본적으로 스위프트는 정적 바인딩 언어입니다.

&#x20;또한 스위프트는 데이터 타입에 대한 구분이 엄격합니다. 스위프트에서 선언된 변수와 상수는 컴파일 단계에서 데이터 타입이 미리 정의되어 있어야 하고, 일단 변수의 데이터 타입이 정의되면 다른 타입으로 변경할 수 없습니다. 컴파일러는 타입에 맞지 않는 데이터가 변수에 대입되는 것을 사전에 차단하여 안정성을 높일 수 있습니다.

&#x20;스위프트는 네임스페이스를 사용하여 필요한 객체들을 참조하는데, 일반적으로 프로젝트 전체가 네임스페이스의 범위로 지정됩니다. 이는 같은 프로젝트 내에 작성된 객체일지라도 오브젝티브-C에서는 참조를 위해 일일이 헤더 파일을 반입해 주어야 했던 것과 다르게, 스위프트에서는 같은 프로젝트 내에 작성된 객체들은 반입 과정 없이 참조할 수 있다는 뜻입니다.&#x20;

&#x20;
