brunch

You can make anything
by writing

C.S.Lewis

by 서진호 Dec 26. 2016

애플은 왜 스위프트를 내놓았는가?

WWDC 2014 키노트 후기

2014년 개최된 WWDC(Worldwide Developers Conference) 2014에서 첫 발표되었던 애플의 새로운 컴퓨터 프로그래밍 언어인 스위프트(Swift)에 대해 들어 본 적이 있습니까? 공교롭게도 미국의 유명한 팝가수 테일러 스위프트와 비슷한 이름입니다. 

결론적으로 말씀드려서 애플 개발자 커뮤니티에서 빠르게 잘 적용되고 있으며, 미국 학생들의 코딩 시간에 핸즈온 자습서로 널리 퍼지고 있는데, 이 글은 2014년 6월 마이크로소프트웨어를 통해 올렸던 린 글을 다시 작성해 보았습니다.  


새로운 애플의 프로그래밍 언어, 스위프트의 탄생

스위프트에 대해 다시 정리하자면, WWDC 2014의 키노트 마지막에 스쳐 지나가듯 발표된 애플이 출시한 새로운 컴퓨터 프로그래밍 언어입니다. 미국 와이어드 블로그에 의하면 스위프트는 코딩 세계에서 마치 오프라 윈프리가 공짜로 차를 경품으로 주는 것과 같다고 추겨 세웠습니다.

그런데 개인적으로 한 가지 의문점이 내 머릿속을 맴돌았습니다. 오브젝티브 C 언어만으로 아이폰과 아이패드, OS X 앱을 모두 개발할 수 있는데, 굳이 애플이 스위프트 언어를 내놓은 이유는 무엇일까? 


첫째, 미국을 비롯한 IT를 배우는 전 세계 학생들이 스위프트를 통해 재미있고 즐겁게 앱을 개발할 수 있는 애플의 미래 개발자 생태계 구축이 스위프트의 목적 아닌가 하는 것이 필자의 생각입니다. 둘째, 스위프트 출시가 최근 실리콘 밸리의 린 스타트업(Lean Startup) 방식에 영향을 받아 스타트업들이 자신만의 아이디어를 빠르게 앱 프로토타입을 적용시켜 성공 여부를 검증하기 위함일 것이라고 생각합니다. 


[사진 1 - 아이패드에서 직접 코딩하고 실행하는 스위프트 튜토리얼 앱]


이러한 분석을 내놓은 이유는 오브젝티브 C 언어와 스위프트 언어의 차이점에서 기인합니다. 1990년경 스티브 잡스가 넥스트(NeXT)의 CEO가 되고, 애플로 복귀할 때 넥스트 OS에서 개발한 수많은 개발도구와 컴포넌트를 새로운 맥 OS에 통합되었습니다. 이때부터 지금까지 25년 동안 오브젝티브 C 언어가 애플의 대표적인 프로그래밍 언어로 쓰였습니다. 


오브젝티브 C 언어는 C, C++ 언어에 기반을 두고 있으나, 알고 보면 오브젝티브 C언어는 스몰토크(Smalltalk)라는 언어에게서 많은 영향을 받았습니다. 참고로 스몰토크는 순수 객체 지향 패러다임을 추구하는 프로그래밍 언어이며, 자바와 C# 언어도 스몰토크에서 한 줄기가 파생되었습니다. 

어쨌든 아이폰과 아이패드가 대중화되면서 오브젝티브 C 언어는 대표적인 모바일 앱 개발 언어로 자리매김했습니다. 그러나 한 가지 문제는 C 언어에 기반한 만큼 포인터, 레퍼런스 개념, 수많은 객체 지향 패러다임(OOP)의 클래스와 다중 상속 등 개념을 정확히 알아야만 프로그래밍이 가능합니다. 

