Swift는 초보자들이 배우기에 좋은 언어인가요?

이 글은 아래 Quora에 있는 Swift는 초보자들이 배우기에 좋은 언어인가요?(Is Swift a good language for a beginner to learn?를 정리하고 의견을 덧붙인 글 입니다. 조금 오래된 글이지만 답변에 좋은 내용이 많아 공유합니다. 물론 결론은 Swift는 초보자들이 배우기에도 좋은 언어라는 거죠!


Swift는 초보자들이 배우기에 좋은 언어인가요?

Jim Dovey

수준에 따라 다릅니다만, Swift는 C 계열 언어와는 달리 함수를 사용하는 것이 필수가 아닙니다. 그냥 코드를 적고 뭔가 동작하게 할 수 있습니다. 또한 Swift는 문법은 type-safty와 활용성에 중점을 두고 있습니다. 조금 더 복잡한 개념인 optional chaining 과 같은 개념은 처음에 프로그램 개발할때 꼭 필요치는 않기 때문에 나중에 차차 배워 나갈 수 있습니다. 즉 @ 나 ? 심볼을 사용하는 것을 배우지 않더라도 많은 것들을 해볼 수 있습니다. 물론 나중에는 객체지향 이라던가, pass-by-reference 와 pass-by-value 의 차이도 알아야 하고 MacOS나 iOS 개발을 위한 Model-View-Controller 개념도 알아야 할 것입니다. 이런 것들은 언어의 기본적인 것을 배우고 나중에 하나하나 배울 수 있습니다. 초보자를 위한 언어로서의 또 하나의 커다란 장점은 Playgrounds 와 REPL입니다. REPL(Read-Eval-Print-Loop)는 대화형 런타임 환경으로 명령줄에서 REPL을 시작하고 소스코드를 대화형으로 한줄씩 입력하면서 실행결과를 바로 확인할 수 있습니다. Playgrounds를 사용하면 구현한 알고리즘의 그래프를 보여주거나 움직이는 애니메이션을 그려주기도 합니다. 애니메이션을 고쳐보기 위해서 수정-컴파일-설치-실행 을 매번 할 필요 없이 파라메터를 수정하는 것 만으로도 그 결과를 바로 볼 수 있습니다.

이런 개발 뉴스를 더 만나보세요

Glyn Williams

초보자가 배울때 필요한 것이 무엇인지 생각해볼 필요가있습니다. 처음에 배울때에는 복잡하지 않은 단순한 환경이 필요합니다.

  • 컴파일러, 헤더파일, 부수적인 파일 등은 초보자들이 언어를 배울때 힘들게 하는 요소들 입니다. 코드를 입력하면 바로 동작하는 환경이 좋습니다.
  • 간단한 문법이 좋습니다. 간단한 루프, 변수 정렬, 함수 만들기 등은 깔끔한 코드로 작성이 가능해야 합니다.
  • 실수를 하면 바로 도움말을 보여주는 환경은 커다란 도움이 됩니다.
  • 또 가능하면 결과물을 바로바로 확인할 수 있어야 합니다. 결과물을 바로 볼 수 있도록 하는것은 잘못된 점을 바로 수정할 수 있도록 해주기 때문에 매우 중요합니다.

또한 학습자들은 공부를 하고있다가 갑자기 “좋아, 이제 진짜 문제를 풀기위해서는 새로운 언어와 환경을 배워야해”와 같은 말을 듣고 싶어하지 않습니다. Swift는 교육용 언어와는 달리 실생활의 문제를 해결할 수 있는 언어입니다.

Paul Solt

네. Swift는 개발을 처음 배우는 사람에게 딱 어울립니다. Swift는 아래 3가지 이유로 Objective-C 보다 쉽습니다.

  • 복잡한 부분을 제거했습니다 (2개의 파일을 건드릴 필요없이 파일 하면 되는 등)
  • 특수문자를 써야하는 경우가 훨씬 줄었습니다. 예를들어 매번 줄 마지막에 세미콜론을 넣을 필요가 없습니다.
  • Playgrounds를 통해서 하나하나 배워나가면서 결과물을 시각적으로 확인할 수 있습니다.

컴파일러를 도와주기 위한 반복적인 작업을 줄여주는 언어는 큰 도움이 됩니다. 컴파일러가 코드를 아이폰에서 동작할 수 있는 앱으로 만들어 주기 위해서 전통적인 컴파일러는 다양한 힌트를 필요로 합니다. 하지만 이런것들은 애플의 Xcode와 LLVM의 혁신 덕분에 더이상 필요가 없습니다. 예를 들어 ARC(Automatic Reference Counting – ARC)와 같은 고급기능들 덕분에 C, C++, Objective-C로 개발할 때보다 (반복적이고 버그를 만들어내며 시간 낭비인) 쓸데없는 코드를 작성하는 대신에 로직에 집중해서 개발할 수 있습니다.

Objective-C 에서는 ARC를 지원하지만 예외적인 부분들이 존재합니다, 하지만 Swift는 어느곳에서나 ARC를 지원하기 때문에 메모리관리를 위한 수고를 덜 수 있습니다.

Alice Karsevar (배우는 사람의 입장)

이제 개발을 처음으로 배우고 있고 어떤 언어를 처음으로 배울 것인지 결정하기 위해서 많은 언어를 알아보았습니다. 제가 받은 언어들에 대한 첫인상은 다음과 같습니다.

  • Ruby 는 웹 개발을 위해서 매우 적합한 언어입니다. 하지만 일본사람에 의해서 만들어져서 인지 일본어를 말할때 그렇듯이 모든 것의 순서가 거꾸로인거 같다는 느낌입니다. (Python과 비교했을 때 거꾸로이고, 더 유연하고 복잡한 느낌 입니다만, 물론 초보자인 저만의 느낌일 수 있습니다.)
  • Python : 개념을 배우기에 좋습니다. 하지만 너무나 많은 자료와 튜토리얼이 있어서 어떤 것을 선택할지 어지러울 정도 입니다. 많은 자료들이 수학과 관련된 것들인 느낌이라서 흥미가 좀 덜합니다.
  • Javascript : 웹 관련 산업에서 일한다면 매우 좋은 언어입니다. 당장 사용할 수 있습니다.
  • Objective-C : 보자마자 두통이 왔습니다.
  • C# : C++로 가기위한 중간 단계로 Microsoft에 다니는 친구가 강력 추천했습니다. 제가 게임업계에 있었고 게임이 어떻게 동작하는지 이해하고 싶었기 때문에 좋은 언어였습니다
  • Swift : 위에있는것들의 혼합적인 느낌입니다. 지금까지 봐온바로는, 다른 언어에서 배운 개념들을 대부분 그대로 사용할 수 있었습니다. 다른 분들이 말한바와같이 Playgrounds는 매우 훌륭한 도구 입니다.

결국 어떤 언어를 배우는지 보다는 무엇이라도 배우는 것이 더 중요하다는 결론입니다. 제 생각에는 누구한테서 배우는가가 가장 중요한 것이라는 생각이 듭니다. 만약 선생님이 너무 기술에만 집중하고 지루하다면 배우는데 별로 도움이 안될수도 있습니다. 좋은 튜토리얼을 찾을 수 없다면, 그 주제에 대한 좋은 글과 발표자료 들이 있는 것을 찾으세요.

완벽한 Swift 교육도구: Playgrounds

아직 정식 출시되지는 않았지만, 2016년 가을에 정식으로 공개될 Swift Playgrounds는 강력한 Swift 학습도구이며 초보자들을 위한 최고의 코딩 교재 입니다. Swift Playgrounds를 사용하면 퍼즐 게임처럼 재밌게 Swift를 배울 수 있습니다. 코딩을 몰라도 단계별로 쉽게 프로그래밍을 익힐 수 있어 학생들에게 더할 나위 없이 좋은 학습 도구죠. 또한 시각적으로 바로바로 구현되며 Apple에서 설계한 전체 과정을 제공하므로 초급 프로그래머가 흥미를 가지고 코딩을 배울 수 있도록 만들어져 있습니다. 이번 가을에 앱스토어에서 공개한다고 하니 기대하셔도 좋을 것 같습니다. 다만 얼마나 많은 부분이 한국어로 번역이 되어서 제공될지는 아직 알 수 없다는 점이 아쉽기는 합니다.

Swift Playgrounds 프리뷰

기초 학습

  • 실제 코드로 캐릭터를 3D 세계에서 움직일 수 있습니다.
  • 퍼즐을 풀면서 레벨을 올리고 코딩 개념을 익힐 수 있습니다.
  • 실제 프로그래머들이 사용하는 코드를 사용합니다.
  • 학습 단계를 심화하면서 보다 복잡한 코딩을 할 수 있습니다.

추가 학습

  • 기본 과정 이후에도 도전 과제가 지속적으로 추가됩니다.
  • 흥미로운 주제를 가진 도전 과제를 완성하면서 새로운 개념을 학습하거나 기존 학습 내용을 복습할 수 있습니다.

iPad의 조작 기능 활용

  • 멀티 터치와 탭, 드래그, 타이핑 등 iPad의 간편한 조작 기능을 활용합니다.
  • 숫자를 탭할 경우 iPad 계산기 UI가 나타나 쉽게 수정할 수 있습니다.
  • 터치하고 드래그해서 기존 코드를 쉽게 수정할 수 있습니다.
  • Snippet 라이브러리의 코드를 드래그해서 바로 적용할 수 있습니다.
  • QuickType 키보드를 통해 바로가기 바에서 자동완성된 명령어를 제공합니다.

Swift Playgrounds QuickType 키보드

쉬운 제작 및 결과 감상

  • 쉬운 제작을 위해 가속도, 자이로스코프 등 iPad 기능을 활용할 수 있는 템플릿을 제공합니다.
  • iPad 전체 화면을 통해 개발 코드의 결과를 감상할 수 있습니다.

개발 완성물 공유

  • 메일, iMessages, AirDrop 등을 통해 코드를 공유할 수 있습니다.
  • 직접 개발한 코드를 실행하는 모습을 동영상으로 웹에 공유할 수 있습니다.
  • xCode로 옮겨서 iOS나 Mac 앱 개발에 활용할 수 있습니다.

아쉬운 점

  • 아직까지는 Swift를 안정적으로 사용하기 위해서는 Mac 컴퓨터가 필요합니다. 학교나 학원에서는 Mac을 구비하지 않은 곳이 많으며, 또한 윈도우용 컴퓨터보다 조금 더 비싼것도 사실 입니다.
  • 현재 구할수 있는 Swift 자료는 Swift 1.2, Swift 2 그리고 Swift 3 버전을 대상으로 하는 문서와 튜토리얼, 샘플코드 등이 있는데 초보자들은 이것들을 구분하기가 힘들고, 그대로 copy & paste 해서 사용하다가는 제대로 동작하지 않을 수도 있습니다. 물론 이런 부분들을 고려해서 잘 만들어진 교재로 공부하면 되겠지만, 문제가 있을때 구글에서 검색한 코드는 잘 동작하지 않을 수 있습니다.

정리

Swift는 초보자들이 처음에 개발 언어를 배우기위한 교육용으로도 매우 적합한 언어 입니다. 애플 또한 교육언어로서의 Swift에 확고한 의지를 가지고 있는 것으로 보입니다. Linux를 위한 Swift, Swift Playgrounds 나 REPL 등은 물론이고 애플이 공식적으로 제공하고있는 Swift 관련 문서의 양도 엄청납니다. 소프트웨어에 대한 관심으로 인해 코딩 교육을 위한 많은 학습 도구가 제공되고 있지만, 가장 빠르게 발전하고 있는 강력한 언어, Swift를 직관적인 도구를 통해 쉽고 재미있게 배울 수 있다는 점에서 정말 유용해 보입니다. 곧 Apple이 공개할 Swift Playgrounds가 더욱 기다려 집니다.

컨텐츠에 대하여

이 컨텐츠는 저자의 허가 하에 이곳에서 공유합니다.


박민우

비지니스를 좋아하는 소프트웨어 개발자 @tebica / Realm을 아시아지역에 확산시키는 일을 합니다.

4 design patterns for a RESTless mobile integration »

close