Swift Playgrounds:人人學編程時代,Apple想讓你邊玩邊學

2 評論 10182 瀏覽 18 收藏 20 分鐘

編輯導讀:近幾年“低代碼”概念火熱,展示方式形如搭積木似的可視化編程,通過可視化、拖拽等行為將邏輯組裝而成,如微軟的Power Platform、釘釘中的功能等,各式低代碼平臺應運誕生。本文以蘋果的Swift Playgrounds為例,對此進行分析,與你分享。

注:此文章主要指iPadOS和macOS平臺的圖形化界面應用Swift Playgrounds,非Xcode內無圖形化的playground。

近幾年“低代碼”概念火熱,其全稱為“Low-Code Development Platform(以下簡稱LCDP)”,展示方式形如搭積木似的可視化編程,通過可視化、拖拽等行為將邏輯組裝而成,如微軟的Power Platform、釘釘中的功能等,各式低代碼平臺應運誕生。

同時,與“低代碼”的形態(tài)頗為近似的“青少年編程”產(chǎn)品也應運而生,同時關于“技術背景”、“付費閱讀”,搜索熱度也日趨平穩(wěn)。

潮流背后,具有幾乎完美軟硬件生態(tài)的Apple也抓住了這一機遇,于2014年6月推出了可視化編程產(chǎn)品“Swift Playgrounds”(以下簡稱“Playgrounds”)。

一、“游戲化”編程

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1.“簡約版的”Xcode與“上癮”機制

同樣是Apple產(chǎn)品,Playgrounds 保留了文字介紹、及時反饋的功能,輕點“運行我的代碼”,主角會完成相應的任務,到達目的地。這種關卡的設計帶有一定的挑戰(zhàn)性,可愛的主角的各種動作同時也提升了趣味性,這樣游戲化的設計可以使用戶“上癮”,學習編程根本停不下來。

2. 通過上癮模型理解Playgrounds

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

這樣一個模型,我們也可以運用在這個軟件中,通過這個模型,更好地思考這個軟件。

在軟件的界面中,左側為每一個關卡的詳細介紹,右側則為所熟悉的有趣的圖形化界面。

1)觸發(fā)和行動

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

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

別擔心第一次不會成功,把這當成一次試驗的機會!

行動,則是用戶開始嘗試。

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

2)多變的酬賞

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

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

這一切都需要行動。

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

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

每一個練習的背后,每當用戶完成一個練習,圖形界面上都會提示“激勵”的語句,從而進行更深入更加難的關卡。

3)投入

更多的投入帶來更多的酬賞,讓用戶循環(huán)往復這一過程,享受編程的樂趣,這也正是產(chǎn)品開發(fā)中必須要傾注其力的關鍵步驟——持續(xù)投入。

同時,用戶會為目前的事情印象深刻,即使被打斷,也會因為尚未完成的事情而耿耿于懷,這也是達成了“上癮模型”的另一個效應:蔡格尼克記憶效應。當其他的事情結束之時,這個“未完成事件”的印象會比完成的印象更加深刻,從而繼續(xù)去解決,例如筆者就會一直記著產(chǎn)品開發(fā)中未解決的bug。

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

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

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

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

說回產(chǎn)品。

筆者使用 iPad 進行體驗,繼承了一貫Apple應用設計規(guī)則的:

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

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

  1. 第三方訂閱功能,可以查看世界各地的人們(機構)撰寫的Playground。
  2. 詳細文檔,關于Swift與iOS的詳細參考。

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

1. 更多Playground

讓第三方用戶甚至是機構通過這個平臺,展現(xiàn)自己的資源與能力。

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

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

2. 編程,學無止境

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

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

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

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

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

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

那樣的故事性。

對于開發(fā)者來說,指導用戶對于編程的學習,目前“圖形化界面”的學習方式只是引導,在每天不斷發(fā)展且進步的今天,例如前端,日復一日更新的框架,必定每天都在學習與進步,對于編程來說,并不能停滯,因為凡是停滯,別人就會進步。

三、在教育領域的應用與暢想

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

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

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

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

Apple的實踐:

如果說Swift Playgrounds是學習,那么Apple提供的機器人則是真實的線下實踐。

記得北里熊在很早的時候在南京虹悅城的Apple Store參與過編程化機器人活動(2017年“玩游戲學編程”LionBot的活動):

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

這樣的動作可以真實的讓家長們明白,這是編程可以做的事:讓機器人在電視里的動畫實打實的做事:向前走,向后退,甚至可以把機器手給舉起來……

北里熊在給常闊展示照片時說道。

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

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

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

四、仍需改進的點

1. 交互上的不足

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

或許在以后的更新中,會完善這樣的體驗。

2. 學習效率不高

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

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

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

4. 設備兼容性

目前 Playgrounds 僅支持在iPad和Mac設備中使用,不支持 iPhone 和 Android、Windows等其他平臺設備。這些設備本身在購買層面上需要較高的成本,這無疑會成為Playgrounds 學習走進普通中小學的門檻。

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

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

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

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

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

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

可見,Playgrounds 僅僅是一個編程入門的引導,我們也非常期待日后的Playgrounds可以增加這些內容。

五、參考鏈接

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

 

本文由 @產(chǎn)品言思 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉載。

題圖來自Unsplash,基于CC0協(xié)議。

更多精彩內容,請關注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 請問為啥我ipad上沒有代碼提示呀

    來自浙江 回復
    1. 你好,請問你是遇到了什么問題?

      來自江蘇 回復