특히, 이러한 개념을 배우는 것이 어려워 객체 지향 프로그래밍 교육에만 수개월이 걸립니다. 즉 컴퓨터 공학 전공자가 아닌 경우 iOS나 OS X 앱을 개발하는 데 시간이 걸린다고 생각합니다. 그래서인지 스위프트는 이러한 오브젝티브 C 언어의 한계를 넘어서고자 철저하게 익히기 쉽고 쓰기 쉬운 애플의 새로운 컴퓨터 프로그래밍 언어로 탄생했습니다.  


[사진 2 - 스위프트 통합 개발 환경인 인터랙티브 플레이그라운드]


스위프트의 장점과 성능 비교 

[사진 2]에 보듯이 먼저 ‘인터랙티브 플레이그라운드’라고 불리는 새로운 에디터 콘솔을 살펴봅시다. 스위프트의 편집 및 디버깅을 할 수 있는 이 에디터는 좌측 화면에서 코딩을 하면 우측 화면에서 결과를 할 수 있어 반복적인 디버깅 작업을 비주얼 제이 션 형태로 볼 수 있어서 빠르게 결과를 얻는 데 도움을 줍니다.


다시 말해, 직관적인 사용자 인터페이스를 추구하는 애플의 디자인 철학이 개발자 도구에도 적용되었다고 봅니다. 오브젝티브 C 언어가 프로페셔널 개발자를 목표로 고안됐다면 스위프트는 다섯 살 아이부터 은퇴한 노인들까지 누구나 쉽게 프로그래밍할 수 있도록 좀 더 대중적으로 사용할 수 있게 설계되었습니다.


유연한 개방 언어 구조 덕분에 개발자에게 코딩 수를 줄여 개발자 생산성을 증가시킵니다. 소셜 네트워크에서 몇몇 개발자들은 스위프트가 스키마(Schema)나 F# 언어 또는 스칼라(Scala) 등의 함수형 언어 스타일을 닮았다고 말합니다. 그러나 애플의 OS X 10 플랫폼 경험 부서의 안드레 이서 뱅커 부사장은 다음과 같습니다. 


오브젝티브 C와 C/C++와 같은 앱 성능을 극대화하는 목표로 하는 언어들과, 파이썬(Python)과 루비(Ruby), 자바 스크립트와 같이 개발자 생산성을 극대화하는 목표로 삼는 언어들이 존재해 있습니다. 이러한 두 가지 양분된 문제점을 푸는데 스위프트가 최고의 선택이 될 것입니다.

[사진 3 - 스위프트와 타 프로그래밍 언어와 성능 비교]

심지어 스위프트가 Complex Object Sort 경우, 벤치마크에서 에서 보듯이 오브젝티브 C 언어보다 1.1배 더 빠르다고 덧붙였습니다. 예를 들어, var 타입은 비주얼 베이식의 Dim 타입과 흡사해 보입니다. int, string, array, dictionary, object 타입이든지 간에 var 타입 하나면 간편하게 선언할 수 있습니다.


또한 array 타입에서 개발자가 정의하지 않는 배열 값에 승인하지 않는 값들이 침투할 수 없도록 Array bouds check 기능을 포함시켰습니다. 안드레 이서 뱅커 부사장은 이러한 스위프트의 뛰어난 기능을 데모로 시연했습니다. 


이 데모에서 두 가지 부분이 저의 관심을 끌었습니다. 먼저 네임스페이스(namespace)를 클래스 인스턴스로 생성하지 않아도 네임스페이스에서 메서드를 호출할 수 있는 점입니다. 다른 하나는 플레이그라운드라는 인터랙티브 문서를 도입해 개발자들이 편리하게 주석과 코드 전환을 도운 점이 인상적이었습니다. 


유니버설 앱 개발을 위한 스위프트 

스위프트와 이번 iOS8과 xCode 6의 큰 변화 중 하나인 유니버설 앱 개발을 가능케 해줍니다. 유니버설 앱이란 일반 개발자들에게 여러 가지 플랫폼을 하나의 언어로 통합 개발할 수 있는 방법을 말합니다. 따라서 유니버설 스토리보드 기능이 새롭게 추가되었는 데 화면 크기와 변환 등을 담당하는데 대폭 발전하였습니다. 


