1.2.2 구조적 특징

스위프트의 발표 자료에 따른 스위프트 언어의 구조적 특성은 여섯 가지 정도로 구분됩니다. 이들 특성은 스위프트가 지향하는 방향성이기도 합니다.

빠름(Fast)

애플에서는 고성능 앱을 만들기 위해 GCC 대신 LLVM 컴파일러를 사용해오고 있는데, 이 컴파일러에서 제공하는 코드 최적화기를 사용하여 소스 컴파일과 최적화를 수행함으로써 스위프트의 성능을 극대화 할 수 있습니다.

설계에 의한 안전성(Safety by Design)

스위프트는 언어 차원에서 안전성을 담보하기 위한 설계로 여러 장치를 해 두었습니다. 변수나 상수는 반드시 선언한 후에 사용하도록 강제하였으며 타입 추론 기능에 의해 변수의 초기값을 기준으로 타입을 정의함으로써 데이터 입력에 대한 안전성을 높이고자 하였습니다. 배열과 정소는 오버플로우에 대비하여 확인하며, 특히 개발자가 정의하지 않은 배열 값에 승인하지 않은 값들이 주입될 수 없도록 Array bounds check 기능을 추가하였습니다.

또한 스위프트는 포인터에 직접 접근하는 시도를 차단하고, 클래스를 통해 간접적으로만 레퍼런스를 참조할 수 있도록 제한했습니다. ARC(Auto Referencing Counter)를 이용하여 자동으로 메모리를 관리하므로 메모리 누수 현상에 대한 안정성도 높일 수 있습니다.

현대적(Modern)

스위프트는 파이썬 언어에 기반을 둔 읽고 쓰기 쉬운 문법을 택하여, 코드 작성이나 디버깅, 유지보수 과정에서 적은 양의 코드가 사용 됩니다. 손쉬운 유지보수를 위해 헤더 파일 사용 대신 메인 파일에 통합하여 코드를 작성할 수 있도록 설계되었죠. 스위프트는 옵셔널, 제네릭, 클로저, 튜플 뿐만 아니라 현대 프로그래밍 언어의 특성까지도 상당수 포함하고 있습니다.

상호반응(Interractive)

Xcode 6 버전부터 애플은 스위프트 코드의 프로토타이핑을 위하여 플레이그라운드(Playground) 편집기를 제공합니다. 스위프트 코드를 작성하고, 그 결과와 메모리 스택 등의 정보를 즉시 확인 할 수 있어 상호반응적으로 코드를 작성할 수 있으며 디버깅도 무척 쉽습니다.

완전한 플랫폼(Complete Platform)

코코아 프레임워크나 코코아 터치 프레임워크의 모든 API를 스위프트로 호출할 수 있습니다. 오브젝티브-C로 작성되었던 핵심 프레임워크의 모든 라인이 스위프트 언어를 이용하여 거의 모두 재작성되었고, 이는 스위프트만으로 하나의 완전한 앱을 만들 수 있다는 의미 입니다.

통합(Unified)

스위프트는 C언어나 오브젝티브-C 언어를 완전히 대체할 수 있습니다. 스위프트는 객체지향 언어의 특성을 모두 제공하는 동시에 자료형과 흐름 제어, 연산자 같은 저수준 언어의 기본 요소들도 모두 포함합니다. 게다가 하나의 앱 프로젝트에서 오브젝티브-C와 함께 사용할 수 있도록 통합성도 지니고 있습니다. 오브젝티브-C 객체를 스위프트에서 참조할 수 있으며, 각각의 화면 별로 오브젝티브-C 또는 스위프트로 나누어 작성하는 것도 가능합니다.

Last updated