1、簡單易學(xué)。
10年的杏花嶺網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。營銷型網(wǎng)站的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整杏花嶺建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)公司從事“杏花嶺網(wǎng)站設(shè)計”,“杏花嶺網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實(shí)執(zhí)行。
Go語言的作者本身就很懂C語言,所以同樣Go語言也會有C語言的基因,所以對于程序員來說,Go語言天生就會讓人很熟悉,容易上手。
2、并發(fā)性好。
Go語言天生支持并發(fā),可以充分利用多核,輕松地使用并發(fā)。 這是Go語言最大的特點(diǎn)。
描述
Go的語法接近C語言,但對于變量的聲明有所不同。Go支持垃圾回收功能。Go的并行模型是以東尼·霍爾的通信順序進(jìn)程(CSP)為基礎(chǔ),采取類似模型的其他語言包括Occam和Limbo,但它也具有Pi運(yùn)算的特征,比如通道傳輸。
在1.8版本中開放插件(Plugin)的支持,這意味著現(xiàn)在能從Go中動態(tài)加載部分函數(shù)。
與C++相比,Go并不包括如枚舉、異常處理、繼承、泛型、斷言、虛函數(shù)等功能,但增加了 切片(Slice) 型、并發(fā)、管道、垃圾回收、接口(Interface)等特性的語言級支持。
1、學(xué)習(xí)曲線
它包含了類C語法、GC內(nèi)置和工程工具。這一點(diǎn)非常重要,因為Go語言容易學(xué)習(xí),所以一個普通的大學(xué)生花一個星期就能寫出來可以上手的、高性能的應(yīng)用。在國內(nèi)大家都追求快,這也是為什么國內(nèi)Go流行的原因之一。
2、效率
Go擁有接近C的運(yùn)行效率和接近PHP的開發(fā)效率,這就很有利的支撐了上面大家追求快速的需求。
3、出身名門、血統(tǒng)純正
之所以說Go語言出身名門,是因為我們知道Go語言出自Google公司,這個公司在業(yè)界的知名度和實(shí)力自然不用多說。Google公司聚集了一批牛人,在各種編程語言稱雄爭霸的局面下推出新的編程語言,自然有它的戰(zhàn)略考慮。而且從Go語言的發(fā)展態(tài)勢來看,Google對它這個新的寵兒還是很看重的,Go自然有一個良好的發(fā)展前途。我們看看Go語言的主要創(chuàng)造者,血統(tǒng)純正這點(diǎn)就可見端倪了。
4、組合的思想、無侵入式的接口
Go語言可以說是開發(fā)效率和運(yùn)行效率二者的完美融合,天生的并發(fā)編程支持。Go語言支持當(dāng)前所有的編程范式,包括過程式編程、面向?qū)ο缶幊桃约昂瘮?shù)式編程。
5、強(qiáng)大的標(biāo)準(zhǔn)庫
這包括互聯(lián)網(wǎng)應(yīng)用、系統(tǒng)編程和網(wǎng)絡(luò)編程。Go里面的標(biāo)準(zhǔn)庫基本上已經(jīng)是非常穩(wěn)定,特別是我這里提到的三個,網(wǎng)絡(luò)層、系統(tǒng)層的庫非常實(shí)用。
6、部署方便
我相信這一點(diǎn)是很多人選擇Go的最大理由,因為部署太方便,所以現(xiàn)在也有很多人用Go開發(fā)運(yùn)維程序。
7、簡單的并發(fā)
它包含降低心智的并發(fā)和簡易的數(shù)據(jù)同步,我覺得這是Go最大的特色。之所以寫正確的并發(fā)、容錯和可擴(kuò)展的程序如此之難,是因為我們用了錯誤的工具和錯誤的抽象,Go可以說這一塊做的相當(dāng)簡單。
8、穩(wěn)定性
Go擁有強(qiáng)大的編譯檢查、嚴(yán)格的編碼規(guī)范和完整的軟件生命周期工具,具有很強(qiáng)的穩(wěn)定性,穩(wěn)定壓倒一切。那么為什么Go相比于其他程序會更穩(wěn)定呢?這是因為Go提供了軟件生命周期的各個環(huán)節(jié)的工具,如go
tool、gofmt、go test。
部署簡單。Go編譯生成的是一個靜態(tài)可執(zhí)行文件,除了glibc外沒有其他外部依賴。這讓部署變得異常方便:目標(biāo)機(jī)器上只需要一個基礎(chǔ)的系統(tǒng)和必要的管理、監(jiān)控工具,完全不需要操心應(yīng)用所需的各種包、庫的依賴關(guān)系,大大減輕了維護(hù)的負(fù)擔(dān)。這和Python有著巨大的區(qū)別。由于歷史的原因,Python的部署工具生態(tài)相當(dāng)混亂【比如setuptools,distutils,pip,
buildout的不同適用場合以及兼容性問題】。官方PyPI源又經(jīng)常出問題,需要搭建私有鏡像,而維護(hù)這個鏡像又要花費(fèi)不少時間和精力。
并發(fā)性好。Goroutine和channel使得編寫高并發(fā)的服務(wù)端軟件變得相當(dāng)容易,很多情況下完全不需要考慮鎖機(jī)制以及由此帶來的各種問題。單個Go應(yīng)用也能有效的利用多個CPU核,并行執(zhí)行的性能好。這和Python也是天壤之比。多線程和多進(jìn)程的服務(wù)端程序編寫起來并不簡單,而且由于全局鎖GIL的原因,多線程的Python程序并不能有效利用多核,只能用多進(jìn)程的方式部署;如果用標(biāo)準(zhǔn)庫里的multiprocessing包又會對監(jiān)控和管理造成不少的挑戰(zhàn)【我們用的supervisor管理進(jìn)程,對fork支持不好】。部署Python應(yīng)用的時候通常是每個CPU核部署一個應(yīng)用,這會造成不少資源的浪費(fèi),比如假設(shè)某個Python應(yīng)用啟動后需要占用100MB內(nèi)存,而服務(wù)器有32個CPU核,那么留一個核給系統(tǒng)、運(yùn)行31個應(yīng)用副本就要浪費(fèi)3GB的內(nèi)存資源。
良好的語言設(shè)計。從學(xué)術(shù)的角度講Go語言其實(shí)非常平庸,不支持許多高級的語言特性;但從工程的角度講,Go的設(shè)計是非常優(yōu)秀的:規(guī)范足夠簡單靈活,有其他語言基礎(chǔ)的程序員都能迅速上手。更重要的是Go自帶完善的工具鏈,大大提高了團(tuán)隊協(xié)作的一致性。比如gofmt自動排版Go代碼,很大程度上杜絕了不同人寫的代碼排版風(fēng)格不一致的問題。把編輯器配置成在編輯存檔的時候自動運(yùn)行g(shù)ofmt,這樣在編寫代碼的時候可以隨意擺放位置,存檔的時候自動變成正確排版的代碼。此外還有g(shù)ofix,
govet等非常有用的工具。
執(zhí)行性能好。雖然不如C和Java,但通常比原生Python應(yīng)用還是高一個數(shù)量級的,適合編寫一些瓶頸業(yè)務(wù)。內(nèi)存占用也非常省。
作為一個測試,作為一個測試開發(fā), 全棧化+管理 是我們未來的發(fā)展方向。已經(jīng)掌握了Java、Python、HTML的你,是不是也想了解下最近異?;鸨腉o語言呢?來吧,讓我們一起了解下。
Go 是一個開源的編程語言 ,它能讓構(gòu)造簡單、可靠且高效的軟件變得容易。
Go是從2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持開發(fā),后來還加入了Ian Lance Taylor, Russ Cox等人,并最終于2009年11月開源,在2012年早些時候發(fā)布了Go 1穩(wěn)定版本?,F(xiàn)在Go的開發(fā)已經(jīng)是完全開放的,并且擁有一個活躍的社區(qū)。這三個人都是計算機(jī)界的大神,有的參與了C語言的編寫,有的還是數(shù)學(xué)大神,有的還獲得了計算機(jī)最高榮譽(yù)-圖靈獎。
接下來說說 Go語言的特色 :
簡潔、快速、安全
并行、有趣、開源
內(nèi)存管理、數(shù)組安全、編譯迅速
Go語言的用途 :
Go 語言被設(shè)計成一門應(yīng)用于搭載 Web 服務(wù)器,存儲集群或類似用途的巨型中央服務(wù)器的系統(tǒng)編程語言。
對于高性能分布式系統(tǒng)領(lǐng)域而言,Go 語言無疑比大多數(shù)其它語言有著更高的開發(fā)效率。它提供了海量并行的支持,這對于 游戲 服務(wù)端的開發(fā)而言是再好不過了。
Go語言的環(huán)境安裝:
建議直接打開 官方地址因為墻的原因打不開
因為我用的是windows系統(tǒng),這里主要講下Windows系統(tǒng)上使用Go語言來編程。
Windows 下可以使用 .msi 后綴(在下載列表中可以找到該文件,如go1.17.2.windows-amd64.msi)的安裝包來安裝。
默認(rèn)情況下 .msi 文件會安裝在 c:Go 目錄下。你可以將 c:Gobin 目錄添加到 Path 環(huán)境變量中。添加后你需要重啟命令窗口才能生效。個人建議還是安裝到 Program Files文件夾中。
使用什么開發(fā)工具來對Go語言進(jìn)行編寫:
個人建議用VS code, 也可以用Sublime Text來編輯。如果你之前看了我講的HTML語言的學(xué)習(xí),肯定已經(jīng)下載了VS code. 那么這時你需要在VS code中下載Go語言的擴(kuò)展插件。
這里有一個巨大的坑,就是在下載Go的插件和依賴包時,會提示一些包沒有。主要是因為下載的依賴包部分被墻了,只能想別的辦法去下載。
建議參考網(wǎng)頁:
解決vscode中g(shù)olang插件安裝失敗方法
在學(xué)習(xí)go的過程中,使用的是vscode,但是一直提示安裝相關(guān)插件失敗,然后上網(wǎng)查方法,基本上是叫你建立golang.org目錄什么的,結(jié)果全是錯的,而且都是抄襲,很煩。無意之中看到一位博主分享的方法,他也是飽受上述的垃圾博文困擾,然后找到了解決方法,這里向他致敬,秉著讓更多人看到正確解決方法的心,我寫下正確的解決方法,希望對你有所幫助,也可以點(diǎn)開原博主鏈接參考:
Go有一個全球模塊代理,設(shè)置代理再去安裝golang的插件,就可以安裝成功了。步驟有,首先Windows用戶打開Powershell,一個藍(lán)色的界面,注意不是cmd!不知道的直接打開window下面的搜索,然后輸入powershell,搜索出來就可以了。
$env:GO111MODULE=“on”
$env:GOPROXY=“”
go env -w GOPROXY=
go env -w GOPRIVATE=*.corp.example.com
然后我們打開VsCode界面,下面會提示安裝插件,我們選擇Install ALL,就會安裝成功
當(dāng)你在運(yùn)行Go語言程序時,提示所有的插件包都已經(jīng)安裝成功了時,就可以正常使用了,要不然一堆報錯會讓你非常心煩。
好了,今天先到這里,晚安、下班~
切換到新語言始終是一大步,尤其是當(dāng)您的團(tuán)隊成員只有一個時有該語言的先前經(jīng)驗?,F(xiàn)在,Stream 的主要編程語言從 Python 切換到了 Go。這篇文章將解釋stream決定放棄 Python 并轉(zhuǎn)向 Go 的一些原因。
Go 非???。性能類似于 Java 或 C++。對于用例,Go 通常比 Python 快 40 倍。
對于許多應(yīng)用程序來說,編程語言只是應(yīng)用程序和數(shù)據(jù)庫之間的粘合劑。語言本身的性能通常并不重要。然而,Stream 是一個API 提供商,為 700 家公司和超過 5 億最終用戶提供提要和聊天平臺。多年來,我們一直在優(yōu)化 Cassandra、PostgreSQL、Redis 等,但最終,您會達(dá)到所使用語言的極限。Python 是一門很棒的語言,但對于序列化/反序列化、排名和聚合等用例,它的性能相當(dāng)緩慢。我們經(jīng)常遇到性能問題,Cassandra 需要 1 毫秒來檢索數(shù)據(jù),而 Python 會花費(fèi)接下來的 10 毫秒將其轉(zhuǎn)換為對象。
看看我如何開始 Go 教程中的一小段 Go 代碼。(這是一個很棒的教程,也是學(xué)習(xí) Go 的一個很好的起點(diǎn)。)
如果您是 Go 新手,那么在閱讀那個小代碼片段時不會有太多讓您感到驚訝的事情。它展示了多個賦值、數(shù)據(jù)結(jié)構(gòu)、指針、格式和一個內(nèi)置的 HTTP 庫。當(dāng)我第一次開始編程時,我一直喜歡使用 Python 更高級的功能。Python 允許您在編寫代碼時獲得相當(dāng)?shù)膭?chuàng)意。例如,您可以:
這些功能玩起來很有趣,但是,正如大多數(shù)程序員會同意的那樣,在閱讀別人的作品時,它們通常會使代碼更難理解。Go 迫使你堅持基礎(chǔ)。這使得閱讀任何人的代碼并立即了解發(fā)生了什么變得非常容易。 注意:當(dāng)然,它實(shí)際上有多“容易”取決于您的用例。如果你想創(chuàng)建一個基本的 CRUD API,我仍然推薦 Django + DRF或 Rails。
作為一門語言,Go 試圖讓事情變得簡單。它沒有引入許多新概念。重點(diǎn)是創(chuàng)建一種非常快速且易于使用的簡單語言。它唯一具有創(chuàng)新性的領(lǐng)域是 goroutine 和通道。(100% 正確CSP的概念始于 1977 年,所以這項創(chuàng)新更多是對舊思想的一種新方法。)Goroutines 是 Go 的輕量級線程方法,通道是 goroutines 之間通信的首選方式。Goroutines 的創(chuàng)建非常便宜,并且只需要幾 KB 的額外內(nèi)存。因為 Goroutine 非常輕量,所以有可能同時運(yùn)行數(shù)百甚至數(shù)千個。您可以使用通道在 goroutine 之間進(jìn)行通信。Go 運(yùn)行時處理所有復(fù)雜性。goroutines 和基于通道的并發(fā)方法使得使用所有可用的 CPU 內(nèi)核和處理并發(fā) IO 變得非常容易——所有這些都不會使開發(fā)復(fù)雜化。與 Python/Java 相比,在 goroutine 上運(yùn)行函數(shù)需要最少的樣板代碼。您只需在函數(shù)調(diào)用前加上關(guān)鍵字“go”:
Go 的并發(fā)方法很容易使用。與 Node 相比,這是一種有趣的方法,開發(fā)人員必須密切關(guān)注異步代碼的處理方式。Go 中并發(fā)的另一個重要方面是競爭檢測器。這樣可以很容易地確定異步代碼中是否存在任何競爭條件。
我們目前用 Go 編寫的最大的微服務(wù)編譯需要 4 秒。與以編譯速度慢而聞名的 Java 和 C++ 等語言相比,Go 的快速編譯時間是一項重大的生產(chǎn)力勝利。我喜歡在程序編譯的時候摸魚,但在我還記得代碼應(yīng)該做什么的同時完成事情會更好。
首先,讓我們從顯而易見的開始:與 C++ 和 Java 等舊語言相比,Go 開發(fā)人員的數(shù)量并不多。根據(jù)StackOverflow的數(shù)據(jù), 38% 的開發(fā)人員知道 Java, 19.3% 的人知道 C++,只有 4.6% 的人知道 Go。GitHub 數(shù)據(jù)顯示了類似的趨勢:Go 比 Erlang、Scala 和 Elixir 等語言使用更廣泛,但不如 Java 和 C++ 流行。幸運(yùn)的是,Go 是一種非常簡單易學(xué)的語言。它提供了您需要的基本功能,僅此而已。它引入的新概念是“延遲”聲明和內(nèi)置的并發(fā)管理與“goroutines”和通道。(對于純粹主義者來說:Go 并不是第一種實(shí)現(xiàn)這些概念的語言,只是第一種使它們流行起來的語言。)任何加入團(tuán)隊的 Python、Elixir、C++、Scala 或 Java 開發(fā)人員都可以在一個月內(nèi)在 Go 上發(fā)揮作用,因為它的簡單性。與許多其他語言相比,我們發(fā)現(xiàn)組建 Go 開發(fā)人員團(tuán)隊更容易。如果您在博爾德和阿姆斯特丹等競爭激烈的生態(tài)系統(tǒng)中招聘人員,這是一項重要的優(yōu)勢。
對于我們這樣規(guī)模的團(tuán)隊(約 20 人)來說,生態(tài)系統(tǒng)很重要。如果您必須重新發(fā)明每一個小功能,您根本無法為您的客戶創(chuàng)造價值。Go 對我們使用的工具有很好的支持。實(shí)體庫已經(jīng)可用于 Redis、RabbitMQ、PostgreSQL、模板解析、任務(wù)調(diào)度、表達(dá)式解析和 RocksDB。與 Rust 或 Elixir 等其他較新的語言相比,Go 的生態(tài)系統(tǒng)是一個重大勝利。它當(dāng)然不如 Java、Python 或 Node 之類的語言好,但它很可靠,而且對于許多基本需求,你會發(fā)現(xiàn)已經(jīng)有高質(zhì)量的包可用。
Gofmt 是一個很棒的命令行實(shí)用程序,內(nèi)置在 Go 編譯器中,用于格式化代碼。就功能而言,它與 Python 的 autopep8 非常相似。我們大多數(shù)人并不真正喜歡爭論制表符與空格。格式的一致性很重要,但實(shí)際的格式標(biāo)準(zhǔn)并不那么重要。Gofmt 通過使用一種正式的方式來格式化您的代碼來避免所有這些討論。
Go 對協(xié)議緩沖區(qū)和 gRPC 具有一流的支持。這兩個工具非常適合構(gòu)建需要通過 RPC 通信的微服務(wù)。您只需要編寫一個清單,在其中定義可以進(jìn)行的 RPC 調(diào)用以及它們采用的參數(shù)。然后從這個清單中自動生成服務(wù)器和客戶端代碼。生成的代碼既快速又具有非常小的網(wǎng)絡(luò)占用空間并且易于使用。從同一個清單中,您甚至可以為許多不同的語言生成客戶端代碼,例如 C++、Java、Python 和 Ruby。因此,內(nèi)部流量不再有模棱兩可的 REST 端點(diǎn),您每次都必須編寫幾乎相同的客戶端和服務(wù)器代碼。.
Go 沒有像 Rails 用于 Ruby、Django 用于 Python 或 Laravel 用于 PHP 那樣的單一主導(dǎo)框架。這是 Go 社區(qū)內(nèi)激烈爭論的話題,因為許多人主張你不應(yīng)該一開始就使用框架。我完全同意這對于某些用例是正確的。但是,如果有人想構(gòu)建一個簡單的 CRUD API,他們將更容易使用 Django/DJRF、Rails Laravel 或Phoenix。對于 Stream 的用例,我們更喜歡不使用框架。然而,對于許多希望提供簡單 CRUD API 的新項目來說,缺乏主導(dǎo)框架將是一個嚴(yán)重的劣勢。
Go 通過簡單地從函數(shù)返回錯誤并期望調(diào)用代碼來處理錯誤(或?qū)⑵浞祷氐秸{(diào)用堆棧)來處理錯誤。雖然這種方法有效,但很容易失去問題的范圍,以確保您可以向用戶提供有意義的錯誤。錯誤包通過允許您向錯誤添加上下文和堆棧跟蹤來解決此問題。另一個問題是很容易忘記處理錯誤。像 errcheck 和 megacheck 這樣的靜態(tài)分析工具可以方便地避免犯這些錯誤。雖然這些變通辦法效果很好,但感覺不太對勁。您希望該語言支持正確的錯誤處理。
Go 的包管理絕不是完美的。默認(rèn)情況下,它無法指定特定版本的依賴項,也無法創(chuàng)建可重現(xiàn)的構(gòu)建。Python、Node 和 Ruby 都有更好的包管理系統(tǒng)。但是,使用正確的工具,Go 的包管理工作得很好。您可以使用Dep來管理您的依賴項,以允許指定和固定版本。除此之外,我們還貢獻(xiàn)了一個名為的開源工具VirtualGo,它可以更輕松地處理用 Go 編寫的多個項目。
我們進(jìn)行的一個有趣的實(shí)驗是在 Python 中使用我們的排名提要功能并在 Go 中重寫它。看看這個排名方法的例子:
Python 和 Go 代碼都需要執(zhí)行以下操作來支持這種排名方法:
開發(fā) Python 版本的排名代碼大約花了 3 天時間。這包括編寫代碼、單元測試和文檔。接下來,我們花了大約 2 周的時間優(yōu)化代碼。其中一項優(yōu)化是將分?jǐn)?shù)表達(dá)式 (simple_gauss(time)*popularity) 轉(zhuǎn)換為抽象語法樹. 我們還實(shí)現(xiàn)了緩存邏輯,可以在未來的特定時間預(yù)先計算分?jǐn)?shù)。相比之下,開發(fā)此代碼的 Go 版本大約需要 4 天時間。性能不需要任何進(jìn)一步的優(yōu)化。因此,雖然 Python 的最初開發(fā)速度更快,但基于 Go 的版本最終需要我們團(tuán)隊的工作量大大減少。另外一個好處是,Go 代碼的執(zhí)行速度比我們高度優(yōu)化的 Python 代碼快大約 40 倍?,F(xiàn)在,這只是我們通過切換到 Go 體驗到的性能提升的一個示例。
與 Python 相比,我們系統(tǒng)的其他一些組件在 Go 中構(gòu)建所需的時間要多得多。作為一個總體趨勢,我們看到 開發(fā) Go 代碼需要更多的努力。但是,我們花更少的時間 優(yōu)化 代碼以提高性能。
我們評估的另一種語言是Elixir.。Elixir 建立在 Erlang 虛擬機(jī)之上。這是一種迷人的語言,我們之所以考慮它,是因為我們的一名團(tuán)隊成員在 Erlang 方面擁有豐富的經(jīng)驗。對于我們的用例,我們注意到 Go 的原始性能要好得多。Go 和 Elixir 都可以很好地服務(wù)數(shù)千個并發(fā)請求。但是,如果您查看單個請求的性能,Go 對于我們的用例來說要快得多。我們選擇 Go 而不是 Elixir 的另一個原因是生態(tài)系統(tǒng)。對于我們需要的組件,Go 有更成熟的庫,而在許多情況下,Elixir 庫還沒有準(zhǔn)備好用于生產(chǎn)環(huán)境。培訓(xùn)/尋找開發(fā)人員使用 Elixir 也更加困難。這些原因使天平向 Go 傾斜。Elixir 的 Phoenix 框架看起來很棒,絕對值得一看。
Go 是一種非常高性能的語言,對并發(fā)有很好的支持。它幾乎與 C++ 和 Java 等語言一樣快。雖然與 Python 或 Ruby 相比,使用 Go 構(gòu)建東西確實(shí)需要更多時間,但您將節(jié)省大量用于優(yōu)化代碼的時間。我們在Stream有一個小型開發(fā)團(tuán)隊,為超過 5 億最終用戶提供動力和聊天。Go 結(jié)合了 強(qiáng)大的生態(tài)系統(tǒng) 、新開發(fā)人員的 輕松入門、快速的性能 、對并發(fā)的 可靠支持和高效的編程環(huán)境 ,使其成為一個不錯的選擇。Stream 仍然在我們的儀表板、站點(diǎn)和機(jī)器學(xué)習(xí)中利用 Python 來提供個性化的訂閱源. 我們不會很快與 Python 說再見,但今后所有性能密集型代碼都將使用 Go 編寫。我們新的聊天 API也完全用 Go 編寫。
Go語言是谷歌推出的一種全新的編程語言,可以在不損失應(yīng)用程序性能的情況下降低代碼的復(fù)雜性。谷歌首席軟件工程師羅布派克(Rob Pike)說:我們之所以開發(fā)Go,是因為過去10多年間軟件開發(fā)的難度令人沮喪。
Go是谷歌2009發(fā)布的第二款編程語言。2009年7月份,谷歌曾發(fā)布了Simple語言,它是用來開發(fā)Android應(yīng)用
Go Logo
的一種BASIC語言.
北京時間2010年1月10日,Go語言摘得了TIOBE公布的2009年年度大獎。該獎項授予在2009年市場份額增長最多的編程語言。
谷歌資深軟件工程師羅布·派克(Rob Pike)表示,“Go讓我體驗到了從未有過的開發(fā)效率。”派克表示,和今天的C++或C一樣,Go是一種系統(tǒng)語言。他解釋道,“使用它可以進(jìn)行快速開發(fā),同時它還是一個真正的編譯語言,我們之所以現(xiàn)在將其開源,原因是我們認(rèn)為它已經(jīng)非常有用和強(qiáng)大?!?/p>
2007年,谷歌把Go作為一個20%項目開始研發(fā),即讓員工抽出本職工作之外時間的20%, 投入在該項目上。除了派克外,該項目的成員還有其他谷歌工程師也參與研發(fā)。
派克表示,編譯后Go代碼的運(yùn)行速度與C語言非常接近,而且編譯速度非??欤拖裨谑褂靡粋€交互式語言?,F(xiàn)有編程語言均未專門對多核處理器進(jìn)行優(yōu)化。Go就是谷歌工程師為這類程序編寫的一種語言。它不是針對編程初學(xué)者設(shè)計的,但學(xué)習(xí)使用它也不是非常困難。Go支持面向?qū)ο?,而且具有真正的閉包(closures)和反射 (reflection)等功能。
在學(xué)習(xí)曲線方面,派克認(rèn)為Go與Java類似,對于Java開發(fā)者來說,應(yīng)該能夠輕松學(xué)會 Go。之所以將Go作為一個開源項目發(fā)布,目的是讓開源社區(qū)有機(jī)會創(chuàng)建更好的工具來使用該語言,例如 Eclipse IDE中的插件。
在谷歌公開發(fā)布的所有網(wǎng)絡(luò)應(yīng)用中,均沒有使用Go,但是谷歌已經(jīng)使用該語言開發(fā)了幾個內(nèi)部項目。派克表示,Go是否會對谷歌即將推出的Chrome OS產(chǎn)生影響,還言之尚早,不過Go的確可以和Native Client配合使用。他表示“Go可以讓應(yīng)用完美的運(yùn)行在瀏覽器內(nèi)?!崩?,使用Go可以更高效的實(shí)現(xiàn)Wave,無論是在前端還是后臺。
Go 同時具有兩種編譯器,一種是建立在GCC基礎(chǔ)上的Gccgo,另外一種是分別針對64位x64和32位x86計算機(jī)的一套編譯器(6g和8g)。谷歌目前正在研發(fā)其對ARM芯片和Android設(shè)備的支持。派克表示,“Android手機(jī)存在的問題是,我們一直沒有一個數(shù)學(xué)協(xié)處理器。
網(wǎng)站欄目:go語言包管理的前世今生 go語言開源嗎
網(wǎng)址分享:http://jinyejixie.com/article10/dodppgo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、營銷型網(wǎng)站建設(shè)、網(wǎng)站營銷、網(wǎng)站策劃、網(wǎng)站排名、App開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)