한 가지 재미난 부분은, 재크기 조정 에뮬레이터(Resizable Emulator)를 살펴보면 480 × 480 크기도 정의돼 있습니다. 이로 인해 iOS8 안에 아이와치(iWatch)가 포함될 것이라는 관측이 나왔습니다. 스위프트를 통해 아이폰, 아이패드, OS X , 아이와치 그리고 카 플레이 앱까지 하나의 코드로 멀티플랫폼을 동시에 개발할 수 있도록 준비해놓았습니다. 


덧붙여 스위프트 또한 iOS8의 프로세스와 앱 보안 모델을 그대로 따르므로 인증되지 않은 사용자의 앱을 실행시킬 수 없으며 앱 스토어에서 똑같이 앱 버전 관리와 업데이트 등을 할 수 있습니다. 따라서 스위프트는 앱을 실행시키기에 더없이 안전한 지니고 있고, 자동적으로 ARC 메모리 관리 기능을 지원하고 심지어 ARM과 x86의 64비트 아키텍처는 호환됩니다.


애플의 LLVM 아키텍처를 지원하는 스위프트

스위프트는 LLVM에 포함된 애플의 새로운 프로그래밍 언어입니다. 참고로 이 LLVM는 Clang 프런트 엔드 스펙을 지원하는 오브젝티브 C나 파이썬과 같은 컴퓨터 언어들의 집합을 가진 컴파일러 인프라스트럭처로 보면 됩니다. 


따라서 컴퓨터 언어 독립성과 안전한 데이터 시스템을 제공합니다. 동작원리는 조금씩 다르지만 구글 안드로이드의 달빅(Dalvic) 가상 머신(VM)이나 마이크로소프트의 닷넷 CLR과 비슷하게 LLVM도 코드 중간 단계를 거쳐 최종 머신 코드로 생성해 줍니다. 


LLVM은 오브젝티브 C 언어와 스위프트에서 개발 코드를 동시에 작성할 수 있도록 상호 호환성을 제공해줍니다. WWDC에서는 인터랙티브 플레이그라운드에서 오브젝티브 C 언어의 클래스 선언과 구현을 별도로 하지 않고 스위프트에서 그대로 불러 쓸 수 있도록 데모를 보여주었습니다. 그리고 오브젝티브 C와 소스 코드의 호환은 장담은 못하나 바이너리만큼 호환되게 하겠다고 합니다.


스위프트의 다양한 목적

어떤 측면에서 스위프트는 구글이 만든 DART나 Go 언어와 비슷한 목적으로 고안됐다고 봅니다. 전문 개발자가 아닌 학생 및 커뮤니티에서 취미로 개발하는 사람을 목표로 했다는 점에서 그러합니다. 또한 시간이 돈인 스타트업에게 오브젝티브 C 언어보다 스위프트가 그들의 앱 아이디어를 빠르게 검증하는 데 적합합니다.  


최근 실리콘밸리에서 그들만의 언어를 하나씩 가지고 있는 것이 유행처럼 퍼지고 있는데, 내부 개발 플랫폼을 견고히 함으로써 고객들을 파트너 사로 하여금 더 빠르고 유연한 서비스를 제공하여 모바일 광고 수입과 기업들의 클라우드 서비스 임대로 수익을 극대화하고 있습니다. 


예를 들어, 지난달 페이스북은 마크 주커버그가 개발했던 PHP를 변형한 Hack이란 언어를 내놓았습니다. 마이크로소프트도 끊임없이 자신만의 언어를 업그레이드하고 있는데, 최근 버전 6.0으로 업그레이드된 C# 언어도 이와 같은 맥락이라고 볼 수 있습니다. 


