Swift에 대한 오해와 진실

Swift에 대한 오해와 진실

안녕하세요! 야곰입니다.

오랜만에 포스팅으로 찾아뵙는군요.

이제껏 Swift를 포스팅 하지 않았던 이유(Swift 뿐만 아니라)는 개인적인 여유가 없었던 이유도 있지만, 언어의 버전이 올라감에 따라 문법이 너무 많이 바뀌어와서 조금 조심스러운 점도 없지 않았나 싶어요.
제목이 왜 이러나 궁금하실텐데요, Swift를 직접 사용해보지 않고 겉표면을 보고 이런저런 생각을 말씀해 주시거나, 질문은 하는 분들이 대부분 비슷한 패턴으로 비슷한 오해(?) 또는 겉모습만 보고 조금 편향적인 판단을 하고 있지 않나 싶어 글을 쓰게 되었습니다.

주변에서 많이 받는 질문이나 생각들을 제 나름의 짧은 생각과 곁들어 정리해 보았습니다.
이 글을 Swift 2.0이 공개된 바로 직후(2015년 6월 10일)에 쓰여졌으니 향후 오랜시간이 지나면 그 상황에 맞지 않는 의견일 수 있음을 미리 밝힙니다.

많이 듣는 질문 or 의견

Q1. Swift는 스크립트 언어이다?
A. 아니요

애플의 Swift는 함수형 언어이자 컴파일 언어입니다.
(거의)실시간적으로 결과를 보여주는 플레이그라운드라는 툴 때문에 이런 오해가 많이 생긴 것 같습니다. 플레이그라운드도 실시간으로 정보를 보여주는 것이 아니라, 몇 초 단위로 컴파일하여 결과를 보여주는 툴일 뿐입니다.

즉, 정확히 말하자면 스크립트 언어가 절대 아닙니다.

문법적으로나 생김새로 스크립트 언어라는 착각을 불러 일으킬 수 있지만 절대 스크립트언어가 아닙니다. 이런 오해를 불러일으킬만한 소지는 원래의 Swift 언어는 병렬 스크립트 언어이기 때문입니다.
그런데 애플은 스크립트 언어로 채용한 것이 아니라, 컴파일 언어로 채용했습니다.
원래의 Swift라면 스크립트 언어라고 표현하는 것이 잘못된 것은 아니지만, 애플이 발표한 Swift는 스크립트 언어가 아닙니다.

Q2. Swift는 자료형에 관대하다
A. 아니요.

저는 절대 그렇게 생각하지 않습니다. 겉으로는 형식추론을 통해 자료형에 관대하게 보일 수 있지만, 오히려 이제껏 어느 언어보다도 더 자료형에 굉장히 제한적이고 엄격합니다.
이는 옵셔널이라는 성격만 보아도 쉽게 알 수 있습니다.

Swift의 근본 원칙(?) 신념(?)은 Safe, Modern, Powerful 입니다.
여기서 우리가 눈여겨 보아야 할 점은 Safe 입니다. Safe를 지향하는 언어가 과연 자료형에 대해서 신경쓰지 않고 맘대로 코딩하도록 만들었을까요?
잘 생각해 보시기 바랍니다.

Q3. Swift는 초보자(혹은 스크립트 언어 개발자)가 배우기 쉽다
A. 음... 글쎄요..

아마 조건이 붙어야 하지 않나 싶습니다. '객체지향 프로그래밍의 기초가 빠삭한' 이라는 수식어가 붙거나, '여타 다른 객체지향 언어를 아는' 정도의 수식어가 붙는다면 조금 이해할 수 있습니다.
그러나, 초보자가 어떤 언어를 배우기 쉽다. 음... 학습용 언어인 스크래치 같은 경우가 아니고서야 초보자가 배우기 쉬운 언어가 정말 따로 존재하는 걸까요? 
'Objective-C 보다는 배우기 쉽다' 라는 반응은 충분히 수긍이 갑니다. 하지만, 그냥 'Swift는 초보자도 배우기 쉽다'라는 말은 좀처럼 쉽게 수긍이 가지는 않습니다. 스크립트 언어를 활발히 사용하던 개발자라도, 객체지향 언어와 함수형 언어의 특징을 제대로 이해하고 있지 않다면 (특히나 애플의 프레임워크에 사용하기 위해 Swift를 사용한다면) 충분히 배우기 쉽지 않은 것 같습니다.

Q4. Swift는 이미 철지난 언어인 Objective-C 보다 훨씬 강력하고 빠르다
A. 네. 반은 맞고 반은 틀리다고 할 수 있습니다.

Swift가 훨씬 현대적이고 강력한 언어라는 점은 충분히 동의합니다. 저도 그 매력에 한참 빠졌거든요.
그렇지만, Objective-C 보다 훨씬 성능이 좋다는 것은 옳지 않은 표현인 것 같습니다. 때에 따라서 Objective-C가 더 성능이 좋을 때도 있구요, 그렇지 못할 때도 있습니다.
여기서 성능은 아마도 컴파일 성능이나, 런타임 성능을 말하는 것이겠지요. 어떤 의미든간에 해당되는 말입니다.

더불어, 개발자의 생산성에 있어서도, Swift로 해결할 때 더 빠른 문제가 있고, Objective-C로 해결할 때 더 빠른 문제가 있는 것입니다.
결국 선택의 문제겠지요.

하지만 애플은 아직까지는 두 언어를 선택적으로, 혹은 혼합하여 사용할 수 있는 길을 충분히 열어두었습니다. 가장 좋은 방법은 때에따라 두 언어를 적절히 섞어 프로젝트를 구성하는 것이라고 생각합니다.

힘을 합치면 더 강력해지는 이 친구들처럼 말이죠...ㅎㅎ

Q5. Apple은 Objective-C를 결국에는 버릴 것이다
A. 글쎄요...^^

그건 애플만이 알겠죠? 여기에는 더 할 말이 없습니다. 다만, Swift는 정말 강력한 언어라는 것 밖에는 표현할 길이 없군요.
하지만, Objective-C도 그 나름대로의 강력함을 가지고 있기 때문에 굳이 버릴 필요가 있는가에 대한 의문도 듭니다.


여러분은 어떻게 생각하시는지요?
궁금합니다.

이렇게 몇 가지 많은 분들의 생각에 저의 생각을 덧붙여 봤습니다.
물론 틀린 내용이 있을 수도 있고 제가 잘못알고 있는 부분도 있을 것 같기도 하구요, 읽고계신 분들과 다른 의견이 있을 수 있습니다.

여러분의 다양한 의견을 듣고싶습니다 🙂

by yagom


facebook : https://facebook.com/yagompage
facebook group : https://www.facebook.com/groups/yagom/

p.s 제 포스팅을 RSS 피드로 받아보실 수 있습니다.
RSS Feed 받기  

This Post Has 3 Comments

  1. 잘 읽고 갑니다. ^^

    1. 댓글 고맙습니다 🙂

  2. 코드 스타터 캠프가 끝나고 따로 swift 공부를 하면서 찾아보는데 딱 궁금하던걸 이미 정리를 해주셨군요.. 잘 읽고 갑니다 감사합니다!

댓글 남기기

Close