1. 스위프트란?
스위프트는 애플에서 새로 만든 프로그래밍 언어입니다.
스위프트가 발표되기 이전에는 오브젝티브 C(Objective-C)라는 언어를 사용했는데, 오브젝티브 C는 C를 기반으로 만든 언어이면서 객체지향의 장점을 적용하여 만든 언어입니다.
오브젝티브 C는 C언어를 기반으로 만들어졌기 때문에 포인터를 사용해야 했는데, 이것 때문에 초보 개발자가 적응하기 어려운 문제, 코드 작성이 복잡한 문제가 있었습니다.
이러한 문제점을 해결하기 위해 애플에서는 "Objective-C without the C"라는 표현(2014년 WWDC)을 하면서 Swift를 공개했습니다.
일단 스위프트는 최근에 만들어진 언어이기 때문에 기존 언어와 신생 언어(Objective-C, Python, JS, C# 등. 스크립트언어(JS, Python 등)의 간결함, 객체 지향 언어(Objective-C, C#, Java 등))의 특징이 결합된 것이 스위프트입니다.
스위프트의 변경 사항에 대해서는 아래의 블로그를 참고하시면 됩니다.
일단 스위프트는 오브젝티브 C의 포인터와 메모리 관리 문제 등을 제거하면서 오브젝티브 C의 장점을 수용해서 만들어졌습니다.
처음에는 문제와 버그가 많았지만, 점차 안정화 되고 있고, 2.2버전부터는 다른 플랫폼에서 이용 할 수 있을 만큼 안정화되었습니다. 지금은 Swift 5.3까지 배포되었습니다.
2. 스위프트의 특징
스위프트는의 주요특징은 다섯가지로 설명 할 수 있습니다.
- 안전성(Safe)
- 스위프트는 안전한 프로그램을 지향합니다. 프로그래밍 중 프로그래머가 실수를 할 수도 있는 것을 문법의 강제를 통해서 미연에 방지합니다.
- 옵셔널을 통해서 변수에 할당된 값이 없을 경우 발생할 수 있는 오류를 줄였으며, guard 구문, if let구문 등을 통해서 안전하게 이용하도록 하였습니다.
- 타입 통제를 통해서 메모리를 과다하게 이용하지 않도록 설계했으며, 포인터를 사용하지 않으면서 메모리 또한 자동으로 관리합니다.
- 빠른 성능(Faster)
- 더 나은 표현성(Expressive)
- 애플 제품 최적화(Optimized)
- 오픈 소스(Open Source)
- 2015년 말에 오픈소스로 전 세계에 공개되었습니다. 이전까지는 iOS, macOS등 애플 자사 제품의 프로그램을 만들기 위한 언어였다면, 오픈소스로 공개된 후에는 다른 플랫폼에 포팅할 수 있게 되어 다양한 분야의 개발자들 역시 관심을 갖게 되었습니다.
위에서 설명한 내용 중 함수형 프로그래밍 패러다임, 프로토콜 지향 프로그래밍 패러다임이 나오는데, 이 부분에 대해서 다음 포스트에서 조금 더 자세히 알아보겠습니다.
Dannian의 블로그입니다.
본 포스팅은 학습 또는 정리를 목적으로 쓰인 글입니다.
내용중 틀린 것이 있다면 댓글로 알려주시면 감사하겠습니다!
- LLVM : Frontend, Optimizer, Backend 구성요소를 분리해서 각 부분을 조합할 수 있게 설계하여 컴파일 속도는 2배, 빌드된 실행 파일의 크기는 20~30% 줄일 수 있도록 한 컴파일러. 파일의 크기가 줄어든 것에 비례하여 실행속도가 증가. 효율성과 확장성이 좋아진 컴파일러. [본문으로]
- 이것은 협업하는 경우에 미리 코드 패턴을 상의하여 개발하고, SwiftLint(https://github.com/realm/SwiftLint)를 이용하는 방법 등이 있습니다. [본문으로]
- Cocoa Framework, Cocoa Touch Framework. 이건 나중에 따로 설명하고 링크를 남기겠습니다. [본문으로]
'모바일 프로그래밍 > iOS기초' 카테고리의 다른 글
[iOS - Swift기초] 정리중 - 옵셔널(Optional) (0) | 2021.01.06 |
---|---|
[iOS - Swift] 정리중 - Function - Closure (0) | 2020.12.30 |
[iOS - Swift기초] 스위프트의 변수(Variable)와 자료형(Type) (정리중) (0) | 2020.12.28 |
[iOS - Swift기초] 정리중 - 다중 패러다임 프로그래밍 언어 (0) | 2020.12.21 |
[iOS - Swift기초] 포스팅에 앞서 (0) | 2020.12.21 |