當前位置:
首頁 > 最新 > 從谷歌io2017看開發行業趨勢

從谷歌io2017看開發行業趨勢

老的編程語言真的都不太好用了嗎?為什麼各大公司推出的新的編程語言又沒有起來呢?今天帶你從谷歌io2017看開發行業趨勢。

就在半個多月以前,2017谷歌io大會上谷歌發布了全新的android8操作系統和新的androidstudio,當然這都在大家的意料之中,但在意料之外的是與此同時,谷歌還宣布了另一個重大的決定,這一消息迅速在眾多開源社區傳開造成了不小的震動。

谷歌將採用Kotlin作為android開發的官方語言,並在新的Androidstudio中全面支持,好吧,有些人肯定能聯想到蘋果在2014年發布的swift語言,都三年過去了,至今為止ios應用商店裡還有接近三分之一的開發者在使用老的OC語言,那麼谷歌宣布新的開發採用Kotlin語言,這個語言到底要多久才能流行起來呢,況且現在很多android應用都是採用類似reactnative這樣的混合應用技術開發,似乎並不值得大家過分關注吧。

但我想說的是,這次真的不一樣了,恰好我本人在幾年前就有看過一些關於kotlin語言的資料,kotlin源代碼文件擴展名是.kt,為了打字方便,我就叫它kt語言吧。

我說kt很不一樣是有原因的,大家聽我詳細的說說。

我們知道在技術領域,編程語言可以說是我們構建軟體的基礎,所有的軟體都是在這個基礎之上被創造出來的,可見編程語言的重要性。

然而,由於歷史原因,也由於市場與技術環境的發展,一個優秀的編程語言在經歷過一段時期的應用後會將軟體開發推向更高的階段,同時自身也會表現出一些不足之處,為了解決這些不足之處,就會有新的創造者,而踩著前人的肩膀,創造出一個新的編程語言來,從彙編到c是這樣,從c到c++也是這樣,然後又是java、php等語言相繼在開發市場中殺出一片血路割據一方。

新的語言有著很大的優勢,通常越是後期的語言,語法上會提供更多的便捷性,更易於程序員使用,因此也被稱為高級語言,而且後期的編程語言除了語法上提供更多便捷之外,運行時環境通常還會提供更多的支持,比如說java,通過jvm實現了跨平台,垃圾回收等支持,讓程序員從日常開發繁瑣的工作中解放了大量的時間與精力,程序運行的穩定性對程序員自身的依賴也大幅降低。jvm很強大,因此後面的很多語言都採用了類似的機制,在物理機和操作系統上再增加一層運行環境來解決跨平台問題,比如flash採用的as語言。

基於上述原因,我們看到彙編的份額迅速被c語言佔領,而c語言的很多應用領域又被C++取代,C++誕生十年之後java又坐上了程序語言排名第一的寶座,程序語言排行榜上的排名猶如一個江湖,長江後浪推前浪,然而我們會很驚訝的發現,名列前茅的編程語言劇烈動蕩的歷史在java這裡戛然而止。

如果我們之前分析的原因一直成立且持續,那麼php在互聯網大潮來領之際就該取代java了,要知道php開發的靈活性能帶來開發效率的大幅提升、而ruby就更加了不起了,函數式編程直接讓環境去處理更多細節,解放程序員,不在關注機器邏輯細節,讓開發者像自然人一樣思考。

可是為什麼後面有這麼多的新的編程語言,卻沒能改變整個江湖的格局呢?

其實看看python社區的門派內鬥爭我們也許就能找到答案。Python3推出到現在也已經接近十年了,十年對於IT技術領域來說已經是很長一段時間了,在語法上,在技術細節的處理上,無疑python3比python2更適合干大事,然而這樣一次激進的變革帶來的卻是python社區的分裂,這種分裂就像笑傲江湖中的華山派,雖然都叫python,卻已經幾乎成為了兩個不同的語言。

老的編程語言能有很強的生命力,完全得益於「開源」帶來的優勢,從GNU開始起,開源運動就在黑客群體中興起,因為有了開源,優秀的技術員就能分享彼此的智慧與勞動成果,所有有識之士都知道生命是有限的,不要重複發明輪子,通過開源與分享,我們節約了大量的時間也讓個人擁有更大的力量作出更偉大的成就,這就等同於延長了人的生命。

如果把我們現在做的各種商業項目中的開源代碼提出來,一個優秀的程序員幹上一百年都寫不完。

是的,這就是背後的深層原因,python3雖然語言擁有更出色的特性,但python2擁有大量的社區開源生態支持,python3無法兼容這些資源就等於一個富家子弟放棄了巨大的財富寶藏不去使用而選擇跑出去白手起家創業。

蘋果家族的objective-c語言與swift語言也是這樣,蘋果現在swift能夠大幅普及完全依靠的是蘋果的控制力,但即便這樣,還是有很多開發者和公司堅守在oc的陣地上,因為以前的積累如果放棄,必然會帶來更多的成本。

好吧,那回歸正題,這次的KT語言又有什麼不同呢?會不會又是官方拚命推而市場不動?

我的判斷是不會,固然大部分程序員都有惰性,固然很多人不願意放棄自己的開發習慣去學習新的知識,固然java開源生態很好。

沒錯,java開源生態真的很好,都說java是三流的語言+一流的生態,比如大名鼎鼎的hadoop及hadoop生態的眾多軟體,比如最流行的消息隊列RabbitMQ,比如強大的搜索引擎lucene等等,不計其數的優秀開源項目。

