Swift에 대한 생각과 생각

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

오랜만에 포스팅으로 찾아뵙는군요. 이제껏 Swift를 포스팅 하지 않았던 이유(Swift 뿐만 아니라)는 개인적인 여유가 없었던 이유도 있지만, 언어의 버전이 올라감에 따라 문법이 너무 많이 바뀌어와서 조금 조심스러운 점도 없지 않았나 싶어요.


제목이 왜 이러나 궁금하실텐데요, Swift를 직접 사용해보지 않고 겉표면을 보고 이런저런 생각을 말씀해 주시거나, 질문은 하는 분들이 대부분 비슷한 패턴으로 비슷한 오해(?) 또는 겉모습만 보고 조금 편향적인 판단을 하고 있지 않나 싶어 글을 쓰게 되었습니다.


주변에서 많이 받는 질문이나 생각들을 제 나름의 짧은 생각과 곁들어 정리해 보았습니다.


이 글을 Swift 2.0이 공개된 바로 직후(2015년 6월 10일)에 쓰여졌으니 향후 오랜시간이 지나면 그 상황에 맞지 않는 의견일 수 있음을 미리 밝힙니다.


많이 듣는 질문 or 의견

1. Swift는 스크립트 언어이다

아니요. 애플의 Swift는 함수형 언어이자 컴파일 언어입니다. (거의)실시간적으로 결과를 보여주는 플레이그라운드라는 툴 때문에 이런 오해가 많이 생긴 것 같습니다. 플레이그라운드도 실시간으로 정보를 보여주는 것이 아니라, 몇 초 단위로 컴파일하여 결과를 보여주는 툴일 뿐입니다. 즉, 정확히 말하자면 스크립트 언어가 절대 아닙니다. 문법적으로나 생김새로 스크립트 언어라는 착각을 불러 일으킬 수 있지만 절대 스크립트언어가 아닙니다. 이런 오해를 불러일으킬만한 소지는 원래의 Swift 언어는 병렬 스크립트 언어이기 때문입니다. 그런데 애플은 스크립트 언어로 채용한 것이 아니라, 컴파일 언어로 채용했습니다. 원래의 Swift라면 스크립트 언어라고 표현하는 것이 잘못된 것은 아니지만, 애플이 발표한 Swift는 스크립트 언어가 아닙니다.


2. Swift는 자료형에 관대하다

아니요. 저는 절대 그렇게 생각하지 않습니다. 겉으로는 형식추론을 통해 자료형에 관대하게 보일 수 있지만, 오히려 이제껏 어느 언어보다도 더 자료형에 굉장히 제한적이고 엄격합니다. 이는 옵셔널이라는 성격만 보아도 쉽게 알 수 있습니다. Swift의 근본 원칙(?) 신념(?)은 Safe, Modern, Powerful 입니다. 여기서 우리가 눈여겨 보아야 할 점은 Safe 입니다. Safe를 지향하는 언어가 과연 자료형에 대해서 신경쓰지 않고 맘대로 코딩하도록 만들었을까요? 잘 생각해 보시기 바랍니다.


3. Swift는 초보자(혹은 스크립트 언어 개발자)가 배우기 쉽다

음... 글쎄요.. 아마 조건이 붙어야 하지 않나 싶습니다. '객체지향 프로그래밍의 기초가 빠삭한' 이라는 수식어가 붙거나, '여타 다른 객체지향 언어를 아는' 정도의 수식어가 붙는다면 조금 이해할 수 있습니다. 그러나, 초보자가 어떤 언어를 배우기 쉽다. 음... 학습용 언어인 스크래치 같은 경우가 아니고서야 초보자가 배우기 쉬운 언어가 정말 따로 존재하는 걸까요? 

'Objective-C 보다는 배우기 쉽다' 라는 반응은 충분히 수긍이 갑니다. 하지만, 그냥 'Swift는 초보자도 배우기 쉽다'라는 말은 좀처럼 쉽게 수긍이 가지는 않습니다. 스크립트 언어를 활발히 사용하던 개발자라도, 객체지향 언어와 함수형 언어의 특징을 제대로 이해하고 있지 않다면 (특히나 애플의 프레임워크에 사용하기 위해 Swift를 사용한다면) 충분히 배우기 쉽지 않은 것 같습니다.


