이제 어느덧 안드로이드를 이용해 돈을 벌게 된 지도 1년 반이 되었습니다. 만 2년을 채우기 전에 슬슬 모바일 개발자라는 직함이 탐이 나기 시작해 swift를 시작해보려고 합니다. 이 글을 작성하는 지금에서는 어떻게 될 지 모르겠지만, 예전에 코프링을 회사에서 사용하게 되어 코프링을 공부한 적이 있는데, 그때처럼 깔짝대는 수준이 아니라 스위프트로 벌어먹고 살 수 있는 수준이 됐으면 좋겠네요.
Swift를 공부하는 이유
역시 공부를 하기에 앞서 가장 중요한 것은 왜 그것을 공부해야 하는가가 아닌가 싶습니다. 저의 경우에야 안드로이드 뿐 만 아니라 ios 코드를 작성하겠다는 의지로 시작했습니다. 아마 대부분이 스위프트를 공부하는 이유가 ios에 있을 거라고 생각 합니다. (크게 보면 애플사에서 만든 OS에 올릴 프로그램을 만들기 위해서겠죠.)
그리고 이런 저 같은 사람들에겐 스위프트의 역사나 개념같은 것들은 크게 중요하지 않습니다. 알아두면 좋긴 한데, 당장 배울 언어가 어떤 역사를 거쳐왔는지 보다는 무엇때문에 만들어졌고, 왜 사용하게 되었으며, 무엇 때문에 사용하는지 정도가 우선순위가 더 높을 수 밖에 없겠죠. 그리고 결정적으로 새로운 언어를 학습할 때 사람들은 자연스럽게 사용 목적과 문법 정도를 이해한 채 시작하게 되는 것 같습니다.(시중에 판매되는 대부분의 책들이 짧게 사용 목적에 대해 설명한 후, 기초 문법이나 hello world 부터 시작한다는 점을 생각하면 말이죠.)
Swift vs Objective-c
저는 일단 목적은 명확합니다. 아이폰에서 사용할 애플리케이션을 만들기 위함이죠. 그렇다면 아이폰의 os라 칭해지는 Ios에 제가 만든 애플리케이션을 올리기 위해서 할 수 있는 언어는 무엇이 있는지 알아야 할 것입니다. 윈도우에 올라가는 프로그램들은 각양각색입니다. 자바도 파이썬도, 컴퓨터 코딩의 대명사인 C 언어, 그리고 그에 파생된 여러가지 언어들이 존재하고 있습니다. 물론 ios 역시 다양한 언어로 제작이 가능한 것은 분명하나, 현 트렌드는 확실히 Swift와 Objective-c로 보입니다.
저는 두 언어 중 어떤 언어를 사용해야 할 지를 잠깐 고민한 적이 있습니다. 하지만 저는 직장인이고 결국 취업과 관련해서 분명히 회사에서 어떤 언어를 많이 채용하고 있는지 역시 고려대상입니다. 그저 자신이 한 언어에 흥미를 가져서 공부하겠다는 목표라면 어떤 언어를 사용하더라도 무방하겠지만, 제 목표는 스택을 쌓아올려 제 가치를 끌어올리는 것이기 때문에 여러 회사의 채용 공고에서 상대적으로 자주 보이는 언어를 택하게 될 수 밖에 없습니다.
티오베의 프로그래밍 언어 점유율을 보면 매년 Objective-c의 점유율은 줄어들고 Swift의 점유율은 늘어난다는 사실을 확인할 수 있습니다. 심지어 2022년도는 위의 이미지에서 확인할 수 있다시피 스위프트는 10위로, Objective-c는 아예 순위권 밖으로 밀려난 것을 확인할 수 있습니다.
Why Swift?
Ios 개발이라는 목표를 가진 저는 어떤 언어로 작성할 지 고민했고, 스위프트의 점유율이 높으니 스위프트로 작성해야겠다는 것 까지는 정해졌습니다. 그런데 왜 스위프트로 작성해야 할까요. 위에서도 설명했다시피 저는 직장인이고 취업을 위해서는 점유율이 높은 스위프트가 훨씬 효율적으로 보이는 것은 확실합니다.
하지만 개발에 문외한인 우리 대표님이 저에게 왜 스위프트를 사용해야 하는지 묻는다면, 저는 대답을 해야할 것입니다. 대부분 회사에 있어 저와 같은 신입이 언어나 프레임워크를 선택할 권한 따위는 주어지지 않겠지만, 낭만을 위해 스타트업과 같은 곳에서 신입이 많은 것을 결정해야 할지도 모릅니다. 그런 경우 우리는 왜 스위프트를 선택하게 되는지 설명해야 할 것입니다. (뭐, 개발자 채용시에 스위프트 개발자가 더 많고, 더 잘 뽑히고 하는 등의 비즈니스 적인 내용은 이미 제가 그 자리를 차지할 예정이니 무시하도록 합니다.)
Objective-C는 C언어 기반 객체지향 프로그래밍 언어(OOP)입니다. 스위프트 역시 OOP이긴 하지만 2014년에 애플에 의해 개발된 언어라는 특징이 있습니다. 기존 애플에서 제작된 OS에서 작동하는 프로그램들은 Objective-C로 작성되어 왔지만, Objective-C의 경우 C언어 기반이기도 하고, 옛날 언어라 난이도가 결코 낮지는 않습니다. 이는 높은 진입장벽으로 다가왔고, 애플은 개발자 생태계를 좀 더 풍부하게 만들기 위해서 간결하고 간편한 언어를 개발하자는 의지로 스위프트라는 언어를 만들게 되었습니다.
애초에 Objective-C에서 개발자들이 자주 하는 에러나 현대 트렌드에 맞지 않는 부분을 보완하고, 개발자들이 좀 더 쉽게 사용할 수 있도록(Objective-C에서 사용되는 헤더파일을 네임코드로 대체해서 개발자가 좀 덜 신경을 쓸 수 있도록) 학습 난이도를 낮추기 위해서 변형을 거듭한 언어이기 때문에 스위프트가 진입장벽이 더 낮을 수 밖에 없습니다.(애초에 진입장벽이 스위프트가 더 높았다면 애플이 스위프트를 내놓으면서 했던 '사용하기 쉬운'이라는 목표 달성 자체를 실패한 셈이 되니 언어의 존재가치가 없다고 볼 수 있겠습니다.)
그리고 결정적으로 구글에서 코틀린을 안드로이드 정식 언어로 채택한 이후, 공식 문서 및 여러가지 매체에서 꾸준히 코틀린으로 안드로이드를 설명한 것이 안드로이드의 메인 언어가 자바에서 코틀린으로 넘어가게 된 계기라는 것을 생각해보면, ios 역시 애플에서 Objective-C에 대한 지원을 중지한 후, 자신들이 개발한 스위프트의 지원을 선언하고 지속적으로 발전시켜 나가는 스위프트가 메인 언어가 될 수 밖에 없을 것입니다.(애플이 갑작스럽게 스위프트를 포기하지 않는다면 말이죠)
이렇게 작성하고 보니 스위프트에 대한 장점은 설명되지 않고 그저 애플이 밀어주고 요즘 나온 언어라서 좋다라는 식의 설명이 되고 말았네요.
저는 개인적으로 어떠한 언어를 공부하기 전에 그 언어를 선택하는 이유를 언어에 대한 장점이나 이런 부분보다는 그 언어가 현재 잘 쓰이고 있는지, 향후 몇 년 정도는 꾸준히 쓰일 언어인지에 대한 분석을 먼저 하곤 합니다. 사실 아무리 괜찮은 언어라도 그 언어가 주로 쓰이는 플랫폼을 가진 회사가 그 언어를 지원하지 않는 경우 그 부분에서는 바로 사장될 수 있기 때문에 제일 중요한 건 역시 어른들의 사정이 됩니다. 물론 엄청 좋은 언어라면 거의 대부분 꾸준히 쓰이는 언어가 되겠지만요.
그래도 스위프트가 Objective-C보다 좋은 점을 알고 싶은 경우에는, Swift vs Objective-C의 키워드로 작성된 많은 문서들을 참고하면 왜 스위프트를 써야하는 지 알 수 있습니다.(제가 필요하다고 생각이 되면 이 부분에 대해서 또 다룰 것 같긴 합니다.)
'IOS' 카테고리의 다른 글
Swift - ARC(Automatic Reference Counting) (0) | 2022.07.29 |
---|---|
SwiftUI vs UIKit (0) | 2022.02.13 |
swift를 공부하기 전에(2) (0) | 2022.01.19 |
댓글