為什么Android應(yīng)該轉(zhuǎn)為Go語言開發(fā)?
我能肯定大家最近都了解到了關(guān)于Oracle(甲骨文)正在向Google索要Java的專利費(fèi),因?yàn)樗麄冋J(rèn)為Google開發(fā)的Android移動(dòng)操作系統(tǒng)使用了他們的專利。這是非常荒謬的,Java的流行就是因?yàn)镴ava的大部分東西都是開源的。(這也不是Oracle第一次向別的公司索要專利費(fèi))。
在有很多更好的語言可以選擇的情況下,為什么Google仍然還要使用Java來開發(fā)Android呢?Google最終選擇Java的原因是因?yàn)镴ava非常流行,而且Java可以通過一定程度的定制完成底層的硬件操作(比如C),然而一些更高層的語言(比如JavaScript)并沒有這種功能。一旦Google選擇了這樣一個(gè)非常流行的語言,對于開發(fā)者來講,上手Android 開發(fā)也變得簡單的多。
最近一段時(shí)間Android是最流行的移動(dòng)平臺,但是IOS的市場份額也非常接近。你知道IOS選擇的編程語言么?對是Objective-C,除了開發(fā)蘋果的產(chǎn)品之外,幾乎沒有人使用Objective-C。所以說蘋果選擇了一種不流行的,但是基本上是自己控制的語言平臺。
Google確實(shí)需要為Android選擇另外的編程語言,一個(gè)自己有更多的控制權(quán)限的語言,是否流行并不重要(比如IOS)。Google應(yīng)該選擇Go,在golang.org上我們可以看到:
Go is an open source project developed by a team at Google and many contributors from the open source community. Go is distributed under a BSD-style license.
Go是一個(gè)新的并沒有多少用戶的語言,但是Obective-C同樣。Google是Go語言的奠基人,可以完全控制Go語言的發(fā)展。Go是在BSD協(xié)議下發(fā)布的開源語言,這意味著所有的開發(fā)者可以在任何地方使用它。另外,Go是一個(gè)操作系統(tǒng)級的語言。這里有一些關(guān)于Go的信息。
Go語言在現(xiàn)有的系統(tǒng)編程語言環(huán)境遇到困難時(shí)誕生了。程序設(shè)計(jì)變得如此的困難,而選擇語言就是其中很大的一個(gè)原因。開發(fā)者不得不選擇一個(gè)高效編譯、高效執(zhí)行且開發(fā)簡單的語言,而這三種特性在現(xiàn)代的語言中并不會(huì)同時(shí)存在。程序開發(fā)者如果想選擇簡單勝過安全的語言,可能轉(zhuǎn)向動(dòng)態(tài)類型的語言,例如Python、JavaScript而不是C++、Java。Go語言是一個(gè)試圖結(jié)合動(dòng)態(tài)類型和靜態(tài)類型,編譯效率和安全性以及語言的易用性等眾多特性與一體的一種嘗試。他的另一個(gè)目標(biāo)是支持現(xiàn)代的基于網(wǎng)絡(luò)的、基于多核的計(jì)算。最后,Go還是非常快的,他可以在單個(gè)計(jì)算機(jī)上僅僅花費(fèi)幾秒時(shí)間構(gòu)建一個(gè)龐大的應(yīng)用程序。為了達(dá)到這些目標(biāo)需要解決這些語言問題:靈活的類型系統(tǒng)、并發(fā)的垃圾回收、強(qiáng)制的依賴規(guī)范等等。這些東西不是舊的語言一些庫或者工具可以處理的,這也就是他被稱為新的編程語言的原因。
這里有我提到的三種語言的語法比較:
Go版本的HelloWorld:
- package main
- import "fmt"
- func main() {
- fmt.Println("Hello, World!")
- }
Java版本的HelloWorld:
- class ArbitraryClassName {
- public static void main(String[] args) {
- System.out.println("Hello World!");
- }
- }
Objective-C版本的HelloWorld
- #import <stdio.h>
- int main( int argc, const char *argv[] ) {
- printf("Hello World!");
- return 0;
- }
【編輯推薦】