幼談蘋果新開發語言:Swift和蘋果的用心

今天是個值得記念的日子:由於蘋果的WWDC大會。蘋果的每次WWDC(全球開發者大會)舉行都讓咱們像打了腎上腺素這麼興奮、幸福、驚歎、震撼、深思。javascript

今年也不例外,最關鍵的是蘋果帶來了它的一門新開發語言:Swift.java

霎時間風起雲涌,短短几個小時互聯網界掀起了一股談論Swift的小高潮,若是你不知道Swift,你會以爲這是一件很丟臉的事情,粑粑。python

爲了避免至於太落後受鄙視,我今天也來簡單談談Swift(不知道爲什麼,國內把它稱爲雨燕。別這樣好嗎?這讓我想起了 長安鈴木的Swift 雨燕汽車)android

1

1、全新Swift編程語言改變了Objective-C複雜的語法,並保留了Smalltalk的動態特性ios

 這是目前你們公認的對Swift的評價。這裏咱們來解讀一下:程序員

 Objective- C:擴充C的面向對象編程語言。它主要使用於Mac OS X和GNUstep這兩個使用OpenStep標準的系統,是NeXTSTEP和OpenStep的基本語言。(百度百科上抄的),簡單一句話就是:objc主要是開發ios應用的(尤爲iphone),由於iphone火了,因此objective-c也火了。若是硬要說objective- c有多優秀,那倒也不至於,當時nextstep選用它開發,就是由於這貨用起來比較方便。objective-c

不過尤爲是objc的初學者,你會發現,這廝剛開始開發不習慣時是在太繁瑣了。至少我剛開始接觸xcode編程時對objc語法極端的不適應。若是不是xcode編輯器足夠的智能,不然讓我用記事本寫objc代碼必定連坨翔都寫不出。譬如咱們來看段代碼:編程

 myclass *mm=[[myclass alloc] initmy:[NSString stringByFormat:"%@",@"shenyi"]]; //手敲的,估計有錯,懶得檢查,沒興趣。swift

若是換成java其實就是:c#

 myclass mm=new myclass("shenyi"); //就是這麼清新爽潔,不緊繃。

Smalltalk:大叔級程序員必定有所耳聞,它被稱爲「面向對象編程之母」,主要被普遍應用於上個世紀80年代,它的出現推進了Objective-C,Actor, Java 和Ruby這些高大上語言的產生。

咱們來簡單看一下Smalltalk的語法:

一、賦值。 := ,要讓變量a=1,則須要a:=1

二、比較。= 譬如來判斷變量a是否等於變量b ,這種比較用於內容比較,非指針,

三、深比較a==b . 這是用來比較指針的,很純粹的比較。

對象定義:

在java中也許咱們得,int a;String b;float c;

但 是在Smalltalk中,只需|a b c| ,既完成了三個對象的定義,由於Smalltalk也是「接受任意類型的對象」的。後面咱們就能理解,爲什麼Swift也是這種貨色,只不過赤裸裸的|a b c |確實不太容易閱讀,所以,加了一個var 的關鍵字。譬如var a=1; 諸如此類

調用函數:

其實最令我吃驚的是Smalltalk的表達式。

譬如在java中咱們要寫下面的代碼:

  假設有個類叫作myclass,裏面有個方法是 showName,傳入一個字符串,而後赤裸裸的返回。

在java中調用:myclass _mm=new myclass();String a="沈逸"; String b=_mm.showName(a);

你們確定看得懂,而後咱們來看Smalltalk的寫法

 |a b|.

 a:="沈逸".

 mm:=myclass new.

 b:=mm showName:a.

 

好吧,你們會發現,smalltalk連"."、","都木有。你們仔細體會一下吧,有利於後面咱們來理解Swift爲什麼是objc和smalltalk的優生優育品種。

 

啥叫動態特性?

 這句話的第三個知識點是」動態特性「。

 所謂的動態特性是指:在運行時才進行關係肯定的特性。 也就是說譬如Smalltalk,假設有個變量,這個變量是在運行時才進行它的類型檢測和關係綁定的。

因此Smalltalk並不須要事先申明變量的類型,運行時進行系統自動檢測。

 

2、關於Swift語言

 看這節前,咱們心裏先默唸objective-c和smalltalk,接下來你就不難理解這貨爲什麼會這樣了。

 變量:

 var a=1    你們能夠看到,smalltalk的動態特性出現咧~~~~

 還能夠強迫指定類型: var a:Int=1   咱們來想一下smalltalk 是這樣寫的吧

 |a|

 a:=1(???var a:(Int)=1)

 

