丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號(hào)安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
人工智能開發(fā)者 正文
發(fā)私信給AI研習(xí)社
發(fā)送

0

如何看待 Kotlin 成為 Android 官方支持的開發(fā)語言?一線開發(fā)者這樣說

本文作者: AI研習(xí)社 2017-05-22 11:15
導(dǎo)語:開發(fā)者怎么看 Kotlin?

如何看待 Kotlin 成為 Android 官方支持的開發(fā)語言?一線開發(fā)者這樣說

雷鋒網(wǎng)按:在剛剛結(jié)束的谷歌 I/O 2017 開發(fā)者大會(huì)上,官方宣布將支持 Kotlin 作為 Android Apps 開發(fā)的 First-Class 語言。一石激起千層浪,消息一出,立即引發(fā)了國內(nèi)外相關(guān)從業(yè)者對(duì)此事件的廣泛關(guān)注和熱烈討論。本文作者段建華,作為 Flipboard 中國區(qū) Android 資深研發(fā)工程師,我們來不妨看看他對(duì)此事的看法。原文載于作者個(gè)人博客“技術(shù)小黑屋”,雷鋒網(wǎng)已獲授權(quán)。

Google IO 2017 宣布了 Kotlin 會(huì)成為 Android 官方開發(fā)語言。一時(shí)間朋友圈和 Android 圈被各種刷屏。當(dāng)然我也順勢(shì)而為發(fā)布了一篇的文章《為什么我要改用Kotlin》,著實(shí)狠狠地蹭了一波熱度(盡管這樣會(huì)被鄙視)。眼下 Android 圈已經(jīng)躁動(dòng)了,甚至嚴(yán)重到如果對(duì) Kotlin 視而不見就顯得自己不像一個(gè)合格的 Android 程序員。

本文嘗試從一個(gè)客觀全面一點(diǎn)兒的角度來看待這件事情,盡力為大家提供一個(gè)比較理性的觀點(diǎn)供參考。

  為什么會(huì)選用Kotlin

關(guān)于 Google 為什么會(huì)選擇 Kotlin,我認(rèn)為有兩方面的原因。

● 為了逐漸擺脫專利流氓Oracle。從去年的轉(zhuǎn)向OpenJDK,到現(xiàn)在的支持Kotlin作為官方語言,某種意義是為了擺脫藉由9行代碼敲詐獲取天價(jià)賠償?shù)腛racle。

● 選用Kotlin,實(shí)至名歸,這個(gè)榮譽(yù)它值得擁有。Kotlin確實(shí)以其實(shí)用,高效贏得了海外很多公司和開發(fā)者的認(rèn)可,比如Square的Jake大神一直在推Kotlin。Kotlin在國外至少有將近2年的應(yīng)用生產(chǎn)環(huán)境的實(shí)踐(非JetBrains內(nèi)部實(shí)踐應(yīng)用)。在移動(dòng)開發(fā)中,相比iOS程序員,Android程序員總是很幸運(yùn),因?yàn)槲覀冇泻芏鄡?yōu)秀好用的工具(Android Studio等),選用Kotlin,則是Google 為開發(fā)者提供高效的開發(fā)工具的一貫作風(fēng)。

  成為 Android官方開發(fā)語言意味著什么

● 官方:工具支持(Android Studio 3.0附帶Kotlin),官方的宣傳(教學(xué)視頻,主題演講等)

● 對(duì)于社區(qū)來說,Kotlin版本的庫和框架如雨后春筍般涌現(xiàn)

● 對(duì)于Java,曾經(jīng)借助Android這場(chǎng)春風(fēng),著實(shí)讓遲暮的它再度輝煌,現(xiàn)在和將來在Android領(lǐng)域可謂是棋逢敵手,Java的在Android開發(fā)語言市場(chǎng)份額會(huì)降。但是這也并不一定是壞事,有競(jìng)爭(zhēng)才能更好進(jìn)步。

● 對(duì)于Android 開發(fā)者,我們多了一種開發(fā)Android的語言選擇,那些對(duì)于之前由于前景不明朗卻對(duì)Kotlin躍躍欲試的人可以放心使用了。有了Kotlin意味著開發(fā)效率應(yīng)該會(huì)有所提升。

● 對(duì)于團(tuán)隊(duì),這往往帶來了一個(gè)選擇的問題,Use Kotlin or not, That’s a question. 團(tuán)隊(duì)中總有人想要嘗試Kotlin,而另一些人則興致不那么高。由于歷史包袱,團(tuán)隊(duì)成員興趣,對(duì)于已有項(xiàng)目采用Kotlin和Java長期并存是實(shí)際可行的方案。而新項(xiàng)目則應(yīng)該鼓勵(lì)使用Kotlin,但具體還需要結(jié)合團(tuán)隊(duì)的能力和其他因素。

  Kotlin的魅力究竟在哪里

