Swift Playgrounds:人人學(xué)編程時(shí)代,Apple想讓你邊玩邊學(xué)
編輯導(dǎo)讀:近幾年“低代碼”概念火熱,展示方式形如搭積木似的可視化編程,通過(guò)可視化、拖拽等行為將邏輯組裝而成,如微軟的Power Platform、釘釘中的功能等,各式低代碼平臺(tái)應(yīng)運(yùn)誕生。本文以蘋果的Swift Playgrounds為例,對(duì)此進(jìn)行分析,與你分享。
注:此文章主要指iPadOS和macOS平臺(tái)的圖形化界面應(yīng)用Swift Playgrounds,非Xcode內(nèi)無(wú)圖形化的playground。
近幾年“低代碼”概念火熱,其全稱為“Low-Code Development Platform(以下簡(jiǎn)稱LCDP)”,展示方式形如搭積木似的可視化編程,通過(guò)可視化、拖拽等行為將邏輯組裝而成,如微軟的Power Platform、釘釘中的功能等,各式低代碼平臺(tái)應(yīng)運(yùn)誕生。
同時(shí),與“低代碼”的形態(tài)頗為近似的“青少年編程”產(chǎn)品也應(yīng)運(yùn)而生,同時(shí)關(guān)于“技術(shù)背景”、“付費(fèi)閱讀”,搜索熱度也日趨平穩(wěn)。
潮流背后,具有幾乎完美軟硬件生態(tài)的Apple也抓住了這一機(jī)遇,于2014年6月推出了可視化編程產(chǎn)品“Swift Playgrounds”(以下簡(jiǎn)稱“Playgrounds”)。
一、“游戲化”編程
屏幕左側(cè)是實(shí)例的文字介紹,右側(cè)是使用建模軟件的操作界面,主角是byte。
第一個(gè)事例操作的 Playgrounds 主角Byte,在編程語(yǔ)言中直譯為:字節(jié)。
Apple取名一向比較有特色,所有的電子產(chǎn)品和系統(tǒng)都以i開頭,且iWork套件的“Pages、Numbers、Keynote”,直譯就是“多個(gè)頁(yè)碼,多個(gè)數(shù)字,提案”,”字節(jié)”也不例外——是計(jì)算機(jī)技術(shù)用于計(jì)量存儲(chǔ)容量的計(jì)量單位之一。
青少年對(duì)于圖像的敏感度大于文字,故設(shè)置了“Byte”與可視化的環(huán)境,使用編程命令讓主角動(dòng)起來(lái),可以顯著提升他們對(duì)于編程的興趣。
Playgrounds,為我們生動(dòng)形象的闡述了編程的入門、為青少年展現(xiàn)一款編程入門的范本:如何讓青少年接觸編程,熱愛編程,以及界面擁有哪些要素,可以擁有哪些要素,無(wú)需哪些要素。
Playgrounds(上)和Xcode(下)的界面對(duì)比
由圖可知,Playgrounds 與 Xcode 較為顯著的區(qū)別是以下幾點(diǎn):
前者(Playgrounds)代碼完全是在屏幕最底部的候選詞中進(jìn)行備選,同時(shí)也具備鍵盤輸入功能:一時(shí)間無(wú)法尋找所需代碼之時(shí)(在筆記中可以自行輸入想要的指令)。
而后者(Xcode)作為Apple的生態(tài)開發(fā)獨(dú)當(dāng)一面的程度上與專業(yè)性上來(lái)看,首先完備的開始菜單可見一斑:無(wú)論是 Cocoa 框架,還是AR應(yīng)用,Xcode 都可以直接開發(fā);Xcode 有拖放控件的 Storyboard,任意增加各種控件,而 Playgrounds 僅擁有寫好的互動(dòng)界面“調(diào)試”功能與斷點(diǎn)調(diào)試,Playground 只有簡(jiǎn)單的紅點(diǎn)提示,點(diǎn)擊后則會(huì)彈出具體的錯(cuò)誤提示……
不過(guò),Playgrounds很巧妙的將繁雜的開發(fā)文檔隱藏了起來(lái),需要的時(shí)候可以打開查看:
以及需要添加的內(nèi)容直接通過(guò)+號(hào)展現(xiàn),無(wú)疑減輕了用戶在編程時(shí)候的壓力:
筆者北里熊曾在某產(chǎn)品平臺(tái)中提出過(guò)一個(gè)問(wèn)題:如何評(píng)價(jià)微信Web開發(fā)工具這個(gè)產(chǎn)品?會(huì)是國(guó)內(nèi)IDE的“開創(chuàng)”性產(chǎn)品么?
是在微信小程序編輯器推出之時(shí),與專業(yè)的 Xcode 和 Android Studio 進(jìn)行的對(duì)比。
誠(chéng)然,筆者認(rèn)為微信小程序僅僅是對(duì)于開發(fā)環(huán)境的功能與設(shè)計(jì)上的比較,相對(duì)于Playground這類游戲化的模擬開發(fā),還是有所區(qū)別的。
1.“簡(jiǎn)約版的”Xcode與“上癮”機(jī)制
同樣是Apple產(chǎn)品,Playgrounds 保留了文字介紹、及時(shí)反饋的功能,輕點(diǎn)“運(yùn)行我的代碼”,主角會(huì)完成相應(yīng)的任務(wù),到達(dá)目的地。這種關(guān)卡的設(shè)計(jì)帶有一定的挑戰(zhàn)性,可愛的主角的各種動(dòng)作同時(shí)也提升了趣味性,這樣游戲化的設(shè)計(jì)可以使用戶“上癮”,學(xué)習(xí)編程根本停不下來(lái)。
2. 通過(guò)上癮模型理解Playgrounds
在上癮模型中,美國(guó)學(xué)者 Nir Eyal 提出:從觸發(fā)、行動(dòng)、多變的酬賞再到投入。
這樣一個(gè)模型,我們也可以運(yùn)用在這個(gè)軟件中,通過(guò)這個(gè)模型,更好地思考這個(gè)軟件。
在軟件的界面中,左側(cè)為每一個(gè)關(guān)卡的詳細(xì)介紹,右側(cè)則為所熟悉的有趣的圖形化界面。
1)觸發(fā)和行動(dòng)
觸發(fā),即為文案,通過(guò)文字與動(dòng)畫的描述令用戶開始第一個(gè)行為:閱讀文字,輸入編程指令:
下圖中展示了 Apple 對(duì)于觸發(fā)的理解,也深知用戶可能會(huì)進(jìn)行潛在的失敗:
別擔(dān)心第一次不會(huì)成功,把這當(dāng)成一次試驗(yàn)的機(jī)會(huì)!
行動(dòng),則是用戶開始嘗試。
在行動(dòng)中,可以點(diǎn)按圖形化界面左下方的“播放”按鈕,測(cè)試方法的順序與邏輯是否行得通。
2)多變的酬賞
隨著游戲進(jìn)度與難度的不斷加深,用戶也在游戲中看到更多的“酬勞”:
從起初最一般的鉆石collectGem(),再到開關(guān)toggleSwitch(),讓主角Byte走到開關(guān)上則會(huì)點(diǎn)亮開關(guān)……
這一切都需要行動(dòng)。
例如《傳奇》游戲一樣,被攻擊的對(duì)手的血條與傷害值出現(xiàn)在用戶面前,漸漸地會(huì)讓用戶繼續(xù)行動(dòng)。
Playgrounds的行動(dòng),則是讓用戶選擇代碼(函數(shù)/方法)。
每一個(gè)練習(xí)的背后,每當(dāng)用戶完成一個(gè)練習(xí),圖形界面上都會(huì)提示“激勵(lì)”的語(yǔ)句,從而進(jìn)行更深入更加難的關(guān)卡。
3)投入
更多的投入帶來(lái)更多的酬賞,讓用戶循環(huán)往復(fù)這一過(guò)程,享受編程的樂(lè)趣,這也正是產(chǎn)品開發(fā)中必須要傾注其力的關(guān)鍵步驟——持續(xù)投入。
同時(shí),用戶會(huì)為目前的事情印象深刻,即使被打斷,也會(huì)因?yàn)樯形赐瓿傻氖虑槎⒐⒂趹?,這也是達(dá)成了“上癮模型”的另一個(gè)效應(yīng):蔡格尼克記憶效應(yīng)。當(dāng)其他的事情結(jié)束之時(shí),這個(gè)“未完成事件”的印象會(huì)比完成的印象更加深刻,從而繼續(xù)去解決,例如筆者就會(huì)一直記著產(chǎn)品開發(fā)中未解決的bug。
在編程軟件上“上癮”,無(wú)非是專業(yè)程序開發(fā)者在創(chuàng)造自己的產(chǎn)品,亦或是青少年讓自己的主角byte、blu有越來(lái)越多的動(dòng)作,設(shè)置更多的舞者在iPad或是Mac上出現(xiàn),這一切在 Playgrounds 成為可能。
網(wǎng)上一直很火的一句話是:世界是由懶人推動(dòng)的。
低代碼平臺(tái)加簡(jiǎn)單的注釋與創(chuàng)造,也更加的成就了不善于精通代碼的用戶,將自己的想法躍然電子屏幕上,或許可以創(chuàng)造出更加精彩的東西。
二、從更新日志看發(fā)展迭代
說(shuō)回產(chǎn)品。
筆者使用 iPad 進(jìn)行體驗(yàn),繼承了一貫Apple應(yīng)用設(shè)計(jì)規(guī)則的:
軟件開始即彈出新功能介紹,簡(jiǎn)潔的原生應(yīng)用的 icon……依舊很Apple。
它在最近的一次更新中,更新了以下功能,更加符合“低代碼”用戶需求:
- 第三方訂閱功能,可以查看世界各地的人們(機(jī)構(gòu))撰寫的Playground。
- 詳細(xì)文檔,關(guān)于Swift與iOS的詳細(xì)參考。
開放的產(chǎn)品心態(tài),進(jìn)階的編程理念
1. 更多Playground
讓第三方用戶甚至是機(jī)構(gòu)通過(guò)這個(gè)平臺(tái),展現(xiàn)自己的資源與能力。
可以自由編寫Playground,同時(shí)上傳至Apple,上傳者可以根據(jù)下載量得知Playground的用戶量。于是”無(wú)意間”,這個(gè)Playground變成了平臺(tái),一個(gè)讓展示第三方機(jī)構(gòu)能力的“入門編程平臺(tái)”。
Playgrounds的下載界面也很符合蘋果的原生系統(tǒng)交互
2. 編程,學(xué)無(wú)止境
無(wú)論是游戲化還是自學(xué)編程書籍或者是視頻,想更近一步,必須要接觸諸如let var之類的,這就必須考驗(yàn)開發(fā)者的“講故事”和能力與功底了。
每一個(gè)Playgrounds的故事設(shè)定和主角的名稱與軌跡,都在考驗(yàn)制作公司對(duì)于編程的理解,對(duì)于故事的理解,以及對(duì)于讓用戶操作的邏輯。
這在Playgrounds的blu中,得到很好的體現(xiàn)。
正如書籍《芒果街上的小屋》 中《四顆細(xì)瘦的樹》里說(shuō):
假如有一棵忘記了它存在的理由,它們就全都會(huì)像玻璃瓶里的郁金香一樣耷拉下來(lái),手挽著手。堅(jiān)持,堅(jiān)持,堅(jiān)持。樹兒在我睡著的時(shí)候說(shuō)。它們教會(huì)人。
當(dāng)我太悲傷太瘦弱無(wú)法堅(jiān)持再堅(jiān)持的時(shí),當(dāng)我如此渺小卻要對(duì)抗這么多磚塊的時(shí)候,我就會(huì)看著樹。當(dāng)街上沒(méi)有別的東西可看的時(shí)。不畏水泥仍在生長(zhǎng)的四棵。伸展伸展從不忘記伸展的四棵。惟一的理由是存在存在的四棵。
那樣的故事性。
對(duì)于開發(fā)者來(lái)說(shuō),指導(dǎo)用戶對(duì)于編程的學(xué)習(xí),目前“圖形化界面”的學(xué)習(xí)方式只是引導(dǎo),在每天不斷發(fā)展且進(jìn)步的今天,例如前端,日復(fù)一日更新的框架,必定每天都在學(xué)習(xí)與進(jìn)步,對(duì)于編程來(lái)說(shuō),并不能停滯,因?yàn)榉彩峭?,別人就會(huì)進(jìn)步。
三、在教育領(lǐng)域的應(yīng)用與暢想
在科技飛速迭代的今天,編程已經(jīng)成為一門很重要的學(xué)科。父母花著高昂的學(xué)費(fèi)把自己的孩子送到各種少兒編程學(xué)習(xí)機(jī)構(gòu),通過(guò) Scratch 一類可視化編程軟件的學(xué)習(xí)來(lái)培養(yǎng)編程思維,以求讓自己的孩子不要輸在起跑線上。上班族們瘋狂地拼著朋友圈9.9元編程課,渴望通過(guò) Python 的學(xué)習(xí)來(lái)提升自己的工作效率,在“內(nèi)卷”中搶占先機(jī)。而 IOS 端的捷徑、JSBox 等軟件也正在向人們展示著編程思維對(duì)于提升生活效率的重要作用。
但我們的教育方式卻在讓學(xué)生對(duì)編程望而卻步。在現(xiàn)在的大學(xué)計(jì)算機(jī)基礎(chǔ)課程中,我們采用著灌輸式的被動(dòng)學(xué)習(xí)方式,在學(xué)習(xí)的一開始學(xué)生先被灌輸各種抽象的基礎(chǔ)概念,然后使用代碼做一些無(wú)聊的計(jì)算,這個(gè)過(guò)程極大的地削弱了學(xué)生的學(xué)習(xí)興趣,使學(xué)生想到編程,第一反應(yīng)就是頭疼。于是大多數(shù)同學(xué)的編程學(xué)習(xí)最終走向了“從沒(méi)入門到放棄”。
20世紀(jì)初以美國(guó)教育學(xué)家杜威為代表的進(jìn)步教育運(yùn)動(dòng),打破了傳統(tǒng)的以教師為中心的學(xué)習(xí)方法,而是以學(xué)生為中心,通過(guò)開展活動(dòng)來(lái)展開教學(xué),極大地增強(qiáng)了學(xué)生的參與感,這或許可以給予我們今天的編程教學(xué)一些啟發(fā)。編程是一門實(shí)踐學(xué)科,我們的學(xué)習(xí)正應(yīng)該以“做”為核心。
Playgrounds 正體現(xiàn)了這樣的一種教育理念。它讓編程變得可視化,也更加生動(dòng)。
Apple的實(shí)踐:
如果說(shuō)Swift Playgrounds是學(xué)習(xí),那么Apple提供的機(jī)器人則是真實(shí)的線下實(shí)踐。
記得北里熊在很早的時(shí)候在南京虹悅城的Apple Store參與過(guò)編程化機(jī)器人活動(dòng)(2017年“玩游戲?qū)W編程”LionBot的活動(dòng)):
在那次《舞獅迎新春》編程機(jī)器人活動(dòng)中,我操作的是瓦力,使用拖拽式進(jìn)行拼接,后續(xù)開始展現(xiàn)瓦力的動(dòng)作。
這樣的動(dòng)作可以真實(shí)的讓家長(zhǎng)們明白,這是編程可以做的事:讓機(jī)器人在電視里的動(dòng)畫實(shí)打?qū)嵉淖鍪拢合蚯白?,向后退,甚至可以把機(jī)器手給舉起來(lái)……
北里熊在給常闊展示照片時(shí)說(shuō)道。
變傳統(tǒng)的計(jì)算機(jī)課程為綜合實(shí)踐課程,開展創(chuàng)客教育,讓學(xué)生基于真實(shí)的任務(wù),運(yùn)用編程知識(shí)去解決一定的問(wèn)題,獲得參與感和獲得感,領(lǐng)悟到編程的價(jià)值,才能讓學(xué)生真正愛上編程。
或者不僅僅局限于學(xué)校教育,正如今天很多 Python 課程所嘗試的那樣,這樣的編程學(xué)習(xí)方式也可以在成人教育中得以應(yīng)用,在知識(shí)經(jīng)濟(jì)時(shí)代為終身學(xué)習(xí)提供支持。
這任重而道遠(yuǎn),Playgrounds 的存在為我們開辟了一條道路,面向不同的學(xué)習(xí)者和不同的編程語(yǔ)言,支持更多的設(shè)備······還有更多的方式等待產(chǎn)品開發(fā)者們探索。
四、仍需改進(jìn)的點(diǎn)
1. 交互上的不足
在實(shí)際使用中,放大界面時(shí)則會(huì)出現(xiàn)部分界面瀏覽不全的情況(目前可能是希望可以放的足夠大,對(duì)于用戶與場(chǎng)景的交互上看更加的精致)如下圖所示:
或許在以后的更新中,會(huì)完善這樣的體驗(yàn)。
2. 學(xué)習(xí)效率不高
一遍一遍地完成游戲任務(wù),重復(fù)進(jìn)行代碼的練習(xí),確實(shí)可以加深對(duì)代碼的印象,但卻需要大量的時(shí)間。這樣的學(xué)習(xí)方法顯然并不適合那些有一定編程基礎(chǔ),可以通過(guò)把 Swift 與已學(xué)會(huì)的編程語(yǔ)言建立聯(lián)系,來(lái)快速完成學(xué)習(xí)的用戶。
3. 軟件優(yōu)化問(wèn)題:發(fā)熱、卡頓等
筆者在嘗試的過(guò)程中發(fā)現(xiàn),使用 Playgrounds 一段時(shí)間后設(shè)備會(huì)發(fā)燙,而游戲的動(dòng)畫過(guò)度緩慢,舊iPad出現(xiàn)的卡頓等問(wèn)題也影響了使用體驗(yàn)。
4. 設(shè)備兼容性
目前 Playgrounds 僅支持在iPad和Mac設(shè)備中使用,不支持 iPhone 和 Android、Windows等其他平臺(tái)設(shè)備。這些設(shè)備本身在購(gòu)買層面上需要較高的成本,這無(wú)疑會(huì)成為Playgrounds 學(xué)習(xí)走進(jìn)普通中小學(xué)的門檻。
5. 與實(shí)際開發(fā)的距離
誠(chéng)然,在這樣的界面中與實(shí)際的開發(fā)確實(shí)有一些距離:
在 Playgrounds 推出之際,”人人可編程”項(xiàng)目是Apple在2019年11月經(jīng)過(guò)重新設(shè)計(jì)的編程課。
但是其中,“人人”一詞,便是注定了目標(biāo)用戶群為“普羅大眾”,其中也包括青少年。
這是一個(gè)非常大的用戶群體,其中也包含青少年和老年人,所以,除了 Playgrounds,還有“使用 Swift 開發(fā)”這樣更加進(jìn)階的面對(duì)高中與大學(xué)生的開發(fā)課程。
如果青少年下載一個(gè)Xcode,可能會(huì)在開發(fā)過(guò)程中獲得更多的限制:諸如版本問(wèn)題、突然看到的Cocoa等專業(yè)詞匯,青少年輸入一個(gè)單詞,就會(huì)因?yàn)闆](méi)有import而導(dǎo)致各種報(bào)錯(cuò)……
可見,Playgrounds 僅僅是一個(gè)編程入門的引導(dǎo),我們也非常期待日后的Playgrounds可以增加這些內(nèi)容。
五、參考鏈接
Apple 拓展面向教師和學(xué)生的“人人能編程”課程
本文由 @產(chǎn)品言思 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉(zhuǎn)載。
題圖來(lái)自Unsplash,基于CC0協(xié)議。
請(qǐng)問(wèn)為啥我ipad上沒(méi)有代碼提示呀
你好,請(qǐng)問(wèn)你是遇到了什么問(wèn)題?