编程的乐趣:Swift Playgrounds实战体验

发表时间: 2016-07-18 15:26

如果你已经安装了 iOS 10 公共测试版,而且使用的还是 iPad,那么你很可能已经看到苹果在 WWDC 大会上提到过的 Swift Playgrounds 应用了。Swift Playgrounds 是苹果打造类 iOS 原生开发环境的第一次尝试。iPad 的硬件已经足够快了,而 Swift 语言也进入了稳定和成熟的时期,意味着这样的工具不仅可用,而且很好用。不过需要说明的是,Swift Playgrounds 尽管使用且执行真正的 Swift 代码,它其实并不能让你制作实际的应用。

它的目的是教育,特别是针对那些从未学习过编程,但对科技事物很了解的孩子们。

系统需求和表现

除了第四代 iPad 外,Swift Playgrounds 可以在所有支持 iOS 10 的平板设备上运行,具体的支持名单为iPad Air、iPad Air 2、iPad mini2、iPad mini 3、iPad mini 4 和两款 iPad Pro。

理论上 iPad Pro 和 iPad mini 2 分别代表着支持名单中性能最强和最弱的两端,所以使用它们来分别运行 Swift Playgrounds 能够对其实际表现有一个较好的评判。该应用在 iPad Pro 上的载入时间几乎是即时的,无论是图形渲染还是代码的执行用户都不需要等待很长时间,而且画面效果十分锐利清晰。而在 iPad mini 2 上,任何加载动作都要更长一些,而且 3D 图形分辨率更低,锯齿更多。

无论你使用哪一款设备,只要应用运行起来了,可以体验到的课程都是相同的,但它在新旧不同型号的设备上的表现差异比其他大多数应用都要显著。

用户界面:为触控设计的编程

目前 Swift Playgrounds 真正的精华之处都在第一课里,它用一种游戏化的方式来教人编程。应用最吸引人的是它整个看上去就像一个简单的游戏,一个名叫 Byte 的可爱小怪兽在划分成一个个方格上来来回回,收集宝石并触发指令。你控制这个“游戏”的方式不是按键或扫动,而是输入代码。你可以全程使用键盘来操作,但苹果针对触屏上的编程体验做了许多优化,让你省去不少力气。

“这是一个专为触控设计的环境,”苹果的工具及技术产品营销部门总监说。“你真正去触摸代码,你真正与它们互动。当你要为实现循环使用‘a’的时候,你可以在代码内拖拽这个循环。你拥有一个独特的 iPad 编程体验。”

要体验 Swift Playgrounds,你最好拥有一个实体键盘,无论是 Smart Keyboard 还是别的蓝牙键盘配件都可以,不过苹果在应用中也对标准的 iOS 虚拟键盘做出了一些小修改,让它对写代码更友好。当你用手指划上去的时候,每一个键位都有一到两个替代字符,在键位上朝不同的方向划动就可以得到不同的替代字符 —— 从上往下划或斜着划,看键位具体所在的位置,这样一来你就不用频繁使用 Shift 键了。

从文本输入的角度上说,目前最有用的功能是虚拟键盘上的字词建议(如果用的是实体键盘,那么建议栏是在屏幕地步)。这些建议并不像标准的输入联想,它可以横向滚动显示更多内容,让你很快速轻易地输入想要的指令和功能,让重复输入不再那么痛苦。

上面说的这个小亮点在你刚刚学习编程的时候尤为有用,不过你暂时还不会接触到 Swift 语法中的微妙之处。你会看到许多括号和花括号,它们位于指令的前面、后面,或是将后者包裹其中,教程不会马上告诉你为什么会这样。Swift Playgrounds 拥有一个包含关键词的“代码库”,里面的“let”、“for”、“while”和“func”将在你不再编辑已有的代码,写出自己的代码时,提供一个简单易懂的参考。这个功能在你调试代码的时候也很实用,无论是需要移动什么,还是要将更多代码放到一个括号内 —— 你可以按照自己最常用的操作习惯来复制粘贴,也可以使用拖拽操作。

总的来说,苹果引入了一系列工具,实现基础信息关联,并且让你相对来说更轻易地去分享自己的编程尝试。Swift Playgrounds 为你提供了一个可供查看的术语表,还有专门的视频录制或(需要兼容的第三方应用协助)直播选项。如果是要进行远程教学,或是向课堂上的其他人展示某个学生或老师的作品,这就很方便了。

Swift Playgrounds 还为学习者们提供了硬件的完整权限 —— 所有的传感器和摄像头硬件都被允许访问,你甚至可以通过蓝牙连接外设。你虽然不能通过它来编写 App Store 应用,但仍旧能够创造出那些“真正的”应用可以做到的东西。

核心概念学习

Swift Playgrounds 非常重视让未来的程序员们了解那些能够适用于任何编程语言的整体理念,而苹果认为在这些语言中 Swift 尤其合适,因为它在设计之初就强调易学易用。

“从一开始,我们就希望 Swift 能够非常友好,使得它能真正成为你的第一个编程语言。”Hodges 说。“我们带着这个想法设计 Swift,它拥有一个编译语言所能拥有的一切性能与表现,很在为 macOS 和 iOS 制作代码产品时很明显是十分关键的,但真正重要的是我们希望 Swift 能拥有脚本语言一般的互动性和简洁性,让人们对它产生兴趣。”

Swift Playgrounds 最大的亮点是它将诸如“调试”、“函数”这样的基础概念解释得清晰易懂,而且循序渐进。短短几课的时间它就成功传达了一个重要理念 —— 正如任何程序员会告诉你的,解决一个问题很少仅有一种“正确”的方法,当然总有一些手段会更加有效率。

