Swift Playgrounds是Apple在2016年發表的一個 App (for iPad),用來學習Swift程式設計。在這之前,想要學習Apple的軟體開發,不管是Swift或Objective-C,只有一個選擇,就是用Xcode,配合一台Mac電腦。
問題是Xcode雖然免費,但整套軟體非常龐大,為了支援過去到現在各版本的軟體以及各類Apple硬體(包括iPhone/iPad/Watch/TV),目前版本Xcode 12大小已超過11GB,比整個macOS還龐大!更要命的是經常更新(整個須重新下載安裝)且沒有中文介面,如果是工作需要也就罷了,但是對於一個初學者來說,要用Xcode入門是相當痛苦。
Apple 在 2014年發表 Swift 程式語言時,當年的Xcode 6就包含一個新的 "Playground" (遊樂場)功能,可以不必開啟專案就能寫Swift程式,用來練習或快速驗證一段Swift程式很方便。用(Xcode) Playground寫的程式,連同資料會包成一個副檔名為 .playground 的檔案。
到了2016年,Apple 為了鼓勵中小學生使用iPad學習程式設計,將原來Xcode的Playground擴充成一個App,稱為 Swift Playgrounds,並提供中文化介面。這個App也是一個內容創作平台,Apple官方製作了好幾個學習程式設計的內容,包括「學習程式設計1(哈囉,Byte)」「學習程式設計2」「Blu的冒險」等等,也允許第三方製作的內容可以加入。
在每年的WWDC都會舉辦全球Swift Playgrounds創作比賽,去年跟今年都有台灣學生參賽獲獎,這真是台灣之光。若要為Swift Playgrounds設計內容,創作時必須使用Xcode,最後產出副檔名為 .playgroundbook 檔案,再傳到Swift Playgrounds裡面執行。
WWDC20台灣學生首次投稿獲獎 作品融入函數與環保
https://www.cna.com.tw/news/ahel/202006160361.aspx
WWDC21全球學生挑戰賽 海洋、逢甲男大生拿獎
https://tw.appledaily.com/gadget/20210601/QNU3XDAPQ5BAVBYEG3YNLJIQA4
目前最新版的Swift Playgrounds 3.4.1 (2021/4),檔案大小只有232MB,是Xcode的50分之一,但幾乎所有Swift程式的模組框架都可以使用,與Xcode主要差別是缺乏多人專案及各類硬體模擬器,也就是說,只能針對iOS (iPhone),但這對於初學者來說,正好足夠。
從去(2020)年開始,macOS(透過Catalyst技術)也可執行Swift Playgrounds,所以除了iPad之外,只要一台最低階的Mac mini或Macbook,就足以開始學習Swift程式設計。
更棒的是,今年WWDC21中擴充Swift/SwiftUI很多功能,並且宣布新版(預計2021/9開放) Swift Playgrounds 4 可以開發完整的App,上傳到App Store中。
Apple發表iPadOS 15,Swift Playgrounds可在iPad上直接建置App
https://www.ithome.com.tw/news/144897
簡單地說,時機成熟了,現在就是用Swift Playgrounds學習Swift程式設計的最好時機,扎扎實實學個半年左右,應該就可以開發自己的iOS App,上傳到App Store中!
下載Swift Playgrounds 中文版
https://www.apple.com/tw/swift/playgrounds/
2.高中生最重要打底,什麼語言不重要,什麼Bool,什麼迴圈記憶體配置等等才是重要,底完成以後什麼語言都能很快地學習.台灣軟體工程並不強,好男人不寫Code,程式一學年,資料庫一學年,然後就AI,學全球化,學新創等等,現在找工程師10個8個會AI,只有2個實際寫程式.畢業專題5個人只有一個人寫程式,一個做簡報,一個當總務買買便當等等.30歲程式寫不出來被老闆罵二句後就跑去讀PMP然後開始出來帶團隊,找一些合作廠商都是業務嘴居多
3.台灣可以找到程式設計師,台灣可以找到老師,台灣要找到能把程式教得淺而易懂的老師不多
4.程式並不具價值,什麼迴圈,九九乘法表,三角形,辨識什麼貓狗花草衣服喜怒哀樂等等都沒有價值,程式能解決人類需求問題有人買單才有價值.不是什麼政府一筆錢全台灣高教研究單位大家分一分,醫療X光有人做,我們來做什麼樹葉,拍拍烏龜,然後開始喂圖資,然後最後輸出價值,我能識別出這隻是小明,這隻叫王八
雪白西丘斯 wrote:
關於Swift PlaygroundsSwi...(恕刪)
框架最危險,進去你的思維就卡死了
很多學生畢業後的能力就是畢業當時的,很多會說程式不是就這樣子
很多人,我會Java等等,我用物件導向語言就代表我會物件導向
很多博士還是用一堆if else 流程式方法在寫,寫了好多年程式寫不大,Bugs一樣多
我去山上教小朋友,山上的環境和小朋友的素質跟大城市台北,竹科的小朋友差很多
積木的教育有限制有危險
如果是我一開始就用UML,用物件導向直接包元件
與其教他們拉積木不如教他們做積木,然後賣積木給別人
就跟積體電路一樣,一個CPU拼不過別人,我們裝四顆八顆等等,我的記憶體電路要塞更多電晶體,平面空間不夠,我們就用立體方式..
也就是說你拉積木,你一行行寫下去,你是能寫多少程式,你是能有多少價值,寫幾隻UI,幾個Hello World 那又是什麼,寫一隻報價程式,大學專題,學生能Demo能畢業而已,然後畢業還是很低薪
第1課的範例程式是自我介紹,主要是練習如何跟電腦溝通、如何讓電腦顯示訊息。當然這只是很小的一步,離真正實用的程式還有很長距離。
那實際的程式又是什麼樣子呢?以常用的通訊軟體(如LINE)為例,通訊軟體主要的功能,是讓使用者之間彼此對話,從使用者的角度,覺得是透過通訊設備(電腦或手機)與朋友對話,看起來像是這樣:

