1. 程式人生 > >我對Swift的幾點疑問

我對Swift的幾點疑問

        Swift自問世以來,就獲得了全球開發者的青睞,可以說集萬千龐愛於一身了,尤其是WWDC上的效能展示,更是讓開發者為之振奮。但是,我卻一直有幾個疑問沒有弄清,不知您的看法如何。        Swift到底是編譯型的,還是解釋型的?我們知道Objective-C是編譯型的,源程式被編譯成機器碼才能執行。我們也知道Python是解釋型的,由直譯器負責解釋執行,可以邊寫原始碼邊獲得解釋的結果。從Xcode 6的Playgound來看,Swfit應該是解釋型語言,可以邊寫程式碼邊看到執行結果。但是,作為解釋型語言的話在效能上不太可能會領先於編譯型的Objective-C那麼多,即使對編譯器進行了優化也很難拉開較大的差距。感覺Playgound像是IDE專門為Swift提供的一個工具,為了在語言使用上能有些互動性,該工具可以解釋正在編寫的程式碼,從而形成解釋執行的互動式結果展現。因此,從Swift的效能來看,它還是編譯型語言。
        Swift到底是面向過程的還是面向物件的?這個從Apple的The Swift Programming Language裡找到了答案,既支援面向過程程式設計,也支援面向物件程式設計。不過在對其class學習以後,沒有發現Java、C#等面嚮物件語言的訪問修飾符,可能沒有深入,還沒領會到具體的用法上如何做到更好的封裝和資訊隱藏。        Swift是靜態語言還是動態語言?簡單的看,Swift通過var和let宣告變數和常量,不需要指定資料型別,非常像JavaScript等動態語言。但是仔細學習可以發現,其實Swift是靜態語言,而且是型別安全的靜態語言,即使是Int和Double也需要顯示轉換。那麼不需要資料型別的宣告其實就是語法糖了,是編譯器做的型別推斷,一旦型別確定就無法再改變了。所以Swift應該還是靜態語言。
        我想通過繼續學習和使用Swfit,還會遇到更多問題,但這才是語言學習的樂趣。