4. Swift는 이미 철지난 언어인 Objective-C 보다 훨씬 강력하고 빠르다
네. 반은 맞고 반은 틀리다고 할 수 있습니다. Swift가 훨씬 현대적이고 강력한 언어라는 점은 충분히 동의합니다. 저도 그 매력에 한참 빠졌거든요. 그렇지만, Objective-C 보다 훨씬 성능이 좋다는 것은 옳지 않은 표현인 것 같습니다. 때에 따라서 Objective-C가 더 성능이 좋을 때도 있구요, 그렇지 못할 때도 있습니다. 여기서 성능은 아마도 컴파일 성능이나, 런타임 성능을 말하는 것이겠지요. 어떤 의미든간에 해당되는 말입니다. 더불어, 개발자의 생산성에 있어서도, Swift로 해결할 때 더 빠른 문제가 있고, Objective-C로 해결할 때 더 빠른 문제가 있는 것입니다. 결국 선택의 문제겠지요. 하지만 애플은 아직까지는 두 언어를 선택적으로, 혹은 혼합하여 사용할 수 있는 길을 충분히 열어두었습니다. 가장 좋은 방법은 때에따라 두 언어를 적절히 섞어 프로젝트를 구성하는 것이라고 생각합니다.

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




5. Apple은 Objective-C를 결국에는 버릴 것이다
글쎄요...^^ 그건 애플만이 알겠죠? 여기에는 더 할 말이 없습니다. 다만, Swift는 정말 강력한 언어라는 것 밖에는 표현할 길이 없군요. 하지만, Objective-C도 그 나름대로의 강력함을 가지고 있기 때문에 굳이 버릴 필요가 있는가에 대한 의문도 듭니다. 여러분은 어떻게 생각하시는지요? 궁금합니다.



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

by yagom

facebook : http://fb.yagom.net

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

twitter : http://twitter.yagom.net ( @yagomsoft )

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

RSS Feed 받기   


Posted by yagom

