编程哪个更容易:Android 应用还是 iOS 应用?

30

我想提高我的编程技能,所以计划编写一个移动应用程序。需要选择Apple的iOS或Google的Android。

我的背景: 我在大学中已经学过 .Net、C/C++、Python 和 PHP 的基本编程知识,因此掌握了面向对象编程(OOP)的概念。就我的技能水平而言,我只是了解一些概念和基本语法。但如果要求编写复杂的应用程序,则做不到 :(

因此,我决定磨练自己的技能,并想知道哪个更易于学习,适合初学者。

A)iOS 使用 Objective C B)Android 使用 Java

我想根据难度水平来做出决定。


1
很大程度上取决于你想做什么。不同的平台上有各种各样的事情更“容易”。 - theChrisKent
你也可以查看以下链接,以获取开发者的视角:http://whereoscope.wordpress.com/2010/12/07/android-vs-ios-a-developers-perspective/ http://www.androidpolice.com/2010/11/14/developer-interview-series-tweetdeck-for-androids-max-howell/ - Jean Hominal
我想知道自2010年以来发生了什么变化。 - Mārtiņš Briedis
9个回答

54

我已经使用iOS开发了一年多,Android开发约六个月。两者都有各自的挑战,但最后,我认为在相同条件下,iOS更容易学习,原因如下:

1)界面生成器 - 使用iOS进行GUI布局更容易,因为您可以在IB中布置它,然后在代码中链接到对象。这样可以节省很多时间。Android最接近的是DroidDraw,它不能直接链接到代码,并且只会在布局XML文件中生成草图。虽然比编程创建视图好,但不及IB的简便性和强大性。

2)API - Apple的API已经存在很长时间并得到了进一步开发。Android肯定正在追赶,但在许多领域,尤其是移动API方面,Apple的API在可用性和文档方面更好。许多低级别的事情可以由高级别的API完成,这有助于降低入门门槛。

3)硬件和操作系统碎片化(或缺失) - Apple会尽力推动用户群体升级到最新的iOS版本,该版本同时适用于所有形态因素(唯一的例外是iPad一段时间被困在3.2版)。您可以非常安全地针对iPhone硬件平台,并通过极少的额外工作实现与iTouch和iPad的跨平台兼容性。Android有大量设备,其中许多具有特定于设备的操作系统修改,这会在测试时引起很多头痛。 还有不同的屏幕大小和分辨率需要处理。

我想强调的是我喜欢出于不同原因使用两个平台,但从学习难度的角度来看,我得投票给iOS。 当然,前提是相同条件下。Objective-C语法可能很难适应,如果您已经熟悉Java,则一些基本的Objective-C概念将是新的,可能需要一些时间适应,并且还需要重新了解内存管理,因为没有像Java中那样的垃圾收集器。另外,正如已经提到的,如果您没有拥有(或无法访问)Mac,则无法为iOS编程。


18

这两者都同样复杂,所以最终取决于你熟悉哪个。

仅基于你已知的内容来判断,Android开发会感觉更容易。其语法将接近你已经认识的东西。

Objective-C具有与你在帖子中列出的任何内容都不同的面向对象语法。它需要一点时间适应。


8
由于Objective-C的使用范围非常有限,因此Objective-C技能集不太适用于其他类型的应用程序(非苹果平台)。 - Robin
5
哦?如果您了解Objective-C,那么您肯定了解C并且很可能学习了一些C ++。您也会了解Java、SmallTalk、Python和Ruby的对象模型。Objective-C技能非常易于转移。 - bbum
6
谢谢,我决定选择 Android,原因如下: 1)从长远来看,我预计 Android 设备将超过全球 iOS 设备数量。 2)这也给了我一个很好的借口去学习 Java。Java 有很多样板文件,正是因为这个原因我一直在回避它。 3)我拥有一台 Android 设备,所以对这个平台更加熟悉。祝我好运! - CuriousMind
我已经用过C,C ++,Java,C#编程。 在我看来,Objective-C只有一个不必要的怪异之处需要时间适应:消息风格语法。你需要写[object method:parameter]而不是object.method(parameter)。此外,我的观点是内存管理是这种语言最大的弱点,因为您需要手动处理;尽管新的ARC功能使其更容易。除此之外,它就是具有面向对象添加功能的纯C语言。 现在我真的很喜欢消息风格特性,因为它提供了命名参数,我认为非常酷和有用。 - Bogdan Alexandru

16

