iOS 개발자라면 Swift에 대해서 당당하게 설명할 수 있어야 하지 않을까?

Minji Kim·2021년 11월 28일
3
post-thumbnail

개요

나는 iOS 개발자다.
정확히 말하면 iOS 개발자로써 한 직장에서 일하고 싶은 취업 준비생이다.
문득 이런 생각이 들었다.

'면접에서 Swift의 특징에 대해서 설명해 보라고 하면 할 수 있을까?'
'누군가 Swift가 뭐냐고 물어보면 대답할 수 있을까?'

아니다. 분명 나는 머뭇거리면서 대답하지 못할 것 같다.
iOS 개발자가 꿈인 사람이 Swift에 대해서 설명도 못하다니.. 정말 생각만 해도 부끄럽다.
그래서 이번에 제대로 Swift를 정복할 것이다.
어디든 공식 문서가 제대로 설명되어 있다고 하니, Swift 공식 사이트를 파헤쳐 보려고 한다.
일명 "Swift.org와 친해지기" 프로젝트이다.


Swift.org에 오신 것을 환영합니다.

Swift 커뮤니티에 오신 것을 환영합니다. 우리는 함께 모든 사람이 모든 플랫폼에서 아이디어를 앱으로 전환할 수 있도록 지원하는 프로그래밍 언어를 구축하기 위해 노력하고 있습니다.
.
2014년에 발표된 Swift 프로그래밍 언어는 역사상 가장 빠르게 성장하는 언어 중 하나가 되었습니다. Swift를 사용하면 설계상 놀랍도록 빠르고 안전한 소프트웨어를 쉽게 작성할 수 있습니다. Swift에 대한 우리의 목표는 야심적입니다. 우리는 프로그래밍을 단순한 것을 쉽게 만들고 어려운 것을 가능하게 만들고 싶습니다.
.
학생들에게 Swift를 배우는 것은 현대 프로그래밍 개념과 모범 사례에 대한 훌륭한 소개였습니다. 그리고 개방형이기 때문에 그들의 Swift 기술은 모바일 장치에서 데스크탑, 클라우드에 이르기까지 훨씬 더 광범위한 플랫폼에 적용될 수 있습니다.

Swift 공식 사이트에 들어갔을 때 처음 보이는 문구를 그대로 번역하여 가져왔다.
이 글은 Swift를 'iOS 프로그래밍 언어 중 하나' 라고만 설명할 지식을 가진 필자에게 Swift에 대해 새로운 정보를 주었고, 흥미로운 궁금증을 유발시켰다.

Swift에 대해 새로 알게 된 내용
1. 2014년에 발표되었다.
2. 역사상 가장 빠르게 성장하는 언어 중 하나이다.
3. 빠르고 안전한 소프트웨어를 쉽게 작성할 수 있다.
4. 개방형이기 때문에 광범위한 플랫폼에 적용될 수 있다.

Swift에 대해 궁금한 점
1. 역사상 가장 빠르게 성장했다는데, 어떻게 그렇게 될 수 있었을까?
2. 설계상 빠르고 안전한 소프트웨어를 쉽게 작성할 수 있다는데, 어떻게 그게 가능할까?
3. 개방형이기 때문에 광범위한 플랫폼에 적용될 수 있다는 말이 어떤 말일까?

이제 이 궁금증들을 Swift 소개 글을 읽어보면서 풀어보자.


스위프트 소개

Swift를 단 한 줄로 축약하여 정의한 문장이다.
여기서 핵심 키워드는 #안전 #성능 #현대적인 접근 방식 #범용 이라고 생각한다.

Swift는 안전, 성능 및 소프트웨어 디자인 패턴에 대한 현대적인 접근 방식을 사용하여 구축된 범용 프로그래밍 언어입니다.

