產(chǎn)品言思: 02-Swift Playgrounds:人人學(xué)編程時(shí)代,Apple想讓你邊玩邊學(xué)

這是我們的第篇文章。

注:此文章主要指iPadOS和macOS平臺(tái)的圖形化界面應(yīng)用Swift Playgrounds,非Xcode內(nèi)無圖形化的playground。

近幾年“低代碼”概念火熱,其全稱為“Low-Code Development Platform(以下簡稱LCDP)”,展示方式形如搭積木似的可視化編程,通過可視化、拖拽等行為將邏輯組裝而成,如微軟的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"(以下簡稱“Playgrounds”)。

“游戲化”編程

屏幕左側(cè)是實(shí)例的文字介紹,右側(cè)是使用建模軟件的操作界面,主角是byte。

第一個(gè)事例操作的 Playgrounds 主角Byte,在編程語言中直譯為:字節(jié)。

Apple取名一向比較有特色,所有的電子產(chǎn)品和系統(tǒng)都以i開頭,且iWork套件的“Pages、Numbers、Keynote”,直譯就是“多個(gè)頁碼,多個(gè)數(shù)字,提案”,"字節(jié)"也不例外——是計(jì)算機(jī)技術(shù)用于計(jì)量存儲(chǔ)容量的計(jì)量單位之一。

青少年對于圖像的敏感度大于文字,故設(shè)置了“Byte”與可視化的環(huán)境,使用編程命令讓主角動(dòng)起來,可以顯著提升他們對于編程的興趣。

Playgrounds,為我們生動(dòng)形象的闡述了編程的入門、為青少年展現(xiàn)一款編程入門的范本:如何讓青少年接觸編程,熱愛編程,以及界面擁有哪些要素,可以擁有哪些要素,無需哪些要素。

Playgrounds(上)和Xcode(下)的界面對比

由圖可知,Playgrounds 與 Xcode 較為顯著的區(qū)別是以下幾點(diǎn):

前者(Playgrounds)代碼完全是在屏幕最底部的候選詞中進(jìn)行備選,同時(shí)也具備鍵盤輸入功能:一時(shí)間無法尋找所需代碼之時(shí)(在筆記中可以自行輸入想要的指令)。

而后者(Xcode)作為Apple的生態(tài)開發(fā)獨(dú)當(dāng)一面的程度上與專業(yè)性上來看,首先完備的開始菜單可見一斑:無論是 Cocoa 框架,還是AR應(yīng)用,Xcode 都可以直接開發(fā);Xcode 有拖放控件的 Storyboard,任意增加各種控件,而 Playgrounds 僅擁有寫好的互動(dòng)界面“調(diào)試”功能與斷點(diǎn)調(diào)試,Playground 只有簡單的紅點(diǎn)提示,點(diǎn)擊后則會(huì)彈出具體的錯(cuò)誤提示……

不過,Playgrounds很巧妙的將繁雜的開發(fā)文檔隱藏了起來,需要的時(shí)候可以打開查看:

以及需要添加的內(nèi)容直接通過+號(hào)展現(xiàn),無疑減輕了用戶在編程時(shí)候的壓力:

筆者北里熊曾在某產(chǎn)品平臺(tái)中提出過一個(gè)問題:如何評價(jià)微信Web開發(fā)工具這個(gè)產(chǎn)品?會(huì)是國內(nèi)IDE的“開創(chuàng)”性產(chǎn)品么?

是在微信小程序編輯器推出之時(shí),與專業(yè)的 Xcode 和 Android Studio 進(jìn)行的對比。

誠然,筆者認(rèn)為微信小程序僅僅是對于開發(fā)環(huán)境的功能與設(shè)計(jì)上的比較,相對于Playground這類游戲化的模擬開發(fā),還是有所區(qū)別的。

“簡約版的”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í)編程根本停不下來。

通過上癮模型理解Playgrounds

在上癮模型中,美國學(xué)者 Nir Eyal 提出:從觸發(fā)、行動(dòng)、多變的酬賞再到投入。

這樣一個(gè)模型,我們也可以運(yùn)用在這個(gè)軟件中,通過這個(gè)模型,更好地思考這個(gè)軟件。