我之前一直只从事网页开发,稍微接触过.NET(C# 和 VB),但我的雇主想要在iPhone和Android上发布应用,而另一个开发者忙于一个重大项目,所以我被安排学习如何开发iOS和Android应用(当时是iPhone SDK)。

我先从iOS开始。我读了几本书,下载了一些苹果开发者文档中的样例项目。我花了大约2-3周时间才能稍微熟练地进行开发。

在为iOS开发了一个月后,我的雇主希望我把它移植到Android上。因此,我做了与iOS类似的过程,读了几本书,下载了一些样例项目。但直到很长一段时间后,我才开始感到熟悉Android。一开始我完全不理解它。

现在,在为两个平台开发了一年后,我更喜欢iOS。我认为它们的文档非常棒,而且我发现在这个平台上编写代码很有趣。

我讨厌Android模拟器,速度太慢了,只能在真实设备上测试。我觉得在该平台上编程很麻烦。我认为在两个设备上开发一个应用大约需要同样的时间,但我更喜欢在iOS上进行开发。我觉得它就是为我而生的。


1
基本上和我经历的一样,我已经进入Android领域几天了,开始感受到你上面描述的情况。相比iOS(对所允许做的事情限制较少),Android是一个更强大的平台,但是iOS的开发要精致得多。Android就像一个曾经有很多人涉足的饼干罐子,到处都是面包屑。 我相信我会喜欢两个平台的不同特点,但从经验来看,objective-c非常灵活。 - Ivan Dossev

9

我觉得你问错了问题。编程语言对于开发难度的影响很小。API和文档质量可以有很大的影响。如果你从未做过GUI,我建议先从非移动端开始,因为这会使它更加困难。


4
部分正确,但你很难让我相信编写Objective-C比Java/C#更容易。 - Erik Kerber
3
嗯,忘掉保守的选择。直接着手写一个移动应用程序。首先尝试安卓平台,因为起步较容易(通常需要Mac才能做iOS开发),但在任一平台上投入时间都将是有回报的。 - Max

2
我已经写了几个月的安卓应用程序,然后转而创建相同的iPhone应用程序。我很快开始喜欢iPhone开发的许多方面,相对于安卓而言,核心数据非常棒,保留/传递复杂数据非常容易。
虽然两个平台存在许多不同,这些差异可能使得某一个平台更容易/更难,但这完全取决于您正在制作什么类型的应用程序。有些项目在iOS平台上编写可能更容易,而其他项目则在安卓上更容易。
总体而言,我学习iOS开发比学习安卓开发更困难。

2
我建议您从谷歌的神奇App Inventor开始,这是制作移动应用程序最简单的方法。
使用App Inventor时,您无需编写代码,而是通过可视化设计应用程序的外观并使用块来指定应用程序的行为。它不需要任何编程知识。
您可以在这里找到更多信息。

尝试过App Inventor,很不错,但它应该少一些愚蠢。也就是说,应该有一种方法可以将App Inventor应用程序“导出”到Eclipse中。如果他们添加了这个功能,那么我就会购买! - CuriousMind

2
如果你懂得 .Net、C/C++、Python 和 PHP,相比 Objective-C,学习 Java/Android 会容易上百万倍。尽管 IOS API 很好用,但是 Objective-C 和其他主流编程语言完全不同,如果你已经习惯了 .Net、Java 或 C++,那么学 Objective-C 会很痛苦。

1
我不同意这个观点。是的,Java有点更容易,但绝对不是“一百万倍”。Objective-C使用与C++相同的面向对象原则,并将C作为子集,因此它绝对不是“完全不同”的。在Objective-C中最尴尬的事情是方法调用的语法,但你习惯了就好了。Java的主要优点是垃圾回收和“一切皆为对象”的概念。但正如其他人所说,更重要的是看API的差异。 - fishinear

1

两者都会同样困难,但只是以不同的方式。程序的易用性通常取决于程序员在使程序“易于使用”方面的努力。

如果您无法编写复杂的应用程序,很可能与您的编码技能无关,而与您的软件开发技能有很大关系。虽然这与您的问题不完全相关,但我建议您加强最薄弱的技能。

编程可能只占整个项目的最多20%。其余部分是描述要解决的问题(即收集需求),创建简化解决方案块的架构和测试。如果您可以编码,但无法处理大型或复杂的项目,那是因为您需要在每个领域中发展自己的技能(无需成为专家,但这有帮助),并且您需要知道它们如何协同工作。

一旦您将知识扩展到整个过程,您会发现大型项目看起来只是很多工作,但每个“下一个”步骤都相当简单。有很多方法可以实现所有这些项目,我推荐的其中一种是OpenUP


OpenUP看起来很有趣,但它只适用于单个开发者吗?我通常会在Excel表格中维护一个任务清单,这很简单并且比遵循复杂的流程更省时间。 - CuriousMind
对于单个开发人员来说,很难做到除了牛仔编码之外的任何事情;然而,通过纪律性,您可以使用OpenUP。其好处将类似于拥有完整开发计划的好处。成本与完整项目团队的同样大(由一个人承担)。如果您个人能够不成为可以通过完整流程检测和引导的问题类型的受害者(这应该会导致更多的问题/解决方案检查),那么您不会获得比牛仔编码更多的开销。 - Edwin Buck

1

我会编写两种语言的代码,并且经过了很多练习,我认为你可以用Objective-C语言做很多事情,但是你应该预先了解C语言,所以如果你是一个“新手”程序员,我更喜欢Java

;-)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接