필자는 C, C++, JAVA, JavaScript를 조금씩 다뤄본 적 있는데 Swift를 처음 접했을 때 확실히 다른 언어에 비해서 쉽다는 느낌을 받았었다. 여태 그 이유를 필자가 이미 다른 언어들을 다뤄봤기 때문이라고 생각했었는데, 아래의 글을 읽고 나서 생각이 바뀌었다.
Swift는 개발자를 위한 언어이기 때문이다.
(내가 이래서 Swift를 좋아하게 된 것 같다.. ❤️)

Swift 프로젝트의 목표는 시스템 프로그래밍, 모바일 및 데스크탑 앱, 클라우드 서비스 확장에 이르기까지 사용 가능한 최상의 언어를 만드는 것입니다. 가장 중요한 것은 Swift는 개발자가 올바른 프로그램을 더 쉽게 작성하고 유지하도록 설계되었다는 것입니다. 이 목표를 달성하려면 Swift 코드를 작성하는 가장 확실한 방법은 다음과 같아야 합니다.


Safe(안전한). 코드를 작성하는 가장 확실한 방법도 안전한 방식으로 작동해야 합니다. 정의되지 않은 동작은 안전의 적이며 소프트웨어가 생산되기 전에 개발자의 실수를 잡아야 합니다. 안전을 선택한다는 것은 때때로 Swift가 엄격하게 느낄 것이라는 것을 의미하지만, 우리는 명확성이 장기적으로 시간을 절약한다고 믿습니다.


Fast(빠른). Swift는 C 기반 언어(C, C++ 및 Objective-C)를 대체하기 위한 것입니다. 따라서 Swift는 대부분의 작업에서 성능 면에서 해당 언어와 비교할 수 있어야 합니다. 성능은 또한 나중에 정리해야 하는 짧은 버스트에서 빠르기만 한 것이 아니라 예측 가능하고 일관성이 있어야 합니다. 새로운 기능을 가진 많은 언어가 있습니다. 빠른 것은 드뭅니다.


Expressive(나타내는). Swift는 개발자가 기대하는 최신 기능과 함께 사용하기 즐거운 구문을 제공하기 위해 수십 년에 걸친 컴퓨터 과학 발전의 이점을 누리고 있습니다. 그러나 Swift는 완료되지 않았습니다. 우리는 언어 발전을 모니터링하고 작동하는 것을 포용하며 Swift를 더욱 향상시키기 위해 지속적으로 발전할 것입니다.


도구는 Swift 생태계의 중요한 부분입니다. 우리는 개발자의 도구 세트 내에서 잘 통합되고, 빠르게 빌드하고, 우수한 진단을 제시하고, 대화형 개발 경험을 가능하게 하기 위해 노력합니다. 도구는 Xcode의 Swift 기반 플레이그라운드 또는 Linux 서버 측 코드로 작업할 때 웹 기반 REPL이 수행하는 것처럼 프로그래밍을 훨씬 더 강력하게 만들 수 있습니다.


특징

다른 언어를 사용하다가 Swift 언어를 사용해 본 적 있는 사람은 아래 굵은 글씨의 내용이 얼마나 편리한지 공감할 것이다.

Swift에는 코드를 더 쉽게 읽고 쓸 수 있는 기능이 포함되어 있으며 개발자에게 진정한 시스템 프로그래밍 언어에 필요한 제어 기능을 제공합니다. Swift는 유추된 유형을 지원하여 코드를 더 명확하고 실수하기 쉽지 않으며 모듈은 헤더를 제거하고 네임스페이스를 제공합니다. 메모리는 자동으로 관리되며 세미콜론을 입력할 필요도 없습니다. Swift는 또한 다른 언어에서 차용합니다. 예를 들어 Objective-C에서 가져온 명명된 매개변수는 Swift의 API를 읽고 유지하기 쉽게 만드는 깨끗한 구문으로 표현됩니다.

아래에 설명되어 있는 Swift의 기능들은 Swift.org와 친해지면서 하나씩 차근차근 알아볼 것이다.

