모바일 프로그래밍/iOS기초

[iOS - Swift기초] Swift에 대해서

Dannian 2020. 12. 21. 23:44
반응형

1. 스위프트란?

스위프트는 애플에서 새로 만든 프로그래밍 언어입니다.

스위프트가 발표되기 이전에는 오브젝티브 C(Objective-C)라는 언어를 사용했는데, 오브젝티브 C는 C를 기반으로 만든 언어이면서 객체지향의 장점을 적용하여 만든 언어입니다.

오브젝티브 C는 C언어를 기반으로 만들어졌기 때문에 포인터를 사용해야 했는데, 이것 때문에 초보 개발자가 적응하기 어려운 문제, 코드 작성이 복잡한 문제가 있었습니다.

이러한 문제점을 해결하기 위해 애플에서는 "Objective-C without the C"라는 표현(2014년 WWDC)을 하면서 Swift를 공개했습니다.

 

Apple announces 'Swift,' a new programming language for OS X & iOS

Apple today announced a new programming language native to both OS X and iOS: Swift. Speaking at Apple’s annual developer conference, software engineering VP Craig Federighi called the new language “fast, modern, and designed for safety.” It’s like

venturebeat.com

일단 스위프트는 최근에 만들어진 언어이기 때문에 기존 언어와 신생 언어(Objective-C, Python, JS, C# 등. 스크립트언어(JS, Python 등)의 간결함, 객체 지향 언어(Objective-C, C#, Java 등))의 특징이 결합된 것이 스위프트입니다.

스위프트의 변경 사항에 대해서는 아래의 블로그를 참고하시면 됩니다.

 

Swift.org

Swift is a general-purpose programming language built using a modern approach to safety, performance, and software design patterns.

swift.org

일단 스위프트는 오브젝티브 C의 포인터와 메모리 관리 문제 등을 제거하면서 오브젝티브 C의 장점을 수용해서 만들어졌습니다.

처음에는 문제와 버그가 많았지만, 점차 안정화 되고 있고, 2.2버전부터는 다른 플랫폼에서 이용 할 수 있을 만큼 안정화되었습니다. 지금은 Swift 5.3까지 배포되었습니다.

 

2. 스위프트의 특징

스위프트는의 주요특징은 다섯가지로 설명 할 수 있습니다.

  1. 안전성(Safe)
    • 스위프트는 안전한 프로그램을 지향합니다. 프로그래밍 중 프로그래머가 실수를 할 수도 있는 것을 문법의 강제를 통해서 미연에 방지합니다.
    • 옵셔널을 통해서 변수에 할당된 값이 없을 경우 발생할 수 있는 오류를 줄였으며, guard 구문, if let구문 등을 통해서 안전하게 이용하도록 하였습니다.
    • 타입 통제를 통해서 메모리를 과다하게 이용하지 않도록 설계했으며, 포인터를 사용하지 않으면서 메모리 또한 자동으로 관리합니다.
  2. 빠른 성능(Faster)
    • 기존 Objective-C보다 빠른 성능을 보여줍니다. GCC(GNU Compiler Collection, GNU 컴파일러 모음)대신 LLVM[각주:1] 컴파일러를 사용하여 스위프트로 만든 프로그램이 좋은 성능을 내도록 합니다.
  3. 더 나은 표현성(Expressive)
    • 스위프트는 함수형 프로그래밍 패러다임과 프로토콜 지향 프로그래밍 패러다임을 가장 강조하는데, 이것은 이전의 많은 프로그래밍 언어의 장단점을 참고해서 더 좋은 문법을 사용하도록 구현하였기 때문입니다.
    • 다만, 여기서 문제는 같은 기능을 여러 형태로 만들 수 있는 것이 가능하다는 것인데 이는 코드 해석을 더 복잡하게 만들기도 합니다.[각주:2]
    • 결론은 사용하기 쉽고 편하면서 보기 좋은 문법을 만들었다는 것입니다.
  4. 애플 제품 최적화(Optimized)
    • 애플에서는 iOS, macOS등 자사 제품을 만들기 위해 필요한 SDK[각주:3]를 제공합니다.
    • 또한 애플 자사에서 만든 언어이기 때문에 최적화가 잘 되어있습니다.
    • 다만 개발을 위해서도 애플 제품이 필요하다는 것은 불편한 현실(맥북 진짜 드럽게 비싸네)(그래도 사야지 뭐..)
  5. 오픈 소스(Open Source)
    • 2015년 말에 오픈소스로 전 세계에 공개되었습니다. 이전까지는 iOS, macOS등 애플 자사 제품의 프로그램을 만들기 위한 언어였다면, 오픈소스로 공개된 후에는 다른 플랫폼에 포팅할 수 있게 되어 다양한 분야의 개발자들 역시 관심을 갖게 되었습니다.

위에서 설명한 내용 중 함수형 프로그래밍 패러다임, 프로토콜 지향 프로그래밍 패러다임이 나오는데, 이 부분에 대해서 다음 포스트에서 조금 더 자세히 알아보겠습니다.

 

Dannian의 블로그입니다.

 

 

본 포스팅은 학습 또는 정리를 목적으로 쓰인 글입니다.

내용중 틀린 것이 있다면 댓글로 알려주시면 감사하겠습니다!

  1. LLVM : Frontend, Optimizer, Backend 구성요소를 분리해서 각 부분을 조합할 수 있게 설계하여 컴파일 속도는 2배, 빌드된 실행 파일의 크기는 20~30% 줄일 수 있도록 한 컴파일러. 파일의 크기가 줄어든 것에 비례하여 실행속도가 증가. 효율성과 확장성이 좋아진 컴파일러. [본문으로]
  2. 이것은 협업하는 경우에 미리 코드 패턴을 상의하여 개발하고, SwiftLint(https://github.com/realm/SwiftLint)를 이용하는 방법 등이 있습니다. [본문으로]
  3. Cocoa Framework, Cocoa Touch Framework. 이건 나중에 따로 설명하고 링크를 남기겠습니다. [본문으로]
반응형