雷鋒網(wǎng)按:關(guān)于本節(jié)內(nèi)容的詳細(xì)介紹,讀者可以參考文章開頭提到的文章《為什么我要改用Kotlin》,就以下提到的每個(gè) Kotlin 的特點(diǎn),文中都給出了直觀的代碼樣例解釋。

Kotlin的有很多特點(diǎn),比如簡(jiǎn)潔,安全實(shí)用,開發(fā)效率高和提升可讀性,更好的函數(shù)式編程支持。

1. 簡(jiǎn)潔,Kotlin的代碼確實(shí)比Java更加簡(jiǎn)潔,比如類型推斷,省去結(jié)尾的分號(hào)等等,然而這遠(yuǎn)不能成為我們改用Kotlin的原因。

2. 安全,這是Kotlin的一個(gè)很重要的特性。Kotlin是空指針安全的,JetBrains做了一件很聰明的事情,它們將運(yùn)行時(shí)才能空指針的檢測(cè)提前到了編譯時(shí),主要方式是增加了Any?這種可為空的類型,使用Kotlin之后,我們程序的空指針會(huì)得到明顯的改善。

3. 實(shí)用,高效率。Kotlin的實(shí)用具體表現(xiàn)在

● 引入Object,便于我們更好的應(yīng)用單例模式

● 引入data class, 避免了我們手寫getter/setter/toString等方法

● 引入?yún)?shù)默認(rèn)值和具名參數(shù),避免了不必要的方法重載

● 支持?jǐn)U展方法,讓我們可以省去好多必須要的代碼

4. Kotlin引入了Lambda,Streams API 和函數(shù)式編程支持。

● Lambda表達(dá)式可以省去了我們創(chuàng)建很多匿名內(nèi)部類的代碼(注由于目前Kotlin基于JVM6,Lambda表達(dá)式在字節(jié)碼階段依然會(huì)翻譯成內(nèi)部類形式)

● Streams API 結(jié)合Lambda表達(dá)式和方法引用,讓我們的代碼處理一件事情以描述的形式,而不是命令實(shí)現(xiàn)的方式。

● Kotlin支持OOP(面向?qū)ο缶幊?和FP(函數(shù)式編程),語言本身并沒有限制,給了我們選擇的自由,Kotlin對(duì)FP的友好支持,便于我們寫出更加穩(wěn)定,易于測(cè)試,無副作用的方法和代碼

5.可讀性 從客觀上,Kotlin語法和特性上讓代碼更加具有描述性而已。但是不得不指出代碼可讀性主要依賴編寫者的編碼素質(zhì)和能力。

對(duì)我個(gè)人而言,高階函數(shù)和方法擴(kuò)展這兩個(gè)特點(diǎn)著實(shí)真心受用。方法擴(kuò)展會(huì)讓我有一種創(chuàng)造感,這是Java種的Util方法所無法比擬的。

  Kotlin是否會(huì)取代Java

這個(gè)很難說,因?yàn)檫@個(gè)世界上并不是一件事物好,就會(huì)必然得到廣泛應(yīng)用的。一件事物的推廣開來靠的是一群人,但阻力也往往也來自一群人,只不過和前者不是相同人群。

從個(gè)人主觀來看這個(gè)問題,我更加愿意看到這種現(xiàn)象發(fā)生。原因并不是因?yàn)槲腋矚gKotlin,而是在于我更愿意看到事物在進(jìn)步,在變得優(yōu)秀,所以即便某一天Kotlin被更加優(yōu)秀的語言取代,我也是很歡迎的。

  哪些人適合率先應(yīng)用 Kotlin

Kotlin適用于多個(gè)平臺(tái),并沒有對(duì)學(xué)習(xí)者做限制。任何有學(xué)習(xí)意愿的人都可以習(xí)得這門語言。

但是考慮到國內(nèi) Kotlin 資源不夠豐富,網(wǎng)絡(luò)不夠暢通等問題,所以導(dǎo)致了很多人變成了吃瓜群眾進(jìn)行觀望。

然而,對(duì)于一個(gè)項(xiàng)目和團(tuán)隊(duì)來說,總需要有第一個(gè)人先來推進(jìn)。而且這個(gè)推進(jìn)過程并非順利,這其中包括

● 首先你需要足夠了解Kotlin

● 你需要說服團(tuán)隊(duì),這期間你會(huì)接收到很多challenges,有時(shí)候你會(huì)很沮喪和生氣