또한 미국 교육 시장에서 OS X의 시장 점유율은 확고합니다. 최근 구글이 크롬북을 통해 ‘클라우드 기반의 혁신 교육’이라는 좋은 사례를 만들어냈지만 애플의 아성을 무너뜨리기에는 아직 역부족이었습니다. 물론 그렇다고 애플이 하는 모든 것이 성공한 것은 아니지만, 스위프트가 불과 발표되었는지 하루도 안 된 사이에, 한 개발자가 GitHub를 통하여 Flappy Bird를 스위프트로 클론(Clone)한 다음 소스 코드를 공개해 놓은 점으로 보아 스위프트의 그 가능성을 짐작할 수 있습니다.


스위프트의 성공 조건 

그렇다면 스위프트의 성공 조건은 무엇일까? 과연 스위프트가 파이썬이나 루비처럼 미국의 수많은 미트업(Meet-Up) 커뮤니티에게 전염되어 재미 본능을 느끼게 할 수 있을까? 이 질문에 대한 답변은, 애플은 이미 1980년대에 애플 II부터 사용된 애플 베이식이라는 스크립트 언어를 선보여 '애플 베이식'이라는 이름으로 누구나 프로그래밍을 배울 수 있을 만큼 쉬워 애플 II의 보급에 지대한 영향을 끼친 사례에서 유추해 볼 수 있습니다.


비록 스위프트가 애플의 첫 번째 스크립트 언어는 아니지만 애플 베이식과 같은 대중성을 누릴 수 있을까? 애플은 아이폰에서 수많은 개발자들의 성공 스토리를 만들어 냈습니다. 현재 애플의 앱스토어에는 총 120만 개의 앱이 등록돼 있고, 앱 다운로드 수도 750억 번을 넘어서고 있습니다. 


이러한 관점에서 애플의 전략을 지켜보는 것도 즐거운 일일 것입니다. 어쩌면 모차르트가 다섯 살부터 음악을 작곡했던 것처럼 TED와 같은 콘퍼런스에서 다섯 살 아이가 코코아 터치와 스위프트로 아이폰 앱을 개발한 것을 보게 될지도 모를 일입니다. 스위프트를 통해 미래의 예비 개발자들까지 자사의 개발자로 포섭하겠다는 애플의 전략은 WWDC 2014 이후에도 주목해야 할 이슈가 아닐까 싶습니다.


2년이 지난 현재의 스위프트는?  

스위프트가 나온지도 거의 2년이 다 지나가고 있습니다. 현재 버전은 스위프트 3.0으로 발전했으며, 우리에게 잘 알려진 사진 앱인 VSCO가 스위프트로 만들어진 대표적인 앱이고, 스탠퍼드 대학교 외에 미국의 많은 대학교에서 스위프트 과정이 신설되어 누구나 쉽게 아이패드를 이용한 튜토리얼로 학생들로 하여금 공부할 수 있도록 제공됩니다. 아울러 Swift.org를 통해 스위프트 언어 그 자체를 오픈 소스로 공개하고 있습니다. 향후 스위프트가 어떻게 발전해 나갈지 함께 지켜보시지요!


[사진 4 - 스위프트로 만든 VSCO 앱]


스위프트 창시자가 테슬라로! 

이미 이 글만 약 3천 여명이 읽으셨는 데, 오늘 이 소식을 업데이트 안 해 드릴 수밖에 없는 빅뉴스가 나왔기 때문입니다. 바로 애플에서 스위프트를 창시하고 개발한 크리스 래트너가 테슬라의 자율주행 소프트웨어, 오토파일럿의 부사장(Vice President)으로 합류한다고 합니다. 

그렇다면, 자율 주행 코드에서도 스위프트가 사용되게 될까요? ㅎㅎ 실리콘 밸리에서 애플에서 테슬라로 자리를 옮기는 것이 트렌드이긴 하지만 도대체 그가 왜 갔는지는 솔직히 저는 이해가 안 갑니다. 그리고 애플의 스위프트 미래는 어떻게 될까요? 올해 6월, WWDC 2017에서 함께 살펴보시죠 ^^



브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari