关于在线学习 C 以准备学习 Objective-C 的任何建议
Posted
技术标签:
【中文标题】关于在线学习 C 以准备学习 Objective-C 的任何建议【英文标题】:Any suggestions on where to learn C online in preparation of learning Objective-C 【发布时间】:2010-10-28 16:57:49 【问题描述】:我已经编写 php 和 mysql 大约 8 年了。我每天都了解并在我的项目中使用现代软件架构和 OOP。我决定要学习一些新东西。
我昨天终于决定要学习 C 和 Objective-C,这样我就可以开始创建 Mac / ios 应用程序了。 (你会推荐 C、C# 还是 C++?我只是假设 C 是最好的。)
也就是说,我怀念在我的图形计算器上编写 BASIC 井字游戏的日子哈哈。我想在 C 方面打下一个很好的基础,可能会创建一些命令行游戏,然后最终使用 Objective-C 进行 GUI 编程
您会建议我从哪里开始在线查找。我不仅想了解如何使代码在 C 中工作,而且我还想了解代码如何工作以及为什么工作。
谢谢,祝我好运:-)
【问题讨论】:
【参考方案1】:它不在网上,但要学习 C,我建议您阅读 Kernighan 和 Ritchie 的The C Programming Language, 2nd ed.(也称为“K&R”)。这是一本传达 C89 基本原理的小册子。您可能可以在当地图书馆免费找到它;反正我就是这么做的。 C99 改变了一些东西,但语言的核心保持不变。
我不记得它是否涉及如何加载和链接可执行文件以及通常如何使用堆栈和堆的细节。为此,请查看最新版 Patterson 和 Hennessy 的 Computer Organization and Design: The Hardware/Software Interface.
如果您已经了解 OOP,并且熟悉 C,那么学习 Objective-C 就像阅读 Apple 的 The Objective-C Programming Language 并查看一些示例一样简单。
Objective-C 很简单,但 Mac/iOS 框架非常庞大。您学习使用 Objective-C 为 Mac/iOS 编程的大部分时间将花在学习框架以及如何与执行环境(NSApplication/UIApplication、NSRunLoop、响应者链和事件处理等)协作。您可以阅读 Apple 的文档,但 Hillegass 的 Cocoa Programming for Mac OS X(目前是第三版)是 Mac OS X 桌面编程的标准非 Apple 介绍。 iOS 编程的明确标准介绍尚未出现,但我推荐 Conway 和 Hillegass 的 iPhone Programming。 阅读 Hillegass 的另一本书后,您将熟悉并熟悉 中采用的教学风格iPhone 编程.
【讨论】:
+1。 K&R 是最好的 C 书籍,而互联网是从头开始学习 C 的糟糕场所。【参考方案2】:如果你想做 Mac/iOS 应用程序,只需学习 Objective-C。我不认为你会从 C 语言“升级”到 obj-c,而是你只会学习两种不同的编程语言。在 C 中工作与在 C++ 或 obj-c 中工作有很大不同。精通 C 将帮助您成为…… C 大师,而不是 obj-C。
我觉得这就像说你应该先学习如何骑摩托车才能学习如何驾驶汽车。仅仅因为它们都有***,并不意味着它可以那样工作。
另一方面,如果你觉得 C 语言对你有用,因为其他原因(很可能),那里有很多关于 C 语言的好书。我推荐 Kernighan & Ritchie 的 C 编程语言(通常只被 K&R 引用)。
【讨论】:
我不太同意这一点。只了解 Objective-C 的面向对象部分的人对该语言的了解非常浅薄,并且除了框架提供的功能之外,实际上并不能做太多事情。它真的没有那么不同——它只是在 vanilla C 之上的一组面向对象的扩展,并且在大多数情况下可以(并且最初是)作为 C 之上的一组简单的宏实现的。该框架做了很多比语言更大的差异。 确实如此,但我认为在学习objective-c 时,不会仅学习该语言的面向对象部分。我想说的是,如果他要在objective-c 中编写代码,他应该从那个开始。我敢肯定,在这个过程中,他会学到很多关于 C 本身的知识,但那将是“次要的”。在“继续”学习 obj-c 之前,花一段时间专门学习 C 并没有看到收益(严格从学习 obj-c 的角度来看)。【参考方案3】:不要为了学习 Objective-C 而学习 C,这一步是不必要的。
我来自 C# 背景,当我第一次开始学习 Objective-C 时,我几乎没有 C 经验,这并没有限制我在使用 Objective-C 时的工作。您需要做的最重要的事情是 OOP 和软件架构。这将使您比学习 C 更进一步。
我发现学习 Objective-C 尤其是 iOS 编程的最佳资源可以在 Apple 的文档中找到:
具体开始阅读iOS Reference Library: Human Interface Guidelines Memory Management(这与您需要的 C 最接近) Apple 的source code examples 很棒。具体来说: iPhoneCoreDataRecipes另一个很棒的资源是Cocoa with Love,它写得非常好并且有一些很棒的内容,具体来说:
Assign, retain, copy: pitfalls in Obj-C property accessors Method names in Objective-C Debugging tips for Objective-C programming同样,我发现很多人都喜欢 AppsAmuck 演示。就我个人而言,我发现它们的编码非常糟糕,但是有一些很好的特定领域的例子来处理动画、url 等。
【讨论】:
【参考方案4】:我建议学习 Objective-C,因为它与 C 非常不同。您应该了解开发 PHP 的大部分 C 语法。
【讨论】:
Objective-C 与 C 如此不同,但 PHP 与 C 相似?我认为您对括号语法感到困惑。 @chuck c 语法类似。相同的控制结构,for、while、if、do..while。它们在语言之间共享相同的语法。【参考方案5】:我真的不认为您需要深入了解 C,因为您通常不需要在使用 Objective-C 进行开发时使用 C 代码(或者至少不需要您将学习的特性)。直接从 Objective-C 开始,并在需要时尝试填补漏洞。
虽然 Objective-C 被认为是 C 语言的扩展(就其语法而言),但它几乎用 Objective-C 及其类型替换了您在 C 中需要做的所有事情,因此没有必要如此频繁地使用它.通常在与低级别但不那么频繁的交互时需要它(因为几乎所有东西都存在 Obj-c 包装器)。
【讨论】:
并非所有东西都有 Objective-C 接口,尤其是在 Mac 上。甚至有很多系统 API 只能用 C 语言。而且许多类型的应用程序都需要 C 来提高速度(例如,游戏经常使用大量 C,而没有好的 Objective-C 用于 OpenGL 的包装器)。 OpenGL 不是 C,OpenGL 与语言无关.. 实际上在 ES2.0 上只是由着色器制作,正常代码几乎为零.. 无论如何,如果你也不知道 C Objective-C 你不会写游戏。而且游戏的复杂程度在学习一门语言时并不好开始..【参考方案6】:Scott Stevenson 的Cocoa Dev Central 提供了许多有用的 Cocoa 教程,包括一个面向 Cocoa 程序员的 C 教程以及指向该主题的其他几个有用资源的链接。
另一个不错的是 Masters of the Void,作者 Uli Kusterer,一位资深的 Mac 程序员。
【讨论】:
【参考方案7】:如果你真的想在 Objective-C 之前学习 C,那就去吧。对于许多人来说,这是一个不必要的步骤,但你最终会使用它。如果您决定跳过学习 C 并深入研究 Objective-C,Kochan's book 是一个温和的“从头开始”介绍。
对于 C,最好是买一本书而不是尝试寻找在线教程。经典文本(就像这里的每个人都在说)是K&R C book。这是众所周知的标准。问题是它非常干燥,不适合自学。它更像是一本教科书。
最好的自学 C 书是 K.N.国王的C Programming: A Modern Approach。它价格昂贵,但节奏很好,深入,每章末尾都有理解问题。我是从编写经典 Objective-C 书籍的人Aaron Hillegass 那里得知这本书的。他了解教学并推荐它,因为这是一本值得学习的好书。它将帮助您思考 C 和编程,而 K&R 只会通知您。
就个人而言,我放弃了为 iPhone 编程学习 C 的目标,只是从 Hillegass 的书(和 Jeff LaMarche's book)中学习了 Objective-C。有时我会在必须编写或理解 C 代码时感到困惑,但这并不是一个巨大的障碍。
【讨论】:
以上是关于关于在线学习 C 以准备学习 Objective-C 的任何建议的主要内容,如果未能解决你的问题,请参考以下文章