본문 바로가기

Programming/iPhone, Xcode

Objective C 소개

오늘은 아이폰 어플리케이션 개발에 사용되는 언어인, Objective C 에 대해서 알아보고자 한다.


Objective C 라는 언어는 아이폰 (iPhone) 앱 (App) 이 유행하기 전에 일반인에게는 거의 알려지지 않았다. 하지만, 이제 아는 사람들도 꽤 많을 거 같다. 하지만 정확히 Objective C 가 무엇인지 알지 못하고 사용하는 사람들도 꽤 있을 거 같다. 본인도 이번 기회에 Objective C 에 대한 깊은 이해를 해 보고자 이번 포스팅을 쓰기로 마음 먹었다.


Objective C 는 Smalltalk 스타일의 메시징 개념을 C 언어에 추가한 Reflective 한 객체지향 언어이다.


Reflective 라는 개념을 한국어로 의역을 해보고 싶지만, 영어로 표기하는 것이 보다 이해에 도움을 줄 거 같아서, 남겨두었다.


Reflective 라는 것은 Computer Science 에서 컴퓨터 프로그램이 실행시에 그 자신의 구조를 수정하거나 관리가 가능한 것을 의미한다. Reflection 은 대부분의 high-level 프로그래밍 언어 (i.e. Smalltalk, Java, C, ML 혹은 Haskell)에서 사용된다.


오늘날, Objective C 는 애플사의 Mac OS X 와 iOS 환경에서 사용된다. 그리고  애플사의 Cocoa API 의 주 언어로 사용된다.

일반적인 애플사의 Cocoa API를 사용하지 않는 Objective C 프로그램은 gcc 나 Clang 을 지원하는 어느 시스템에서도 컴파일 된다.



아래의 내용은 Wikipedia 의 내용을 일부 번역하였습니다.


Objective C 는 1980년 Brad Cox 와 Tom Love 라는 사람이 Stepstone 회사에서 만들었다. 두 사람은 1980 년에서 1881년까지 ITT 라는 회사의 프로그래밍 기술 센터에  Smalltalk 를 도입해왔다.  Brad Cox 는 소프트웨어 디자인과 프로그래밍에서 재사용성을 고민했었다.  그는 Smalltalk 와 같은 언어는 ITT 에 근무하는 시스템 개발자들에게 매우 귀중한 개발 환경을 제공한다고 깨달았다. 하지만, Cox와 Love 는 ITT의 엔지니어들에게는 Smalltalk 가 C 언어와의 backward 호환성 또한 중요하다는것을 인지했다. 그래서 Cox 는 C 언어에 Smalltalk 의 몇가지 라이브러리를 추가한 것을 처리할 수 있는 전처리기를 개발하기 시작했다. 그리고 곧 이 C 언어에 객체지향 개념을 추가할 수 있게 되었다. 그리고 이름을 OOPC (Object-Oriented Pre-Compiler) 라고 불렀다. 이후로 여러 사건이 있었고, 나중에 Cox와 Love 는 Productivity Products International (PPI)라는 벤처회사를 설립했다. 그리고 Objective-C 컴파일러와 클래스 라이브러리들로 구성되어있는 그들의 제품을 상업화 했다.


1988년 스티브 잡스 (Steve Jobs)가 애플사를 떠났을 때, 그는 Next 라는 회사에 있었다. 그는 Next 회사에 있을때, StepStone 으로부터 Objective-C 의 라이센스를 취득했다. 그리고 Objective-C 컴파일러와 라이브러리들을 NextStep 이라는 툴로 발표했다. 하지만 이 툴은 그다지 인기를 얻지 못했다. 이후 이 툴은 Nextstep 과 OpenStep으로 팔리게 되었다.


1996년 애플사가 NeXT 회사을 인수하고나서, OpenStep을 그들의 새로운 운영체제, Max OS X에 사용하기 시작했다.

OpenStep 은 Objective-C 와 NeXT의 Objectice-C 기반의 개발자 툴, Project Builder (나중에 Xcode로 교체됨), Interface Builder 를 포함한다.


오늘날 애플사의 Cocoa API는 대부분 OpenStep interface object 들과 Objective-C 환경에 기반하고 있다.


Objective-C 는 C 언어의 슈퍼셋이다. 무슨말이냐면, C 언어를 포함한 다른 기능들도 있다는 뜻이다. 그래서 Objetive-C 컴파일러는 어떤 C 프로그램도 컴파일할 수 있다. 그래서 Objective-C 클래스에 자유롭게 C 코드들도 넣을 수 있다. Objective-C 는 Smalltalk 에서 사용되는 객체 관련 문법을 사용한다. 그리고 객체와 관련없는 다른 문법은 C 언어와 동일하다. 객체관련 문법은 Smalltalk 스타일의 messaging 의 형태를 띈다.


Cocoa API 에 대해 궁금하다면 아래 링크를 확인

http://developer.apple.com/technologies/mac/cocoa.html