為什么Android應該轉為Go語言開發?
英文原文:Why Android should switch to Go
我能肯定大家最近都了解到了關于 Oracle(甲骨文)正在向 Google 索要 Java 的專利費,因為他們認為 Google 開發的 Android 移動操作系統使用了他們的專利。這是非常荒謬的,Java 的流行就是因為 Java 的大部分東西都是開源的。(這也不是 Oracle 第一次向別的公司索要專利費)。
在有很多更好的語言可以選擇的情況下,為什么 Google 仍然還要使用 Java 來開發 Android 呢?Google 最終選擇 Java 的原因是因為 Java 非常流行,而且 Java 可以通過一定程度的定制完成底層的硬件操作(比如C),然而一些更高層的語言(比如 JavaScript)并沒有這種功能。一旦 Google 選擇了這樣一個非常流行的語言,對于開發者來講,上手 Android 開發也變得簡單的多。
最近一段時間 Android 是最流行的移動平臺,但是 IOS 的市場份額也非常接近。你知道 IOS 選擇的編程語言么?對是 Objective-C,除了開發蘋果的產品之外,幾乎沒有人使用 Objective-C。所以說蘋果選擇了一種不流行的,但是基本上是自己控制的語言平臺。
Google 確實需要為 Android 選擇另外的編程語言,一個自己有更多的控制權限的語言,是否流行并不重要(比如 IOS)。Google 應該選擇 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 是一個新的并沒有多少用戶的語言,但是 Obective-C同樣。Google 是 Go 語言的奠基人,可以完全控制 Go 語言的發展。Go 是在 BSD 協議下發布的開源語言,這意味著所有的開發者可以在任何地方使用它。另外,Go 是一個操作系統級的語言。這里有一些關于 Go 的信息。
Go 語言在現有的系統編程語言環境遇到困難時誕生了。程序設計變得如此的困難,而選擇語言就是其中很大的一個原因。開發者不得不選擇一個高效編譯、高效執行且開發簡單的語言,而這三種特性在現代的語言中并不會同時存在。程序開發者如果想選擇簡單勝過安全的語言,可能轉向動態類型的語言,例如 Python、JavaScript 而不是C++、Java。Go 語言是一個試圖結合動態類型和靜態類型,編譯效率和安全性以及語言的易用性等眾多特性與一體的一種嘗試。他的另一個目標是支持現代的基于網絡的、基于多核的計算。最后,Go 還是非常快的,他可以在單個計算機上僅僅花費幾秒時間構建一個龐大的應用程序。為了達到這些目標需要解決這些語言問題:靈活的類型系統、并發的垃圾回收、強制的依賴規范等等。這些東西不是舊的語言一些庫或者工具可以處理的,這也就是他被稱為新的編程語言的原因。
這里有我提到的三種語言的語法比較:
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 ; }