# 歷史
相傳貝爾實驗室的布萊恩(Brian Kernighan)於1972年撰寫的內部技術文件"A Tutorial Introduction to the Language B"中首次使用B語言展示一字串"hello, world"顯示於螢幕。於1974年在內部技術文件"Programming in C: A Tutorial"再次使用C語言展示字串"hello, world"。
這件事情就這樣流行了起來,現在幾乎各大程式語言或是框架的第一個程式都會命名為hello world,其功能就是展示字串"hello, world"於螢幕上。其代表的意義則是將輸入(字串hello, world)經過系統(撰寫的程式)輸出(展示於螢幕上)。當有人問你某程式語言的掌握程度如何時,你可以回答:差不多hello world!這樣大家都會懂的:joy:
:::info
有一說BCPL更早就使用過"hello, world"來當展示範例,但目前一是沒有明確的資料來源,二是資料顯示是布萊恩讓這件事情流行起來,所以保持與Wiki相同的說法,僅為博君一笑,若有明確的資料來源也歡迎聯繫我指教討論。
:::
---
# 安裝Swift
學習程式語言的第一步永遠是建置相對應的編輯執行環境,實際將程式碼執行起來,藉由不斷地修改、增減慢慢地掌握度也會越來越高。程式語言也是一種語言,不要害怕犯錯,勇敢地使用下去吧!
Swift支援macOS、Linux以及Windows的作業系統,您可參照[安裝網址](https://www.swift.org/install/)自行進行安裝。
也有線上版本(https://swiftfiddle.com/),可以在瀏覽器上直接執行您的程式碼。
:::info
較不建議使用,因為實際測試後延遲時間有點大,條件許可的狀況下建議安裝於本地端電腦上。
:::
Swift是由蘋果公司開發並用來取代Objective-C的現代程式語言,它借鑒了許多程式語言的思想(Objective-C、Rust、Haskell、Ruby、Python、C#...等),因此在性能上有優異的表現,可作為一通用的程式語言。然而更多時候,Swift被用來打造iOS、Mac、Apple TV與Apple Watch的App,因此未來的演示將會基於macOS,不同作業系統也會有相同的結果。
:::danger
雖然Swift也可以開發Web Service,但大多數的狀況Swift會搭配SwiftUI框架開發App,沒有macOS電腦的朋友請自行思考是否需要投入時間學習。
:::
安裝完畢後開啟終端機,輸入
`$ swift --version`
看到swift版本的資訊就代表安裝成功了
:::success
類似以下資訊但並不會完全相同:
swift-driver version: 1.87.3 Apple Swift version 5.9.2 (swiftlang-5.9.2.2.56 clang-1500.1.0.2.5)
Target: x86_64-apple-macosx14.0
:::
---
# 第一支程式
開啟終端機,進入工作目錄後,輸入
`$ mkdir first_program`
`$ cd first_program`
`$ swift package init --name hello_world --type executable`
`$ swift run hello_world`
會得到以下結果
:::success
Building for debugging...
[3/3] Linking hello_world
Build complete! (1.20s)
Hello, world!
:::
其中
`$ mkdir first_program`
代表建立一個名為first_program的資料夾
`$ cd first_program`
代表進入first_program這個資料夾
`$ swift package init --name hello_world --type executable`
代表建立一個名為hello_world的package,而這個package的型態為executable(可執行的)
`$ swift run hello_world`
代表執行hello_world這個package
---
可以看到first_program資料夾的階層關係如下
```mermaid
graph LR;
first_program-->id1[[Package.swift]]
first_program-->Sources
Sources-->id2[[main.swift]]
```
其中Package.swift紀錄著著個package的資訊(亦即name為hello_world和type為executable),main.swift則是程式碼所在。
更改main.swift的內容
```
//print("Hello, world!")
print("Sup, man!")
```
在first_program的目錄下,再次執行
`$ swift run hello_world`
會得到以下結果,其中最後一行從"Hello, world!"被更改為"Sup, man!"
---
# Yes, you did it!
抓緊了,要正式啟航了!
---
# 參考資料來源
[1] https://en.wikipedia.org/wiki/%22Hello,_World!%22_program
[2] https://www.swift.org/getting-started/cli-swiftpm/