Swift의 기능은 강력하면서도 재미있는 언어를 만들기 위해 함께 작동하도록 설계되었습니다. Swift의 몇 가지 추가 기능은 다음과 같습니다.

  • 함수 포인터로 통합된 클로저
  • 튜플 및 다중 반환 값
  • 제네릭
  • 범위 또는 컬렉션에 대한 빠르고 간결한 반복
  • 메서드, 확장 및 프로토콜을 지원하는 구조체
  • 함수형 프로그래밍 패턴(예: 맵 및 필터)
  • 강력한 오류 처리 내장
  • 고급 제어 흐름 do, guard, defer, 및 repeat 키워드

안전

여기서 Swift로 어떻게 안전한 소프트웨어를 작성할 수 있는지 알게 되었다.
다음과 같은 방법으로 개발자의 실수를 줄여 안전한 언어라고 말하는 것으로 이해했다.

Swift는 처음부터 C 기반 언어보다 안전하도록 설계되었으며 안전하지 않은 코드의 전체 클래스를 제거합니다. 변수는 항상 사용 전에 초기화되고, 배열과 정수는 오버플로가 있는지 확인하고, 메모리는 자동으로 관리됩니다. 구문은 의도를 쉽게 정의할 수 있도록 조정됩니다. 예를 들어, 간단한 3자 키워드는 변수( var) 또는 상수( let)를 정의합니다.
.
또 다른 안전 기능은 기본적으로 Swift 객체는 절대 될 수 없으며 객체 nil를 만들거나 사용하려고 nil 하면 컴파일 타임 오류가 발생한다는 것입니다. 이렇게 하면 코드 작성이 훨씬 깨끗하고 안전해지며 런타임 충돌의 일반적인 원인을 방지할 수 있습니다. 그러나 nil인 경우가 있으며 이러한 상황에 대해 Swift에는 optional이라는 혁신적인 기능이 있습니다 . optional에는 nil이 포함될 수 있지만, Swift 구문은 ?를 사용하여 컴파일러에게 동작을 이해하고 안전하게 처리하도록 합니다.


Swift.org 및 오픈 소스

아래 내용은 Swift.org 홈페이지와 오픈 소스가 생겼다는 이야기다.
필자가 첫 번째로 궁금했던 내용인 '역사상 가장 빠르게 성장한 언어'에 대해 뒷받침해 주는 설명이지 않을까 싶다.

2015년 12월 3일에 Swift 언어, 지원 라이브러리, 디버거 및 패키지 관리자가 런타임 라이브러리 예외와 함께 Apache 2.0 라이선스에 따라 게시되었으며 프로젝트를 호스팅 하기 위해 Swift.org가 생성되었습니다. 소스 코드는 누구나 쉽게 코드를 얻고, 스스로 빌드하고, 프로젝트에 코드를 다시 제공하기 위한 풀 요청을 생성하기 쉬운 GitHub에 호스팅 됩니다 . 버그 보고서를 제출하는 것만으로도 누구나 환영합니다. 여기 사이트에도 훌륭한 시작하기 가이드가 있습니다.
.
이 프로젝트는 커뮤니티와 협력하여 전략적 방향을 주도하는 핵심 엔지니어 팀과 일상적인 프로젝트 관리를 담당하는 코드 소유자 모음에 의해 관리됩니다. 기술 리더는 기여자 커뮤니티 출신이며 누구나 Swift 영역을 이끌 수 있는 권한을 얻을 수 있습니다. 커뮤니티 개요 스위프트 커뮤니티를 관리하는 방법에 대한 자세한 정보가 포함되어 있습니다.

프로젝트

Swift 언어는 각각 자체 저장소가 있는 프로젝트 모음으로 관리됩니다. 현재 프로젝트 목록에는 다음이 포함됩니다.

  • 스위프트 컴파일러 명령 줄 도구
  • 언어의 일부로 번들 된 표준 라이브러리
  • 고급 기능을 제공하는 핵심 라이브러리
  • 스위프트 REPL를 포함한 LLDB 디버거
  • 배포 및 스위프트 소스 코드를 구축하기 위한 스위프트 패키지 관리자
  • Xcode에서 플레이그라운드를 활성화하기 위한 Xcode 플레이그라운드 지원.

