日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Go擺脫了C,又惹上了Java?

talks.golang.org 前幾天放出了 PPT《Go in Go》和 《The State of Go》講解最近 Go 的開發(fā)動(dòng)態(tài)和成果:

隨著 Go 1.5 版本的開發(fā),現(xiàn)在整個(gè)系統(tǒng)都是使用 Go 編寫的(有一小部分匯編)

C 已經(jīng)成為過去時(shí)了。

Go 1.5 計(jì)劃在 8 月份發(fā)布,將會(huì)嘗試支持 iOS。(Go 1.4 已經(jīng)正式支持 Android)

4月份進(jìn)行的 NYJavaSIG 聚會(huì)上 Go 團(tuán)隊(duì)的技術(shù)主管經(jīng)理分享了《Go for Java Programmers》,為 Java 程序員提供的 Go 入門指南,正式向 Java 領(lǐng)域進(jìn)軍了嗎?

  • 視頻地址:https://www.youtube.com/watch?v=_c_tQ6_3cCg

  • PPT 地址:http://talks.golang.org/2015/go-for-java-programmers.slide#1

OSC 上兩年前就有 Go 要涉獵 Java 領(lǐng)域的文章和討論了:

  • Java程序員快速入門 go 語言

不知道現(xiàn)在大家的看法是否有些改變。

《Go in Go》

隨著 Go 1.5 版本的開發(fā),現(xiàn)在整個(gè)系統(tǒng)都是使用 Go 編寫的(有一小部分匯編)

C 已經(jīng)成為過去時(shí)了。

注: gccgo 仍然很強(qiáng)大
這篇文章主要探討原始編譯器 gcc

為什么之前用 C 編寫?

啟動(dòng)

(而且 Go 的主要目的不是作為一個(gè)編譯器實(shí)現(xiàn)語言)

為什么編譯器使用 Go 重寫?

不單單是驗(yàn)證,我們還有更多實(shí)際的原因:

  • Go 比 C 容易編寫(實(shí)際上)

  • Go 比 C 容易調(diào)試(即使沒有調(diào)試器的情況下)

  • Go 將成為你唯一需要會(huì)的語言,鼓勵(lì)貢獻(xiàn)

  • Go 有更好的模塊化,工具鏈,測試工具,配置工具等等

  • Go 很簡單就能進(jìn)行并行操作

雖然看起來很多優(yōu)勢,但是還是夸的太早了:)

設(shè)計(jì)文檔: golang.org/s/go13compiler

為什么運(yùn)行時(shí)也是用 Go 重寫?

我們有自己的 C 編譯器來編譯運(yùn)行時(shí),我們需要一個(gè)帶有跟 Go ABI 一樣編譯器,比如 segmented stacks。

使用 Go 編寫可以擺脫 C 編譯器的劣勢,這是比使用 Go 重寫編譯器還重要。

(所有使用 Go 重寫編譯器的理由都可以作為使用 Go 重寫運(yùn)行時(shí)的理由)

限制運(yùn)行時(shí)只用一種語言編寫,更容易進(jìn)行集成,管理 stack 等等操作。

跟往常一樣,簡化是首要的考慮因素。

歷史

為什么我們要有完全屬于自己的工具鏈?

  • 我們的 ABI?

  • 我們自身的文件格式?

Go 的大規(guī)模重大改進(jìn)要比 GCC 或者 LLVM 要更困難。

news.ycombinator.com/item?id=8817990

重大改進(jìn)

由于使用自身工具簡化的功能和使用 Go 重寫后的一些改進(jìn):

  • linker 重構(gòu)

  • 新垃圾收集器

  • 堆疊圖

  • 連續(xù)棧

  • 寫屏障

***三個(gè)都不可能用 C 實(shí)現(xiàn):

  • C 是非類型安全的

  • 因?yàn)?**化而造成堆棧槽混淆

(Gccgo 很快會(huì)有 segmented stacks 和 imprecise (stack) collection )

更多技術(shù)細(xì)節(jié)改進(jìn)請(qǐng)看 PPT 原文。

啟動(dòng)

不需要 C 編譯器,只需要一個(gè) Go 編譯器

因此需要從 1.5 的源代碼去下載安裝構(gòu)建 Go

