objective-c - Objective-C 仅用于 Mac OS/iPhone 上的开发吗?

标签 objective-c open-source gnustep

<分区>

我不了解 Objective-C,但对我来说它是一种不错的语言。但我所知道的唯一背景是苹果的一切。但是 Objective-C 甚至在 GNU Compiler Collection 中。

打开的是不是少了什么?或者已经有更广泛的 Objective-C 基础?如果有公司选择 Objective-C 来开发他们的产品,我很感兴趣。

最佳答案

我认为 ObjC 由于历史的怪癖和专有系统的性质而与 Apple 世界隔离开来。

首先,您需要将 ObjC 与 Cocoa 分开。 ObjC 是一种非常原始的语言。我认为它是一种非常优雅的语言,但它非常基础。您可以在 C 预处理器中实现 ObjCv1。 C++ 和 ObjC 几乎是同时开发的。 C++ 放置了大量的基础设施,为基本上完全不同的语言带来类似 C 的语法。 ObjC 为 C 带来了类似 Smalltalk 的语法,几乎没有其他任何东西。甚至像 +alloc-release 这样的东西也不是 ObjC 的语言元素。它们是 malloc()free() 的相当简单的包装器。* 就其本身而言,ObjC 并没有那么有趣(优雅,因为我认为它是)。这与 Smalltalk 的性质非常相似。如果没有它的对象库,您将无能为力。凭借其对象库,它非常强大。

NeXT 在 ObjC 之上提供了整个框架,称为 NeXTSTEP。由于 NeXT 计算机并未取得广泛的商业成功,并且 NeXTSTEP 是专有的,因此没有多少人了解该框架或底层语言。当 Apple 购买它并将其转变为 Cocoa 时,它仍然是一个专有系统。

GNUStep 就在那里,但他们从未开发出足够有趣的东西来吸引大量开发人员(主要的网络浏览器或文字处理器等)。在过去的几年里,Cocoa 已经远远领先于 GNUStep。有可能随着 iPhone 对 Cocoa 的兴趣增加,GNUStep 可能会重新焕发活力并带来一个不错的跨平台开发框架,但我对此表示怀疑。具有 C++ 背景的人在查看 C# 时会看到明显的改进。当他们查看 ObjC 时,他们会在意想不到的地方看到很多方括号。对于在“调用方法”范式下长大的人来说,“传递消息”的 Smalltalk 范式是陌生的,甚至有点可怕。许多开发人员认为他们需要一种强类型语言来避免错误,并且对主要依赖程序员纪律和谨慎一致性的系统感到不舒服。在 C# 中破解一些“正常工作”的东西比在 ObjC 中要容易得多。 ObjC 真的希望更多的开发人员了解正在发生的事情,而不是依赖编译器来保护您免受黑客攻击。

基本上,人们从 Unix 了解 C,C++ 就 C 而言是有意义的,Java 就 C++ 而言是有意义的,而 C# 只是清理了 Java。 ObjC 不是其中任何一个。这是 Smalltalk,而且没有人再学习 Smalltalk。

* 我最近和写 +alloc 的人聊了聊它的历史,鉴于包含区域,他可能反对我称它为简单包装器。所以对于知道区别的人来说,将此处的 +alloc 替换为 +new

关于objective-c - Objective-C 仅用于 Mac OS/iPhone 上的开发吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/874690/

相关文章:

iphone - iPhone 上的快速(反)序列化

objective-c - RestKit 警告 : "Found a collection containing only NSNull values..."

java - JavaEE 的 MusicBrainz 替代方案

open-source - 最佳开源在线任务管理/项目经理?

php - 需要在 URL 中进行身份验证的 NSURLConnection sendSynchronousRequest

ios - 在 TabBarController 和 ViewController 之间切换的最佳方法

visual-studio - 分布式源代码管理不适用于 Visual Studio 用户?

objective-c - GNUStep NSAutoreleasePool 不兼容

objective-c - 无法在 Windows 上使用 Gnustep 编译 Objective C

ide - GNUStep 入门