零基礎(chǔ)現(xiàn)學(xué)蘋(píng)果新語(yǔ)言Swift,可能嗎?
在剛剛過(guò)去的蘋(píng)果 WWDC 2014 上,除了備受關(guān)注的 OS X 10.10 和 iOS 8 之外,蘋(píng)果還發(fā)布了一款全新的編程語(yǔ)言 Swfit。對(duì)蘋(píng)果遍及全球的開(kāi)發(fā)者來(lái)說(shuō),Swift 無(wú)疑是 WWDC 2014 的一大爆點(diǎn),但對(duì)于那些跟電腦編程沒(méi)有太大關(guān)系的普通人來(lái)說(shuō),Swift 至多是蘋(píng)果發(fā)布的一款不明覺(jué)厲的新東西。不過(guò),當(dāng)驚奇的在社交網(wǎng)絡(luò)上看到這樣:“實(shí)現(xiàn)我碼農(nóng)的夢(mèng)想,就靠你了, Swift ! ” 的話之后,他們又覺(jué)得 Swift 這個(gè)logo 為橙黃色俯沖雨燕的新東西離自己又沒(méi)有那么遠(yuǎn)。
但和開(kāi)發(fā)者們聊了一下會(huì)發(fā)現(xiàn),事情沒(méi)這么簡(jiǎn)單。
1. 比現(xiàn)在的編程語(yǔ)言要高級(jí)
作為 iOS 系統(tǒng)內(nèi)部的開(kāi)發(fā)語(yǔ)言,Swift 其實(shí)是現(xiàn)在正在使用的編程語(yǔ)言O(shè)bjective C (objc)的替代品。我們?nèi)缃裨? iPhone 中所使用的 app 都是用這個(gè)編程語(yǔ)言一行行代碼敲出來(lái)的。這個(gè)編程語(yǔ)言在 1980 年代初由 Stepstone 公司發(fā)明,之后作為 iOS 操作系統(tǒng)的編程語(yǔ)言,隨后者流行至今。
從級(jí)別上來(lái)看,objc 與 C語(yǔ)言/ C++ 同屬較低級(jí),而新晉的 Swift 要比這些都高級(jí),屬于跟微軟的開(kāi)發(fā)語(yǔ)言 C# 和安卓的開(kāi)發(fā)語(yǔ)言 Java 看齊的開(kāi)發(fā)語(yǔ)言。
2. 也更加高效
由于 objc 與同級(jí)別的 C語(yǔ)言/ C++ 同屬較低的系統(tǒng)級(jí),所以相對(duì)的開(kāi)發(fā)效率、工程化程度也自然比較低,Swift 一出生就代表著更新?lián)Q代升級(jí),自然也是更高效,比如編程的語(yǔ)法更加簡(jiǎn)潔、語(yǔ)言的類型安全更加實(shí)現(xiàn),以及引入了許多動(dòng)態(tài)語(yǔ)言特征等,而在運(yùn)行速度上,它更是 比objc 快了 3 倍。“打個(gè)比方,objc 就像傳統(tǒng)木工的鋸、斧、刨等手工工具,而 Swift 就像是一體化的木工車(chē)床。它屬于創(chuàng)作工具的升級(jí)。”科泰華捷科技有限公司 CTO 牛靖宇這樣告訴《好奇心日?qǐng)?bào)》。
3. 所見(jiàn)即所得,會(huì)讓初學(xué)者更有存在感
在演示 Swift 的過(guò)程中, Apple 特地展示了實(shí)時(shí)代碼效果預(yù)覽功能(Swift Playground)。程序員可以在左側(cè)輸入代碼的同時(shí)就在右側(cè)實(shí)現(xiàn)代碼執(zhí)行演示。對(duì)于,資深程序員來(lái)說(shuō),這可能是一個(gè)檢查 bug 提高效率的好辦法,對(duì)于初學(xué)者來(lái)說(shuō),這個(gè)功能儼然就是一個(gè)鼓勵(lì)機(jī)制,敲幾行代碼就會(huì)出現(xiàn)相應(yīng)的圖案,簡(jiǎn)直充滿了即視感!
4. 學(xué) Swift,英語(yǔ)不好沒(méi)關(guān)系
在發(fā)布 Swift 官方開(kāi)發(fā)者指南不到12 小時(shí)的時(shí)間里,Swiftchina.org 雨燕中文網(wǎng)就已上線,該網(wǎng)站在全網(wǎng)發(fā)出網(wǎng)絡(luò)眾包翻譯的邀請(qǐng),這樣看來(lái),網(wǎng)絡(luò)眾包翻譯的模式將有可能在盡可能短的時(shí)間內(nèi)幫你掃清學(xué)習(xí) Swift 的語(yǔ)言障礙。
5. 先別忙著學(xué)別人做評(píng)論
現(xiàn)在,各大社交網(wǎng)絡(luò),程序員社區(qū)都在忙不迭的評(píng)論 Swift 的性能,這些基于專業(yè)人士對(duì)于新產(chǎn)品敏銳洞察力下的判斷當(dāng)然無(wú)可厚非。但作為一個(gè)編程知識(shí)薄弱的初學(xué)者,就先別忙著看評(píng)論,然后學(xué)幾句看似內(nèi)行對(duì) Swift 功能的喜惡評(píng)價(jià)?;蛘邞?yīng)該抱著學(xué)習(xí)的心態(tài),感受一下 Ourcoders 站長(zhǎng),資深 iOS 開(kāi)發(fā)者 tinyfool 的話:“評(píng)價(jià) Swift 的好壞不應(yīng)該是從一個(gè)抽象的概念上來(lái),去判斷它是好還是壞。我們應(yīng)該看的是,它是否符合它們使用的具體場(chǎng)景,是否可以給(特定的)用戶帶來(lái)便利和幸福 感,”
6. “從 Swift 開(kāi)始,我們終于站在了同一條起跑線上!” 別天真了。
對(duì)于一個(gè)學(xué)習(xí)過(guò) objc 編程語(yǔ)言的人來(lái)說(shuō),他們學(xué) Swift 肯定比零基礎(chǔ)的人容易的多。原因大概是平臺(tái)和框架沒(méi)變,只是語(yǔ)法變了。tinyfool 對(duì)《好奇心日?qǐng)?bào)》這樣解釋這一點(diǎn):“就好像是我說(shuō)普通話,你說(shuō)上海話,CPU 還是 CPU,電腦還是電腦,只是語(yǔ)音語(yǔ)調(diào)變了,但是主要的名詞和世界觀沒(méi)變。”
7. 什么叫做學(xué)會(huì)了一門(mén)語(yǔ)言
學(xué)會(huì)編程語(yǔ)言,會(huì)用編程語(yǔ)言到了解語(yǔ)言背后的 API 是一個(gè)循序漸進(jìn)的過(guò)程?;旧峡梢苑譃?ldquo;三個(gè)段位”,第一段位是知道它的語(yǔ)法到底是怎么樣的,這是一個(gè)死記硬背的階段,相當(dāng)于你在英語(yǔ)考試的選擇題上可以 全部做對(duì),但是還不懂得怎么去用。第二段位是知道了怎么去用,從紙上談兵到了真正跟人交流的過(guò)程,這個(gè)時(shí)候你知道寫(xiě)什么程序適合用哪種語(yǔ)言。第三段位,就 是你能把你的思維完全轉(zhuǎn)換成編程思維,這跟學(xué)一門(mén)外國(guó)語(yǔ)言也很類似。對(duì) ALCOL 語(yǔ)言做出過(guò)重大貢獻(xiàn)的 Alan J. Perlis 曾經(jīng)說(shuō)過(guò):“一種不改變你編程的思維方式的語(yǔ)言,不值得去學(xué)。”所以長(zhǎng)路漫漫,你得一點(diǎn)一點(diǎn)來(lái)。
8. 編程難度降低,然后呢?
“編程門(mén)檻雖然降低了,但生產(chǎn)力的門(mén)檻不會(huì)降低。 有越來(lái)越多的垃圾會(huì)被更容易的生產(chǎn)出來(lái)”,“開(kāi)發(fā)門(mén)檻降低并不是一件壞事,因?yàn)樾碌娜藭?huì)進(jìn)入到編程體系里來(lái),帶來(lái)更多全新的思路。”這是現(xiàn)在人們對(duì)除 Swift 功能之外另一個(gè)探討的兩大主流觀點(diǎn),這個(gè)類似于上升到技術(shù)與世界關(guān)系的倫理學(xué)問(wèn)題是我們被“編程改變世界”或者“編程無(wú)用”沖昏了頭腦時(shí),應(yīng)該思考的!