【问题标题】:Is Objective-C only used for development on Mac OS/iPhone? [closed]Objective-C 是否仅用于 Mac OS/iPhone 上的开发? [关闭]
【发布时间】:2010-10-26 20:35:27
【问题描述】:

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

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

【问题讨论】:

    标签: objective-c open-source gnustep


    【解决方案1】:

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

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

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

    【讨论】:

    • 用 GNUstep 击败我 6 秒!
    • 我不知道是否还有 GNUStep 开发,但不久前我在网络上发现了活跃的 etoile OS。我的问题只是意味着不同。我会调整问题
    • 最初它是由 Brad Cox 和 Tom Love 开发的,虽然 Wikipedia 称它为 Apple 是开发者 (en.wikipedia.org/wiki/Objective-C),因为它最初是由 NeXT 从他们那里获得许可,然后被 Apple 收购的跨度>
    • 不要吹毛求疵,但它是 GNUstep,而不是 GNUStep。
    • WindowMaker 不是基于 GNUstep 的吗?仍然是我最喜欢的“低规格”窗口管理器。
    【解决方案2】:

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

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

    【讨论】:

    • 我认为引用相反的内容。您可以使用objective-c 进行系统级开发,并且可以将现代部分集成到其中。对我来说它看起来真的很强大
    • 你为什么认为 Etoile 是一个操作系统。我只知道它是桌面环境
    • @Norbert Hartl:它更像是一个桌面环境(如 GNOME 或 KDE),但网址本身甚至说它是一个操作系统。
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 感谢您的洞察力。我想学习它,因为它是我喜欢的smalltalk
      • 啊,那你已经到了可可自然的一半了。如果我们的行业记住了我们在 Smalltalk 中学到的一半经验,那么我们今天的领先优势就会翻倍。我有一个团队,全是来自优秀学校的计算机科学毕业生,我仍然需要教授和重新教授模型-视图-控制器的基础知识。
      【解决方案5】:

      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

      【讨论】:

        【解决方案6】:

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

        最新的.NET Rocks podcastRory Blythe 谈论他在Objective C 和iPhone 开发中所做的事情。

        【讨论】:

          【解决方案7】:

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

          格雷格 C. GNUstep 首席开发人员

          【讨论】:

            猜你喜欢
            • 2010-12-06
            • 1970-01-01
            • 2011-11-04
            • 2010-09-13
            • 2020-08-16
            • 2011-01-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多