# 1.1 스위프트 언어의 탄생과 배경

ㅇ 스위프트는 애플이 2014년 세개 개발자 대회에서 발표한 새로운 언어입니다. 그 동안 앱을 개발하는 데에 사용되던 오브젝티브-C를 대체할 목적으로 발표된 언어입니다.

&#x20;이전 주력 언어였던 오브젝티브-C는 C언어를 기초로 하여 스몰토크의 메시지 전달 개념과 객체 지향 개념을 방영한, 말그대로 객체지향형 C언어 입니다. 이러한 특성 때문에 그동안 iOS 앱을 개발하기 위해서는 C 언어의 저수준 프로그래밍과 스몰토크의 객체지향 개념을 동시에 구현해야 한다는 부담이 있었습니다. 게다가 C 언어의 장점이자 단점인 포인터 개념은 오브젝티브-C를 강력한 언어로 만들어주긴 했지만, 처음 접근하는 사람에게는 그만큼 높은 장벽으로 작용하기도 했습니다.

&#x20;프로그래밍을 익히는데 어려움이 있다보니, 프로그래밍 공부에 지쳐 앱 개발을 포기하는 일도 잦았습니다. 앱의 다양한 기능에 집중해야할 개발자가 성능 개선에 더 많은 노력과 시간을 소모하는 현상을 가져오기도 했습니다.

&#x20;이는 애플이 바라는 앱 생태계와는 다소 거리가 있었습니다. 애플은 앱 개발자들이 기술적으로 더 훌륭한 앱을 만들기보다는 기능적으로 더 다양한 종류의 앱을 만들기를 원했기 때문에, 아이디어를 가진 많은 잠재적 개발자들까지도 마음만 먹으면 손쉽게 앱을 구현할 수 있는 환경을 만들어주는 것이 당면 과제였습니다.&#x20;

&#x20;이같은 목적성에 기초하여 기능이 아니라 성능에 관련된 많은 부분, 특히 코드 최적화나 메모리 관리, 성능 관리 등의 기술 경험 기반 개발 이슈를 시스템이 전담하여 개발자들의 부담을 덜어주는 것이 가장 중요했습니다.&#x20;

&#x20;이러한 목표를 위해 만들어진 언어 플랫폼이 바로 스위프트입니다. 스위프트는 기존의 오브젝티브-C가 C 언어로부터 가져온 저수준 프로그래밍을 자동 관리 영역으로 대체했고, 생소한 문법이지만 객체지향을 위해 사용할 수밖에 없었던 스몰토크의 메시지 문법을 사람들에게 익숙한 자바, 파이썬, C#의 문법으로 바꾸었으며, 오브젝티브-C와 호환까지 가능하도록 설계되는 등 여러 가지 언어적 강점을 지녔습니다.

&#x20;오브젝티브-C가 고급 개발자를 대상으로 사용된 언어라면 스위프트는 개발에 갓 입문하는 사람들까지 무리 없이 사용할 수 있는 언어입니다. 그 대표적인 기능이 바로 인터랙티브 플레이그라운드 입니다.

<figure><img src="https://3334897291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGovKcqWIBj7Rn9w1Dt23%2Fuploads%2FnCX32HOZxM9vszucoydW%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202023-05-29%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%207.46.23.png?alt=media&#x26;token=093df124-92ad-481c-bb57-d85cf6a0f926" alt=""><figcaption><p>Swift Playground</p></figcaption></figure>

&#x20;직관적으로 코드를 작성하여 그 결과까지 볼 수 있는 이 편집기는 왼쪽의 편집 창에서 코드를 작성하면 중간 경과물을 보여줄 뿐만 아니라 즉석에서 컴파일하여 처리 결과까지 제공합니다. 직관적인 사용자 인터페이스를 통하여 쉬운 접근을 추구하는 애플의 철학이 반영된 결과물인 것이죠.

&#x20;기술적인 관점에서 스위프트는 애플의 메인 프레임워크인 코코아 프레임워크와 코코아 터치 프레임워크를 모두 사용하루 수 있습니다. LLVM 컴파일러, 옵티마이저, 오토벡터링, ARC 메모리 관리, 런타임 환경 등을 기존 언어의 개발 환경과 거의 동일하게 사용할 수 있다는 장점도 있죠.
