这是我们的第二篇文章。
注:此文章主要指iPadOS和macOS平台的图形化界面应用Swift Playgrounds,非Xcode内无图形化的playground。
近几年“低代码”概念火热,其全称为“Low-Code Development Platform(以下简称LCDP)”,展示方式形如搭积木似的可视化编程,通过可视化、拖拽等行为将逻辑组装而成,如微软的Power Platform、钉钉中的功能等,各式低代码平台应运诞生。
同时,与“低代码”的形态颇为近似的“青少年编程”产品也应运而生,同时关于“技术背景”、“付费阅读”,搜索热度也日趋平稳。
潮流背后,具有几乎完美软硬件生态的Apple也抓住了这一机遇,于2014年6月推出了可视化编程产品“Swift Playgrounds"(以下简称“Playgrounds”)。
“游戏化”编程
屏幕左侧是实例的文字介绍,右侧是使用建模软件的操作界面,主角是byte。
第一个事例操作的 Playgrounds 主角Byte,在编程语言中直译为:字节。
Apple取名一向比较有特色,所有的电子产品和系统都以i开头,且iWork套件的“Pages、Numbers、Keynote”,直译就是“多个页码,多个数字,提案”,"字节"也不例外——是计算机技术用于计量存储容量的计量单位之一。
青少年对于图像的敏感度大于文字,故设置了“Byte”与可视化的环境,使用编程命令让主角动起来,可以显著提升他们对于编程的兴趣。
Playgrounds,为我们生动形象的阐述了编程的入门、为青少年展现一款编程入门的范本:如何让青少年接触编程,热爱编程,以及界面拥有哪些要素,可以拥有哪些要素,无需哪些要素。
Playgrounds(上)和Xcode(下)的界面对比
由图可知,Playgrounds 与 Xcode 较为显著的区别是以下几点:
前者(Playgrounds)代码完全是在屏幕最底部的候选词中进行备选,同时也具备键盘输入功能:一时间无法寻找所需代码之时(在笔记中可以自行输入想要的指令)。
而后者(Xcode)作为Apple的生态开发独当一面的程度上与专业性上来看,首先完备的开始菜单可见一斑:无论是 Cocoa 框架,还是AR应用,Xcode 都可以直接开发;Xcode 有拖放控件的 Storyboard,任意增加各种控件,而 Playgrounds 仅拥有写好的互动界面“调试”功能与断点调试,Playground 只有简单的红点提示,点击后则会弹出具体的错误提示……
不过,Playgrounds很巧妙的将繁杂的开发文档隐藏了起来,需要的时候可以打开查看:
以及需要添加的内容直接通过+号展现,无疑减轻了用户在编程时候的压力:
笔者北里熊曾在某产品平台中提出过一个问题:如何评价微信Web开发工具这个产品?会是国内IDE的“开创”性产品么?
是在微信小程序编辑器推出之时,与专业的 Xcode 和 Android Studio 进行的对比。
诚然,笔者认为微信小程序仅仅是对于开发环境的功能与设计上的比较,相对于Playground这类游戏化的模拟开发,还是有所区别的。
“简约版的”Xcode与“上瘾”机制
同样是Apple产品,Playgrounds 保留了文字介绍、及时反馈的功能,轻点“运行我的代码”,主角会完成相应的任务,到达目的地。这种关卡的设计带有一定的挑战性,可爱的主角的各种动作同时也提升了趣味性,这样游戏化的设计可以使用户“上瘾”,学习编程根本停不下来。
通过上瘾模型理解Playgrounds
在上瘾模型中,美国学者 Nir Eyal 提出:从触发、行动、多变的酬赏再到投入。
这样一个模型,我们也可以运用在这个软件中,通过这个模型,更好地思考这个软件。
在软件的界面中,左侧为每一个关卡的详细介绍,右侧则为所熟悉的有趣的图形化界面。
1. 触发和行动
触发,即为文案,通过文字与动画的描述令用户开始第一个行为:阅读文字,输入编程指令:
下图中展示了 Apple 对于触发的理解,也深知用户可能会进行潜在的失败:
别担心第一次不会成功,把这当成一次试验的机会!
行动,则是用户开始尝试。
在行动中,可以点按图形化界面左下方的“播放”按钮,测试方法的顺序与逻辑是否行得通。
2. 多变的酬赏
随着游戏进度与难度的不断加深,用户也在游戏中看到更多的“酬劳”:
从起初最一般的钻石collectGem(),再到开关toggleSwitch(),让主角Byte走到开关上则会点亮开关……
这一切都需要行动。
例如《传奇》游戏一样,被攻击的对手的血条与伤害值出现在用户面前,渐渐地会让用户继续行动。
Playgrounds的行动,则是让用户选择代码(函数/方法)。
每一个练习的背后,每当用户完成一个练习,图形界面上都会提示“激励”的语句,从而进行更深入更加难的关卡。
3. 投入
更多的投入带来更多的酬赏,让用户循环往复这一过程,享受编程的乐趣,这也正是产品开发中必须要倾注其力的关键步骤——持续投入。
同时,用户会为目前的事情印象深刻,即使被打断,也会因为尚未完成的事情而耿耿于怀,这也是达成了“上瘾模型”的另一个效应:蔡格尼克记忆效应。当其他的事情结束之时,这个“未完成事件”的印象会比完成的印象更加深刻,从而继续去解决,例如笔者就会一直记着产品开发中未解决的bug。
在编程软件上“上瘾”,无非是专业程序开发者在创造自己的产品,亦或是青少年让自己的主角byte、blu有越来越多的动作,设置更多的舞者在iPad或是Mac上出现,这一切在 Playgrounds 成为可能。
网上一直很火的一句话是:世界是由懒人推动的。
低代码平台加简单的注释与创造,也更加的成就了不善于精通代码的用户,将自己的想法跃然电子屏幕上,或许可以创造出更加精彩的东西。
从更新日志看发展迭代
说回产品。
笔者使用 iPad 进行体验,继承了一贯Apple应用设计规则的:
软件开始即弹出新功能介绍,简洁的原生应用的 icon……依旧很Apple。
它在最近的一次更新中,更新了以下功能,更加符合“低代码”用户需求:
第三方订阅功能,可以查看世界各地的人们(机构)撰写的Playground。
详细文档,关于Swift与iOS的详细参考。
开放的产品心态,进阶的编程理念
更多Playground
让第三方用户甚至是机构通过这个平台,展现自己的资源与能力。
可以自由编写Playground,同时上传至Apple,上传者可以根据下载量得知Playground的用户量。于是"无意间",这个Playground变成了平台,一个让展示第三方机构能力的“入门编程平台”。
Playgrounds的下载界面也很符合苹果的原生系统交互
编程,学无止境
无论是游戏化还是自学编程书籍或者是视频,想更近一步,必须要接触诸如let var之类的,这就必须考验开发者的“讲故事”和能力与功底了。
每一个Playgrounds的故事设定和主角的名称与轨迹,都在考验制作公司对于编程的理解,对于故事的理解,以及对于让用户操作的逻辑。
这在Playgrounds的blu中,得到很好的体现。
正如书籍《芒果街上的小屋》 中《四颗细瘦的树》里说:
假如有一棵忘记了它存在的理由,它们就全都会像玻璃瓶里的郁金香一样耷拉下来,手挽着手。坚持,坚持,坚持。树儿在我睡着的时候说。它们教会人。
当我太悲伤太瘦弱无法坚持再坚持的时,当我如此渺小却要对抗这么多砖块的时候,我就会看着树。当街上没有别的东西可看的时。不畏水泥仍在生长的四棵。伸展伸展从不忘记伸展的四棵。惟一的理由是存在存在的四棵。
那样的故事性。
对于开发者来说,指导用户对于编程的学习,目前“图形化界面”的学习方式只是引导,在每天不断发展且进步的今天,例如前端,日复一日更新的框架,必定每天都在学习与进步,对于编程来说,并不能停滞,因为凡是停滞,别人就会进步。
在教育领域的应用与畅想
在科技飞速迭代的今天,编程已经成为一门很重要的学科。父母花着高昂的学费把自己的孩子送到各种少儿编程学习机构,通过 Scratch 一类可视化编程软件的学习来培养编程思维,以求让自己的孩子不要输在起跑线上。上班族们疯狂地拼着朋友圈9.9元编程课,渴望通过 Python 的学习来提升自己的工作效率,在“内卷”中抢占先机。而 IOS 端的捷径、JSBox 等软件也正在向人们展示着编程思维对于提升生活效率的重要作用。
但我们的教育方式却在让学生对编程望而却步。在现在的大学计算机基础课程中,我们采用着灌输式的被动学习方式,在学习的一开始学生先被灌输各种抽象的基础概念,然后使用代码做一些无聊的计算,这个过程极大的地削弱了学生的学习兴趣,使学生想到编程,第一反应就是头疼。于是大多数同学的编程学习最终走向了“从没入门到放弃”。
20世纪初以美国教育学家杜威为代表的进步教育运动,打破了传统的以教师为中心的学习方法,而是以学生为中心,通过开展活动来展开教学,极大地增强了学生的参与感,这或许可以给予我们今天的编程教学一些启发。编程是一门实践学科,我们的学习正应该以“做”为核心。
Playgrounds 正体现了这样的一种教育理念。它让编程变得可视化,也更加生动。
Apple的实践
如果说Swift Playgrounds是学习,那么Apple提供的机器人则是真实的线下实践。
记得北里熊在很早的时候在南京虹悦城的Apple Store参与过编程化机器人活动(2017年“玩游戏学编程”LionBot的活动):
在那次《舞狮迎新春》编程机器人活动中,我操作的是瓦力,使用拖拽式进行拼接,后续开始展现瓦力的动作。
这样的动作可以真实的让家长们明白,这是编程可以做的事:让机器人在电视里的动画实打实的做事:向前走,向后退,甚至可以把机器手给举起来……
北里熊在给常阔展示照片时说道。
变传统的计算机课程为综合实践课程,开展创客教育,让学生基于真实的任务,运用编程知识去解决一定的问题,获得参与感和获得感,领悟到编程的价值,才能让学生真正爱上编程。
或者不仅仅局限于学校教育,正如今天很多 Python 课程所尝试的那样,这样的编程学习方式也可以在成人教育中得以应用,在知识经济时代为终身学习提供支持。
这任重而道远,Playgrounds 的存在为我们开辟了一条道路,面向不同的学习者和不同的编程语言,支持更多的设备······还有更多的方式等待产品开发者们探索。
仍需改进的点
1. 交互上的不足
在实际使用中,放大界面时则会出现部分界面浏览不全的情况(目前可能是希望可以放的足够大,对于用户与场景的交互上看更加的精致)如下图所示:
或许在以后的更新中,会完善这样的体验。
2. 学习效率不高
一遍一遍地完成游戏任务,重复进行代码的练习,确实可以加深对代码的印象,但却需要大量的时间。这样的学习方法显然并不适合那些有一定编程基础,可以通过把 Swift 与已学会的编程语言建立联系,来快速完成学习的用户。
3. 软件优化问题:发热、卡顿等
笔者在尝试的过程中发现,使用 Playgrounds 一段时间后设备会发烫,而游戏的动画过度缓慢,旧iPad出现的卡顿等问题也影响了使用体验。
4. 设备兼容性
目前 Playgrounds 仅支持在iPad和Mac设备中使用,不支持 iPhone 和 Android、Windows等其他平台设备。这些设备本身在购买层面上需要较高的成本,这无疑会成为Playgrounds 学习走进普通中小学的门槛。
5. 与实际开发的距离
诚然,在这样的界面中与实际的开发确实有一些距离:
在 Playgrounds 推出之际,"人人可编程"项目是Apple在2019年11月经过重新设计的编程课。
但是其中,“人人”一词,便是注定了目标用户群为“普罗大众”,其中也包括青少年。
这是一个非常大的用户群体,其中也包含青少年和老年人,所以,除了 Playgrounds,还有“使用 Swift 开发”这样更加进阶的面对高中与大学生的开发课程。
如果青少年下载一个Xcode,可能会在开发过程中获得更多的限制:诸如版本问题、突然看到的Cocoa等专业词汇,青少年输入一个单词,就会因为没有import而导致各种报错……
可见,Playgrounds 仅仅是一个编程入门的引导,我们也非常期待日后的Playgrounds可以增加这些内容。
参考链接