在軟件的界面中,左側(cè)為每一個(gè)關(guān)卡的詳細(xì)介紹,右側(cè)則為所熟悉的有趣的圖形化界面。

1. 觸發(fā)和行動(dòng)

觸發(fā),即為文案,通過文字與動(dòng)畫的描述令用戶開始第一個(gè)行為:閱讀文字,輸入編程指令:

下圖中展示了 Apple 對于觸發(fā)的理解,也深知用戶可能會(huì)進(jìn)行潛在的失?。?/p>

別擔(dān)心第一次不會(huì)成功,把這當(dāng)成一次試驗(yàn)的機(jī)會(huì)!

行動(dòng),則是用戶開始嘗試。

在行動(dòng)中,可以點(diǎn)按圖形化界面左下方的“播放”按鈕,測試方法的順序與邏輯是否行得通。

2. 多變的酬賞

隨著游戲進(jìn)度與難度的不斷加深,用戶也在游戲中看到更多的“酬勞”:

從起初最一般的鉆石collectGem(),再到開關(guān)toggleSwitch(),讓主角Byte走到開關(guān)上則會(huì)點(diǎn)亮開關(guān)……

這一切都需要行動(dòng)。

例如《傳奇》游戲一樣,被攻擊的對手的血條與傷害值出現(xiàn)在用戶面前,漸漸地會(huì)讓用戶繼續(xù)行動(dòng)。

Playgrounds的行動(dòng),則是讓用戶選擇代碼(函數(shù)/方法)。

每一個(gè)練習(xí)的背后,每當(dāng)用戶完成一個(gè)練習(xí),圖形界面上都會(huì)提示“激勵(lì)”的語句,從而進(jìn)行更深入更加難的關(guān)卡。

3. 投入

更多的投入帶來更多的酬賞,讓用戶循環(huán)往復(fù)這一過程,享受編程的樂趣,這也正是產(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。

在編程軟件上“上癮”,無非是專業(yè)程序開發(fā)者在創(chuàng)造自己的產(chǎn)品,亦或是青少年讓自己的主角byte、blu有越來越多的動(dòng)作,設(shè)置更多的舞者在iPad或是Mac上出現(xiàn),這一切在 Playgrounds 成為可能。

網(wǎng)上一直很火的一句話是:世界是由懶人推動(dòng)的。

低代碼平臺(tái)加簡單的注釋與創(chuàng)造,也更加的成就了不善于精通代碼的用戶,將自己的想法躍然電子屏幕上,或許可以創(chuàng)造出更加精彩的東西。

從更新日志看發(fā)展迭代

說回產(chǎn)品。

筆者使用 iPad 進(jìn)行體驗(yàn),繼承了一貫Apple應(yīng)用設(shè)計(jì)規(guī)則的:

軟件開始即彈出新功能介紹,簡潔的原生應(yīng)用的 icon……依舊很Apple。

它在最近的一次更新中,更新了以下功能,更加符合“低代碼”用戶需求:

第三方訂閱功能,可以查看世界各地的人們(機(jī)構(gòu))撰寫的Playground。

詳細(xì)文檔,關(guān)于Swift與iOS的詳細(xì)參考。

開放的產(chǎn)品心態(tài),進(jìn)階的編程理念

更多Playground

讓第三方用戶甚至是機(jī)構(gòu)通過這個(gè)平臺(tái),展現(xiàn)自己的資源與能力。

可以自由編寫Playground,同時(shí)上傳至Apple,上傳者可以根據(jù)下載量得知Playground的用戶量。于是"無意間",這個(gè)Playground變成了平臺(tái),一個(gè)讓展示第三方機(jī)構(gòu)能力的“入門編程平臺(tái)”。

Playgrounds的下載界面也很符合蘋果的原生系統(tǒng)交互

編程,學(xué)無止境

無論是游戲化還是自學(xué)編程書籍或者是視頻,想更近一步,必須要接觸諸如let var之類的,這就必須考驗(yàn)開發(fā)者的“講故事”和能力與功底了。

每一個(gè)Playgrounds的故事設(shè)定和主角的名稱與軌跡,都在考驗(yàn)制作公司對于編程的理解,對于故事的理解,以及對于讓用戶操作的邏輯。

這在Playgrounds的blu中,得到很好的體現(xiàn)。

正如書籍《芒果街上的小屋》 中《四顆細(xì)瘦的樹》里說:

假如有一棵忘記了它存在的理由,它們就全都會(huì)像玻璃瓶里的郁金香一樣耷拉下來,手挽著手。堅(jiān)持,堅(jiān)持,堅(jiān)持。樹兒在我睡著的時(shí)候說。它們教會(huì)人。

當(dāng)我太悲傷太瘦弱無法堅(jiān)持再堅(jiān)持的時(shí),當(dāng)我如此渺小卻要對抗這么多磚塊的時(shí)候,我就會(huì)看著樹。當(dāng)街上沒有別的東西可看的時(shí)。不畏水泥仍在生長的四棵。伸展伸展從不忘記伸展的四棵。惟一的理由是存在存在的四棵。

那樣的故事性。

對于開發(fā)者來說,指導(dǎo)用戶對于編程的學(xué)習(xí),目前“圖形化界面”的學(xué)習(xí)方式只是引導(dǎo),在每天不斷發(fā)展且進(jìn)步的今天,例如前端,日復(fù)一日更新的框架,必定每天都在學(xué)習(xí)與進(jìn)步,對于編程來說,并不能停滯,因?yàn)榉彩峭?,別人就會(huì)進(jìn)步。

