新聞中心
Android開(kāi)發(fā)需要新的語(yǔ)言嗎
在Java之外,Android是否需要一門(mén)新的開(kāi)發(fā)語(yǔ)言,長(zhǎng)久以來(lái)一直都是業(yè)內(nèi)茶余飯后時(shí)常提起的話(huà)題,特別是蘋(píng)果推出了Swift語(yǔ)言,以及Oracle和Google關(guān)于Java的專(zhuān)利糾紛,讓這一問(wèn)題備受關(guān)注。恰逢國(guó)內(nèi)Google技術(shù)社區(qū)盛事北京GDG Devfest 2015在北航舉辦,InfoQ記者邀請(qǐng)到大會(huì)上的幾位講師對(duì)這一問(wèn)題發(fā)表了自己的看法。

十年專(zhuān)注成都網(wǎng)站制作,企業(yè)網(wǎng)站制作,個(gè)人網(wǎng)站制作服務(wù),為大家分享網(wǎng)站制作知識(shí)、方案,網(wǎng)站設(shè)計(jì)流程、步驟,成功服務(wù)上千家企業(yè)。為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù),專(zhuān)注于企業(yè)網(wǎng)站制作,高端網(wǎng)頁(yè)制作,對(duì)成都iso認(rèn)證等多個(gè)行業(yè),擁有多年的網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn)。
在討論這一問(wèn)題之前,先讓我們了解一下問(wèn)題的背景。從去年以來(lái),Swift、Go、Dart語(yǔ)言的社區(qū)都對(duì)Android開(kāi)發(fā)表示了興趣:
今年早些時(shí)候有一個(gè)Silver項(xiàng)目致力于用Swift來(lái)開(kāi)發(fā)跨平臺(tái)的應(yīng)用,不過(guò)在A(yíng)ndroid平臺(tái)是通過(guò)將Swift轉(zhuǎn)換為Java代碼實(shí)現(xiàn)的。而另一些人則在等待Swift開(kāi)源以便將其移植到Android,有人已經(jīng)做了一些前期的研究,在A(yíng)ndroid上運(yùn)行Swift代碼,表明這至少在理論上是可行的。
Go語(yǔ)言對(duì)Android開(kāi)發(fā)的支持更加官方,在去年發(fā)布的Go 1.4中就已經(jīng)支持了Android開(kāi)發(fā),Go語(yǔ)言也是在各種Android新語(yǔ)言的流言中最常出場(chǎng)的一位。但Go語(yǔ)言從目前的趨勢(shì)來(lái)看,在服務(wù)端發(fā)展的可能性更大,它的部分特性也更適用于服務(wù)端編程。
Dart語(yǔ)言自今年Google宣布Chrome不再內(nèi)置Dart VM之后遭遇重大挫折,很多人認(rèn)為它最終將被拋棄,但這門(mén)語(yǔ)言背后有多位優(yōu)秀的開(kāi)發(fā)者和語(yǔ)言設(shè)計(jì)者,自從不再將替代JavaScript作為目標(biāo)后,Dart反而迎來(lái)了更廣闊的施展空間。今年Dart峰會(huì)上Google宣布了用于A(yíng)ndroid開(kāi)發(fā)的Sky框架(現(xiàn)更名為Flutter),更用120fps的流暢性打消了人們對(duì)這個(gè)曾被用于前端開(kāi)發(fā)的腳本語(yǔ)言的疑慮。
除了這三門(mén)已經(jīng)有一定歷史積累的語(yǔ)言,另一個(gè)被認(rèn)為可能替代Java的是Kotlin語(yǔ)言。Kotlin是開(kāi)發(fā)工具公司JetBrains設(shè)計(jì)的一門(mén)新語(yǔ)言,旨在替代Java,其風(fēng)格更加貼近現(xiàn)代語(yǔ)言,一經(jīng)推出便受到Android開(kāi)發(fā)社區(qū)的注意,聲勢(shì)也越來(lái)越大。
每個(gè)開(kāi)發(fā)人員都應(yīng)該知道的16個(gè)頂級(jí)新計(jì)算機(jī)編程語(yǔ)言
函數(shù)式語(yǔ)言
Elixir
Elixir 比 Erlang 更容易編寫(xiě),具有 Haskell 等語(yǔ)言的函數(shù)式編程概念。Elixir是基于Erlang 虛擬機(jī)的,其廣為人知的特點(diǎn)是運(yùn)行低延時(shí)、分布式、可容錯(cuò)的系統(tǒng),并成功用于Web開(kāi)發(fā)與嵌入式軟件領(lǐng)域。
Elm
Elm是一種用于構(gòu)建 Web 應(yīng)用程序的函數(shù)式語(yǔ)言。業(yè)內(nèi)一般認(rèn)為,它適用于創(chuàng)建高可交互應(yīng)用,例如復(fù)雜的用戶(hù)界面,開(kāi)發(fā)人員可以通過(guò) Elm 快速編寫(xiě)富有表現(xiàn)力的系統(tǒng)。Elm 也以沒(méi)有運(yùn)行時(shí)異常而聞名。
PureScript
PureScript是一種可編譯為 JavaScript 的純函數(shù)式編程語(yǔ)言。與 Haskell 最相似的是,PureScript 最適合用于開(kāi)發(fā) Web 應(yīng)用程序和服務(wù)器端應(yīng)用程序。
PureScript 支持類(lèi)型推斷,與其他語(yǔ)言相比,需要明顯類(lèi)型注釋要少得多。
Swift
Swift是一種由蘋(píng)果公司開(kāi)發(fā)的通用編譯編程語(yǔ)言,最早的設(shè)想是替代上一代編程語(yǔ)言O(shè)bjective-C ,過(guò)程中結(jié)合了Objective-C、Rust、Ruby 和 Python等語(yǔ)言的編程思想。目前Swift用于開(kāi)發(fā)蘋(píng)果自己的手機(jī)、服務(wù)器、臺(tái)式機(jī)上的應(yīng)用軟件。
程序語(yǔ)言
Go
Go語(yǔ)言是由谷歌公司創(chuàng)造的類(lèi)似C風(fēng)格的語(yǔ)言。Go 比 C++ 或 Java 更簡(jiǎn)潔,比 Ruby 或 Python 更安全。
一些缺點(diǎn): 編碼要求嚴(yán)格。比如,不能混用符號(hào)和無(wú)符號(hào)整數(shù)。還有一個(gè)明顯的遺漏,Go語(yǔ)言沒(méi)有泛型和繼承。
但Go語(yǔ)言的優(yōu)勢(shì)同樣明顯,簡(jiǎn)單且易于使用。Go語(yǔ)言擅長(zhǎng)于網(wǎng)絡(luò)和多線(xiàn)程方面的編程。
面向?qū)ο笳Z(yǔ)言
DART
Dart同樣來(lái)自谷歌公司具有C語(yǔ)言風(fēng)格。Dart可以輕松編寫(xiě)JavaScript、Java for Android、本地機(jī)器代碼或獨(dú)立的 Dart 虛擬機(jī)。它還可以運(yùn)行后端代碼。
Dart 非常適合使用事件驅(qū)動(dòng)代碼構(gòu)建用戶(hù)界面。根據(jù)Dart 團(tuán)隊(duì)成員的說(shuō)法,Dart的優(yōu)勢(shì):可選的靜態(tài)類(lèi)型、最小的編譯時(shí)錯(cuò)誤和強(qiáng)大的內(nèi)置編輯器。
Pony
Pony是一種基于無(wú)數(shù)據(jù)競(jìng)爭(zhēng)類(lèi)型和垃圾收集的語(yǔ)言,并使用 actor 模型以及稱(chēng)為引用功能的東西。
你可以把 Pony 想象成某種“Rust 遇上 Erlang”的復(fù)合體,沒(méi)有鎖,高并發(fā)是其主要優(yōu)點(diǎn)。
Pony 的缺點(diǎn)是 API 穩(wěn)定性低、很少有高質(zhì)量的第三方庫(kù)和有限的本地工具。
TypeScript
TypeScript是一個(gè)基于 JavaScript 靜態(tài)類(lèi)型定義構(gòu)建,并由微軟維護(hù)且開(kāi)源編程語(yǔ)言。Visual Studio Code 或Visual Studio 是推薦的IDE編輯器,微軟大廠(chǎng)的用戶(hù)體驗(yàn)和錯(cuò)誤檢查也不用懷疑。
復(fù)合編程語(yǔ)言
Hack
Hack是一種作為 PHP 方言的 HipHop 虛擬機(jī)的編程語(yǔ)言。于 2014 年由Facebook創(chuàng)建,允許程序員同時(shí)使用靜態(tài)和動(dòng)態(tài)類(lèi)型(也稱(chēng)為漸進(jìn)類(lèi)型),這為編碼提供了靈活性。
Julia
Julia是一種高級(jí)通用編程語(yǔ)言,用于計(jì)算科學(xué)和數(shù)值分析。Julia 以動(dòng)態(tài)類(lèi)型和可重現(xiàn)的高性能特性而聞名。
Julia 在數(shù)據(jù)可視化和機(jī)器學(xué)習(xí)等方面都有大量用途。事實(shí)上,它被英國(guó)保險(xiǎn)公司 Aviva 用于風(fēng)險(xiǎn)計(jì)算,紐約聯(lián)邦儲(chǔ)備銀行用于金融建模,甚至氣候建模聯(lián)盟用于氣候變化建模。它擁有Fortran、C++、R、Java、C 、Python等的接口,這使其成為最受追捧的新語(yǔ)言之一。
Kotlin
Kotlin是運(yùn)行在 Java 虛擬機(jī)中的更快、更流暢的 Java 版本。它現(xiàn)在是Android 開(kāi)發(fā)的首選語(yǔ)言。根據(jù) Android 開(kāi)發(fā)者網(wǎng)站顯示,程序員正轉(zhuǎn)而采用 Kotlin,因?yàn)樵撜Z(yǔ)言的樣板代碼更少,空指針異常更少,并且與 Java 有互操作性。
Kotlin 可用于在 iOS 和 Android 上運(yùn)行的應(yīng)用程序、不使用額外運(yùn)行時(shí)或虛擬機(jī)。
Nim
Nim是一種優(yōu)先考慮可讀性的靜態(tài)類(lèi)型語(yǔ)言。通過(guò)結(jié)合多種語(yǔ)言的特性,Nim 為程序員提供了速度和易用性。
它帶有 JavaScript 后端、分散的包管理、自動(dòng)內(nèi)存管理、C 和 C++ 庫(kù)的綁定以及用于調(diào)試的回溯。作為一種語(yǔ)言,Nim 是有限的,但它包含一組元編程功能,如泛型、模板和宏,因此開(kāi)發(fā)人員可以在避免冗長(zhǎng)代碼的同時(shí)以不同的風(fēng)格工作。
OCaml作為此列表中較舊的語(yǔ)言,OCaml是一種多范式語(yǔ)言——既有函數(shù)式、命令式和類(lèi)型安全,也具有面向?qū)ο蠊δ堋?/p>
OCaml 的一些優(yōu)勢(shì):定義數(shù)據(jù)類(lèi)型很容易。默認(rèn)情況下,所有變量都是不可變的。API 穩(wěn)定,具有良好的庫(kù)向后兼容性。該語(yǔ)言還為獨(dú)立應(yīng)用程序提供自動(dòng)內(nèi)存管理和單獨(dú)編譯。
Reason
如果比JavaScript 更快、更簡(jiǎn)單且類(lèi)型安全會(huì)怎樣?
這就是創(chuàng)建Reason的 Facebook 開(kāi)發(fā)者想要回答的問(wèn)題。不過(guò),他并沒(méi)有從頭開(kāi)始構(gòu)建一種新語(yǔ)言,而是采用了 OCaml,并將其調(diào)整為類(lèi)似于 JavaScript。
Reason使用項(xiàng)目 BucketScript編譯為 JavaScript,并且可以訪(fǎng)問(wèn) 80% 的 JavaScript 工具和生態(tài)系統(tǒng)。它還可以編譯為準(zhǔn)系統(tǒng)、iOS、Android 和微控制器。
Red
Red是一種最初旨在克服 Rebol 語(yǔ)言限制的編程語(yǔ)言。Red 于 2011 年推出,受 Rebol、Lua 和 Scala 等語(yǔ)言的影響,對(duì)高級(jí)和低級(jí)編程都很有用。
該語(yǔ)言可用于開(kāi)發(fā)從高級(jí) GUI 到低級(jí)操作系統(tǒng)的所有方面。Red 擁有人性化的語(yǔ)法、低內(nèi)存占用和垃圾收集等優(yōu)點(diǎn)。
Rust
Rust解決了一些與 Go 相同的問(wèn)題,如系統(tǒng)級(jí)別的線(xiàn)程和進(jìn)程安全,,但Rust 更像 C 風(fēng)格的語(yǔ)法
但Rust語(yǔ)言的缺點(diǎn):靜態(tài)類(lèi)型和缺乏垃圾收集
Rust可直接訪(fǎng)問(wèn)內(nèi)存意味著程序員可以編寫(xiě)低級(jí)代碼,如操作系統(tǒng)內(nèi)核。Rust 也非常適合嵌入式設(shè)備、網(wǎng)絡(luò)服務(wù)和命令行編寫(xiě)。
dart and golang哪個(gè)更先進(jìn)
DART
關(guān)于Dart與Golang 在chrome瀏覽器中嵌入一個(gè)Dart虛擬機(jī),可以用Dart語(yǔ)言開(kāi)發(fā)... Dart更像JAVA。
Dart語(yǔ)言和go誰(shuí)更先進(jìn)
單從運(yùn)行速度兩個(gè)語(yǔ)言都很優(yōu)秀,但運(yùn)行速度不是我們唯一追求的指標(biāo),就像匯編語(yǔ)言寫(xiě)的程序運(yùn)行速度很快,但我們絕大多場(chǎng)合都不會(huì)采用它。
背后更重要的還有這門(mén)語(yǔ)言對(duì)應(yīng)的生態(tài)。
比如企業(yè)要用人的時(shí)候能不能快速招到會(huì)使用它的人? 對(duì)求職者來(lái)說(shuō),我學(xué)習(xí)這門(mén)語(yǔ)言能不能帶來(lái)更多的工作機(jī)會(huì)?用這個(gè)語(yǔ)言開(kāi)發(fā)應(yīng)用的時(shí)候遇到問(wèn)題的時(shí)候能不能快速找到資料并得以解決?
go語(yǔ)言歷史長(zhǎng)、生態(tài)好、運(yùn)行速度快,在服務(wù)端上面有所作為,比如為比特幣、萊特幣開(kāi)發(fā)的閃電網(wǎng)絡(luò)就是用go寫(xiě)的。 語(yǔ)法上和類(lèi)C語(yǔ)言有很大不同。
Dart是新出的語(yǔ)言,配合flutter是很好的客戶(hù)端開(kāi)發(fā)語(yǔ)言。 語(yǔ)法沒(méi)那么奇怪, 因?yàn)樾滤陨鷳B(tài)自然是跟不上的。
Dart能不能用在服務(wù)端? 我個(gè)人覺(jué)得是可以, 畢竟可以Dart是可以轉(zhuǎn)成javascript的,運(yùn)行在Nodejs下, 借助于NodeJs生態(tài),dart也可以做很多事情。
不知道你們有沒(méi)有注意到,現(xiàn)在有很多新語(yǔ)言都支持翻譯成Javascript。比如新的dart、kotlin, 還有ts是直接針對(duì)javascript語(yǔ)法加強(qiáng)而獲得成功。
話(huà)說(shuō)得再多, 不如自己親自去體驗(yàn)一下。 jsrun上面支持30多種語(yǔ)言的在線(xiàn)運(yùn)行環(huán)境, 先體驗(yàn)再做決定你到底要學(xué)哪一門(mén)語(yǔ)言。
本文題目:Dartgo語(yǔ)言 dart語(yǔ)言入門(mén)
新聞來(lái)源:http://www.dlmjj.cn/article/ddddiso.html


咨詢(xún)
建站咨詢(xún)