● 你需要提供一系列的資料或分享,比如如何配置,sample code, troubleshooting等等

● 有時(shí)候甚至你經(jīng)常兼職做mentor指導(dǎo)工作,這也就意味著你的手頭上的其他工作需要被打斷

上述推進(jìn) Kotlin 觀點(diǎn)部分參考自Life is Great and Everything Will Be Ok, Kotlin is Here (Google I/O ‘17) 中 Christina Lee(Pinterest Software Engineer,國外 Kotlin 美女布道師之一)的分享內(nèi)容。

雖然 Kotlin 很優(yōu)秀,但是推動(dòng)在項(xiàng)目中推動(dòng) Kotlin 應(yīng)用并非易事,因?yàn)檫@對(duì)于新事物來說在正常不過了,就像明治維新一樣看起來很光鮮,成功,但是它的變革進(jìn)程并非順利,先是血雨腥風(fēng)的倒幕運(yùn)動(dòng),再到明治六年爆發(fā)的標(biāo)志武士時(shí)代結(jié)束的西南戰(zhàn)爭(zhēng),經(jīng)過數(shù)十年的努力才算取得成功。

因此關(guān)于哪些人適合率先應(yīng)用 Kotlin,我認(rèn)為需要具備以下幾點(diǎn)

● Java 技術(shù)和基礎(chǔ)要好,這一點(diǎn)很重要

● 英語要好,因?yàn)槟壳?Kotlin 的資料幾乎都是英文的,當(dāng)然也推薦看英文的

● 愿意承擔(dān)在項(xiàng)目團(tuán)隊(duì)推進(jìn)工作,有耐心,敢挑戰(zhàn),負(fù)責(zé)任

  關(guān)于Kotlin 項(xiàng)目應(yīng)用中 的一些顧慮

目前想到了一些關(guān)于 Kotlin 應(yīng)用在項(xiàng)目中的一些顧慮。這些顧慮目前并非全面,但是提出來,希望大家可以規(guī)避和改善。

1. 寫出來的代碼并不是 Kotlin style。解決這個(gè)問題,還是需要多學(xué)習(xí)和思考

2. 擴(kuò)展方法的濫用,Kotlin 的擴(kuò)展方法很好,我們可以擴(kuò)展很多方法,彌補(bǔ)Framework的一些不完善,但是擴(kuò)展時(shí)我們需要謹(jǐn)慎,一定要把合適的方法放到合適的類型上,不可為了簡(jiǎn)單增加不符合某些類不應(yīng)該具備的職責(zé)。 具體需要最好以下兩點(diǎn)

● 選擇在合理范圍內(nèi)的最抽象類增加方法,比如我們想為Activity增加一個(gè)longToast,應(yīng)該想一想是不是放在更加抽象的Context會(huì)更好一些

● 同時(shí)也不能為了便利,增加和當(dāng)前類不相關(guān)的方法,比如我們想為每個(gè)Context增加顯示一個(gè)簡(jiǎn)單dialog的擴(kuò)展方法,這顯然不是很合理,因?yàn)閷?duì)于非UI的Context這是有問題。

  Android 程序員的核心競(jìng)爭(zhēng)力在哪里

Kotlin出來之后,聽到了兩種不同的聲音:

● 太好了,終于可以有理由改用Kotlin了,寫代碼更加高效了??梢灾饾u開始放棄Java了。

● WTF,又要學(xué)新的語言,感覺好累,會(huì)不會(huì)以后面試不會(huì)Kotlin就被pass掉呢。

出現(xiàn)以上兩種不同的聲音,不得不引起我們對(duì)于 Android 程序員的核心競(jìng)爭(zhēng)力的思考。那么到底什么才是 Android 程序員的核心競(jìng)爭(zhēng)力呢?

Android程序員和其他程序員甚至其他職業(yè)并無二致,我認(rèn)為這種競(jìng)爭(zhēng)力表現(xiàn)在解決問題的能力。想要具備這種能力,極其依賴我們對(duì)問題和技術(shù)的準(zhǔn)確認(rèn)識(shí)和扎實(shí)的基礎(chǔ)。

編程語言本質(zhì)上還是工具,好的工具能帶來更好的效果,但是如何運(yùn)用好,將效率和質(zhì)量提升到最高,則還是更主要的依賴于開發(fā)者的能力。

選用好的工具,更側(cè)重夯實(shí)基礎(chǔ)和加強(qiáng)對(duì)事物本質(zhì)認(rèn)識(shí)的能力,我想這樣才能讓我們的競(jìng)爭(zhēng)力更強(qiáng)。

