스위프트 언어
스위프트(Swift)는 미국 애플(Apple) 회사가 아이오에스(iOS)와 오에스텐(OS X) 프로그래밍을 위해 개발한 프로그래밍 언어이다. 2014년 6월 출시되었다. 아이폰 앱 개발을 위한 기존 오브젝티브-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]
활용
현재 스위프트를 컴파일 할 수 있는 플랫폼은 공식적으로 리눅스와 애플 뿐이다. 그렇기 때문에 리눅스나 맥등에서 간단히 사용할 프로그램의 제작이 가능하며, BM의 Kitura와 퍼펙트리소프트의 Perfect등 스위프트 언어를 사용한 웹서버 애플리케이션 제작용 프레임 워크가가 생겨났다. 거기에 2019년에 공개한 스위프트UI(Swift UI)는 전체 애플 플랫폼에 걸친 인터페이스를 구축하는 프레임 워크를 제공하기 때문에 아이폰이나 아이패드, 맥뿐만 아니라 애플 워치와 TV까지 애플의 모든 기기의 앱 개발에 한 층 더 힘을 실어 주었다.[3]
스위프트는 무료로 제공되는 오픈 소스 언어이다. Apache 2.0 오픈 소스 라이선스만 있다면 개발자, 교육자, 학생 등 누구에게나 열려있다. 애플은 iOS, macOS, watchOS, tvOS, 그리고 리눅스용 코드를 컴파일할 수 있는 [[macOS] 및 Linux용 바이너리를 제공하고 있기 때문에 사용자들이 소스 코드 개발에 직접 참여 할 수 있다.
문제점
전망
각주
- ↑ Clint Jang , 〈(iOS Swift) 스위프트는? 스위프트 역사〉, 《미디엄》, 2019-1-12
- ↑ 2.0 2.1 2.2 2.3 부스트코트 , 〈Swift란 어떤 언어인가?〉, 《네이버 포스트》, 2017.01.16
- ↑ Paul Krill , 〈“스위프트와 엑스코드가 만났다” 애플, UI 개발 프레임워크 스위프트UI 발표 〉, 《잇 월드》, 2018-11-13
참고자료
- 애플 공식 홈페이지 - https://www.apple.com/kr/
- 애플 공식 개발자 홈페이지 - https://developer.apple.com/kr/
- 〈스위프트〉, 《네이버 지식백과》
- Jonny Evans, 〈기업 사용자에게 의미 있는 WWDC 발표 12가지〉, 《아이씨오》, 2018-11-13
같이 보기