Apple의 새로운 프로그래밍 언어 소개: Swift

올해 WWDC에서 iOS 8과 OS X Yosemite에 대한 관심이 집중되면서, 사실상 가장 큰 뉴스였어야 할 애플의 새로운 프로그래밍 언어 ‘스위프트’ 발표가 다소 묻힌 감이 있습니다. 최종 사용자에게는 크게 와닿지 않을 수 있지만, 개발자 커뮤니티에서는 게임 체인저가 될 잠재력을 지닌 발표였습니다. 각 프로그래밍 언어는 고유한 장점을 가지고 있으며, 어떤 언어는 더 빠르고, 어떤 언어는 효율적이며, 또 어떤 언어는 간결하거나 사용하기 쉽습니다. 애플은 구글의 Go나 마이크로소프트의 .Net Framework처럼 자체 프로그래밍 언어를 개발한 회사 대열에 합류했습니다. 스위프트는 기존 Objective-C의 장점을 계승하면서, 다른 언어들의 장점을 통합하여, 빠르고 강력한 고급 프로그래밍 언어를 목표로 한다고 애플은 주장합니다.

프로그래밍 언어, 왜 필요할까요?

우리가 사용하는 모든 전자기기는 ‘일’을 수행하기 위해 프로그래밍이 필요합니다. 최신 웨어러블 기기부터 컴퓨터까지, 모든 장치는 기계어, 어셈블리 언어와 같은 원시적인 방식으로 명령어를 하나하나 입력하여 작동시킬 수 있습니다. 하지만 이는 매우 번거롭고 비효율적입니다. 따라서 개발자들은 가능한 한 사람이 사용하는 언어와 유사한 고급 언어를 개발해 왔습니다. ‘스위프트’라는 이름은 개발자들에게 더 큰 매력을 주지만, 애플 제품의 미래를 이끌 기술을 이해하기 쉽게 설명하겠습니다.

간단히 말해, 전자기기는 프로그래밍 없이는 단순한 장식품에 불과합니다. 프로그래밍은 기기에 실제 기능을 부여합니다. 전자공학의 기본 원리에 따라, 기기는 특정 행동에 반응해야 하며, 이러한 행동을 정의하는 것이 프로그래밍입니다. 처음에는 펀치 카드나 기계어를 사용했지만, 점차 기계와 더 자연스럽게 소통할 수 있는 언어가 개발되었습니다. 우리가 작성하는 코드는 컴퓨터가 이해할 수 있는 형태로 컴파일되어 실행됩니다. 즉, 코딩-컴파일-실행의 과정을 거칩니다.

스위프트, 왜 등장했을까요?

이제 “왜 스위프트인가?”라는 질문을 던질 때입니다. C언어는 1970년대에 등장하여 프로그래밍 분야에 큰 혁신을 가져왔으며, 이후 1980년대에 C언어에서 파생된 Objective-C가 등장했습니다. 애플은 오랜 기간 동안 Objective-C를 개발에 사용해 왔습니다. 일반적으로 “고장나지 않은 것을 고치지 말라”는 말이 있지만, 30년 동안 사용해 왔다면 문제가 없는 것일까요? 애플은 수십 년 동안 Objective-C를 사용해 왔지만, 이제 더 빠르고, 강력하며, 사용하기 쉬운 언어가 필요한 시점이었습니다. 바로 이 시점에 스위프트가 등장했습니다.

애플에서 출판한 공식 전자책(iTunes에서 무료로 제공)에 따르면, “스위프트는 C언어 호환성에 제약받지 않으면서 C 및 Objective-C의 장점을 기반으로 iOS 및 OS X 앱을 위한 새로운 프로그래밍 언어입니다. 스위프트는 안전한 프로그래밍 패턴과 최신 기능을 추가하여 프로그래밍을 더 쉽고 유연하며 재미있게 만듭니다. 이미 많은 사랑을 받고 있는 Cocoa 및 Cocoa Touch 프레임워크를 기반으로 스위프트는 소프트웨어 개발 방식을 재창조할 수 있는 기회를 제공합니다.”

스위프트가 중요한 이유

애플이 진정한 혁신을 추구하는 만큼, 스크립트 언어에 대한 아이디어를 고려했습니다. 전통적인 코드-컴파일-실행 방식에서는 코드를 컴파일한 후에만 실행 결과를 확인할 수 있습니다. 컴파일 과정에서 코드의 작동 방식이 명확하게 드러나고, 오류가 있다면 컴파일 단계에서 비정상적인 동작이나 충돌이 발생합니다. 코더는 오류를 찾아 수정하고 다시 컴파일해야 합니다. 이 과정은 시간과 노력이 많이 들지만, 프로그래밍 세계에서는 일상적인 일이었습니다. 하지만 스크립트 언어는 한 줄씩 실행되므로, 코드를 작성하는 즉시 결과를 확인할 수 있습니다. 따라서 오류를 찾고 수정하는 데 걸리는 시간이 줄어들고, 개발 과정이 더 빠르고 쉬워집니다.