在教育領(lǐng)域的應(yīng)用與暢想

在科技飛速迭代的今天,編程已經(jīng)成為一門很重要的學(xué)科。父母花著高昂的學(xué)費(fèi)把自己的孩子送到各種少兒編程學(xué)習(xí)機(jī)構(gòu),通過 Scratch 一類可視化編程軟件的學(xué)習(xí)來培養(yǎng)編程思維,以求讓自己的孩子不要輸在起跑線上。上班族們瘋狂地拼著朋友圈9.9元編程課,渴望通過 Python 的學(xué)習(xí)來提升自己的工作效率,在“內(nèi)卷”中搶占先機(jī)。而 IOS 端的捷徑、JSBox 等軟件也正在向人們展示著編程思維對于提升生活效率的重要作用。

但我們的教育方式卻在讓學(xué)生對編程望而卻步。在現(xiàn)在的大學(xué)計(jì)算機(jī)基礎(chǔ)課程中,我們采用著灌輸式的被動(dòng)學(xué)習(xí)方式,在學(xué)習(xí)的一開始學(xué)生先被灌輸各種抽象的基礎(chǔ)概念,然后使用代碼做一些無聊的計(jì)算,這個(gè)過程極大的地削弱了學(xué)生的學(xué)習(xí)興趣,使學(xué)生想到編程,第一反應(yīng)就是頭疼。于是大多數(shù)同學(xué)的編程學(xué)習(xí)最終走向了“從沒入門到放棄”。

20世紀(jì)初以美國教育學(xué)家杜威為代表的進(jìn)步教育運(yùn)動(dòng),打破了傳統(tǒng)的以教師為中心的學(xué)習(xí)方法,而是以學(xué)生為中心,通過開展活動(dòng)來展開教學(xué),極大地增強(qiáng)了學(xué)生的參與感,這或許可以給予我們今天的編程教學(xué)一些啟發(fā)。編程是一門實(shí)踐學(xué)科,我們的學(xué)習(xí)正應(yīng)該以“做”為核心。

Playgrounds 正體現(xiàn)了這樣的一種教育理念。它讓編程變得可視化,也更加生動(dòng)。

Apple的實(shí)踐

如果說Swift Playgrounds是學(xué)習(xí),那么Apple提供的機(jī)器人則是真實(shí)的線下實(shí)踐。

記得北里熊在很早的時(shí)候在南京虹悅城的Apple Store參與過編程化機(jī)器人活動(dòng)(2017年“玩游戲?qū)W編程”LionBot的活動(dòng)):

在那次《舞獅迎新春》編程機(jī)器人活動(dòng)中,我操作的是瓦力,使用拖拽式進(jìn)行拼接,后續(xù)開始展現(xiàn)瓦力的動(dòng)作。

