검수요청.png검수요청.png

스위프트 언어

위키원
Asadal (토론 | 기여)님의 2019년 8월 1일 (목) 20:47 판 (같이 보기)
이동: 둘러보기, 검색
스위프트(Golem) 로고
스위프트(Golem) 로고와 글자

스위프트(Swift)는 미국 애플(Apple) 회사가 아이오에스(iOS)와 오에스텐(OS X) 프로그래밍을 위해 개발한 프로그래밍 언어이다. 2014년 6월 출시되었다. 아이폰 앱 개발을 위한 기존 오브젝티브-C 언어와 공존할 목적으로 만들어졌다.

개요

스위프트는 iOSOS X 운영체제에 최적화된 프로그래밍 언어다. 과거 iOSOS X 앱을 개발하기 위해선 오브젝티브-C라는 언어를 이용했는데, 기존 C언어에 객체지향(Objective)의 성격을 섞은 언어이다. 스위프트는 오브젝티브-C에서 C언어의 특성을 줄이고 객체지향 언어의 성격을 강화한 언어이며 애플은 “오브젝티브-C 언어를 이용할 때 흔히 발생하는 에러를 줄일 수 있도록 설계됐으며 좀 더 안정성을 높일 수 있을 것”이라며 “직관적이고 배우기 쉬운 언어”라며 스위프트에 대해 소개 하였다.

배경

애플은 해마다 새로운 하드웨어와 소프트웨어, 운영체제를 선보이는 ‘세계 개발자 컨퍼런스(WWDC)’를 개최하는데 애플의 기술력들이 공개되는 만큼 매해 주목을 받는 컨퍼런스이다. 그리고 2014년 또다시 한번 세계가 집중 하게 되는데, 애플의 독자적인 기술력으로 직접 만든 프로그래밍 언어인 스위프트가 공개되었기 때문이다. 게다가 애플답지 않게 이 프로그래밍 언어를 오픈소스로 공개를 하여 더욱더 많은 관심을 받게 되었다.

역사

스위프트는 크리스 래트너(Chris Lattner)가 핵심 개발자로서, 2010년부터 개발을 시작하였고 Objective-C, Ruby, Python, C#, Rust, Haskell, CLU 등 기존의 언어와 새로운 언어들의 여러 부분을 참고하여 만들어졌다. 처음 발표할 때 스위프트의 특성은 Safe, Modern, Powerful이라고 발표했다. 그 후 오픈소스로 전환되면서 특징을 Safe, Fast, Expressive로 변경하여 발표하였고, 실제 오픈소스를 사용하는 개발자들로부터 그 특성에 적합하다고 평가되고 있다. 스위프트가 2014년 발표가 되고부터 지금까지의 발전과정은 아래와 같다. [1]

  • Swift 1.0 : 2014년 6월 2일 ‘세계 개발자 컨퍼런스(WWDC)’에서 처음 발표되었고, 2014년 9월 9일 Xcode 6와 함께 공식 배포를 하였다. 안전한 코딩을 위한 안전 장치등을 갖추어서 많은 개발자들에게 관심을 받았다.
  • Swift 1.1 : 2014년 10월 22일 공개되었다, 1.0에 비교 했을 때 많은 변화는 없었다.
  • Swift 1.2 : 2015년 4월 8일 공개되었다, 스위프트 문법의 1차 대 혼돈기라 불리며 if-let 개선, 타입 메소드, 타입 프로퍼티, Static 키워드 as 키워드로 업캐스팅/다운캐스팅, 클로저 문법 변화, Set/ Ovjective-C 옵셔널 수식어 추가 등등 1.0과 1.1에 비해서 많은 변화가 있었다.
  • Swift 2.0 : 1.0 발표 1년 후인 2015년 6월 8일 WWDC에서 프로토콜 지향 언어라고 선언되며 소개되었고, 그해 9월 21일에 공개되었다. 2차 대혼돈기라고 불리는 이 시기는 1. X 버전 대와 비교 했을 때 변화가 컸으나 이후 발표되는 버전들은 버전별 변화가 적어 1차 안정기라 볼 수 있다. do, try, catch, thow, #available, guard와 Objective-C에 제네릭이 추가되었고, println()가 삭제되는 등등의 변화가 생겼다.
  • Swift 2.1 : 2015년 10월 7일 공개되었다, 2.0 버전과 비교했을 때 약간의 편의사항 추가와 버그수정 및 안정화 등에 초점을 둔 마이너 업데이트였습니다
  • Swift 2.2 : 2016년 3월에 공개되었다, C- 스타일 for루프와 ++,-- 연산이 삭제되었다. 그리고 Tuple간의 비교가 가능 하고 associated 타입 선언 방법을 변경하였으며 컴파일 타임에 Swift 버전 체크가 가능해졌다.
  • Swift 3.0 : 2016년 9월에 공개되었다, API 디자인 가이드라인을 제시하고 임포트한 Object-C API에 네이밍 가이드라인을 자동 적용하였다. Function 파라미터에서 var 제거, currying func declaration syntax, ++ / - 오퍼레이터, C스타일의 for 구문 등을 제거하고 GCD, CoreGreph 사용을 단순화하는 등등 많은 변화를 주었다.
  • Swift 3.1 : 2017년 3월 공개 되었다. #availability 가 @availability로 바뀌고 OS뿐만 아니라 언어 버전도 체크가 가능해졌다. 그리고 기본 타입 생성을 개선 하였으며 UnsafeMutablePointer.initialize(from:) 콜렉션 타입과 포인트 사용을 제한 하는 등의 변화가 있었다.
  • Swift 4.0 : 2017년 9월 공개되었다. 프로토콜의 혼합 타입 가능과 where절의 확장이 가능해지고 String에 많은 변화가 있었다.
  • Swift 4.1 : 2018년 3월 공개되었다. 재귀적인 프로토콜을 허용하고, Hashable 및 Equatable가 향상 되었다.
  • Swift 4.2 : 2018년 9월 공개되었다. Caselterable, #warning, #error, @dynamicMemberLookip, removeAll(where:), toogle()이 추가 되었다.
  • Swift 5.0 : 2019년 3월 26일 공개되었다. 애플의 오랜 목표였던 API의 안정화가 이루어진 버전이다. 문법적 변화로는 Result타입, count(where:), 원시 문자열(Raw strings), @dynamicCallable, 나중에 열거형 케이스 처리하기(Handling future enum cases) 추가 등이 있다.

