1. Objective-C는?
오브젝트 지향형 C 언어
오브젝트 지향형 프로그래밍 언어라 한다면, 많은 사람들은 C++ 이나 Java, C# 언어를 떠올릴 겁니다. 언어계에 조금 마니악한 일본인이라면, Smalltalk 라고 답할지도 모릅니다. Object-C 도 Smalltalk 와 같지만 그 이상으로 마니악한 오브젝트 지향형의 프로그래밍 언어일 것입니다. 특히, AT호환기와 Windows 로 시스템을 구성하고 있는 기술자는, 이 언어에 접할 기회조차 없을지도 모릅니다.
그리나, 일반적으로 오브젝트지향언어라 한다면 Object-C지 라고 생각하고 있는 기술자도 존재합니다. 아마도 그 사람은 Mac OS 기술자이거나 스티브잡스의 팬일 것입니다. 현대의 컴퓨터로 가장 Object-C를 실용하고 있는 것은 Apple사의 Mac OS X 인 것입니다.
소프트웨어의 개발에 Object-C를 채용하고 있는 것은 Mac OX X 전용의 편리한 프리 소프트웨어가 인터넷에 공개되어있는 않은 원인의 한가지일지도 모릅니다. 어째서 이 같은 마이너한 언어를 사용하고 있는가 하면, Mac OS X 가 NeXT사의 NEXTSTEP의 개발언어로 해서 채용되어져 있다고 하는 역사적 이유입니다. Mac OS X의 GUI는 NEXTSTEP의 API를 이어받고 있기 때문에 개발언어도 주로 Object-C를 사용하고 있는 것입니다.
그러나 무서워할 필요는 없습니다. Object-C는 C언어와 완전히 호환성이 있는 언어로, C언어의 소스코드를 컴파일 할 수도 있습니다. 그리고 C언어에 오브젝트지향을 실현하기 위하여 어느 정도의 기능을 추가하고 있는 것입니다. 다행히도 Object-C의 오브젝트지향은 C++언어보다는 심플한 구성입니다.
또 여러 가지 언어의 해설 문서를 기술해 온 필자의 경험으로는 가장 학습수순의 구성이 어려운 언어였습니다. Object-C언어의 기본부분의 특정의 기능을 학습하기 위하여 Objective-C 언어전체의 구성을 이해하지 않으면 안된다고 하는 어려움이 있기 때문에, 오브젝트지향의 초심자는 이 언어의 기본부분의 본질을 이해하는 것은 곤란할 것입니다. 가능하다면 C++언어의 지식과 본질적인 오브젝트 지향의 이해가 필요합니다.
Objective-C 와 C++
Objective-C 는 C언어의 기본구조를 베이스로 해서, Smalltalk언어를 조합한 언어로, C++언어와는 역사적으로도 언어사양도 전혀 다른 존재입니다. 현대의 주요한 오브젝트 지향언어는 그 대부분이 Java언어를 베이스로 하고 있는 것이 많아, Smalltalk를 기본으로 하고 있는 Object-C의 코드를 보면 눈이 동그래 질 것입니다.
게다가, C++등의 다른 언어는 클래스의 실체의 메모리 구성 등을 은폐하는 것에 대하여, Object-C는 C언어를 기본으로 클래스를 실현하고 있기 때문에, 어느 정도의 구조가 C언어에서 보여집니다. 즉, 언어사양에 새롭게 오브젝트 지향적성질을 가한 현대의 오브젝트 지향형 언어에 반해, Object-C는 C언어에 디자인패턴으로 해서 오브젝트지향의 시스템을 추가했다라고 하는 입장이라고 생각할 수 있습니다.
Java나 C++에는, 클래스형의 개념이나 오브젝트의 생성방법을 언어사양으로 정하고 있습니다. 그러나 Object-C에서는 클래스형이나 생성방법조차 헤더파일에 정의되어져 있기 때문에, 그 실체는 C언어의 구조체를 typedef문으로 은폐하고 있을 뿐입니다. C언어에 친화성이 높은 것은 좋은 것이지만, 다른 오브젝트 지향언어를 습득하고 있는 기술자에게는 받아들이고 싶은 것이 있을지 모르겠습니다. 역으로 C언어프로그래밍에 오브젝트 지향을 디자인패턴으로서 채용하고 있는 것을 좋아하는 개발자에 한해서는 추가된 언어사양과 기반의 구조가 서포트되어 주므로 궁합이 좋을지도 모릅니다.
Objective-C 의 설치
Mac OS X를 이용하고 있는 것이 있다면, 부속된 개발환경을 인스톨하는 것으로 Object-C를 사용할 수 있습니다. 그러나 Object-C는 Mac OS X만을 위한 언어가 아닙니다. 놀랍게도 GCC 컴파일러라도 컴파일이 가능해서 Linux라도 이 언어를 이용할 수 있습니다. Windows라도, Windows전용으로 컴파일한다면 GCC컴파일러를 인스톨하는 것으로 사용이 가능합니다.
댓글 없음:
댓글 쓰기