从长远来看,最好的方法是什么:C,Objective C还是C ++? [关闭]

StackOverflow https://stackoverflow.com/questions/109937

  •  02-07-2019
  •  | 
  •  

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

与此同时,您建议使用建议语言的软件是什么软件?

[编辑]

有些人提到,当我不知道自己在做什么时,很难提出一些建议。我目前没有任何具体的计划,我只是从这三种语言中的一种开始,用于长期投资和工作,或者作为其他方面的跳跃点。

有帮助吗?

解决方案

我真的只能说C和C ++。如果因为C和C ++中存在如此多的遗留代码的唯一原因,学习要么不会受到伤害。

Pure C通常是操作系统,驱动程序开发或嵌入式开发环境的唯一选择。其他用途包括性能非常关键的时间 - 您希望成为“关闭”的时间。尽可能到机器的内部。知道C从来没有真正的痛苦,因为它的这些应用似乎不会很快消失。 C也是“通用语”。对于很多* nix应用程序。因此,如果您想为许多开源项目(apache / svn / cvs / etc)做出贡献,那么了解C是必需的。

根据我的经验,当你想要“靠近机器”时,会使用C ++。就像编码C时一样,但是你希望通过一些OOP包含更高级别的抽象。 C ++的主要优势(和最大的弱点)在于它的多范式。它为您提供了几乎所有可以在C中完成的工作以及许多面向对象的功能。例如,您可以根据需要重用许多超级优化的C代码,同时创建类,执行继承/多态 - 尽可能多的“面向对象”。如你所愿。甚至还有一些方法可以将一些函数式编程引入混合......

C ++经常被批评为试图为太多人提供太多东西。批评人士说,作为一切努力的尝试,它在任何一件事情上都不是很擅长。 C ++曾经是“通用语”。对于桌面应用程序,但Java和.Net确实占用了很多企业用户。尽管如此,许多关注性能和使用大量额外的,有用的,通常足够用于您的目的的应用程序的应用程序仍然只能在C ++中使用C ++。

其他提示

如果您主要在Windows上工作,我建议使用C ++。微软在新的C ++ / CLI和原生C ++编译器方面投入了大量的工作。随着新的TR1和C ++ 0X的增加,过去存在的许多问题正在得到解决。

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

如果你已经学会/掌握了一个问题,那么只需要几个星期的时间就可以转换到不同的语言,特别是如果你使用相同的语言系列(例如C,C ++,Objective C,Java,C#等......)

如果你认为苹果有朝一日会统治世界,那就是目标C.

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

你可以忽略任何没有先问你实际会做什么的答案。如果没有这些信息,答案可能是错误的,误导性的,或者只是无关紧要。

我的看法:

在您展示的三个选项中,您最好的初始赌注可能是C.一旦您了解C,掌握其怪癖并精通它,学习C ++或Objective-C很可能是相当微不足道的。 (你的最难点就是在世界的面向对象方面。)

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

我主要是C#开发人员。这付出了我的账单,而且做得很好。 C#不在你的名单上,我怀疑我知道为什么:听起来你正在寻找更接近金属,更少抽象。我明白了 - 而且我认为这是长期职业发展的正确选择。我开始在我的代码和盒子之间进行了无数的抽象(首先是专业的Java,然后是VB6,然后是.NET),结果,我现在正在业余时间努力玩“追赶”。与世界其他地方 - 我正在浏览 K& R书。诚然,我没有专业需要接近金属 - 但我觉得个人需要尽可能地了解机器。

(另外,具有讽刺意味的是,我正在考虑通过Objective-C重新开始进行Cocoa开发。几年前我常常在其中推杆,我认为我现在更适合“获取”它。我个人觉得C的预知将使得更容易,更顺畅地进入Objective-C,并使我不太可能在我的代码中引入灾难性的与内存相关的错误!)

在一天结束的时候,我认为拥有已有的C知识(虽然它对我来说显然不是必需的!)是一件非常好的事情,并且随着时间的推移可能会转向其他语言(你做的事情,除非你做操作系统,驱动程序或嵌入式工作)更容易和更顺畅。我不是说“你不能没有它,”我的意思是基于你的问题的表达方式......我认为这是这种情况的正确答案。

我稍微看一下你的问题,最终会建议你学习Objective-C。我有几个原因。

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

两个,Obj-C,至少在Mac上,有一个非常强大的框架,背后有一个很棒的工具链。 C和C ++在任何平台上都没有相同的内聚框架,尽管微软可能在实现方面也很接近。与Cocoa合作足以让我相信Obj-C是一门很棒的语言。图书馆经过深思熟虑,让我嫉妒那些日常工作的人。

三,Obj-C是C的超集,所以通过学习它你已经熟悉C语法了。另外,C标准库非常贫乏,可以很快学会。 C ++略胜一筹,有什么提升可用,但是提升远没有Cocoa那么紧密。

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

取决于你在做什么。如果我必须选择一个,我会说C ++。它比Obj-C更具跨平台性,而且比C更少痛苦。但是如果你正在进行Mac编程,你会想要了解Objective-C。如果你正在进行任何嵌入式编程或任何内核黑客攻击,你可能想要使用C。

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

此外,C ++是唯一一个在.NET方面受MS支持的人(如果你计划有一天迁移到.NET)。

从C开始,如果需要面向对象,可以将您的知识扩展到C ++。 Objective C是一个像Apple Script这样模糊不清的东西,只有苹果开发者才听说过(如果有的话),你就不会用那种语言(这种语言的粉丝没有冒犯)。

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

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

英特尔在C ++库上投入了大量资金,用于针对其处理器运行。由于英特尔最近似乎主宰了PC处理器世界,它似乎是一个不错的选择。

无论您关注何种其他编程语言,Pure C都是一个很好的基础。 Objective-C特别是基本的C代码,其中包含了smalltalk创意。尽管C ++远离C语言,但在我看来,它仍然是C语言最有用的语言。在Objective-C中,你经常下降到C.在Ruby,Python,Erlang和无数其他语言中,你也常常进入C模式。它也是一种您可以随时依赖的语言,可以在您触摸的每台计算机上使用。

所以我个人认为每个程序员都应该知道C.至少有一点点。

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

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top