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

时间:2009-05-17 14:14:08

标签: objective-c open-source gnustep

我不知道Objective-C,但对我来说它似乎是一种很好的语言。但我所知道的唯一背景是Apple的一切。但Objective-C甚至在GNU Compiler Collection中。

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

7 个答案:

答案 0 :(得分:38)

我认为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

答案 1 :(得分:16)

嗯,还有一些人仍在开发的GNUStep框架。但是,我不知道这个社区有多活跃。

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

编辑:Apple,你可能知道,有一个叫Cocoa框架的东西,它基本上是指Objective-C的整个库堆栈,包括NSObject公共基类。 Cocoa是NextStep库的延续,GNUStep是它的开源版本。因此,你会发现许多NS前缀类都存在,但是Apple并没有在添加新类或在Cocoa中更改它们,因此GUI级别的互操作性实际上只是理论上的可能性。

答案 2 :(得分:11)

@Stephen:我经常对人们从未阅读过我们网站的方式感到惊讶,甚至在说出这样的话之前检查项目进度。 :) GNUstep现在紧跟Cocoa,我们在这一点上比OpenStep要多得多。如果您或其他人希望对此主题有真正的意见,请从SVN获取GNUstep,安装并试用。关于你一无所知的事情的正义(正如你在这里的反应所证明的那样)毫无意义。

Greg C. GNUstep首席开发人员

答案 3 :(得分: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

答案 4 :(得分:4)

GNUstep。还有Étoilé这是一个用GNUstep构建的操作系统。

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

答案 5 :(得分:1)

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

答案 6 :(得分:0)

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

最新的.NET Rocks podcastRory Blythe谈论他在客观C和iPhone开发方面所做的事情。