객체 지향형 C언어

객체 지향형 프로그램 언어라고 하면, 많은 사람들은 C++ 이나 Java, C# 언어를 떠올리겠지요. 프로그래밍 언어계에 도통한 사람이라면, Smalltalk 라고 대답할지도 모릅니다. Objective-C도, Smalltalk와 같이 그 이상으로 광적인 객체 지향형의 프로그램 언어지요. 특히, AT호환기와 Windows 시스템을 개발하고 있는 기술자는, 이 언어에 접할 기회조차 없을지도 모릅니다.

그러나, 한편 객체 지향 언어라고 하면 Objective-C 일거라고 생각하고 있는 기술자도 존재합니다. 그 사람은 아마 Mac OS 기술자 혹은 스티브·잡스의 팬일겁니다. 현대의 컴퓨터로 가장 Objective-C 를 실제 사용하고 있는 것은 Apple 회사의 Mac OS X 입니다.

소프트웨어 개발에 Objective-C 를 실제 사용하고 있는 것은, Mac OS X 전용의 편리한 공개 소프트웨어가 인터넷으로 공개되지 않기 때문에 그럴지도 모릅니다. 왜, 이러한 마이너 언어를 이용하고 있는가 하면, Mac OS X 가 NeXT 회사의 NEXTSTEP 의 개발 언어로서 채용했던 역사적 이유에서 입니다. Mac OS X 의 GUI는,NEXTSTEP 의 API 를 계승하고 있기 때문에, 개발 언어도, 주로 Objective-C 를 이용하고 있습니다.

그러나, 두려워할 필요는 없습니다. Objective-C는 C 언어와 완전하게 호환성이 있는 언어이기에, C 언어의 원시 코드를 그대로 컴파일 할 수 있습니다. 그리고, C 언어에 객체 지향을 실현하기 위한 몇개의 기능을 추가하고 있습니다. 다행히 Objective-C 의 객체 지향은 C++ 언어보다는 심플한 구조입니다.

또, 여러가지 언어의 해설 문서를 기술해 온 필자의 경험에서는, 가장 학습 순서의 구성이 어려운 언어였습니다. Objective-C 언어의 기본 부분의 특정 기능을 학습하기 위해서는,Objective-C 언어 전체 구조를 이해해야만 하는 어려움이 있기 위해, 객체 지향 초심자가 이 언어의 기본 부분의 본질을 이해하는 것은 곤란하겠지요. 가능하다면, C++ 언어의 지식과 본질적인 객체 지향의 이해가 필요합니다.

Objective-C 와 C++

Objective-C는 C 언어의 기본 구조를 베이스로 하고,Smalltalk 언어를 도입한 언어이며, C++ 언어와는 역사적으로도 언어 사양이 완전히 다른 존재입니다. 현대의 주요한 객체 지향 언어는 그 대부분이 Java 언어를 베이스로 한 것이 많아, Smalltalk를 기본으로 하고 있는 Objective-C 의 코드를 보면, 몹시 황당해 할겁니다.

게다가 C++ 등의 다른 언어는 클래스의 실체의 메모리 구조등을 은폐 하는데 비해, Objective-C는 C 언어 를 기본으로 클래스를 실현하고 있기 때문에, 어느 정도의 구조가 C 언어로부터 볼 수 있습니다. 즉, 언어 사양으로서 새롭게 객체 지향적 성질을 더한 현대의 객체 지향형 언어에 반해, Objective-C는 C언어에 디자인 패턴으로서 객체 지향의 시스템을 추가했다고 하는 입장이라고 생각할 수 있습니다.

Java나 C++은, 클래스형의 개념이나 오브젝트의 생성 방법을 언어 사양으로서 정하고 있습니다. 그러나,Objective-C는 클래스형이나 생성 방법조차 헤더 파일로 정의되고 있기 때문에, 그 실체는 C 언어의 구조체를 typedef 문장으로 은폐 하고 있을 뿐입니다. C 언어에 친화성이 높은 것은 좋습니다만, 다른 객체 지향 언어를 습득하고 있는 기술자에게는, 받아 들이기 어려울지도 모릅니다. 반대로, C 언어프로그래밍에 객체 지향을 디자인 패턴으로서 채용하는 것을 좋아하는 개발자에게 있어서는, 추가된 언어 사양과 기반의 구조가 서포트해 주므로, 반길지도 모릅니다.

Objective-C 의 실장

Mac OS X 를 이용하고 있다면, 부속되어 있는 개발 환경을 인스톨 하는 것만으로 Objective-C 를 사용할 수 있게 됩니다. 그러나, Objective-C는 Mac OS 만의 언어는 아닙니다. 이 멋진것에 GCC 컴파일러에서도 컴파일 할 수 있으므로, Linux에서도 이 언어를 이용할 수 있습니다. Windows에도, Windows 전용 GCC 컴파일러를 인스톨 하는 것으로 사용할 수 있습니다.

원문 http://wisdom.sakura.ne.jp/programming/objc/objc1.html
번역의 귀차니즘으로 번역기 돌린 후 원문과 대조하면서 어색한 부분만 재수정한겁니다.
어휘 사용에서 다소 어색한 부분이 있더라도 양해바랍니다.
Posted by tklee

댓글을 달아 주세요