하지만 지금까지 스크립트 언어는 성능에 제약이 있었습니다. 예를 들어, 파이썬은 빠르지만, 기능이 제한되어 있어 간단한 작업에 주로 사용되었습니다. 마치 포뮬러 원 자동차처럼 빠른 속도를 내지만, 식료품을 사러 가기에는 적합하지 않은 것과 같습니다.

게임을 개발하고 싶다면 파이썬은 최적의 선택이 아닙니다. 반면에 Objective-C나 C++는 좋은 대안입니다. 스위프트는 Objective-C, Rust, Haskell, Ruby, Python, C#, CLU 등 다양한 언어에서 영감을 받아, 다양한 장점을 통합한 언어가 될 것을 약속합니다(크리스 래트너와 같은 스위프트 개발 전문가가 증명합니다). 스위프트는 좋은 점은 유지하고, 나쁜 점은 버린다고 주장합니다. 주요 벤치마크 테스트에서 스위프트는 파이썬보다 빠르고, Objective-C보다 훨씬 빠른 실행 속도를 보여주므로, 긍정적인 시작이라고 할 수 있습니다.

스위프트의 다른 기능들

스위프트는 또한 “playground”라는 실시간 시각적 환경을 제공하여, 스크립트 언어처럼 코드를 작성하는 즉시 결과를 확인할 수 있습니다. 이는 앱 디자인에 따라 전체 개발 과정을 몇 분으로 단축할 수 있게 해줍니다. 문제가 발생하면 즉시 원인을 파악하고 해결할 수 있습니다. 이것은 마치 인쇄물에서 실수를 발견하고 수정하는 것과, 컴퓨터에서 빨간색 밑줄이 그어진 단어를 즉시 수정하는 것과 같습니다. 스위프트는 복잡한 앱을 더 빠르게 만들 수 있도록 도와줍니다.

더 깊이 들어가 보겠습니다. 고급 언어의 경우, 함수를 사용하려면 기본 기능과 관계없이 클래스와 라이브러리를 선언하고 접근해야 했습니다. 예를 들어, C++에서 기본 입력, 출력 및 데이터 유형을 사용하려면 <iostream.h> 및 <conio.>를 포함해야 했습니다. 그러나 스위프트에서는 이러한 과정을 거칠 필요가 없습니다. 스위프트는 각 데이터 유형 및 입/출력 기능에 필요한 라이브러리를 스스로 관리하므로, 사용자는 라이브러리를 선언할 필요가 없습니다. 따라서 “Hello world”와 같은 간단한 문자열을 출력하는 코드는 다음과 같습니다.

#include<stdio.h>
int main(void)
{
  printf("Hello Worldn");
  return 0;
}

반면, 스위프트에서는 다음과 같이 간단하게 작성할 수 있습니다.

println("Hello, world")

컴파일해야 하는 전체 코드입니다. 또한 스위프트는 코드의 마지막 문장을 나타내는 ” ; “를 사용하지 않습니다.

단점은 없을까요?

스위프트의 등장이 Objective-C의 즉각적인 종말을 의미하는 것은 아닙니다. 앱은 여전히 Objective-C로 개발할 수 있으며, Objective-C 사용자들은 스위프트와 유사한 환경을 찾을 수 있을 것입니다. 물론 애플은 새로운 프로그래밍 언어를 개발하는 데 4년을 투자했으므로, 현재와 미래에는 스위프트에 집중하고 지원할 것입니다. 언젠가는 Objective-C가 애플 프로그래밍 언어 역사에서 사라질 수도 있습니다. 하지만 쉽고 빠른 언어인 스위프트가 있는데, Objective-C를 고집할 이유가 있을까요?

물론 몇 가지 우려 사항도 있습니다. 우선, 업계에 큰 변화가 일어날 수 있습니다. 아이폰 앱 개발을 가르치는 일에 종사했던 사람들의 일자리가 갑자기 위협받을 수 있습니다. 또한, 스위프트를 처음 사용하는 개발자들이 많이 등장할 것입니다. 이는 긍정적일 수도 있고 부정적일 수도 있습니다. 새로운 인력이 유입되는 것은 좋지만, 경험이 부족한 개발자들이 만든 완성도가 낮은 앱이 시장에 넘쳐날 수도 있습니다.

다음에는 애플의 금속 프레임워크, 특히 iOS 게임 개발에서의 장점과 단점에 대해 이야기하겠습니다.

결론

만약 WWDC 컨퍼런스에서 새로운 하드웨어가 발표되지 않은 이유가 궁금하다면, 하드웨어는 소프트웨어가 제대로 작동해야만 의미가 있다는 점을 기억해야 합니다. 스위프트는 소프트웨어 개발의 새로운 장을 열 것입니다. 이제 미래에 모든 하드웨어의 작동 방식을 바꿀 소프트웨어를 위한 새로운 도구를 얻게 되었습니다. 스위프트를 사용하려면 Xcode 6 베타 버전과 개발자 ID가 필요합니다.

여기에서 스위프트 받기