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

來源:互聯網
上載者:User

標籤:android   c   style   class   blog   code   

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

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

霎時間風起雲湧,短短几個小時互連網界掀起了一股談論Swift的小高潮,如果你不知道Swift,你會覺得這是一件很丟臉的事情,粑粑。

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

一、全新Swift程式設計語言改變了Objective-C複雜的文法,並保留了Smalltalk的動態特性

 這是目前大家公認的對Swift的評價。這裡我們來解讀一下:

 Objective- C:擴充C的物件導向程式設計語言。它主要使用於Mac OS X和GNUstep這兩個使用OpenStep標準的系統,是NeXTSTEP和OpenStep的基礎語言。(百度百科上抄的),簡單一句話就是:objc主要是開發ios應用的(尤其iphone),因為iphone火了,所以objective-c也火了。如果硬要說objective- c有多優秀,那倒也不至於,當時nextstep選用它開發,就是因為這貨用起來比較方便。

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

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

如果換成java其實就是:

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

Smalltalk:大叔級程式員一定有所耳聞,它被稱為“物件導向編程之母”,主要被廣泛應用於上個世紀80年代,它的出現推動了Objective-C,Actor, Java 和Ruby這些高大上語言的產生。

我們來簡單看一下Smalltalk的文法:

1、賦值。 := ,要讓變數a=1,則需要a:=1

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

3、深比較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的寫法

?
1 2 3 4 5 6 7 |a b|.   a:="沈逸".   mm:=myclass new.   b:=mm showName:a.

 

好吧,大家會發現,smalltalk連"."、","都木有。大家仔細體會一下吧,有利於後面我們來理解Swift為何是objc和smalltalk的優生優育品種。

 

啥叫動態特性?

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

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

所以Smalltalk並不需要事先申明變數的類型,運行時進行系統自動檢測。

 

二、關於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"]; //數組

對象:

?
1 2 3 4 5 6 7 var mylist=[     "name":"shenyi",     "sex":"男"   ]

迴圈:

?
1 2 3 4 5 6 var b=0;   var a= 0     for i in 0..10 {          b+= i      

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

?
1 2 3 4 5 6 7 8 9 var a= 0     for i in 0..10 {          b+= i      }等同於   var a= 0     for var i=0;i<10;++i{         b+= i      }

函數:

 

?
1 2 3 func showname(name: String, age: Int)-> String {        return "我的名字是 \(name), 年齡 是 \(age)." }

 

函數定義等同於java中的:

String showname(String name,int age)

同時,你還可以通過元組返回多個值

?
1 2 3 4 5 func  getusersage(Int,Int,Int){    return (20,23,25)   }

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

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

var dept2=[‘小紅‘,dept1] ;代表部門2是一個大部門,包含了小紅以及部門1的所有同事,共三個人。

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

 

好了,這裡只做個大概介紹,本文並不是教程,錯誤之處難免。同時個人總結一下:

1、大家如果真要學Swift,那麼請在mac上自行搭建環境邊測試邊學,網上目前很早就放出來的幾個Swift目測都有筆誤和講的混淆的地方(我的也一樣),學編程最主要的還是要”自己動手,豐衣足食“,看教程看的大概即可。

2、swift剛出來,大家千萬不要認為objective-c一點不會直接進入swift就可以開發APP了。目測,這和vc和vc.net出來後一樣的道理,你如果完全不會vc,那麼vc.net也玩不轉

3、Swift和objc的互動到底到達什麼程度,我還沒試用過,100%相容我個人認為目前是不可能的。

4、當年c#剛出生(2000年),也是通過了多個版本後開始逐步強大和成熟。Swift不可能因為是蘋果的就不需要走這條”曲折的道路“。

5、objc確實有點繁瑣,但是不像網上某些教程說的”極為繁瑣”,要說替代還為之過早。

6、 如果要說Swift的目的,我個人認為肯定不是蘋果為了“減輕開發人員負擔,降低學習門檻”而設定的,如果要說效能,也許Swift要更勝一籌,但絕對不是 微博上某些“objc噴子”說的比objc高N個檔次,個人更認為Swift可能是蘋果進軍 1)跨平台 2)穿戴智慧型裝置 3)智能家居等   幾個方面或某個方面用的。

 正因為objc的一些特性,讓很多android開發人員不願意轉換到哪怕腳踏兩隻船到ios陣營中(這隻是其中一個因素),如果出現了一個swift,也許就不一樣了。(僅僅是也許)

7、當然也有種可能是蘋果未來的硬體裝置會做大的核心更新,也許內部開發也已經使用了Swift語言。因為在Iphone的A6及以上處理器中(iPhone5採用了A6雙核處理器),蘋果自主設計的核心已經命名為Swift了。

8、有人說蘋果是為了和Android競爭。個人認為這完全沒必要,蘋果的產品一向是“硬體和軟體的完美結合”這個特性打的天下。蘋果更大的著力點應該是在硬體上,沒必要在軟體上和人家分高低。

9、很多人看了一些swift 的教程後(今天才出來的教程哦),覺得swift抄襲了很多語言的特性如java、c#、python。 其實用“借鑒”更合適,因為人家是蘋果。如果我們這麼做了,才叫抄襲。

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

 

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

 

 

關注我的公眾號,每天成熟一點點用不同的角度為你解讀各種IT世界觀
關注步驟:
  很直接的拿出手機->開啟->點掃一掃,掃下面二維碼即可

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.