我們使用 Go 1.4+ 作為基礎(chǔ)庫來構(gòu)建 1.5+ 的工具鏈

詳情: golang.org/s/go15bootstrap

未來

未來仍然有很多任務(wù)要完成,但是 1.5 已經(jīng)完成的差不多了。

未來的計(jì)劃:

  • 更好的轉(zhuǎn)義分析

  • 新編譯器后端使用 SSA(使用 Go 會(huì)比 C 簡單很多)

更多優(yōu)化:

  • 從 PDFs (或者是 XML)生成機(jī)器描述,將會(huì)有一個(gè)純機(jī)器生成指令定義,“從 PDF 讀入,寫出一個(gè)匯編配置”;

  • 已經(jīng)部署反匯編程序

總結(jié)

擺脫 C 是 Go 項(xiàng)目的一個(gè)巨大改進(jìn),代碼更整潔,提升可測試性,可部署性,也更容易運(yùn)行。

新的統(tǒng)一工具鏈減少了代碼數(shù)量,提升可維護(hù)性。

靈活的工具鏈對(duì)可移植性也很重要。

《The State of Go》

這篇 PPT 主要講解了 Go 1.5 的開發(fā)成果,用數(shù)據(jù)說話,各種圖表顯示 Go 1.5 跟 Go 1.4 簡直不是一個(gè)級(jí)別的,大量的優(yōu)化和極高的性能提升。

Go 1.5 主要特性:

1.并發(fā)垃圾收集機(jī)制,目標(biāo)是:GC 延遲小于 10 毫秒。

新的垃圾收集機(jī)制是花費(fèi)一些內(nèi)存和 CPU 時(shí)間來換取更低的延遲時(shí)間:

2. 更高的并發(fā)性能,設(shè)置 GOMAXPROCS=N (where N is your number of CPUs):

更好的 goroutines 執(zhí)行性能:

更好的 goroutines 轉(zhuǎn)換性能:

3. 整體性能

《Go for Java programmers》

這是 Google 的 Go 團(tuán)隊(duì)技術(shù)主管經(jīng)理 Sameer Ajmani 分享的 PPT,為 Java 程序員快速入門 Go 而準(zhǔn)備的。

Go 和 Java 有很多共同之處

  • C 系列 (強(qiáng)類型,括號(hào))

  • 靜態(tài)類型

  • 垃圾收集

  • 內(nèi)存安全 (nil 引用,運(yùn)行時(shí)邊界檢查)

  • 變量總是初始化 (zero/nil/false)

  • 方法

  • 接口

  • 類型斷言 (實(shí)例)

  • 反射

Go 與 Java 的不同之處

  • 代碼程序直接編譯成機(jī)器碼,沒有 VM

  • 靜態(tài)鏈接二進(jìn)制

  • 內(nèi)存布局控制

  • 函數(shù)值和詞法閉包

  • 內(nèi)置字符串 (UTF-8)

  • 內(nèi)置泛型映射和數(shù)組/片段

  • 內(nèi)置并發(fā)

Go 特意去掉了大量的特性

  • 沒有類

  • 沒有構(gòu)造器

  • 沒有繼承

  • 沒有 final

  • 沒有異常

  • 沒有注解

  • 沒有自定義泛型

為什么 Go 要省去那些特性?

代碼清晰明了是首要的

當(dāng)查看代碼時(shí),可以很清晰的知道程序?qū)?huì)做什么

當(dāng)編寫代碼的時(shí)候,也可以很清晰的讓程序做你想做的

有時(shí)候這意味著編寫出一個(gè)循環(huán)而不是調(diào)用一個(gè)模糊的函數(shù)。

(不要變的太枯燥)

詳細(xì)的設(shè)計(jì)背景請(qǐng)看:

  • Less is exponentially more (Pike, 2012)

  • Go at Google: Language Design in the Service of Software Engineering (Pike, 2012)

更多詳細(xì)內(nèi)容和代碼示例請(qǐng)看 OSC 翻譯頻道:http://www.oschina.net/translate/go-for-java-programmers-ppt。

原文和所有圖片都來自 talks.golang.org。


網(wǎng)站題目:Go擺脫了C,又惹上了Java?
本文來源:http://m.5511xx.com/article/cdhecsj.html