[App 개발] Carbon과 Cocoa중에서 어떤 것을 선택할까?
본문
매킨토시 프로그래밍은 옛날 시스템 7 시절에 잠시 씨멘택 C++을 갖고 놀던 경험밖에 없습니다. 그 당시는 툴박스였죠. 시멘택은 자기네의 독특한 클래스 라이브러리를 갖고 있어서 마치 OWL같은 프로그래밍이 가능했던 기억이 있습니다.
이후에 매킨토시에 유닉스가 포팅된다는 쇼킹한 이야기를 듣고 반신반의하다가 결국 OS X가 출범되고 저도 그것에 맞추어 조금씩 경험을 쌓고 있는 마당에, 프로그래밍 환경이 옛날과 달라진 것을 발견하게 되었습니다.
아마 OS X의 구성도를 보신 분들은 이해를 하실 겁니다. Carbon과 Cocoa와 Java가 동일한 계층에 놓여있다는 사실입니다.
아니 뭐 같은 레이어에 놓였으면 놓인 것이지 뭐 그리 놀랄 일이 있나? 라고 생각하시면, 잠깐 생각을 다시 해 보십시오. 과연 어떤 언어를 선택해야 OS X의 성능을 최고로 끌어낼 수 있을까요?
- 애플은 어떻게 생각할까?
애플 웹사이트나 문서들을 보면 일단 그들의 바램은 모든 매킨토시 사용자들이 Cocoa로 전향하기를 무척이나 원하는 것 같습니다. 새로 프로젝트를 시작하려는 분들은 Cocoa로 하시고, 그러나 기존의 프로젝트를 쉽게 OS X로 포팅하기 위해서 우리는 Carbon 라이브러리도 동시에 제공하고 있다는 식으로 말하고 있기 때문입니다.
그러나 그렇게 간단하게 생각할 문제만도 아닌 것은, 지금 OS X에서 제공하는 Carbon은 옛날 Carbon이 아니라는 점입니다. 더군다나 Carbon은 옛날 고리짝에 쓰던 Toolbox와는 완전히 다르죠. (Toolbox는 파스칼로 짜여져 있죠. 옛날에 Think Pascal 배운다고 설친 적도 있었습니다. ㅡㅡ;) Carbon이라는 것이 단순히 legacy software를 끌어안기 위한 가교로서의 역할만을 하고 있는 것이 아니고, Carbon도 역시 진화하고 있다는 점입니다.
여기에는 매킨토시 컴퓨터 시장을 떠받히는 빅 브라더의 압력도 무시할 수 없다는 주장이 있습니다. Adobe같은 회사가 Photoshop같은 프로그램을 Cocoa로 완전히 새로 짠다는 것은 엄청난 일이죠. 자칫 잘못하면 긴 개발시간 때문에 페인팅 소프트웨어 시장을 잃게 될지도 모르는 일입니다. 지금까지 쌓아둔 그들의 C 기반 라이브러리를 통째로 포기할 수 없기 때문에 그들은 쉽사리 Cocoa로 넘어갈 수 없다는 문제가 있습니다.
- 카더라 통신들
애플은 피씨가 주지 못하는 여러 가지 재미를 줍니다만, 그 중에서 가장 재미있는 것은 다양한 '카더라 통신'들이 난무한다는 점이죠. 맥월드 엑스포가 열리기 전에 새로 나올 맥 기종의 천기누설 같은 이야기 뿐만 아니라, no one left behind 프로젝트라고 해서 칼라 클래식까지 G4 업그레이드 보드가 출시되어 모든 매킨토시가 OS X를 갖추게 된다는 아주 기상천외한 루머들이 떠돌기도 합니다.
개발자들에게는 특별한 카더라 소식들이 있죠. 그 중에 Carbon/Cocoa 관련 아주 재미있으면서도, 꽤나 설득력이 있는 이야기가 하나 있습니다.
애플의 소프트웨어 파트는 지금 둘로 갈라져 있다는 설입니다. 넥스트스탭에서 온 기술자들은 당연히 그들의 오픈스탭 기반의 Cocoa를 밀고 있고, 기존의 매킨토시 기술자들은 C/C++기반의 Carbon을 밀고 있다는 소문이죠. 그래서 OS X에서는 이 두 가지가 모두 지원되고 있다는 설입니다. 그럴리가... 하면서도 웬지 모르게 설득력이 있어 보이는 이유는, 옛날에 이미 그런 적이 있었기 때문입니다. 애플 IIe 와 애플 III 의 싸움이죠. 워낙 유명한 이야기라 따로 설명할 필요는 없을 것 같고요.
- 누가 더 빠른가?
이 부분에 있어서는 정말 개발자들도, 사용자들도 할 말이 많은 모양입니다. Cocoa기반의 프로그램의 허접함과 느린 속도를 성토하는 게시판의 글들이 있으면 곧바로 반론이 올라옵니다. 그러면서 곧바로 예의 'native' 논쟁으로 번집니다. 과연 어떤 것이 진짜 OS X 네이티브 프로그래밍인가?
그러면서도 대부분의 개발자들이 동의하는 것들이 있습니다. 바로 Cocoa의 소프트웨어 개발의 용이성이죠. 언어 자체도 스몰토크를 그 뿌리로 두고 있는 넥스트스탭이라는 점, 어제 오늘 갑자기 튀어나온 new-comer가 아니라는 점입니다.
그렇지만 애플이 Cocoa만을 전폭적으로 밀 수 없는 몇 가지 문제들이 있습니다. 일단 C/C++의 저변을 무시할 수 없습니다. C를 배워두면 여기저기 쓸모가 많은데, Objective-C/C++은 현재로서는 오직 매킨토시에서만 쓸 수 있다는 점입니다. 기존 라이브러리를 활용해야 하는 회사들의 입장은 위에서 말씀드렸고...
Objective-C 는 C++보다는 Java쪽에 훨씬 더 가까와보인다는 것이 제 개인적인 의견입니다. Java를 하시는 분들은 Objective-C를 쉽게 배우실 수 있을 것으로 생각됩니다. 그러나, 언어 자체를 배우는 것과, 실제 응용 프로그램을 익숙하게 개발하기까지 드는 노력은 차이가 있습니다. 제 경험에서도 자바 언어를 배우는 것보다도 Swing을 이용해서 제가 원하는 Custom Design을 하기까지 많은 시간과 노력이 들었기 때문입니다.
여러 가지 소식들을 "반만 믿는"선에서 종합해 본다면, 아직까지는 애플이 이 두 가지 중 하나를 포기하지는 않았다는 점은 분명합니다. 그리고 속도 면에서도 어느 한 가지가 형편없이 느리지는 않은 듯 합니다. 어떤 사람들은 Carbon이 64비트를 지원하지 않을 것이기 때문에 차후에 도태될 것이라고 예언하는 분도 계십니다만, 두고 봐야 할 문제인 것 같습니다.
개발 속도나 편의성에서 Cocoa의 우수성을 부인할 수는 없을 것 같습니다. 그러나, C 언어가 가지는 디테일한 표현들을 선호하는 사람들도 있습니다.
- 프로그래머를 지향하는 분들에게 드리는 "개인적인 견해"
C/C++을 일단 착실히 하시고... ㅡㅡ;;; 사실 이것은 어쩔 수 없는 일입니다. 앞으로 어떤 환경에서 어떤 프로그램을 만들면서 먹고살지 모르는 마당에 한 가지 언어에 목매달 이유는 없습니다. 만약 목을 매어 달아야 한다면 지금은 C/C++에 올인하시는 것이 좋지 않을까 합니다. 일단 C/C++에 자신감이 붙은 다음에 Objective-C로 가시면 좋겠습니다.
물론 아주 심각한 프로그래머가 될 생각이 없으신 분들은 Java로 가시고... 음냐... Java에서 일단 객체지향 개념을 확실히 잡은 다음에는 Cocoa로 가는 것이 쉬울 것입니다.
저와 의견을 달리하시는 분들도 많으실 줄로 압니다. ^^ 어짜피 언어는 언어니까... 자기가 좋아하는 언어를 선택해서 잘 쓰면 되겠죠.
최신글이 없습니다.
최신글이 없습니다.
댓글목록 1
이은수님의 댓글
공감합니다. 좋은글 잘 읽었습니다.