swift編程語言
⑴ swift是不是最新的一種編程語言
翻完iBooks書店上的The Swift Programming Language, 也下載了Xcode 6的beta版本來試驗了一下。現在可以評價一下。如發現不對的地方,請在評論中指出,我斟酌後進行修正。
主要從技術的角度。而商業的角度,吸引開發者,共同維護蘋果生態圈的繁榮等之類就不說了。
我不敢說swift學了有沒有用,可不可以掙更多錢,但這門語言還是比較有意思的。swift骨子裡面還是objc,但打扮過,比原來的模樣漂亮。個人感覺,蘋果還真的想用它取代objc呢。
------------------
swift 跟 objc 共用同一套的運行時環境
swift 的類型,可以橋接到 objc 的類型,反之亦然。如 string 對應原來objc的NSString, closures對應objc的block,等等。objc 積累下來的大量庫,實現不用改寫,swift 就直接可以使用。(最多加個聲明文件)。看兩個API的聲明,對比一下
objc
void
dispatch_apply(size_t iterations, dispatch_queue_t queue,
void (^block)(size_t));
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
swift
func dispatch_apply(iterations: UInt, queue: dispatch_queue_t!, block: ((UInt) -> Void)!)
func touchesBegan(touches: NSSet!, withEvent event: UIEvent!)
我懷疑,swift中的介面文件,是利用原來objc,c中的介面文件自動程序生成的。
同一個工程,可以同時使用swift, objc, c, c++ 四種編譯語言(額外嵌入的腳本語言另算)
原來的 iOS/Mac 工程,已經可以同時使用objc, c, C++三種語言。現在支持第四種。objc, c, c++三種語言的結合很容易, objc跟c本身就兼容,objc跟c++結合只要將文件名改成.mm。而swift跟其它語言的結合,需要另外的文件進行橋接,其實也挺方便的。
這里的橋接很容易,Apple自家的各種 C 庫移植過來了。比如Core Image/Audio,直接包含
import CoreAudio
import CoreImage
就可以使用了。
現在swift完全可以跟objc並存,原來的工程不建議重寫,也不用重寫。順其自然,慢慢讓它進化就是了。
swift 寫法看起來像腳本語言,但它是真正的編譯語言
初學者,看它使用了
let a = 4
var b = "hello"
沒有類型定義,就想當然的覺得它是腳本語言,解釋執行,這是錯誤的。上面兩行語句是用了類型推導,類似 C++ 裡面的auto。swift跟objc的運行時環境一樣,寫的程序跑起來不會比objc慢。swift區分了struct和class, 分別使用傳值跟傳引用。適當地使用struct,應該會比objc要快一點。
swift 吸收了很多其它語言的語法,寫起來比objc簡潔得多,不過它骨子裡面的概念,跟原來objc差不多
編程語言的語法重要,但是語法背後的概念更重要。比如面向對象,常用概念無非是,繼承,多態,封裝,信息隱藏等。繼承又可能分成多重繼承,介面繼承,實現繼承。或者還會有些嵌套類,嵌套函數等等。
當明白語法背後的概念,知道為什麼需要有這些東西。之後從一門語言切換到另一門有著相同概念的語言,其實很容易。
而語法會影響表達,理論上每門語言都可以表達任何概念。不過當某種概念在某門語言中,很難表達出來,就會傾向於不這樣使用它,這種概念在那門語言的社區就難以被人熟知。
感覺上,swift有著 obj-c, C++, Ruby的影子。
暫時,我自己最喜歡的3個特性有
tuple,終於可以返回多個數值了。一行交換兩個值。C++裡面的tie+tuple也可以實現類似功能,不過使用庫,顯得噪音太多。
closure,喜歡它的簡寫,還有在函數最後一參數,可以寫在()外面。這些特性,用來寫函數式風格的程序,會很好看。而原來objc的block, 還有c++的function, 就太啰嗦了。
switch,case裡面的條件匹配。
這些語法,編譯最後還是會映射成原來objc的運行模型。原來objc的概念,引用記數,ARC, 屬性,協議,介面,初始化,擴展類,匿名函數等等,繼續有效。
我將swift看成是objc的一塊大大的語法糖。
有個大塊頭的東西,是原來objc沒有的,就是泛型。swift中 將那種操作寫一次,就可以作用多個類型的語法叫做generics(泛型),而C++中稱為template(模板),叫法不同,本質是同樣的東西。
總的說來,swfit 涵蓋了現在流行的編程方式,結構化,面向對象,泛型,函數式。
swift的新語法,可以很好地支持內部DSL
有一種編程風格,不太好歸類。就是將程序拆分成,描述+解釋。解釋部分寫一次,其它地方使用描述式的語句,而不是命令式的語句。
內部DSL,通常利用主語言的語法特性,創出一套寫法,來寫一些描述性的語句。這些語句組合起來,就像一門新語言似得。這個比較難理解。舉個例子(從ruby那裡借過來的),假如計算,幾小時之後的秒數。C語言中,大概會寫成
getHourSeconds(3)
而現在 swift中,只要定義了擴展
extension Int
{
var hours:Int
{
return self * 3600
}
var ago:Int
{
return -self
}
}
就可以寫成
3.hours
3.hours.ago
分別是3小時後的秒數,3小時前的秒數。
同理,也可以寫成
10.days
10.days.ago
這種寫法,看起來跟原來的命令式寫法完全不同。這些程序是描述性的。原來的objc, 做不到這點。 我估計swift以後會冒出大量這樣風格的庫。
這種風格,到底好不好,要看情況。比較方便定義內部DSL的語言, 我自己知道的有C++, Ruby, Lisp。現在多了Swift。
認為所有人都是0基礎的,是錯誤的
有些人學得特別快,因為之前的基礎好。語言的語法只是表面,表面的東西總是變動得比較快的。底下的東西重要得多,而看不見。水面一塊冰,有些人是冰山露出一角,有些人是無根的浮冰。看起來差不多,其實差別十分之大。
我相信有些人,在兩個小時之內就可以使用這門新語言。
提提那個Playground
之前蘋果的員工,Bret Victor 演講過個視頻。提到這個這種可視化編程。當我們每一步操作,都得到實時地反饋,我們的做法會有很多不同,做出的東西也會不同。這個Playground,用來學習swift的特性很好用,不過我還不知道怎麼才能跟工程結合起來使用,不作評論。
⑵ swift語言的介紹
Swift是Apple在WWDC2014所發布的一門編程語言,用來撰寫OS X和iOS應用程序[1]。在設計Swift時.就有意和Objective-C共存,Objective-C是Apple操作系統在導入Swift前使用的編程語言Swift是供iOS和OS X應用編程的新編程語言,基於C和Objective-C,而卻沒有C的一些兼容約束。Swift採用了安全的編程模式和添加現代的功能來使得編程更加簡單、靈活和有趣。界面則基於廣受人民群眾愛戴的Cocoa和Cocoa Touch框架,展示了軟體開發的新方向。2010 年 7 月LLVM 編譯器的原作者暨蘋果開發者工具部門總監克里斯·拉特納(Chris Lattner)開始著手 Swift 編程語言的工作,還有一個 dogfooding 團隊大力參與其中。至2014年6月發表,Swift大約歷經4年的開發期。蘋果宣稱Swift的特點是:快速、現代、安全、互動,且全面優於Objective-C語言。Xcode Playgrounds功能是Swift為蘋果開發工具帶來的最大創新,該功能提供強大的互動效果,能讓Swift源代碼在撰寫過程中能實時顯示出其運行結果。拉特納本人強調,Playgrounds很大程度是受到布雷特·維克多(Bret Victor)理念的啟發。JavaEye的創始人Robbin發表意見:「對程序員來說,熟悉Swift語法也不過一天時間足夠了。關鍵是要提供高級數據類型,簡化Cocoa類庫,否則用不用Swift都沒區別。」
⑶ swift編譯器是用什麼語言開發的
雖然Swift是一個全新的語言,但與Objective-C和C卻有著千絲萬縷的關系,Swift其實就是Objective-C的文本變種,對於這門全新的語言,蘋果做的工作其實遠沒有想像的艱巨。LLVM編譯器做工作只是先把swift翻譯成Objctive-C代碼,然後再把Objective-C代碼翻譯成C語言代碼,然後再把C語言代碼翻譯成匯編,最終翻譯成機器碼。雖然Swift其實就是Objective-C,但是對入門者而言Swift遠比Objective-C好學,吸取所有語言的精華,所以如果自學建議直接學習swift,但是如果參加培訓建議先學習C/Objective-C,這樣能夠更好的理解底層的實現原理。
⑷ swift 編程語言
用的xcode;
⑸ swift這門編程語言會不會超越oc成為ios的主流開發語言為什麼
以蘋果的態度來看,應該是主推swift,但是這只要也得要一兩年的時間才能完全代替oc。所以說現在也不用急著學 swift,也不要抱著oc能一直作為主力開發語言的心態。
⑹ swift 語言的簡介
蘋果公司在2014年的WWDC大會上發布了全新的編程語言Swift語言,Swift語言繼承了C語言以及Objective-C的特性,且克服了C語言的兼容性問題。Swift語言採用安全編程模式,且引入了多種新功能,使得編程工作更加簡便,靈活!
此外,Swift語言還有技術已經十分成熟的Cocoa,及Cocoa Touch框架支持,更加可靠!
在Swift發布前,iOS和OS X的開發語言是Objective C,這是一款已經三十多歲的編程語言,並且其語法十分之吊詭,和其他C語言風格的編程語言有著極大的區別。因此,讓許多想轉做iOS端應用開發的程序員紛紛吐槽,「為什麼Objective C這么難學?!」即便是一些已經在做iOS端開發的程序猿也表示,如果不是蘋果只支持Objective C,自己其實並不想用Objective C做開發。
因此,蘋果此次發布的Swift這款語法更為簡潔的,兼容Objective C的語言。而在其開發者指南中,我們可以看到Swift從Python和Java Script中學得了許多東西,從而讓Swift更為易讀,或者說更為「口語化」。
然而,對這類語法更為簡潔的語言,許多人會質疑其運行效率。對此,蘋果以對復雜對象的排序為例,指出Swift在許多方面比Objective C的性能更好。
Swift已經存在了多年。Apple基於已有的編譯器、調試器、框架作為其基礎架構。通過ARC(Automatic Reference Counting,自動引用計數)來簡化內存管理。我們的框架棧則一直基於Cocoa。Objective-C進化支持了塊、collection literal和模塊,允許現代語言的框架無需深入即可使用。感謝這些基礎工作,才使得可以在Apple軟體開發中引入新的編程語言。
Objective-C開發者會感到Swift的似曾相識。Swift採用了Objective-C的命名參數和動態對象模型。提供了對Cocoa框架和mix-and-match的互操作性。基於這些基礎,Swift引入了很多新功能和結合面向過程和面向對象的功能。
Swift對新的程序員也是友好的。他是工業級品質的系統編程語言,卻又像腳本語言一樣的友好。他支持playground,允許程序員實驗一段Swift代碼功能並立即看到結果,而無需麻煩的構建和運行一個應用。
Swift集成了現代編程語言思想,以及Apple工程文化的智慧。編譯器是按照性能優化的,而語言是為開發優化的,無需互相折中。可以從Hello, world開始學起並過渡到整個系統。所有這些使得Swift成為Apple軟體開發者創新的源泉。
⑺ swift 是基於什麼語言實現的
swift 語言是蘋果公司在2014年的WWDC大會上發布的全新的編程語言。Swift語言繼承了C語言以及Objective-C的特性,且克服了C語言的兼容性問題。Swift語言採用安全編程模式,且引入了多種新功能,使得編程工作更加簡便,靈活!
⑻ swift是什麼意思 Swift編程語言有什麼用
1、swift目前必須用xcode開發,xcode只能運行在蘋果系統下。2、注意蘋果系統與蘋果電腦是單獨的兩個概念,最簡單的方法,你可以在普通的windows系統上安裝虛擬機軟體vmware之類的,然後用vmware來安裝蘋果的mac osx系統,然後在這個蘋果系統下來安裝運行xcode。3、當然,因為蘋果電腦與普通電腦的硬體是沒有任何區別的,所以理論上任何電腦上也都可以安裝上真正的蘋果系統,這種就叫做黑蘋果,不過其中最難的就是硬體驅動,要解決一是看硬體本身,二要看技術了。可以自己查找下。
⑼ 哪個iOS培訓機構教Swift編程語言的
現在Swift很火!作為新的iOS開發語言受到了廣大同學和開發者的喜歡,據我所知北京和長沙的無限互聯都有教iOS開發的課程!需要的可以去考察一下!上次我在網上看到那個CSDN上面有個叫汪洪俊的 博客裡面有很多Swift語言的教程,看了還不錯。
⑽ 求swift編程語言的軟體
swift與object-c開發環境都一樣,都是mac os x上的xcode,也就是說你要麼有一台mac主機(筆記本或對台式機都行),要麼在windows上用虛擬機安裝mac os x,要麼去弄一台黑蘋果主機(蘋果電腦與普通電腦硬體沒有任何區別,在普通電腦上安裝的蘋果系統就稱之為黑蘋果)