這樣的動(dòng)作可以真實(shí)的讓家長們明白,這是編程可以做的事:讓機(jī)器人在電視里的動(dòng)畫實(shí)打?qū)嵉淖鍪拢合蚯白?,向后退,甚至可以把機(jī)器手給舉起來……

北里熊在給常闊展示照片時(shí)說道。

變傳統(tǒng)的計(jì)算機(jī)課程為綜合實(shí)踐課程,開展創(chuàng)客教育,讓學(xué)生基于真實(shí)的任務(wù),運(yùn)用編程知識(shí)去解決一定的問題,獲得參與感和獲得感,領(lǐng)悟到編程的價(jià)值,才能讓學(xué)生真正愛上編程。

或者不僅僅局限于學(xué)校教育,正如今天很多 Python 課程所嘗試的那樣,這樣的編程學(xué)習(xí)方式也可以在成人教育中得以應(yīng)用,在知識(shí)經(jīng)濟(jì)時(shí)代為終身學(xué)習(xí)提供支持。

這任重而道遠(yuǎn),Playgrounds 的存在為我們開辟了一條道路,面向不同的學(xué)習(xí)者和不同的編程語言,支持更多的設(shè)備······還有更多的方式等待產(chǎn)品開發(fā)者們探索。

仍需改進(jìn)的點(diǎn)

1. 交互上的不足

在實(shí)際使用中,放大界面時(shí)則會(huì)出現(xiàn)部分界面瀏覽不全的情況(目前可能是希望可以放的足夠大,對于用戶與場景的交互上看更加的精致)如下圖所示:

或許在以后的更新中,會(huì)完善這樣的體驗(yàn)。

2. 學(xué)習(xí)效率不高

一遍一遍地完成游戲任務(wù),重復(fù)進(jìn)行代碼的練習(xí),確實(shí)可以加深對代碼的印象,但卻需要大量的時(shí)間。這樣的學(xué)習(xí)方法顯然并不適合那些有一定編程基礎(chǔ),可以通過把 Swift 與已學(xué)會(huì)的編程語言建立聯(lián)系,來快速完成學(xué)習(xí)的用戶。

3. 軟件優(yōu)化問題:發(fā)熱、卡頓等

筆者在嘗試的過程中發(fā)現(xiàn),使用 Playgrounds 一段時(shí)間后設(shè)備會(huì)發(fā)燙,而游戲的動(dòng)畫過度緩慢,舊iPad出現(xiàn)的卡頓等問題也影響了使用體驗(yàn)。

4. 設(shè)備兼容性

目前 Playgrounds 僅支持在iPad和Mac設(shè)備中使用,不支持 iPhone 和 Android、Windows等其他平臺(tái)設(shè)備。這些設(shè)備本身在購買層面上需要較高的成本,這無疑會(huì)成為Playgrounds 學(xué)習(xí)走進(jìn)普通中小學(xué)的門檻。

5. 與實(shí)際開發(fā)的距離

誠然,在這樣的界面中與實(shí)際的開發(fā)確實(shí)有一些距離:

在 Playgrounds 推出之際,"人人可編程"項(xiàng)目是Apple在2019年11月經(jīng)過重新設(shè)計(jì)的編程課。

但是其中,“人人”一詞,便是注定了目標(biāo)用戶群為“普羅大眾”,其中也包括青少年。

這是一個(gè)非常大的用戶群體,其中也包含青少年和老年人,所以,除了 Playgrounds,還有“使用 Swift 開發(fā)”這樣更加進(jìn)階的面對高中與大學(xué)生的開發(fā)課程。

如果青少年下載一個(gè)Xcode,可能會(huì)在開發(fā)過程中獲得更多的限制:諸如版本問題、突然看到的Cocoa等專業(yè)詞匯,青少年輸入一個(gè)單詞,就會(huì)因?yàn)闆]有import而導(dǎo)致各種報(bào)錯(cuò)……

可見,Playgrounds 僅僅是一個(gè)編程入門的引導(dǎo),我們也非常期待日后的Playgrounds可以增加這些內(nèi)容。

參考鏈接

Apple 拓展面向教師和學(xué)生的“人人能編程”課程

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容