客观c的未来?

时间:2009-08-18 02:51:49

标签: objective-c

我目前是一名c#开发人员(一年在中国获得学士学位的工作经验),现在还有另一个工作机会作为客观的c工程师,我对这个职位很感兴趣。但困扰我的是目标c的未来,它是一种生活在c ++,java和c#阴影下的垂死语言吗?或者它是一种很好的语言坚持? 感谢。

6 个答案:

答案 0 :(得分:12)

在Mac上它绝对是活生生的。还有iPhone。因此,如果您喜欢在这些环境和系统上工作,那就去吧。

就其他地方而言,它并没有真正引起我所知的太多。不是说它不能。许多优秀的语言相对较晚,比如erlang,所以我不会把Objective-C算进去。

更不用说学习一门新语言和伸展自己的价值了。

那么,如果你问这会有助于我的职业生涯吗?然后一个答案是肯定学习一些新东西对初学程序员有益。

如果您要求使用Objective-C本身可以销售吗?如果你想在Apple of World软件中工作,答案是肯定的。

答案 1 :(得分:11)

Objective-C广泛用于Mac OS X和iPhone OS,因此它不太可能很快消失。它构成了OS X的基础。大多数Apple和第三方应用程序都是用Objective-C编写的,而Apple甚至用Objective-C重写了OS X Finder,所以看起来它会坚持一段时间。

它绝对不会生活在C ++,Java和C#的阴影下,特别是在OS X上。(我个人认为Objective-C是一种比C ++,Java和C#更好的语言,但这只是我的观点。)它具有与那些语言不同的感觉(至少部分归因于它的动态而不是静态),但它并不真正生活在它们的阴影中。

如果你想为Mac或iPhone开发它是值得学习的,但它并没有在这些平台之外广泛使用,所以如果你对这个开发线不感兴趣,我认为它不值得学习

答案 2 :(得分:3)

正如其他人所说,Objective-C在Apple的平台(即OS X和iPhone)上运行良好。

此外,听起来像Objective-C将向您展示一种全新的OO工作方法。考虑到C ++,Java和C#的强类型,Objective-C是非常不同的,因为它建立在真正的动态上。我个人觉得使用起来很愉快,远远超过Java甚至C ++。我特别喜欢委托系统的工作方式,以及借用的Smalltalk语法。

另外,作为C的简单超集,学习Objective-C非常容易。最多只需要花费几个小时来获取语法,从那里开始学习库(具有良好的文档)。在学习它时,你应该尝试不要进入你通常用你列出的其他语言做的模式,因为你不会得到它动态类型的全部好处。

答案 3 :(得分:2)

FWIW,Objective C与C ++的年龄大致相同,并且在Java和C#之前已经存在了很多年。老实说,我认为C ++和Java社区可以从Objective C中学到很多东西.IMHO,NeXTSTEP API比Java库更清晰。使用Foundation和AppKit(et.al。)在Objective C中编写代码可以让您对MVC体系结构以及它们的实现方式有所了解。

无论如何,我认为学习像Objective C这样的语言是非常值得的。如果没有其他原因,只能更好地理解shaped languages like Java

答案 4 :(得分:2)

这真的取决于你的职业方向。正如其他海报所说,如果你切换到目标C我认为你会学到很多东西,并且可能会有一些乐趣(和一些痛苦)。

因为目标c非常接近C并且在某种程度上更接近C ++,所以最终你的工作能力不仅仅是客观c,而是c和C ++。

C主要用于低级编程,例如硬件设备。因此,如果您对硬件设备有特殊兴趣,可以去Objective C - > apple kernel设备驱动程序(也就是c),然后是任何硬件编程工作。

如果您只想制作网站和Windows的基本桌面应用程序,请坚持使用C#。

答案 5 :(得分:0)

我不认为Objective-C会在很长一段时间内消失,因为它是Mac OS X的核心。如果Apple应该提供更多现代语言,我相信它将是一种基于它的动态语言。 Objective-C运行时允许轻松重用现有软件和组件。这意味着可能会继续将Objective-C用于性能关键部件。就像python开发人员仍然在C中编写部分代码一样。

由于Apple控制语言,我认为语言的快速改进更有可能使其与C ++保持相关。

Objective-C将来可能会在其他平台上得到更多使用。它回到了OpenStep时代。但是,当Apple收购NeXT时,他们停止在其他平台上提供Cocoa和Objective-C。编译器仍然可以在任何地方使用,但不是框架和运行时。新任首席执行官可能比史蒂夫乔布斯更倾向于在其他地方提供ObjC。