WWDC2014观感兼回答iOS初学者的困惑_最新动态_新闻资讯_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 新闻资讯 > 最新动态 > WWDC2014观感兼回答iOS初学者的困惑

WWDC2014观感兼回答iOS初学者的困惑

 2014/6/13 11:24:35    程序员俱乐部  我要评论(0)
  • 摘要:WWDC都开完一周了,我也迟迟没有拿出自己的观点。不是我不想第一时间来个评测之类的,实在是这次WWDC上值得关注的内容太多,以至于我原定在世界杯前看完WWDCsession中自己感兴趣视频的计划彻底宣告破产。现在有一个非常严肃的问题摆在我的面前:在接下来的日子里,难不成我要一个窗口看世界杯比赛,一个窗口看WWDC视频?这还能愉快的玩耍吗?对于广大程序猿来说,2014年6月3日的WWDC上最令人激动的不是一众刷机党期待已久的iOS8,不是要扁平到底与iOS合体的Yosemite
  • 标签:回答 iOS 困惑
class="topic_img" alt=""/>

  WWDC 都开完一周了,我也迟迟没有拿出自己的观点。不是我不想第一时间来个评测之类的,实在是这次 WWDC 上值得关注的内容太多,以至于我原定在世界杯前看完 WWDC session 中自己感兴趣视频的计划彻底宣告破产。

  现在有一个非常严肃的问题摆在我的面前:在接下来的日子里,难不成我要一个窗口看世界杯比赛,一个窗口看 WWDC 视频?这还能愉快的玩耍吗?

  对于广大程序猿来说,2014 年 6 月 3 日的 WWDC 上最令人激动的不是一众刷机党期待已久的 iOS8,不是要扁平到底与 iOS 合体的 Yosemite,不是让可穿戴设备创业者们津津乐道的 Health Kit 和 Home Kit,当然更不是 Cook 大厨或者英俊潇洒的 VP Craig Federighi,而是 Swift(雨燕)这个听起来颇有浪漫主义色彩的编程语言。我其实很想和老板们坐在酒店的沙发上,一边举着高脚杯品尝红酒一边探讨如何在可穿戴设备上整合 Health Kit、Home Kit 这样高大上的话题,但发现最后还是不由自主的窝在电脑前看一大帮知名非知名程序猿就该不该学 Swift 这个蛋疼的话题斗得死去活来。

  Swift 发布当日,苦逼程序猿们如同打了鸡血一样的讨论这门新生语言,当然更少不了的是和当前各种编程语言的对比和吐槽。有人说 iOS 开发者继续死守 Objective-C 不学 Swift 就等同于自宫了,有人说 Swift 是个畸形的怪物根本没有苹果说的那么好,有人说苹果从此要一统天下拳打 Android 脚踢 WP,也有人说苹果从此日暮西山忆往昔峥嵘岁月荣。。。

  作为一个苹果粉丝,我也看了 6 月 3 日的 keynote,虽然无缘在现场为苹果雄起,但个人认为 WWDC 2014 是自 2010 年之后最成功的一次开发者大会。没有鸡肋的硬件升级,没有显摆零售店又新开了几家,即便是对 Beat30 亿美刀的巨额收购,也只是靠 Craig 在 Mac 上给 Dr.Dre 打了个电话提醒大家 Dre 博士已然是苹果的自家人,就此轻轻飘过,不带走一片云。WWDC 2014 是一个百分百的开发者大会,Cook 大厨特意强调他在看开发者的邮件反馈,而整个 keynote 中宣布了 iOS 8 的众多开放之处,从第三方输入法到 Touch Id,从可以说完全就是 Of the Developer, By the Developer,For the Developer。看完之后,我忍不住想高唱一曲 Viva la Apple(我不懂西班牙语,生凑的)。

  苹果,至少这次在软件系统上实在干的漂亮。虽然对广大消费者来说苹果是一个设计消费类电子产品的公司,但连乔帮主都曾经说过,苹果从本质上来说其实是一家软件公司。只是,People who are really serious about software should make their own hardware.

  我想对于开发者来说,无论是打脸的吐槽还是跪舔的恭维都意义不大,接下来只谈两个话题。

  一个是针对正在搞 iOS 开发的,这次 WWDC 上有哪些东西对我们开发者真正有用,而另一个是针对初学者的,到底该不该学 Swift (或是该不该学 Objective-C)。

  一、哪些东西是 iOS 开发者需要特别关注的。

  对于 iOS 开发者来说,我认为除了要看 6 月 3 号的那场 Keynote,其实更需要看 session 部分的视频,特别是以下几个视频是一定要看的:https://developer.apple.com/videos/wwdc/2014/

  1、Platforms State of the Union

  这个视频的重要性仅次于 Keynote,如果说 Keynote 多少还有点照顾普通大众的赶脚,那么 Platforms State of the Union 的内容其实就是开发者定制版的 Keynote。里面涵盖了所有苹果认为非常重要的更新和重大的变化,几乎上看完 Keynote 和这个视频也就自然明白了第一个问题的答案。

  2、Introducing CloudKit

  iCloud 目前在消费者市场谈不上成功,对于开发者来说始终是一个鸡肋的功能。但是 CloudKit 显然野心很大,试图通过向前端开发者提供类似 BAAS 的服务而将 iOS 开发生态系统的闭环完全掌握在自己的手里。大家都知道传统的 iOS 开发(包括 Android 开发)其实是分成两部分的,一部分是客户端开发,一部分是服务器端(或者说后台)开发。即便是一个非常有天赋的 iOS 开发者,要同时精通客户端开发和服务器端开发都是不太现实的,至少不是最高效的。因为服务器端的开发往往还是依赖于 java,PHP,Node.js,Python 等等,在增加了开发人员成本的同时,也给 Android 留下了可乘之机。

  我想苹果之所以提供强大的 CloudKit(因为时间原因,我对于 CloudKit 还没有做深入的研究,这里的观点可能有误),最重要的意图还是形成 iOS 开发生态系统的闭环。也就是说把客户端开发和服务器端(网络,数据库等)合二为一,通过强大的功能和便利的服务进一步降低 iOS 开发的门槛(包括引入 Swift 编程语言也是这个目的)。CloudKit 不是为了抢服务器端开发者的后台,而是为了把开发者牢牢绑定在 iOS 的战车上,同时因为有 CloudKit,那么第三方开发者的各种数据也都一并收入了苹果的帐下(包括 Health Kit 和 Home Kit 也是这个目的),后面要搞搞真正的大数据云计算就不必再打广告了。

  通过 CloudKit, 我看到了一个野心勃勃的苹果和一个力图完全摆脱乔帮主阴影的 Cook 大厨正在角落里面偷笑。

  3、Introducing HealthKit

  因为最近在研究和了解互联网健康医疗领域,因此对于 HealthKit 我个人是高度的重视。

  苹果发布了 Health 应用和 Health Kit 开发工具包,虽然没有提到传闻中的 iWatch,但外星人都知道苹果对健康可穿戴设备谋划已久,蓄势待发。

  Health Kit 可以做三件非常重要的事情:

  1. 从其它应用中获取和健康相关的数据
  2. 通过自己的应用保存和读取数据到云端
  3. 进行查询和统计分析

  具体来说:

  1. 向 HKHealthStore 中保存数据
  2. 从 HKHealthStore 中读取数据
  3. 使?用 HKQuery 和 HKSampleQuery 查询数据
  4. 使?用 HKObserverQuery 实时监督数据库中的相关数据变化 
  5. 使?HKAnchoredObjectQuery 来限制返回的数据范围(返回新添加的对象) 
  6. 使用 HKStatistics 进?行简单的统计分析(Sum 求和,Min 最?小,Max 最?大,Average 平均数) 
  7. 使用 HKStatisticsQuery 执?行统计查询 
  8. 使用 HKStatisticsCollection?生成基于时间段的统计图表(借助 AnchorDate) 
  9. 使用 HKStatisticsCollectionQuery 执?行统计图表的操作

  在 HealthKit 推出之前,健康管理类 APP 从功能上看主要分为以下几类:

  1. 收集数据(通过手机传感器及可穿戴设备)
  2. 分析数据并提供统计分析结果
  3. 提供在线健康管理和咨询服务
  4. 搭建医患平台(如春雨医生)
  5. 搭建用户社区(某种特定疾病的患者,或者减肥,瑜伽等)

  在 HealthKit 推出后,特别是未来的 iWatch 推出后,我个人认为只提供(1)和(2)功能的产品基本上没有太大的发展潜力。健康管理类 APP 只有真正走 O2O 之路才可能有前途。

  4、Introducing HomeKit

  说到这儿,我觉得苹果的野心太大了。智能家居是又一个庞大的蓝海市场,和车联网,互联网医疗,在线教育是当前互联网/移动互联网最大的四个蓝海市场之一。

  苹果对于 Google 收购 Nest 看似没有反应,但内心绝对不会轻敌,HomeKit 其实是对这个收购行为的反戈一击。

  智能家居,车联网,互联网医疗,在线教育作为具有刚需的蓝海市场为何总是雷声大雨点小,其实最根本的原因是因为没有形成一个类似 iOS 开发这一可以自循环自生长的生态系统。而要打造这样的生态系统和完整价值链,绝逼不是深圳华强北一个小厂商开个模具搞个可穿戴设备或者智能设备就可以搞定的,即便是小米这种靠互联网思维异军突起的公司,至少在目前也不具备这样的领袖风范。

  是的,我也买了小米路由器,但一个孤立的设备和靠 HomeKit 整合在一起的智能家居系统可以相提并论吗?

  那么接下来要看什么?当然是要看 Android 那边会出怎样的应对策略。毕竟苹果对高端市场,Android 对中低端市场已经是大家默认的事实了。

  现在苹果针对第三方开发者开放如此多的接口,其用心实在是太明显了。不过这并不是坏事,只有靠领袖公司打造一个完善的生态系统才能带动整个产业链

  5、Introduction to Swift

  好吧,为什么苹果要推出一款全新的编程语言?是苹果工程师世界杯间歇期闲得蛋疼?还是 Cook 大厨对外界评论自己没有创新精神非常恼火?

  我不是 Cook,猜不到他的真实想法,但个人觉得 Swift 的发布和其它举措一样,都是在打造一个”One Apple”战略。

  开发者不是觉得 Objective-C 上手太难吗?大家不是觉得 Objective-C 的方框语法难看难写得一逼吗?那么我们搞一个比 java 还上手容易,性能比 java 还强的不是一逼的雨燕,android 开发者还有什么好得瑟的。

  除了这个,还可以看:

  • Intermediate Swift
  • Advanced Swift
  • Integrating Swift with Objective-C
  • Swift Playgrounds
  • Swift Interoperability in Depth

  6、游戏相关的几个视频

  我想在游戏部分最让大家震惊的就是 Zen Garden 的 Demo。当漫天的樱花花瓣迎风飘洒时,我可以想象台下的游戏开发者眼镜碎了一地,因为我就不小心把眼镜摔地上了。

  性能超越 OpenGL ES 的 Metal 技术其实对于一般开发者来说无需太过在意,毕竟这些是游戏引擎开发商才需要关注的,而 Unity,Unreal,Crytek 等老牌引擎都第一时间支持了 Metal,这是准备立马出 Apple TV 横扫 PS4 和 Xbox One 的节奏吗?

  因为最近对 Oculus Rift 产生了浓厚的兴趣,其实我最想知道的是,如果有如此强大的性能,以后 Oculus Rift 是不是不需要配个强悍的 PC/MAC 才能跑,而是可以随身活动了。如果是这样的话,虚拟现实的很多困扰是不是也可以真正得到解决?(身体不需要固定在椅子上)。不过应该还是在室内吧,不然估计跑出去掉水里了都还以为自己在太空中战斗呢。

  对于为 casual game 准备的 SpriteKit 和 SceneKit,原谅我真的不是很看好。在游戏开发的世界里面,第三方游戏开发引擎(cocos2d-x,unity3d,unreal 等)才是真正贴心的工具。

  如果说应用还可能只出 iOS 版的话,那么几乎所有的游戏都希望是跨平台的,能赚钱还嫌用户多?

  个人判断,这两货对于主流的移动游戏引擎(cocos2d-x,unity3d,再加上个希望主流的 unreal)几乎不会有大的影响。

  相关视频清单(原谅我在世界杯前还是没看完):

  • What’s New in SceneKit
  • What’s New in SpriteKit
  • Working with Metal:OverView
  • Working with Metal: Advanced
  • Working with Metal: Fundamentals
  • Best Practices for Building SpriteKit Games
  • Building a Game with SceneKit
  • Designing for Game Controllers

  以上就是这次 WWDC 上需要关注的一些重点内容。

  可以说,只要开发者愿意弃暗投明(从 Android 转投苹果或者从双修者转成专修者),苹果愿意为你提供一切。

  编程语言太难学?我们提供了 Swift,上手堪比 javascript,性能仅次于C语言远超 java 和众脚本语言。亲,满意的话给个好评吧。Cook 大厨在等着收你的邮件呢。

  想搞一个自己的输入法?好吧,第三方开发者现在可以光明正大的在不越狱的 iOS 设备上提供输入法了。

  想靠高大上的指纹识别进行验证解锁?好吧,给你。Keychain and Authentication with Touch ID

  想调用其它应用完成某些功能?好吧,给你。

  想要强大的游戏性能?好吧,我们有比 OpenGL ES 还快的 Metal,还有 NB 的 WebGL

  想要游戏引擎?好吧,我们有 SpriteKit 和 ScreenKit。

  好了,第一个问题回答完毕,现在来回答第二个问题。

  二、对于 iOS 开发初学者,究竟是要学 Objective-C 还是 Swift?

  在提供自己的答案之前,我首先要说明,不许人身攻击。如果你要打脸,我不反对,不过打脸一次要给一张毛爷爷,这样的话欢迎大家多多打脸~

  首先问初学者一个问题,你今年多大了?你已经上班了吗?如果没有,请问你在哪儿上学?以后打算搞学术还是去公司打工,甚至是自己创业?请问你在天朝吗?你是富二代或者有一个 NB 的干爹吗......

  这 TMD 什么问题,个人隐私我会告诉你?这个跟学什么语言有毛线关系?

  个人认为,有很大的关系。

  现在利用产品经理常用的用户画像来说明下我的答案:

  1. 你是一个 90 后高富帅,出生时就含着金钥匙,老爹老妈开奔驰宝马法拉利送你去小学中学,剩下的我不必展开了,总之你是富二代或者是富二代的亲戚,不差钱。