但其實真正達成對話功能的是軟體(程式),設備與網路是底層的載體或媒介,所以從程式的角度來看,應該是這樣:

使用者輸入訊息到通訊軟體,通訊軟體並無法直接連到對方的手機中(也不知道對方在哪裡),而是上傳到雲端的伺服器軟體(稱為後台軟體或雲端軟體),再由伺服器軟體傳到對方手機中的通訊軟體。當我們打開LINE時,LINE會馬上跟LINE後台軟體溝通,所以後台軟體知道所有上線的LINE所在(網路位置,不是實體位置)。
不過程式(或稱應用軟體)沒辦法直接控制硬體,而是透過作業系統(稱為系統軟體)來控制鍵盤、螢幕以及網路,所以更進一步的樣子是下面這樣。

程式與作業系統之間的溝通,通常是透過「系統呼叫(System Call)」,這部分由程式開發環境(也就是Swift Playgrounds或Xcode)來幫我們轉譯,也就是說,Swift Playgrounds會將我們寫的 print("Hello world!") 轉譯成某些系統呼叫,將字串輸出到主控台,這樣的轉譯動作,稱為編譯(Compile)。
所以應用軟體的程式設計,大部分的工作是在與作業系統溝通,好的程式設計師必須熟悉作業系統的功能,要擅於跟電腦溝通,但是久而久之,反而會不擅於跟人對話。
算術運算又稱數學運算,是程式設計的基本工作,畢竟電腦”Computer”就是計算機器的意思,電腦能夠做的事情非常多,基本原理就是將所有資料(例如文字、聲音、圖案)「數位化」(轉換為0與1),然後就可以進行數學運算。而且電腦能一再重複相同的工作也不會累,所以電腦很擅長「重複性」的運算,就是本課要介紹的迴圈(Loop),迴圈非常有用,善用迴圈才能發揮出電腦最大的優勢。
請打開Swift Playgrounds,練習打入以下這段小程式。
// 範例1-2a: 算術運算
// Created by Heman, 2020/06/29
// 迴圈:求1到100整數和
var 總和 = 0
for i in 1...100 {
總和 = 總和 + i
}
print(總和)
這裡的重點是稱為 “for-in” 的迴圈(loop),或簡稱 for 迴圈,這是 Swift 三種迴圈之一,也是最常用的,語法如下:
for <迴圈參數> in <範圍> {
<重複執行的指令>
}
範例中 for i in 1...100 { } ,其中的 i 是一個特別的變數,不需要用 var 宣告,名稱同樣可以任意取,在此稱為「迴圈參數」,這個參數名稱能在迴圈 { } 裡面使用,出了 { } 就失效了。
for 迴圈的<範圍>則用符號 … (三個連續的半形句點) 來界定起始值與終止值。所以 for i in 1...100 {} 的意思就是大括號 { } 裡面的指令會重複執行,第一次 i = 1, 第二次 i = 2,⋯⋯直到最後一次 i = 100,一共執行100次,大括號是用來將一行或多行指令當作一個段落,for 迴圈會重複執行這個段落。
迴圈裡面目前只有一行指令:
總和 = 總和 + i
這個指令可以看出 Swift 的等號(=),跟數學的等號意義不同。數學上,等號兩邊的結果(值)必定相等,但在這裡,顯然不成立,在 Swift (以及大部分程式語言)裡面,等號(=)是指定(assign)的意思,會先進行等號右邊的運算(或稱為「運算式」),運算結果再指定給等號左邊的變數。Swift 中比較兩個值是否相等,則用兩個等號(==),後面講「邏輯運算」時會用到。
因此,進入第一次迴圈時,總和 = 0, i = 1, 因此等號右邊相當於 0 + 1,結果等於 1,再指定給總和,所以第一次執行之後,總和 = 1。
進入第二次迴圈時,總和 = 1, i = 2,因此等號右邊相當於 1 + 2,結果等於 3,指定給總和,然後進入第三次迴圈...以此類推,直到最後一次迴圈 i = 100。
問題:
(1) 我們知道連續的整數和其實是有公式的,為什麼不直接用公式呢?
(2) 1加到100是很經典的整數論問題,高斯很小就算出答案是5050,這故事大家都聽過。但是學過微積分的同學,可能會想到,1加到100的總和,應該相當於方程式 y = x, 取 x=0到100的三角形面積,那應該是 100 * 100 / 2 = 5000 才對啊,多出來的50從哪裡來的,有人知道嗎?




























































