第一节课用简洁清晰的语言解释了和编程有关的一切概念,即使你觉得它们有些太难理解,应用也提供了大量能够帮助理解的提示。Swift Playgrounds 在这一点上拿捏得十分准确,它给予那些需要帮助的人足够的帮助,对于那些喜欢自己来的人而言又不会显得太容易。

“我们希望每个人都能够在不需要任何指导的前提下,通过这些课程,因此我们在提示中隐藏了一部分线索,因为我们希望他们在看到提示之前,自己去探索这个世界并尝试解决问题。”苹果开发者工具产品营销团队的一员 Tim Triemstra 说。“如果他们最终确实需要帮助,我们会把整个解决办法放进提示中,因为我们不希望任何人卡住。但是你不能复制粘贴这些提示,你需要确实地输入它们,因为我们都知道,有时候通过打字输入这个动作,你会更容易记住那些东西。”

尽管 Swift Playgrounds 的课程被设计成了游戏的形式,但“玩家”是不会输的,甚至于你输了也能过关,但苹果鼓励你将这些失败转化为学习的机会。即使之前的代码还在运行之中,你也可以立刻开始编写新代码,再次按下“运行我的代码”按钮,程序会立即执行新代码,而非旧代码(需要吐槽的是那个小怪兽 Byte 走路的速度太慢了,要是能加速就好了)。

苹果表示,Swift Playgrounds 的课程安排并不严谨,但他们在公测前就已经邀请了孩子们参加测试,确保他们能够跟得上。

“我们希望这款应用能有足够的灵活性,真正帮助那些学得快的学生,以及那些想要花更多一点时间的学生。”软件工程操作副总裁 Cheryl Thomas 说。“我们有一个核心目标,不希望课程太严格,归于规范化,所以这是一开始就计划去做的事情。我们和不同的教育者紧密合作,当然还有孩子们,我们自己的孩子们。我们从很早开始就得到了反馈。”

“我们起初并不确定能从 8、9 岁的孩子们那里得到什么样的回应,但结果是,现在的孩子太有悟性了,他们已经接触了科技很长时间。事实上这个应用对他们来说非常酷,他们知道自己在做些什么,能够真正用它来打造作品。”

在最初的几个课程里,苹果采用了一个相对平稳的学习曲线。你首先要按照指示输入一些基础的代码,或是编辑已有的代码。在第二课的最后(关于函数的内容),应用将让你自己去编写函数,以及包含其他函数的函数。学习的内容循序渐进,从一个课程进入到下一个的时候,你从不会有难度陡增的感觉。

考虑到 Swift Playgrounds 面向的都是年纪较小的用户,它的一些功能确实很贴心。尤其是在早期课程中,你可以看到代码在屏幕上被执行时,那一行就会高亮,让你能够清楚地知道自己写了些什么,并且如何反馈到实际程序里的(如果你使用多层函数嵌套,那就很难去追踪了,但总的来说这仍是一个对初学者很友好的功能)。

不过它还存在一些小缺点。如果你函数输入不正确,或是弄错了标点符号,那一行代码上虽然会出现小红点,但错误提示通常并不直观。稍有经验的用户能想得明白“使用了无法分辨的标识符”是什么意思,但这对一个 10 岁的孩子来说可能会很难理解。

最后,尽管 Swift Playgrounds 是为那些年纪较小的儿童所设计的,但这并不意味着你可以用它“从幼儿园抓起”。苹果在所有的课程和教学幻灯片里都使用了实际术语,孩子至少得具备基本的阅读能力和一定的词汇量才能够理解。苹果称 Swift Playgrounds 主要是面向中学生。

未来还有什么

当 iOS 10 的最终版于今年秋季到来后,苹果表示还会开放更多的课程和挑战。为了让人们能一直保持学习,它以后将持续推出新的挑战。当然了,并不是所有课程都会像 Beta 版这样简单直白了。

“我们通过这个炫酷的 3D 世界来学习 Code 1,而 Code 2 的学习将继续拓展。”Triemstra 说。“我们的想法是展示图片或学习算法,主题将会多种多样,不再局限于相同的设定。我认为这将真正展示这款应用的多才多艺,你可以在多种不同的环境下学习编程。”

如果你已经完成了所有的课程和挑战,接下来要干什么呢?当孩子们已经学习了编程和 Swift 的基础之后,接下来最合理的就是让他们编写真正的应用了。

一如它一贯的风格,苹果并不打算谈论更多 Swift Playgrounds 未来的计划。虽然人们认为该应用是要为 iPad 版的 Xcode 打基础,至少就目前而言这样的应用还不存在,你仍需要 Mac 来开发实际的应用 —— 这是笔不小的硬件投资。尽管你可以将自己在 Swift Playgrounds 上的作品转移到 Xcode 8 中,让后者变相支持前者,但从应用转移到一个完整的开发环境里并不像想象中简单。不过苹果一直在反反复复强调,Swift Playgrounds 的设计目的就是教会孩子们使用真正的 Swift 代码,这至少能够让他们在开始学习 Xcode 时能更轻松些。

“我认为许多致力于教学的环境都会试图去隐藏‘编程’这个想法本身,我们也接受了这个概念。”Hodges 说。“你在这儿能够学到的东西将来会变成你选择去做的事情。”

Swift Playgrounds 似乎有了一个理想的开局 —— 这是一个能够教导孩子和初学者编程,尤其是 Swift 编程整体基础的良好渠道 —— 但它更像是苹果接下来的远征的第一步,最后将走向用 iOS 设备来开发 iOS 应用。即使你从没想过去用它,Swift Playgrounds 也值得关注。甚至于你已经不再是孩子,这款应用都值得一试 —— 你或许仍然能够学到点什么。