if (你是富二代){

  choice = “Swift”

}

  原因:

  Swift 代表未来,Objective-C 代表现在。

  既然你不必为现在的小钱忧虑,而根据苹果的尿性必然会大力支持 Swift,那么何不一开始就从 Swift 开始?

  2. 你是一个 90 后屌丝,毕业两年了,之前一直在搞 java 开发,勉强混成了北上广深的小白领,看到现在 iOS 开发非常火热,想转行搞这个。老爹老妈都是普通工薪族,没钱帮你买房,未来一片混沌。

  建议:

  先上 Objective-C,上手后再学 Swift。

if (你卡里的钱少于 500 万 && 现在急着换一个工作){

  choice = “Objective-C”;

}

  原因:

  Swift 代表未来,Objective-C 代表现在。

  一个新语言的成熟需要至少两年时间,而在这两年的时间里面,你要干活吃饭。可能你要开发全新的项目,也可能你要维护之前的项目,但那些老鸟们(其实从 08 年算起最老也才勉勉强强 6 年经验,谁敢说自己有 6 年以上 iOS 开发经验谁 TMD 是金正恩他爹)不会因为你会 Swift 就会放过你,至少1-2 年内不会。

  3. 你是一个屌丝 90 后,明年即将从一个二类院校的计算机专业(或者是跟软件开发完全不沾边的广告设计专业)毕业,想以后从事高大上的 iOS 开发,不知道该学什么语言。

  建议:

  先上 Swift,上手后也要学 Objective-C