是什麼支持java這麼多年屹立不倒,正是因為開源,如果你選擇放棄了java,就代表你放棄了成千上萬人數十年來的積累,這麼大的代價你會選擇放棄嗎?

回到今天的主角KT語言,它和之前提到的新的編程語言截然不同,為什麼?因為有jvm的存在。

Jvm是java運行的基礎,java語言經過javac編譯之後生成了一的不是直接在機器上運行的機器碼而是一種叫位元組碼的東西,物理機上運行著jvm虛擬機,而虛擬機上在運行位元組碼,那麼這就為聰明的開發者留出了足夠的想像空間。

Java編譯器可以把java編譯成jvm能識別的位元組碼,那麼創造出一種新的語法以及編譯器出來,編譯出同樣可以被jvm識別的位元組碼應該是完全可行的。

基於這一理論,java社區的大牛們作出了很多偉大的創造,比如Scala與Clojure,groovy,它們都融入了大量先進的語言特性,另外還有ruby與java社區基於jvm開發了jruby,讓ruby先進的語法在java生態中獲益。

Kotlin語言也是這樣一個語言,但它和上面提到的語言不同,除了能運行與jvm之中,他還能做到100%和java交互,無論是oracle jdk環境下的java還是android,它是強類型的,但是提供了更多的語法糖,他使用起來更便捷,而且jdk8以上版本的java也提供了函數式編程的支持,這使得java完整的生態可以被kt使用。

好吧,聽到這裡,你大概應該能感受到kt與之前其他語言不同的地方,他不會和之前的java競爭衝突,反而會讓java社區更加迅速的發展。

可以跟大家說一下的是,早在兩年前,java最強的依賴管理Gradle就開始使用Kt開發相應的分支,並推廣使用。

如果是java程序員,對於KT語法並不會太抵觸,因為他依然可以很好的按照你java的設計模式工作,但是它卻能大幅減少java程序員的編碼量。

其他語言的開發者如果想獲得java社區的資源優勢,從0學java代價太大,但是如果你稍微投入精力,你就會發現KT上手非常容易,這也為其他開發者進入java生態帶來了巨大的機會。

另外KT還能在沒有JVM的環境下,編譯成js,再加上android支持,以及jetbrains提供的IOS開發能力的支持,它將是一個優秀的全棧開發語言。

那麼我們就來看看它的語法吧

新建一個文本文檔 命名為 hello.kt

輸入以下內容

fun main(args: Array) {

println("Hello, world!")

}

然後就可以編譯和運行這個程序了,編譯後也可以打包成java JAR包

不知道大家發現沒有,現代化的語言都可以是不帶分號的,也不再要求強制面向對象模式,這點和java不同,java的所有函數都需要在類裡面,而KT不需要。

Java在字元串處理上的落後是讓我最頭痛的問題之一,不過這下子好了

fun main(args: Array) {

if (args.size == 0) {

println("Please provide a name as a command-line argument")

return

}

println("Hello, $!")

}

大家可以看到熟悉的模版字元串功能,這一點點的改善,能給我們在開發過程中帶來巨大的好處。

循環也更簡單了,

fun main(args: Array) {

for (name in args)

println("Hello, $name!")

}

再看看條件輸出,如果用java,是不是代碼要多出很多呢

fun main(args: Array) {

val language = if (args.size == 0) "EN" else args[0]

println(when (language) {

"EN" -> "Hello!"

"FR" -> "Salut!"

"IT" -> "Ciao!"

else -> "Sorry, I can t greet you in $language yet"

})

}

類的定義也是很簡潔的

class Greeter(val name: String) {

fun greet() {

println("Hello, $");

}

}

fun main(args: Array) {

Greeter(args[0]).greet()

}

當然,還有更多更好的高級特性,今天在這裡就不一一介紹了,後面有機會的話,我會帶領大家嘗試一下使用KT開發web項目和移動項目,體驗更多的好處。

我相信使用KT,我們必會從中受益。

GIF/18K

戳原文,申請兄弟連7天基礎課免費學習

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 兄弟連IT教育 的精彩文章:

能用錢解決的問題,都不是問題
JavaScript 中的 this 解析——兄弟連教育
Java培訓課程乾貨分享:緩存技術-兄弟連教育
從月薪千元到年薪百萬,這只是一個小目標
如何正確的選擇Java培訓學校?

TAG:兄弟連IT教育 |

您可能感興趣

2018年Web前端開發趨勢
2018年AI開發板Top 10排行
2018谷歌I/O開發者大會開幕
Unity 2018.1為開發者增加330多個新的優化
即將發布Android 9.0?谷歌或在5月1/0開發者大會進行官宣
2018 Web 開發者路線圖
谷歌或將於3.14發布Android 9.0首個開發者預覽版
驍龍1000移動平台曝光 專為Win10 PC開發
2018WWDC什麼時候開 2018蘋果開發者大會幾點開始
微軟Build 2018開發者大會定於5月8日舉行
微軟2018 Connect(); 開發者大會於12月4日舉行
web前端開發基礎2.4
微軟確定開發者大會Build 2018舉行時間:5月中旬開幕
三星Exynos 9820已進入開發,7nm製程支持5G!Note9有望首發
蘋果為開發者發布iOS11.3 Beta 3
華為一次申請了Mate 20至90商標 P30也在開發中或支持5G
蘋果 iOS 11.3 beta 5開發者預覽版發布
Android 9.0要來了!第一版開發者預覽或於3月14日發布
Roblox預計在2018年將向開發者支付超7000萬美元
蘋果iOS 11.3 beta 3開發者預覽版發布