Objective-C는?


객체 지향 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 컴파일러를 설치하여 사용할 수 있습니다.