开发者

Why is Objective-C considered a simple language?

I have heard it said that Objective-C is a 'simple' language, i.e. in terms of its language features. It's really the only language that I know but I did a bit of Java before and, in te开发者_JAVA百科rms of language features, they seem to be pretty close.

I have never touched C++. Are there more features to C++ compared with Objective-C and if so, is it an advantage to work with this extra feature set?


I've never heard of Objective-C described as a 'simple language'; on the contrary, some of the language features of Objective-C – such as dynamic binding, categories and introspection – make it a rather powerful language.

However there are a few reasons why it could be seen to be a language that is less feature-rich than others, including:

  • There was no garbage collection (generally speaking) until Apple's Objective-C 2.0, before which memory was managed largely by reference-counting; this is different to languages such as Java which use garbage collection for all memory management.
  • There are no namespaces in Objective-C; again this is unlike other languages out there such as C++. Convention is that classes and functions should be prefixed, as can be seen in Foundation, AppKit etc which are prefixed with NS-. This can sometimes be a disadvantage.
  • There are no true abstract classes. In Objective-C, abstract classes are only abstract by design, and can still be instantiated as-is, and won't generate compiler warnings or errors.
  • There is no operator-overloading. This is due to the nature of the Objective-C runtime and how method dispatch works. Instead, methods that take different argument types must be named differently; this may not necessarily be a disadvantage, as it can often improve clarity of code.

However despite all of this, Objective-C has some rather useful features, some of which are directly or indirectly the result of the lack of certain features that other languages may have, such as:

  • Using descriptive names (due to no operator overloading) often clarifies code and allows it to be self-documenting in many circumstances.
  • Categories are useful for extending classes that you do not have direct access to.
  • Dynamic dispatch means you can add, change or remove methods at will, and provides powerful introspection of classes.
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