-
[Swift] 나의 3번째 프로그래밍 언어, SwiftFront-End(Mobile)/iOS & Swift 2022. 1. 4. 02:40반응형
🤔 서론
정말 오랜만에 개발 툴이 아닌, 새로운 언어를 공부하게 되었다. (초심으로 돌아간 기분 🤩🤩)
2022년 올해부터 앱 개발을 조금씩 병행하기로 마음을 먹었고, 다양한 선택지를 고민하다가 iOS 네이티브 언어인 Swift를 선택한 것이다.
다른 선택지들을 고민하고 포기했던 이유들은 아래와 같다.
- React-Native : JS와 React를 다루는 나에게 매력적인 선택지였다. 하지만, Flutter나 Native 언어에 비해 매우 부족한 퍼포먼스와, 크로스 플랫폼 시작에서 Flutter에게 역전되는 트렌드, Facebook의 지원 축소 등이 이유가 되었다.
- Flutter : 크로스 플랫폼(1개 소스코드로 Android, iOS 2가지 앱을 개발) 시장에서 가장 핫한 언어. Google이 서비스하며 Native 기능 대부분을 차용한다는 장점이 있지만, Dart라는 실패한 언어 사용 및 애매한 시장 점유율 등이 이유가 되었다.
- Android Studio(Kotlin) : 안드로이드 플랫폼 개발툴 및 언어. 하지만, 개발을 하면서 macOS, 아이폰에 더 흥미가 생김.🤣
특히, Flutter(크로스 플랫폼) vs Swift(네이티브) 사이에서 많은 고민을 한 것 같다. 둘 모두 앱뿐만 아니라 웹, 랩탑 영역까지 개발 가능하단 점에서 매력적으로 다가왔었다. (참고링크)
네이티브 기능의 사용성도 있지만, 현실적으로 좀 더 안정적인 점유율과 커뮤니티, 인력수요를 가진 Swift를 최종적으로 선택하게 되었다.
이번 포스팅에선, Swift라는 언어 자체에 대해 간단하게 알아보고, 다음 포스팅부터 관련 문법을 강의와 학습내용 기반으로 적어가겠다!
📙 Swift 란?
Swift는 2014년 Apple 사에서 발표한, iOS와 MacOS X용 응용프로그램 개발을 위한 프로그래밍 언어이다.
기존 애플의 개발을 위해 사용된 Objective-C 와 공존하면서 좀 더 빠르고, 현대적이고, 안전한 언어라는 취지로 발표한 언어이다.
(Apple 공식 사이트에서는, Swift를 누구에게나 가능한 첫 번쨰 프로그래밍 언어라는 슬로건을 비추고 있다.)
Swift의 언어는 공식적으로 Python의 문법을 많이 차용하고 있다. (for ... in, print 등)
또한, 기존의 Objective-C보다 빠른 실행속도와 안전성을 자랑할 뿐 아니라, 현대 프로그래밍 언어의 주요 기능들도 구현했다.
(클로저, 다중 리턴 타입, 네임스페이스, 제너릭, 타입 유추 등)
Swift의 주요 특징이자 장점은 아래와 같은 점들이 있다.
- 신속성 : 고성능 LLVM 컴파일러로 C언어와 비슷한 빠른 성능을 보이며, 컴파일러를 지속적으로 개량하여 실행 속도가 빠르다.
- 안전성 : Optional, guard 구문, 오류처리, 강력한 타입 통제 등을 통해 프로그래머의 오류를 방지한다.
- 현대성 : 간결하고 가독성이 좋은 구조를 취하며, 현대 프로그래밍 언어의 유용한 기능들과 디버깅/테스트가 유리한 장점이 있다.
가장 최신버전은, 2021.12.13에 출시한 5버전의 최신 브랜치 5.5.2이다.
- Swift 프로그래밍 패러다임
Swift는 여러 가지 프로그래밍 언어의 특징과 패러다임을 차용한 다중 패러다임의 언어이다.
1) 객체 지향 프로그래밍
Objective-C와의 연관성이 있다 보니 기본적으로 객체지향의 특징을 취한다.
객체 단위의 소스코드 구성으로, 대규모 어플리케이션 개발 및 유지보수에도 용이하도록 설계가 되었다.
2) 함수형 프로그래밍
최근 트랜드로 각광받는 함수형의 특징도 어느 정도 수용 가능한 모습이다.
반복적인 연산처리를 단순화할 수 있으며, 함수 자체의 응용을 특히 중요하게 여긴다. (이는 사용해봐야 알 듯)
3) 프로토콜 지향
참조 타입인 클래스의 인스턴스보다, 값 타입을 더 효율적으로 사용하며 오류 역시 줄일 수 있는 방법이다.
Swift에서 구조체와 열거형에 기존 클래스에서 구현했던 캡슐화, 추상화, 접근 제어 등의 기능을 추가할 수 있다.
이외에도, 많은 프로그래밍 언어들의 특징을 가져왔는데 참조 링크를 통해 학습해보자 (_Jbee 님의 블로그 포스팅)
- Xcode 시작하기
Xcode는 iOS App 개발을 위한 IDE(통합 개발 환경, Integrated Development Environment) 이다. (vscode 와 같은)
Objective-C, Swift 등의 iOS 개발언어부터, C, C++, Java, Python 등 다양한 언어를 공식적으로 지원한다.
또한, iOS(아이폰)뿐만 아니라 MacOS, watchOS, tvOS 등 다양한 플랫폼 소프트웨어를 개발할 수 있는 크로스 플랫폼 기반환경이다.
iOS 개발을 위해서 이 Xcode의 설치 및 준비가 필요하므로 이를 간단히 알아보도록 하겠다!
* 설치
App Store에서, Xcode를 검색하고 설치하면 된다. (보통 MacOS에 기본적으로 설치가 되어있다.)
* 실행
Xcode를 실행하면 처음으로 뜨는 창이다. Create(새 프로젝트), Clone(가져오기), Open(기존 프로젝트) 등을 선택한다.
우측에는 최근에 작업한 프로젝트들의 로그가 남아있다. 최신버전은, 2022년 1월 기준 Xcode 13의 브랜치 13.2.1 이다.
* Xcode 12부터는 Playground(간단한 코드 실행환경) 구성 옵션이 없어졌다. (메뉴 > File > New > Playground 로 생성가능)
* 프로젝트 시작
언어의 특징만을 보다 보니 특별히 적을 내용이 많이 없었지만, Swift 언어의 아이덴티티를 확실히 알고 가게 되었다.
다음 포스팅부터는, Swift의 기본적인 문법들에 대해 우선 학습 및 블로그 작성을 진행하겠다!
📎 참고링크
- [Swift 소개] Apple 개발자 전용 사이트 : https://developer.apple.com/kr/swift/
- [Swift vs Flutter] Dart/Flutter vs Swift/Native iOS, Which One is better? : https://infostride.com/flutter-vs-native-ios/.
- [Swift 특징] _Jbee 님의 블로그 : https://asfirstalways.tistory.com/277
- [Swift 특징과 패러다임] just-noza 님의 블로그 : https://just-noza.tistory.com/144
- [Xcode 시작하기] jdusans 님의 블로그 : https://m.blog.naver.com/jdusans/221921541686
반응형'Front-End(Mobile) > iOS & Swift' 카테고리의 다른 글
[Swift] Swift 문법 (5) - 반복문(for, while) (0) 2022.01.27 [Swift] Swift 문법 (4) - Function(함수) (0) 2022.01.22 [Swift] Swift 문법 - (3) Class(클래스) & Struct(구조체) (0) 2022.01.13 [Swift] Swift 문법 - (2) Types (0) 2022.01.11 [Swift] Swift 문법 - (1) Variables, Constans (0) 2022.01.05