數組和對象:

若是你會javascript,那麼恭喜你,你已經會Swift的數組和對象了。看代碼:

var mylist=["I","love","you"]; //數組

對象:

 var mylist=[

  "name":"shenyi",

  "sex":"男"

]

循環:

var b=0;

var a= 0
    for i in 0..10 {  
        b+= i  
    }  

這是一目瞭然的簡單。 注意這裏有一種".." 還有一個是"...", 前者所謂的是前閉後開,後者是前開後閉。啥意思?很簡單嘛

var a= 0
    for i in 0..10 {  
        b+= i  
    }等同於

var a= 0
    for var i=0;i<10;++i{
        b+= i  
    }

函數:

 

func showname(name: String, age: Int)-> String {
       return "個人名字是 \(name), 年齡 是 \(age)."
} 

 

函數定義等同於java中的:

String showname(String name,int age)

同時,你還能夠經過元組返回多個值

func  getusersage(Int,Int,Int){

 return (20,23,25)

} 

啥叫元組?(可不是元祖蛋糕哦~~)我舉個例子:

var dept1=['小張','小明']; 表明部門1 中有小張和小明兩個同事。

var dept2=['小紅',dept1] ;表明部門2是一個大部門,包含了小紅以及部門1的全部同事,共三我的。

其實 detp1[1]的值是小明。 同理:dept2[1][1]的值 仍是小明

 

好了,這裏只作個大概介紹,本文並非教程,錯誤之處不免。同時我的總結一下:

一、你們若是真要學Swift,那麼請在mac上自行搭建環境邊測試邊學,網上目前很早就放出來的幾個Swift目測都有筆誤和講的混淆的地方(個人也同樣),學編程最主要的仍是要」本身動手,豐衣足食「,看教程看的大概便可。

二、swift剛出來,你們千萬不要認爲objective-c一點不會直接進入swift就能夠開發APP了。目測,這和vc和vc.net出來後同樣的道理,你若是徹底不會vc,那麼vc.net也玩不轉

三、Swift和objc的交互到底到達什麼程度,我還沒試用過,100%兼容我我的認爲目前是不可能的。

四、當年c#剛出生(2000年),也是經過了多個版本後開始逐步強大和成熟。Swift不可能由於是蘋果的就不須要走這條」曲折的道路「。

五、objc確實有點繁瑣,可是不像網上某些教程說的」極爲繁瑣」,要說替代還爲之過早。

六、 若是要說Swift的目的,我我的認爲確定不是蘋果爲了「減輕開發者負擔,下降學習門檻」而設置的,若是要說性能,也許Swift要更勝一籌,但絕對不是 微博上某些「objc噴子」說的比objc高N個檔次,我的更認爲Swift多是蘋果進軍 1)跨平臺 2)穿戴智能設備 3)智能家居等   幾個方面或某個方面用的。

 正由於objc的一些特性,讓不少android開發者不肯意轉換到哪怕腳踏兩隻船到ios陣營中(這只是其中一個因素),若是出現了一個swift,也許就不同了。(僅僅是也許)

七、固然也有種多是蘋果將來的硬件設備會作大的內核更新,也許內部開發也已經使用了Swift語言。由於在Iphone的A6及以上處理器中(iPhone5採用了A6雙核處理器),蘋果自主設計的內核已經命名爲Swift了。

八、有人說蘋果是爲了和Android競爭。我的認爲這徹底不必,蘋果的產品一貫是「硬件和軟件的完美結合」這個特性打的天下。蘋果更大的着力點應該是在硬件上,不必在軟件上和人家分高低。

九、不少人看了一些swift 的教程後(今天才出來的教程哦),以爲swift抄襲了不少語言的特性如java、c#、python。 其實用「借鑑」更合適,由於人家是蘋果。若是咱們這麼作了,才叫抄襲。

十、今天我在微博上打一則招聘廣告,這麼寫了:急需IOS開發,須要精通Swift,開發經驗一天。 結果有幾個網友來告訴我,很想應聘,只不過離開招聘要求還差幾個小時。~~~~~~

 

--------------------------------

 

 

關注個人微信公衆號,天天成熟一點點用不一樣的角度爲你解讀各類IT世界觀
關注步驟:
  很直接的拿出手機->打開微信->點掃一掃,掃下面二維碼便可

 

 

相關文章
相關標籤/搜索