특징

애플이 2014년 6월, 처음으로 스위프트를 발표할 때, 스위프트는 iOS, Mac, Apple TV 그리고 Apple Watch 앱 개발용으로 만든 강력하고 직관적인 프로그래밍 언어이며 개발자들에게 어느 때보다 큰 자유를 선사하기 위해 설계되었고 사용이 간편한 오픈 소스 언어라서, 번뜩이는 아이디어만 있다면 누구나 놀라운 결과물을 만들어낼 수 있는 프로그래밍 언어라고 설명하였다. 더불어 "스위프트의 특성은 Safe, Modern, Powerful이다"라고 한 후 오픈 소스로 전환하면서 Safe, Fast, Expressive로 특성 재정의를 하였다. 애플이 발표한 언어적 특성을 정리해 보면 아래와 같다. [2]

안전성(Safe)

스위프트는 안전한 프로그래밍을 지향한다. 변수는 반드시 초깃값을 설정하지 않으면 안 되게 하거나, guard구문, 타입 통제, 객체를 처리하는 변수에 "개체가 없는 텅 빈 상태"를 금지하고, 변수는 처음부터 형태를 설정하게 되어 있었으며, 제어 구문에서는 반드시 '{ }' 처리를 해야 하는 등 프로그램 사용자의 문법적 실수를 줄이는 구문들이 존재하여 안전한 프로그래밍을 구현하고 있다.[2]

신속성(Fast)

"다양한 기능이 포함되어 있기 때문에 편리한 것 같지만, 그래도 작성한 응용 프로그램은 Objective-C 쪽이 척척 움직일 것 같다"라고 생각할지 모른다. 하지만 애플 에 따르면 스위프트로 만들어진 프로그램은 Objective-C로 만들어진 프로그램보다 수행능력이 빠르다. 애초에 스위프트는 C언어를 기반으로 한 프로그래밍 언어를 대체하려는 목적으로 만들어졌다. 성능을 예측할 수 있고 일정한 수준으로 유지할 수 있는 부분에 초점을 맞춰 개발되었으며, 실행 속도의 최적화와 컴파일러의 지속한 개량을 통해 더욱더 빠른 컴파일 성능을 구현해 나아가고 있다.[2]

