【问题标题】:What is the best way to go in the long term: C, Objective C, or C++? [closed]从长远来看,最好的方法是什么:C、Objective C 或 C++? [关闭]
【发布时间】:2010-09-11 17:11:27
【问题描述】:

我真正想要回到的一件事是 C++ 编程,但我不确定是否应该回到 C++(我有一些基本的控制台编程知识)还是应该研究 C 或 Objective C?我正在关注长期和易于编码的问题,例如优秀的编辑器、编译器等,以及哪些设置和运行最快。

除此之外,您会建议使用什么软件来使用建议的语言?

[编辑]

有些人提到,当我不知道我在做什么时,很难提出建议。目前我没有任何具体的计划,我只是考虑从这三种语言中的一种开始,以进行长期投资和工作,或者作为其他项目的跳板。

【问题讨论】:

    标签: c++ c objective-c


    【解决方案1】:

    如果你认为苹果有一天会统治世界,目标 C。

    现在我认为 iPhone Cocoa 开发是它的所在。所以,Obj-C,就个人而言。

    【讨论】:

      【解决方案2】:

      如果您主要在 Windows 上工作,我建议您使用 C++。 Microsoft 在新的 C++/CLI 和本机 C++ 编译器背后投入了大量工作。随着新的 TR1 和 C++0X 添加,过去存在的许多问题正在得到解决。

      【讨论】:

        【解决方案3】:

        我会说 - 选择任何你喜欢的语言并坚持一段时间。同时专注于算法。这些是程序的构建块。语言只是一种语言。

        如果您已经学习/掌握了一种语言,只需几周的时间就可以切换到不同的语言,尤其是如果您使用相同的语言家族(例如 C、C++、Objective C、Java、C# 等)。

        【讨论】:

          【解决方案4】:

          如果你只想专注于Windows操作系统,那么我建议直接从C#(.Net Framework)开始

          【讨论】:

          • 虽然 Mono 是微软后面的一个版本号,但他们实际上做得非常好。这就是说:C# 在非 Windows 平台上也能很好地工作!
          • 取决于您在 Windows 操作系统上执行的操作。仍然存在不适合 C# 的应用程序。
          • 不知道为什么这被如此强烈地否决了.. 对于带有垃圾收集的基于 VM 的语言有很多话要说。
          【解决方案5】:

          取决于你在做什么。如果我必须选择一个,我会说 C++。它比 Obj-C 更跨平台,比 C 更轻松。但如果你在做 Mac 编程,你会想了解 Objective-C。如果您正在做任何嵌入式编程或任何内核黑客,您可能想要使用 C。

          【讨论】:

            【解决方案6】:

            您可以忽略任何没有首先询问您实际要做什么的答案。如果没有这些信息,答案要么是错误的、具有误导性的,要么就是无关紧要的。

            【讨论】:

              【解决方案7】:

              是否有理由不使用 C++ 而使用 C 或 Objective C?目前,C++ 拥有最广泛的社区、最大的现有代码库,并且是这三者中最具特色的。如果您认为这不是真的,请澄清(说真的,我真的很感兴趣)。

              此外,就 .NET 而言,MS 仅支持 C++(当然,如果您计划有一天迁移到 .NET)。

              【讨论】:

                【解决方案8】:

                从 C 开始,如果您需要面向对象,可以将您的知识扩展到 C++。 Objective C 是一个像 Apple Script 这样的晦涩难懂的东西,只有 Apple 开发人员听说过(如果有的话),你不会对这种语言走得太远(无意冒犯该语言的粉丝)。

                C 非常容易学习(与 C++ 相比),并且您对以后可能想学习的任何其他语言(尤其是 C++)都有很好的基础知识。

                关于 Loren Segal 的回答,当您想在 C 和 C++ 之间进行选择时,您想做什么并不重要。这只是一个偏好问题。两者都有适用于所有内容的库(因为 C++ 库通常只是围绕 C 库的面向对象的包装器),两者都有庞大的社区、稳定的 IDE 和编译器。

                【讨论】:

                  【解决方案9】:

                  我真的只能说 C 和 C++。如果仅仅是因为有这么多遗留代码是在 C 和 C++ 中,那么学习两者都不会受到伤害。

                  纯 C 通常是操作系统、驱动程序开发或嵌入式开发环境的唯一选择。其他用途包括性能非常关键的时候——您希望尽可能“接近”机器内部。了解 C 永远不会有什么坏处,因为它的这些应用似乎不会很快消失。 C 也是许多 *nix 应用程序的“通用语言”。因此,如果您想为很多开源项目(apache/svn/cvs/etc)做出贡献,了解 C 语言将是一项要求。

                  根据我的经验,当您希望像编写 C 代码一样“接近机器”时使用 C++,但您希望通过一些 OOP 包含更高级别的抽象选项。 C++ 的主要优势(也是最大的弱点)是它的多范式。它为您提供了几乎所有您可以在 C 中做的事情以及许多面向对象的功能。例如,您可以在创建类、进行继承/多态性时根据需要重用大量超优化的 C 代码——尽可能多的“面向对象”。甚至还有一些方法可以将一些函数式编程融入其中......

                  C++ 经常被批评为试图为太多人做太多事情。批评者说,作为一种尝试做所有事情的尝试,它在任何一件事上都不是很擅长。 C++ 曾经是桌面应用程序的“通用语言”,但 Java 和 .Net 确实已经夺走了很多企业用户。尽管如此,许多既关心性能又使用大量额外、有用、通常只在 C++ 中可用的功能足够好的应用程序会选择 C++。

                  【讨论】:

                    【解决方案10】:

                    英特尔在 C++ 库上投入了大量资金,以便在其处理器上运行。由于英特尔最近似乎在 PC 处理器领域占据主导地位,这似乎是一个不错的选择。

                    【讨论】:

                      【解决方案11】:

                      我的看法:

                      在您展示的三个选项中,您最好的初始选择可能是 C。一旦您了解 C、掌握其怪癖并精通它,学习 C++ 或 Objective-C 很可能会相当简单。 (您最难的点将在世界的面向对象方面。)

                      目前,Objective-C 在 Mac 上最常使用,但有些人忘记了用于 Objective-C 的 GNU 工具,而 GNUStep 也支持这一点。 (当前的 Mac OS X 很大程度上基于旧的 NextSTEP,GNUStep 或多或少是一个克隆。)然而,关于 Objective-C 的事情是它在这两个环境之外没有被广泛使用——这使它有点像狭窄的环境。 (使用 Obj-C,就像几乎任何其他现代 OO 语言一样,您将花费更多的时间来学习框架类,而不是实际的底层语法/词法规则。)

                      我主要是一名 C# 开发人员。这支付了我的账单,而且做得很好。 C# 不在你的名单上,我想我知道为什么:听起来你想要更接近金属,不那么抽象。我明白了——我认为这是长期职业发展的正确选择。我从我的代码和盒子之间的无数抽象开始(首先是专业的 Java,然后是 VB6,然后是 .NET),因此,我现在在业余时间努力工作以“赶上”其余的世界——我目前正在通过K&R book。诚然,我没有专业的需要如此接近金属——但我确实觉得我个人需要尽可能地了解这台机器。

                      (另外,具有讽刺意味的是,我正在考虑通过 Objective-C 重新进入 Cocoa 开发领域。几年前我曾经使用它,但我认为我现在可以更好地“获得”它......我个人认为对 C 的预知将使迁移到 Objective-C 变得更容易、更顺畅,并且使我不太可能在我的代码中引入灾难性的内存相关错误!)

                      归根结底,我认为拥有 C 的预先存在的知识(虽然这对我来说显然不是必需的!)是一件非常好的事情,并且可能会随着时间的推移转向其他语言(您这样做,除非您进行操作系统、驱动程序或嵌入式工作)更轻松、更流畅。我不是说“没有它你就活不下去”,我是说根据你的问题的措辞方式......我认为这是该场景的正确答案。

                      【讨论】:

                        【解决方案12】:

                        无论您随后专注于哪种其他编程语言,纯 C 都是一个很好的基础。特别是 Objective-C 只是基本的 C 代码,上面散布着 smalltalk 的想法。尽管 C++ 与 C 相去甚远,但在我看来,C 仍然是最有用的语言。在 Objective-C 中,您经常使用 C。在 Ruby、Python、Erlang 和无数其他语言中,您也经常进入 C 模式。它也是一种您始终可以在您接触的每台计算机上使用的语言。

                        所以我个人认为每个程序员都应该真正了解 C。至少一点点。

                        【讨论】:

                          【解决方案13】:

                          我对您的问题的看法略有不同,最终建议您学习 Objective-C。我有几个原因。

                          第一,Obj-C 看待 OO 模型的方式非常不同,因为它通常用 C++ 等语言实现。 Obj-C 基于 Smalltalk,因此所有“方法调用”都实现为发送到适当对象的消息。由于这个程序员已经能够将其扩展为一些非常有趣且非常强大的技术。学习一门新语言的部分原因应该始终是扩展您对事物如何工作的看法——在这方面,Obj-C 比 C 或 C++ 具有更大的潜力。

                          第二,至少在 Mac 上,Obj-C 背后有一个极其强大的框架和一个出色的工具链。 C 和 C++ 在任何平台上都没有真正具有相同凝聚力的框架,尽管微软可能在它们的实现上接近。仅仅使用 Cocoa 就足以让我相信 Obj-C 是一门很棒的语言。这个图书馆真的是经过深思熟虑的,让我嫉妒那些每天都在使用它的人。

                          第三,Obj-C 是 C 的超集,因此通过学习它,您将已经熟悉 C 的语法。此外,C 标准库非常贫乏,可以很快学会。 C++ 稍微好一点,可以使用 boost,但 boost 远没有 Cocoa 那样具有凝聚力。

                          最终,您需要确定您的优先事项是什么。如果您只是想学习新知识,请使用 Obj-C。

                          【讨论】:

                            【解决方案14】:

                            在做了 10 年左右的 C++ 开发人员之后,我最近学习了 Objective-C(因为我开始玩 Cocoa)。

                            我发现除了 C++ 之外学习 Objective-C 的经验非常有启发性,尽管我可能不会在任何实际项目中使用 Objective-C。

                            objective-C 和 C++ 都在 C 之上添加了一层面向对象的编程。但它们以几乎完全相反的方式实现。似乎每次 C++ 做出一个设计决策时,objective-C 都会做出相反的选择。例如,C++ 使用静态类型,而 Objective-C 使用动态类型。或者,(最近的)objective-C 使用了 C++ 没有的垃圾收集。

                            这真的让我更好地理解了面向对象编程的概念以及与之相关的设计选择。

                            【讨论】:

                              猜你喜欢
                              • 2010-09-15
                              • 2011-04-07
                              • 2010-09-06
                              • 1970-01-01
                              • 1970-01-01
                              • 1970-01-01
                              • 2017-09-17
                              • 1970-01-01
                              • 1970-01-01
                              相关资源
                              最近更新 更多