댓글을 달아 주세요

  1. BlogIcon y8k 2015.06.11 12:16  댓글주소  수정/삭제  댓글쓰기

    Objective-C를 점차 줄여나가지 당장 버리진 않을 것 같네요.

  2. Favicon of https://cynosure.tistory.com BlogIcon hymin 2015.06.12 07:45 신고  댓글주소  수정/삭제  댓글쓰기

    질문 있습니다. 신규 app 개발시 swift 만으로 app 개발이 가능할까요? 그리고 metal 역시 swift 만으로 활용이 가능한가요?

  3. BlogIcon 개발 2015.06.14 12:02  댓글주소  수정/삭제  댓글쓰기

    함수형 언어라고 하기는 좀 힘들지 않나요? 명령형, 함수형, 객체지향형 등 복합적이긴하지만 함수형이라 하기엔 좀 무리가 있을 듯 합니다.

    • Favicon of https://blog.yagom.net BlogIcon yagom 2015.06.14 18:57 신고  댓글주소  수정/삭제

      예, 맞습니다. 오해가 생길 소지가 있는 것 같습니다 :)
      객체지향형, 함수형 등등 많은 패러다임을 가지고 있지요. 딱 하나만 집어 말할 순 없지만, 근래에 나온 언어들은 대부분 그렇다 할 수 있을 것 같습니다.
      다만, 기존의 Objective-C와 비교했을 때 그런 부분이 더 부각된다는 것을 말하고 싶었는데 너무 단편적으로 말한 것 같습니다 ^^;
      좋은의견 고맙습니다!

  4. 오랫만에 2015.06.19 16:36  댓글주소  수정/삭제  댓글쓰기

    오랫만에 들러보니 다시또 새글이 올라와있네요~!!^^ 전에 sns 연동질문했던 인원입니다~! ㅎㅎ
    objective-c 로 개발중인데 스위프트가 더 좋은부분이 있는건가요..??
    어떤것들이있을까요??

    • Favicon of https://blog.yagom.net BlogIcon yagom 2015.06.21 01:07 신고  댓글주소  수정/삭제

      안녕하세요! 제가 확인이 늦었습니다 ^^;
      음... 스위프트가 더 좋은점이라... 음... 그 부분은 개인적인 느낌이 많이 다를 것 같습니다. 일단 스크립트 언어에 친숙하신 분들이면 문법자체도 굉장히 친근감을 느끼실 것 같구요, 언어에서 더 많은 기능들을 지원하게 되어 우리가 기능을 취사선택 할 수 있는 폭이 넓어졌습니다. 그에 따라 다른사람의 코드를 읽기가 조금 더 어려워진 느낌도 없지않아 있습니다. 굉장히 축약적이고 언어의 관용적 사례나 문법을 많이 파악하고 있지 않으면 다른사람의 코드를 읽기가 수월하지 않을 수 있습니다.
      그렇지만 이제 필요에 따라 클래스냐, 구조체냐 등의 선택도 해 볼 수 있고, enum에서 함수를 지원하는 등, Objective-C에서 하지 못했던 기능들을 수행할 수도 있습니다. 스위프트에 추가된 많은 기능들을 훌륭히 활용할 수 있다면 더 좋을 수 있고, 그렇지 못하다면 Objective-C가 더 편할 수도 있습니다.
      그렇지만 결국 앞으로는 두 언어 모두 잘 다룰 수 있어야 iOS나 Mac용 앱을 개발하고, 오픈소스를 가져다 쓰는데 무리가 없겠죠 :)

  5. 자바 개발자 2015.08.25 04:18  댓글주소  수정/삭제  댓글쓰기

    안녕하세요. 이제 Swift를 공부해 보려고 이것저것 준비하다가 여기까지 들어와서 글을 보게 되었습니다.
    정확하게는 iOS앱개발을 공부 한다는게 맞을꺼 같네요 :)
    스위프트의 기본적인 문법은 그리 어렵지는 않아 보입니다. 다만 현재 상황에서 Objective-C 부터 차근차근 공부하는게 맞을까요? 아니면 스위프트 부터 공부 하는게 맞을까요?
    이미 만들면서 배우는 Swift책은 사긴 했습니다만은...^^;
    두번째는 스탠포드대 강의를 보면서 느낀건데 스토리보드의 사용방법이 생각 보다 어렵더라구요..
    오히려 소스로 직접 그리는게 더 편하게 느껴졌습니다.
    꼭 스토리 보드를 이용해서 앱개발을 해야 하는것인지? 예전에는 소스로 많이 개발들을 하신거 같은데...
    스토리 보드도 공부를 해야 하는거죠?
    혹시 스토리보드에 관한 괜찮은 블로그나 책 알고 계시면 추천 좀 부탁 드립니다~^^;;
    너무 초보적인 질문들이라... 민폐가 아닌지 모르겠네요~

    • Favicon of https://blog.yagom.net BlogIcon yagom 2015.08.25 12:27 신고  댓글주소  수정/삭제

      안녕하세요 자바 개발자님 :)
      음... 개인적 차이도 있고 배경지식의 차이도 있고... 시간적 여유의 차이도 있기 때문에 단정지어 말씀드리긴 어렵겠습니다만,
      둘 중 하나만 배우실 거라면 당연히 Swift를 해야한다고 생각하구요, 만약 시간적 여유가 많다면, Swift 학습 이후에 Objective-C를 배워보시는 것도 많은 도움이 될겁니다. 스토리보드는 사용법이 어렵더라도 충분히 숙지하시는 것이 큰 도움이 됩니다. 어떤 툴이든 그렇듯, 어렵더라도 익혀두면 나중에 금방금방 할 수 있게 되지요. 물론 코드로 대체할 수 있지만, 서로 장단점이 있기 때문에 스토리보드로 빨리 해결볼 수 있는 것은 보고, 코드가 더 빠른 것은 코드로 하고... 저는 둘을 적절히 섞어 사용하고 있습니다. 음... 스토리보드 사용에 관해 따로 서적을 본적은 없어서 추천드리기는 어려울 것 같아요 ^^; 말씀하신대로 동영상 강의 또는 애플의 문서를 보시는 것이 가장 좋을듯 합니다.
      https://goo.gl/qbTxup

      민폐 절대 아니니 언제든 와서 글 남겨주세요. 고맙습니다 :)