【问题标题】:If I start learning C on Ubuntu will it give me an edge when I start learning Objective-C later this summer? [closed]如果我在 Ubuntu 上开始学习 C,那么当我今年夏天晚些时候开始学习 Objective-C 时,它会给我带来优势吗? [关闭]
【发布时间】:2011-02-19 22:06:01
【问题描述】:

我现在知道 Ruby,但是我想学习一门新语言。我现在正在运行 Ubuntu 10.04,但我将在今年夏天晚些时候购买 Mac。无论如何,我想要更多用于 GUI 开发的东西。我想知道我现在是否应该在 Ubuntu 上学习 C,然后在获得 iMac 时学习 Objective-C?学习 C 会给我带来优势吗?或者我应该在 Ubuntu 上学习 Python,然后在我得到一台新计算机时学习 Objective-C?

【问题讨论】:

  • 相关问题http://stackoverflow.com/questions/447942/game-programming-on-objective-c-and-linux
  • 如果这是你的最终目标,你为什么不学习 Objective-C?

标签: python c objective-c linux macos


【解决方案1】:

如果你了解 C,当然 Objective-C 会更容易学习,而且很多关于 Objective-C 的书籍甚至假设你了解 C。

还可以考虑学习一点关于 MacRuby 的 GUI 开发;)

【讨论】:

  • MacRuby 看起来棒极了!也许我应该启动我的旧 Hackintosh! :D
【解决方案2】:

按照编程语言的创建顺序学习编程语言通常很有帮助。编写 Objective-C 的人在定义语言时显然已经考虑了 C 及其语法、特性和特性。现在学习 C 不会对你造成伤害。您可能对 Objective-C 为何采用后来的结构方式有所了解。

C 有一本很棒的经典书籍,The C Programming Language,作者 Kernighan & Ritchie,如果您已经掌握了另一种语言,那么这本书简短易懂。

【讨论】:

    【解决方案3】:

    如果你要开始在 Linux 上学习 C,你会想从 Glib 和 GObject 开始... Gtk 用于 GUI 等。它们是最普遍和最容易学习的库,可以做很多事情遗憾地被排除在标准 C 库之外。

    由于 GObject 在 C 之上实现了一个类型系统,您将获得一些面向对象设计的感觉,但是当您转向 Objective-C 时,语法可能会让您感到困惑,而不仅仅是帮助。例如,C 中的所有函数名都在全局范围内,具体取决于源文件引用的内容。对一组特定类型进行操作的函数组往往使用相同的前缀,使用它们所属的对象类型的名称。

    gtk_widget_show_all(widget);
    

    对比

    widget.showAll();
    

    这只是语法上的区别,因为实现了一个非常真实的类型系统,它不是 C 语言的一部分,而是由 GObject 在它之上实现的。有关于 GLib 和 GObject 的很棒的教程可以帮助您入门。

    【讨论】:

      【解决方案4】:

      学习 C 肯定会有所帮助,因为 Objective C 继承了它的许多属性并对其进行了添加。

      您可以从“Learn Objective C on the Mac”中学习 Objective C,这本书真的很棒,然后如果您打算学习可可,请阅读“Learn Cocoa on the Mac”或 James Davidson 的书,他们应该给你一个良好的开端,然后你可以考虑转向 Hillegass 的那个,对于 David Chisnall 的一本令人惊叹的“Objective C 开发人员手册”,这是一个守门员,你可以在一两个月内阅读它。

      对于编译器,尽管 gcc 和 gnustep 组合可以工作,但我会向您指出 clang。如果您想使用 Obj C 2.0 功能并且它正在大量开发中,clang 是一个更好的选择。

      【讨论】:

        【解决方案5】:

        是的。学习如何用 C 编程。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-12-12
          • 1970-01-01
          • 2011-09-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多