플랫폼 지원

이제 여기서 마지막 궁금증이 해소되었다.
'Swift는 개방형이기 때문에 광범위한 플랫폼에 적용될 수 있다.'는 말.
즉, 플랫폼에 구애받지 않고 이식성이 뛰어나 소스 호환성을 제공하는 크로스 플랫폼 프로그래밍 언어라고 이해했다.

개방형 Swift 개발의 가장 흥미로운 측면 중 하나는 이제 광범위한 플랫폼, 장치 및 사용 사례에 걸쳐 무료로 이식할 수 있다는 것입니다.
.
우리의 목표는 실제 구현 메커니즘이 플랫폼마다 다를 수 있지만 모든 플랫폼에서 Swift에 대한 소스 호환성을 제공하는 것입니다. 주요 예는 Apple 플랫폼에 UIKit 및 AppKit과 같은 Apple 플랫폼 프레임워크에 액세스하는 데 필요한 Objective-C 런타임이 포함되어 있다는 것입니다. Linux와 같은 다른 플랫폼에서는 필요하지 않기 때문에 Objective-C 런타임이 없습니다.
.
스위프트 코어 라이브러리 프로젝트는 Objective-C 런타임에 의존하지 않고 (예 : Foundation 등) 기본적인 애플 프레임워크의 휴대용 구현을 제공함으로써 스위프트의 크로스 플랫폼 기능을 확장하는 것을 목표로합니다. 핵심 라이브러리는 개발 초기 단계에 있지만 결국 모든 플랫폼에서 Swift 코드에 대한 향상된 소스 호환성을 제공할 것입니다.

애플 플랫폼

오픈 소스 Swift는 iOS, macOS, watchOS 및 tvOS와 같은 모든 Apple 플랫폼을 대상으로 하는 Mac에서 사용할 수 있습니다. 또한 오픈 소스 Swift의 바이너리 빌드는 Xcode 빌드 시스템에 대한 완벽한 지원, 편집기의 코드 완성 및 통합 디버깅을 포함하여 Xcode 개발자 도구와 통합되어 누구나 친숙한 Cocoa 및 Cocoa Touch 개발 환경에서 최신 Swift 개발을 실험할 수 있습니다.

리눅스

오픈 소스 Swift는 Linux에서 Swift 라이브러리 및 애플리케이션을 빌드하는 데 사용할 수 있습니다. 오픈 소스 바이너리 빌드는 Swift 컴파일러 및 표준 라이브러리, Swift REPL 및 디버거(LLDB), 핵심 라이브러리 를 제공하므로 Swift 개발로 바로 이동할 수 있습니다.

새로운 플랫폼

우리는 Swift를 함께 가져올 수 있는 새로운 장소를 보고 싶습니다. 우리는 우리가 사랑하는 이 언어가 소프트웨어를 더 안전하고 빠르며 유지 관리하기 쉽게 만들 수 있다고 진정으로 믿습니다. 더 많은 컴퓨팅 플랫폼에 Swift를 제공하는 데 도움이 되었으면 합니다.


정리하기

이제 누군가 Swift에 대해서 물어본다면 잘 대답할 수 있을 것 같다.
누가 물어본다고 상상하면서 답변을 적어보았다.

Q. Swift가 뭐예요?

2014년 WWDC에서 발표한 iOS, macOS를 위한 프로그래밍 언어로, 빠르고 안전한 소프트웨어를 쉽게 작성할 수 있도록 구축된 범용 프로그래밍 언어입니다.

Q. Swift의 특징에 대해서 설명해 보세요.

Swift는 변수나 상수에 타입을 정의하지 않아도 자동으로 유추하여 값을 할당하고, 명령문 끝에 세미콜론을 입력하지 않아도 됩니다.
또한, 메모리는 자동으로 관리되며 optional을 이용해 nil 값을 컴파일러가 처리할 수 있도록 합니다.

profile
iOS Developer

0개의 댓글