26

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

开放的是否缺少某些东西?或者,Objective-C 是否已经有了更广泛的基础?如果有公司选择 Objective-C 来开发他们的产品,我很感兴趣。

4

7 回答 7

41

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

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

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

GNUStep 已经存在,但他们从未开发出足够有趣的东西来吸引大量开发人员(主要的 Web 浏览器或文字处理器等)。在过去的几年里,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.

于 2009-05-17T15:31:13.367 回答
15

好吧,还有一些人仍在为其开发的 GNUStep 框架。但是,我不知道该社区有多活跃。

但在大多数情况下,Objective-C 现在是一种 Apple 语言,正如该语言的“2.0”版本是作为 OSX 10.5 的一部分推出的,并且似乎是 Apple 纯粹的内部开发工作。

编辑:你可能知道,Apple 有一个叫做 Cocoa 框架的东西,它基本上指的是 Objective-C 的整个库堆栈,包括 NSObject 通用基类。Cocoa 是 NextStep 库的延续,GNUStep 是它的开源版本。所以你会在这两个地方找到许多以 NS 为前缀的类,但 Apple 并没有阻止在 Cocoa 中添加新类或更改它们,因此 GUI 级别的互操作性实际上只是一种理论上的可能性。

于 2009-05-17T14:18:39.967 回答
11

@Stephen:我一直对人们在说出这样的话之前从未阅读我们的网站甚至检查项目进度感到惊讶。:) GNUstep 现在紧跟 Cocoa,在这一点上我们比 OpenStep 还要多。如果您或其他人想对该主题有真正的看法,请从 SVN 获取 GNUstep,安装并尝试一下。对您一无所知的事情(正如您在此处的回答所证明的那样)的高谈阔论是毫无意义的。

Greg C. GNUstep 首席开发人员

于 2010-03-07T05:38:38.673 回答
6

GNUstep 实际上比大多数人想象的要活跃得多,非常值得关注。创建跨 GNUstep 和 Cocoa 工作的应用程序并不难(意味着可能在 OSX、Win、Linux、BSD 上......)

这些链接绝对值得任何对该主题感兴趣的人查看:

http://www.gnu.org/software/gnustep/information/aboutGNUstep.html

http://etoileos.com/news/

http://www.nongnu.org/gap/

然后是 Cocotron,一个“旨在实现类似于 Apple Inc. 的 Cocoa 文档描述的跨平台 Objective-C API 的开源项目”:

http://www.cocotron.org/

编辑:有关使用 GNUstep 构建的商业跨平台产品的示例,请查看Eggplant

于 2009-06-15T15:28:56.133 回答
5

GNU步。还有Étoilé,它是一个使用 GNUstep 构建的操作系统。

我认为很多人更喜欢 C 或 C++,如果他们想要更现代的语言,他们会使用 C# 或 Java。

于 2009-05-17T14:18:46.067 回答
1

我认为 Apple 的实施得到了更好的支持,并且仍在积极开发中。还有一些其他地方,例如GNUStep,但它们看起来仍然非常接近 NextStep/OpenStep 级别。不幸的是,从那以后发生了很多事情!

于 2009-05-17T14:20:25.050 回答
1

Mono 团队正在做一些 iPhone 开发,允许 iPhone 应用程序用 .NET 编写并与 Mono .NET 编译器交叉编译。查看http://www.mono-project.com/Mono:Iphone

在最新的.NET Rocks 播客中,Rory Blythe谈论了他在 Objective C 和 iPhone 开发中所做的事情。

于 2009-06-15T15:37:13.553 回答