if (你卡里的钱少于 500 万 && 马上要毕业了){

  firstChoice = “Swift”;

  secondChoice= “Objective-C”;

}

  原因:

  Swift 代表未来,Objective-C 代表现在。

  Swift 上手快,可以通过 Swift 迅速入门,但也要学 Objective-C。

  4. 你是一个 95 后,还要过几年毕业。

  好吧,不用描述后面的情况了。

if (你这两年不急着找工作){

  choice = “Swift”

}

  5. 你已经在搞 iOS 开发了。

  好吧,

if (你是一个苦逼的 iOS 开发者){

  choice = “什么都要学(不光是 Swift 和 Objective-C 开发语言)”

}

  其实第 5 个选项的答案同时也适用于前 4 个选项。

  如果情景式的答案让大家看得混迷糊,这里还是用逻辑描述的方式吧。

  1、iOS 开发入门不等于 Swift 或 Objective-C 入门

  不管是 Swift 还是 Objective-C,都只是 iOS 原生应用开发的一种编程语言而已。

  注意,这里强调的是原生应用开发,因为我们还有其它开发方式,比如 PhoneGap(HTML5,javascript 语言),比如 Xamrian(使用 C# 语言),甚至还有 RubyMotion(使用 Ruby 语言)。

  而且除了应用开发,我们还有游戏开发,而 iOS 游戏开发极少有人用 native 或者 SpriteKit,90% 甚至更多的游戏开发商采用的是 cocos2d-x(c++,javascript,lua 语言),Unity3D(C#,javascript)引擎。

  因此,当你说自己想要学 iOS 开发的时候,首先要问自己,你想开发一个什么样的东西。

  如果是游戏,那么要学习的是游戏引擎,相关开发语言,甚至还有 OpenGL ES。

  如果是应用,那么要看是想开发原生应用(native)还是混合式应用(hybrid),当然目前来说绝大多数的开发商还是采用 native 开发。

  如果是开发原生应用,才会涉及到选择 Swift 还是 Objective-C 的问题。

  而且学会某种编程语言只是 iOS 开发的最初一步,后面还有大量的东西要学,可以参考我的文章“一个 iOS 开发者的修真之路”,这里就不再赘述了。

  2、你打算何时进入 iOS 开发的正式工作

  如果急着找工作或者换工作(两年内都算急),那么没话说,你必须得先学 Objective-C。当然 Swift 还是要学,不过不必这么急。

  首先之前所有的项目都是 Objective-C 开发的,大量的第三方框架,开源项目和技术支持都是针对 Objective-C 的。

  如果是新的创业型公司,想快速切入 iOS 开发领域,那么有可能会招聘 Swift 程序猿。

  但是对于有一定规模的公司来说,至少在1-2 年的时间里面,肯定是 objective-C。

  如果是企业级应用开发,更加不用说,肯定是短期内不会切换到 Swift 的。

  如果目前不急着找工作(两年内),但又对 iOS 开发感兴趣,那么就直接上 Swift 吧。

  3、一专多能,与时俱进

  只要你开始进入程序猿的行业,就要不停的学习新的知识。在 Jony Ive 的传记中提到他当年学习工业设计的T字学习法,就是所谓一专多能,博采众长。

  个人认为,一个程序猿至少要掌握三类编程语言,精通其中的1-2 种。

  1、系统级语言

  • C,C++

  2. 普适性语言

  • Java, C#,Objective-C

  3. 脚本语言

  • javascript,PHP,Python,Ruby,Perl

  Swift 语言目前还不好分类,姑且可以放在第二类。

  学习系统级语言可以了解计算机一些相对底层和内核的东西,即便不以此为主要方向,但一定要有所了解。

  学习普适性语言,是因为干活最常用的就是这些语言。

  学习脚本语言,是因为轻量级开发用的是这些语言。

  希望以上内容回答了之前提到的两个问题:

1. WWDC 上我们需要关注哪些东西?

2. iOS 初学入门者应该选择哪个语言(Swift 还是 Objective-C)?

  顺便说一下,我最喜欢的球队是意大利队和阿根廷队。两只球队都是蓝白队服,一个是极致的防守,一个是极致的进攻。意大利队我最喜欢的球员是巴乔,阿根廷队我最喜欢的球员是巴蒂,可惜都不是现在的球员。

WWDC2014 观感兼回答 iOS 初学者的困惑

WWDC2014 观感兼回答 iOS 初学者的困惑

  顺便也说一下,我个人最喜欢的编程语言是C语言和 javascript 语言,一个是极致的运行性能,一个是极致的开发效率。好吧,这个话题不敢继续了,无论是对所支持球队的选择还是对所喜爱编程语言的选择,都是最容易遭到大家攻击的,我要去看比赛了呢~

发表评论
用户名: 匿名