본문 바로가기
프로그래밍 놀이터/iOS

[iOS] Swift vs. Objective-C

by 돼지왕 왕돼지 2017. 9. 13.
반응형

 [iOS] Swift vs. Objective-C


http://www.infoworld.com/article/2920333/mobile-development/swift-vs-objective-c-10-reasons-the-future-favors-swift.html


+, .h, .m, @, app 용량, Apple, arc, array, boilerplate 코드, c level, c level arc, c 발전, c#, chunk test, cocoa api, comma, conditional expression, core graphic api, Crash, dynamic library, GC, Go, header, IMPLEMENTATION, ios8, iphne app, Java, Keyword, memory 관리, minor patch, mobile 환경 단점, name conflict, namespace, nil, no-op, ns 접두어, NSArray, object-oriented code, objective-c 단점, Open source, OS X, Rename, Resource, static Library, string +, string concat, Swift, swift playground, swift vs objective-c, swift 장점, Sync, token, [iOS] Swift vs. Objective-C, [], 가독성, 간단한 코드 테스트, 개발 커뮤니티, 닷 문법, 모바일 환경, 벤치마킹, 세미콜론, 안전, 오래된 필요없는 코드 관습, 유지보수, 자연스러운 영어, 적은 코드, 추가 수고, 코드 향상, 파일 분리


-

결론적으로 이 글은 Swift 가 더 좋음을 강조



-

Swift 는 더 읽기 쉽다.


Objective-C 는 기본적으로 C 베이스로 발전한 것이기 때문에 C 에서 예약한 keyword 를 사용할 수 없다.

그래서 @ 를 이용한 keyword 를 사용하는데 가독성이 그리 좋지 않다.


Swift 는 위의 @ keyword 관련 문제 뿐만 아니라

statement 마지막의 세미콜론이 없어도 되고, conditional expression 에 ( ) 도 없어도 되는 등 오래된 필요없는 코드관습을 따르지 않아도 된다.


게다가 가독성에 엄청난 영향을 끼치는 [[[ ]]] 과 같은 문법을 사용하지 않아도 된다.

-> 다른 언어와 같이 , 로 구분된 param 전달방법을 사용한다.


Swift 는 보다 더 자연스러운 영어에 가깝다.



-

Swift 는 유지보수에 더 좋다.


Objective-C 는 C 로부터 발전한 것이기 때문에 C 의 발전없이는 Objective-C 의 발전도 어렵다.

우선 C 는 header 와 implementation 이라는 .h, .m 두 개의 파일로 분리된다.


이렇게 2개의 파일 분리는 rename 등에서 sync 를 맞춰주어야 하는 추가 수고가 든다.


swift 는 2개의 파일 분리를 버렸다.

한 개의 파일로 유지보수가 가능하다.


그 외에도 많은 boilerplate 코드등을 사용하지 않아도 되고, 유지보수가 측면에서 기능향상이 있었다.



-

Swift 는 더 안전하다.


Objective-C 는 nil 에 대한 어떠한 operation 을 했을 때 no-op 으로 아무 동작을 하지 않고 무시된다.

이런 경우 crash 는 피할 수 있지만 버그를 찾기 어렵고, 그래서 많은 resource 를 사용하게 된다.




-

Swift 는 memory 관리가 더 좋다.


Objective-C 는 C level 에서는 ARC 가 제대로 동작하지 않는다. ( 예를 들면 Core Graphics API )

오직 Cocoa API 와 object-oriented code 들에서만 동작한다.


그러나 Swift 에서는 C level 까지 ARC 가 자동 작동된다.


Swift 와 Objective-C 의 비교는 아니지만,

iOS 자체가 GC 가 없기 때문에 성능의 이점이 많다는 것은 둘의 공통된 장점!!

( Java, C#, Go 등은 GC 가 있어 mobile 환경에 단점으로 작용한다. )




-

Swift 는 더 적은 코드를 작성한다.


Objective-C 는 string concat 만 하려고 해도 엄청 장황한 코드를 작성해야 한다.

그러나 Swift 에서는 요즘 프로그래밍 언어의 + 특성을 그대로 받아들여 쉽게 string concat 이 된다.


Swift 는 %s, %d, %@ 와 같은 comma 로 구분된 token 들을 사용하지 않아도 된다.

그래서 유지보수도 훨씬 좋다.




-

Swift 는 더 빠르다.


Apple 이 앞으로 미는 언어가 Swift 때문인지

Swift 는  C++ 에 필적하는 성능을 보인다는 벤치마킹 결과가 있다.


Objective-C 는 기본적으로 매우 느린 언어이다.



-

Swift 는 Open source 와 name conflict 가 적다.


Objective-C 에는 namespace 의 개념이 없다.

오직 Class 이름에 접두어를 붙인다던지.. 이런 행위를 namespace 로 활용한다.

그래서 open source 와 name conflict 가 잘 발생한다.


그러나 Swift 는 namespace 개념이 있어서 이런것들을 방지할 수 있다.

NSArray, NSDictionary 등과 같이 NS 접두어 쓰던것도 간단히 Array, Dictionary 로 사용할 수 있다.


Swift 의 namespace 는 file 에 속한다.




-

Swift 는 dynamic library 를 제공한다.


dynamic library 는 static library 에 비해 많은 장점들이 있다.

library 들의 진화가 빠르다는 장점도 있고, app 의 설치파일 자체도 용량이 작아질 수 있다.


dynamic library 는 모바일 환경에서 매우 적합하다.


OS X 에서는 dynamic library 가 이전부터 제공되었지만,

iOS 에서는 Swift & iOS 8 부터 가능하다.


더 이상 iOS 의 한단계 버전 release 가 아닌 minor patch 등으로 library 를 쉽게 update 할 수 있다.



-

Swift Playground 가 코드의 전반적은 측면을 향상시킨다


Swift Playground 는 iPhone app 을 만들지 않고도 5~20줄정도의 간단한 코드를 테스트 할 수 있게 해준다.

이런 chunk test 는 프로젝트를 만들어 테스트하는 그런 수고들을 없애기 때문에 많은 빠른 테스트와 검증을 하기 쉽다.



-

Swift 는 당신이 영향을 끼칠 수 있는 미래다.


Swift 가 등장함에 따라 Objective-C 는 더 이상 크게 발전하지 않을 것이다.

Swift 의 개발 커뮤니티는 더 활성화 될 것이다.




정리


Swift 는 더 접근성 좋은 더 기능을 잘 갖춘 언어이다.


Swift 는 C 와 같은 오래된 언어를 바탕으로 발전한 Objective-C 와는 근본이 다르다.

Objective-C libary 를 확 버리지는 않겠지만 앞으로 등장하는 많은 API 들은 swift 가 기반이 되는 것일 것이다.


Swift 는 더 적은 코드로 더 적은 파일로 유지보수를 할 수 있다.

더더욱 business logic 에 focus 를 할 수 있다.


Swift 는 코드 자체가 documenting 을 하는 능력이 충분하다.

Swift 는 ARC 가 C-style code 에도 적용이 된다.


기타 등등...




반응형

댓글