더 나은 표현성(Expressive)

지난날 동안 수많은 프로그래밍 언어들이 생겨났고, 이런 언어들은 각각 문법별로 장단점이 존재한다. 스위프트는 이런 점을 참고하여 더욱 사용하기 편하고 보기 좋은 문법을 구사하려고 노력하였다. 스위프트가 강조하는 점은 기존의 C언어C++, Java 등과 달리 함수형 프로그래밍과 패러다임과 프로토콜 지향 프로그래밍 패러다임이다.[2]

활용

현재 스위프트를 컴파일할 수 있는 플랫폼은 공식적으로 리눅스애플 이다. 일단 리눅스에서 컴파일이 가능하다는 것은 C / C++, Java, C#, Python, JavaScript 등의 언어가 주도하고 있는 서버 프로그래밍을 스위프트로도 할 수 있다는 뜻이다. 그렇기 때문에 리눅스등에서 간단히 사용할 프로그램의 제작이 가능하며, 2019년에 공개한 스위프트 UI(Swift UI)는 전체 애플 플랫폼에 걸친 인터페이스를 구축하는 프레임 워크를 제공하기 때문에 아이폰이나 아이패드, 뿐만 아니라 애플 워치와 TV까지 애플의 모든 기기의 앱 개발에 한 층 더 힘을 실어 주었다 .[3]

스위프트는 무료로 제공되는 오픈 소스 언어이다. Apache 2.0 오픈 소스 라이선스만 있다면 개발자, 교육자, 학생 등 누구에게나 열려있다. 애플iOS, macOS, watchOS, tvOS, 그리고 리눅스용 코드를 컴파일할 수 있는 [[macOS] 및 Linux용 바이너리를 제공하고 있기 때문에 사용자들이 소스 코드 개발에 직접 참여할 수 있다.

문제점

많은 장점과 발전을 이루고 있는 스위프트이지만 어느 프로그래밍 언어와 마찬가지로 단점이 없을 수는 없다. 일단 우리나라의 차원에서 보자면 국내 개발자가 적어서 그런지 한국어로 된 개발 자료가 많이 부족하다는 점이다. 영문 이외의 자료가 네이티브 개발보다 턱없이 모자라다. 이는 국내 초급 개발자들의 유입을 불리하게 만들 수 있는 사소하지 않은 요소이다.

너무 잦은 업데이트도 스위프트의 문제점으로 자주 거론되는 사항이다. 업데이트가 많으면 좋은 거 아니냐는 말도 있을 수 있지만 그것의 아니다. Swift 3.0을 기반으로 코드를 작성해 놓았지만, Swift 4.0이 발표되면서 전체적인 코드를 수정해야 하는 것, 애플은 거의 1년에 한 번꼴로 스위프트를 버전업 해왔다.

전망

스위프트는 JavaC#의 장점을 거의 다 가지고 있으면서도 LLVM을 기반으로 C/C++/Objective-C처럼 기계어로 최종 번역된다는 점에서 일단 성능상의 우위가 있다. 하지만 각종 디바이스의 성능이 점점 고성능화가 되면서 네이티브 언어의 매력이 조금씩 떨어져가고 있었고, 멀티플랫폼을 지원하는 많은 프레임워크가 등장하면서 2017년을 기점으로 스위프트 같은 단일 디바이스 지원을 하는 스위프트 같은 언어의 점유율은 점점 떨어지고 있다. 게다가 애플모바일에서는 강세를 보이지만 데스크탑서버 시장에서는 존재감이 미미하기 때문에 을 제외한 데스크탑 시장에서의 보급에는 한계가 있다.

각주

  1. Clint Jang, 〈(iOS Swift) 스위프트는? 스위프트 역사〉, 《미디엄》, 2019-1-12
  2. 2.0 2.1 2.2 2.3 부스트코트, 〈Swift란 어떤 언어인가?〉, 《네이버 포스트》, 2017.01.16
  3. Paul Krill , 〈“스위프트와 엑스코드가 만났다” 애플, UI 개발 프레임워크 스위프트UI 발표 〉, 《잇 월드》, 2018-11-13

참고자료

같이 보기


  검수요청.png검수요청.png 이 스위프트 언어 문서는 프로그래밍에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.