總結(jié)而言,Kotlin是一個(gè)更好的工具,沒有它,并不影響我們?nèi)粘5?Android 開發(fā)工作。但是我還是建議開發(fā)者和團(tuán)隊(duì)去嘗試這種語言,抓住這個(gè)近在咫尺的小確幸。

  額外的話

事情的發(fā)展越來越顯得不可控了,推介Kotlin和不看好Kotlin的人逐漸分化出來,更準(zhǔn)確的說,甚至這件事已經(jīng)快要演變成了從對(duì)事變成了對(duì)人。

Kotlin 成為 Android 官方語言的消息一出來,一下子出來了很多被當(dāng)做投機(jī)蹭熱點(diǎn)的Kotlin推介者,當(dāng)然還出現(xiàn)了一些看不慣這些做法的人,他們認(rèn)為前者刻意拔高了Kotlin。因而討論越來越偏向從事情到人的方面。我想要說的是,就像商人追求利潤,資本家攫取剩余價(jià)值那樣,投機(jī)者蹭熱點(diǎn),以及招致他人批評(píng),這都是正常的事情,但是我們不能讓討論脫離問題的本質(zhì),我們需要回歸。

很多人說Kotlin無非就是很多語法糖,沒什么突破

沒錯(cuò),Kotlin是有很多很多的語法糖。有必要簡(jiǎn)單普及一下語法糖的概念(如下摘自維基百科

In computer science, syntactic sugar is syntax within a programming language that is designed to make things easier to read or to express. It makes the language “sweeter” for human use: things can be expressed more clearly, more concisely, or in an alternative style that some may prefer.

由定義可知,語法糖的目的就是讓代碼更簡(jiǎn)單,更可讀。

決定Kotlin使用這么多語法糖的除了簡(jiǎn)潔,高效可讀之外,還有一個(gè)原因,是因?yàn)閗otlin編譯生成的class文件是目標(biāo)到JVM 6(基于JVM 6 是一種權(quán)衡后的結(jié)果),比如我們?cè)贙otlin中使用了Lambda,它是不可能編譯成invokedynamic指令的,因?yàn)槟菢訒?huì)導(dǎo)致在JVM6上根本無法識(shí)別,所以經(jīng)常通過翻譯成內(nèi)部類的形式來實(shí)現(xiàn)。

使用語法糖又能怎樣,它的目的是好的,畢竟它真真實(shí)實(shí)介紹了開發(fā)人員的代碼量。

Kotlin是一門實(shí)用語言,這是它的基因,它不是學(xué)術(shù)語言,它的目標(biāo)是減輕開發(fā)者的負(fù)擔(dān)。它很適合 Android,因?yàn)榇蠖鄶?shù)的 Android 的程序員是做工程。

  基于JVM沒有什么不好

Kotlin,是基于JVM的編程語言,但是基于JVM的編程語言并沒有什么不好。(J)VM的出現(xiàn)無非也是一種平衡的結(jié)果。在犧牲部分執(zhí)行效率的前提下,提供了一定的抽象,加快了開發(fā)者的效率。這種tradeoff其實(shí)更加有利于人的一側(cè),這也是編程語言發(fā)展的趨勢(shì)和目標(biāo)

Kotlin 在國內(nèi)推廣應(yīng)用的道路可謂是 漫漫而修遠(yuǎn)兮。因此更需要真正實(shí)踐,去踩坑的人開始o(jì)n board,去出產(chǎn)更多的真正能推動(dòng) Kotlin 應(yīng)用的文章,分享等這些有實(shí)質(zhì)性意義的行動(dòng)。



“TensorFlow & 神經(jīng)網(wǎng)絡(luò)算法高級(jí)應(yīng)用班”開課了!

最受歡迎的谷歌TensorFlow 框架,ThoughtWorks大牛教你玩轉(zhuǎn)深度學(xué)習(xí)!

課程鏈接:http://www.mooc.ai/course/82

加入AI慕課學(xué)院人工智能學(xué)習(xí)交流QQ群:624413030,與AI同行一起交流成長



雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知

如何看待 Kotlin 成為 Android 官方支持的開發(fā)語言?一線開發(fā)者這樣說

分享:

編輯

聚焦數(shù)據(jù)科學(xué),連接 AI 開發(fā)者。更多精彩內(nèi)容,請(qǐng)?jiān)L問:yanxishe.com
當(dāng)月熱門文章
最新文章
請(qǐng)?zhí)顚懮暾?qǐng)人資料
姓名
電話
郵箱
微信號(hào)
作品鏈接
個(gè)人簡(jiǎn)介
為了您的賬戶安全,請(qǐng)驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請(qǐng)驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號(hào)信息
您的賬號(hào)已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說