prettyprint

2014年6月20日 星期五

【Swift 筆記】Hello World 2



前言



Hello, World 是學習語言與使用開發工具的基礎,在 Xcode 可用 Playground 工具,也可用 Xcode 的 iOS / Single View Application 開發,而在此介紹另一種以 OS X / Command Line Tool 來開發。

說明



點選 New > Project ...,然後點選 OS X > Application > Command Line Tool



設定專案的屬性,例如:產品名稱、使用開發語言等。



儲存 Project。

此時,選定好的 framework 已經幫我們建立好 main.swift,以及其他相關檔案。之後,執行測試此程式:



Foundation 這 framework 是預設,既使刪除掉,也不影響執行結果。

為何 Swift 語言不像 C、Objective-C 等需有 main() 告知 App 的入口?在此,print("Hello, world") 被定義宣告在 top level 中,所以無需再以 main() 定義宣告 App 的入口點。

結語



類似如此簡單的程式,重點不在程式,反而在 Xcode 工具的應用,以及專案中每個細節。這部分基礎學習,事實上已有專書,或是參考網路上的資源。

2014年6月19日 星期四

【Swift 筆記】玩玩 Playgrounds

前言


要讓 App 能被執行,須先將程式的文字碼轉換成讓電腦(或手機)能懂的機器碼。在此,有 3 種轉換方式:直譯 interpreter、 編譯 complier 、 mixed 混合型。

直譯式就像 Visual Basic,你打完一行程式後,這行程式馬上被翻譯,而編譯式的做法不同。編譯式需等全部程式寫完後,一起拿來編譯成機器碼。直譯式開發快,但執行效率低;這正與編譯式恰好相反。編譯式開發慢,但編譯後的執行檔,其執行速度快。所謂混合式 mixed 編譯,最好的例子就是 Java。Java 程式寫完後才編譯,而編譯後所產生的只是中間代碼,稱之為 byte code,這必須透過 JVM 這虛擬器直譯成機器語言(Android 是用不同的虛擬器,稱 JDK)。

可以肯定的是 Objective-C 與 Swift 皆是編譯式的程式語言,但 Swift 與 Objective-C 最大不同之處是它提供 Playground 這直譯工具,若要熟習 Swift 語言的特性,或只是做個小測試,可以先在這工具試試。這加快了熟悉對 Swift 語言的掌握。

Xcode 6 才有支援 Playgrounds。Apple 從 LLVM 這新的編譯器中,釋放此工具給App 開發者使用。

說明


首先選擇 New > File... > iOS > Source > Playgrounds,依序新增一個 Playground 的檔案。

同樣,在啟動 Xcode 時,也可點選 Get started with a playground 來新增一個 playground 的檔案。



儲存新增檔案的存取位置後,系統新增一個直譯式的執行環境



Playgrounds 也可當場測試 Cocoa Touch 的程式碼,但在測試前面,需先將測試的平台設定為 iOS 才可以。例如:要測試 UIKit 則必須做好設定:
   1. 點選 View -> Utilities -> Show File Inspector (opt + cmd + 1)
   2. 在 Xcode 的右邊,更改 “Playground Settings -> Platform” 的設定,由 OS X 改為 iOS


打開 Show View Toolbar



測試時,可先點選小圓圈的按鈕,執行結果就出現在視窗最右邊。



在此將程式碼與執行結果做個比對:



另外的測試是就是點選 Quick View 的眼睛,此時就會將結果顯示在彈跳 Pop-Up 出來的視窗。



也可以測試影像


結語


Playgrounds 是個很棒的開發測試工具,可以做到 WYSIWYG ("What You See Is What You Get"),這樣直覺式的學習方式,這可以加速對 Swift 的了解。不過,習慣以 UI 方式製作 UI 元件的人,以程式碼來製作這些元件,若不稍微熟悉 Cocoa Touch 的架構,會稍嫌吃力些。

參考


1. Inside Swift: Apple's new programming language for iOS developers
http://www.citeworld.com/article/2360720/development/inside-swift-apples-new-programming-language-for-ios-developers.html

【Swift 筆記】Hello World

前言


學習程式語言第一個練習通常以 Hello, World! 這程式開始,這始於Brian W. Kernighan, Dennis M. Ritchie 所著 《C 語言程式設計 (The C Programming Language, 2/e)》,爾後幾乎被奉為圭臬。這裡參考 Youtube 的 SwiftDevs [1],試著練習。

說明


新增 Project。 點選 New -> Project ... 在 iOS 選用 Single View Application 這架構 (framework)



給定 Product Name 時,注意:Product Name 允許「空白」字元。此外,在 Language 這下拉選項,我們設定使用 Swift 編輯程式。



在 Project 的 General 頁次(Tab),其 Deployment Information 段的 Device Orientation 沒有預設值(Default),在此選取 Portrait 與 Upside Down



在告知 Xcode 儲存位置後,系統自動生成 AppDelegate.swift、ViewController.swift、Main.storyboard 與其他相關檔案。然後,點選Storyboard,試在其上新增一個 Label 與一個 Button。



之後,試著將 View 上新增的 UI 元件與程式碼相關聯。這裡新增一個 Outlet 變數,也新增一個 Action 的函式,關聯方法與過去以 Objective-C 開發的方式相同。



測試時,選取 iPhone5,執行程式。


結語


Swift 是相當簡潔、漂亮的語言,而由 Cocoa Touch 架構生成的 source code,與以 Objective-C 所寫相比較,可說清晰可喜。

Swift 畢竟只是企圖取代 Objective-C 的新語言,所以 App 的核心仍在熟悉 Cocoa 的使用。同樣以 Xcode 這 IDE 工具編輯、模擬執行,因此過去在 Objective-C 開發所學的依然沿用。縱然如此,別擔心,Swift 與 Objective-C 可混搭使用 (最好避免),而過去以 Objective-C 開發的 Library 仍可被引用。

Reference


1. Swift - Hello World Tutorial
https://www.youtube.com/watch?v=w_0QPVG2pQk

2014年6月17日 星期二

【短訊】Apple's Swift

【短訊 2016.4.29】

Swift 開源後,傳 Google 考慮作為開發 Android 的主要程式語言



【短訊 2014.6.10】Apple's Swift 來勢洶洶

依據 Infoworld Tech Watch 6/10 報導,Apple's Swift 將於7月擠進 Tiobe index 前 20 名。在 PyPL indexe 有可能排名第 9。截至 6/10 在 GitHub 上已有 157個與 Swift 有關的專案。

Reference:Apple's Swift is instant hit among top programming languages


【短訊 2014.6.10】Swift Features 特點

Swift 並不是從新起爐灶,而是集各家程式語言優點所發展出來,適用在 iOS / XOS 平台上。例如:

1. Dictionaries (aka hash tables) -- from JavaScript
2. Inferred data types -- from functional programming languages
3. Data structure declarations -- from C# and Java
4. String templating -- from Cold Fusion, JSP, and others
5. Optional semicolons -- from JavaScript and Python
6. Protocols (aka interfaces) -- from Java and C#
7.Tuples -- from Lisp and Python
8.Automatic reference (akin to garbage collection) -- from Java, C#, and (gasp) Objective-C
9. Signed and unsigned integers -- C# and Objective-C
10. Closures -- from Lisp and Scheme via JavaScript

Reference:10 features Apple 'stole' for the Swift programming language

【短訊 2014.6.2】Apple WWDC 2014 - Swift

2014.6.2 Apple 年度WWDC(Worldwide Developer Conference)發表新程式語言 Swift
From:https://www.youtube.com/watch?v=l62x8Oq_QP4



prettyPrint();