如何从go语言编程 源代码码构建 Go 1.5 开发环境

Go 1.5 最新状况 - 技术文章 - 爱看
Go 1.5 最新状况
talks.golang.org 前几天放出了 PPT《》和 《》讲解最近 Go 的开发动态和成果:
随着 Go 1.5 版本的开发,现在整个系统都是使用 Go 编写的(有一小部分汇编)
C 已经成为过去时了。
Go 1.5 计划在 8 月份发布,将会尝试支持 iOS。(Go 1.4 已经正式支持 Android)
4月份进行的 聚会上 Go 团队的技术主管经理分享了《Go for Java Programmers》,为 Java 程序员提供的 Go 入门指南,正式向 Java 领域进军了吗?
视频地址:
PPT 地址:
OSC 上两年前就有 Go 要涉猎 Java 领域的文章和讨论了:
Java程序员快速入门 go 语言&
不知道现在大家的看法是否有些改变。
《Go in Go》
随着 Go 1.5 版本的开发,现在整个系统都是使用 Go 编写的(有一小部分汇编)
C 已经成为过去时了。
注: gccgo 仍然很强大
这篇文章主要探讨原始编译器 gcc
为什么之前用 C 编写?
(而且 Go 的主要目的不是作为一个编译器实现语言)
为什么编译器使用 Go 重写?
不单单是验证,我们还有更多实际的原因:
Go 比 C 容易编写(实际上)
Go 比 C 容易调试(即使没有调试器的情况下)
Go 将成为你唯一需要会的语言,鼓励贡献&
Go 有更好的模块化,工具链,测试工具,配置工具等等
Go 很简单就能进行并行操作
虽然看起来很多优势,但是还是夸的太早了:)
设计文档: golang.org/s/go13compiler &
为什么运行时也是用 Go 重写?
我们有自己的 C 编译器来编译运行时,我们需要一个带有跟 Go ABI 一样编译器,比如 segmented stacks。
使用 Go 编写可以摆脱 C 编译器的劣势,这是比使用 Go 重写编译器还重要。
(所有使用 Go 重写编译器的理由都可以作为使用 Go 重写运行时的理由)
限制运行时只用一种语言编写,更容易进行集成,管理 stack 等等操作。
跟往常一样,简化是首要的考虑因素。
为什么我们要有完全属于自己的工具链?
我们的 ABI?
我们自身的文件格式?
Go 的大规模重大改进要比 GCC 或者 LLVM 要更困难。
/item?id=8817990
由于使用自身工具简化的功能和使用 Go 重写后的一些改进:
linker 重构
新垃圾收集器
最后三个都不可能用 C 实现:
C 是非类型安全的
因为最佳化而造成堆栈槽混淆
(Gccgo 很快会有 segmented stacks 和 imprecise (stack) collection )
更多技术细节改进请看 PPT 原文。
不需要 C 编译器,只需要一个 Go 编译器
因此需要从 1.5 的源代码去下载安装构建 Go&
我们使用 Go 1.4+ 作为基础库来构建 1.5+ 的工具链&
详情: golang.org/s/go15bootstrap &
未来仍然有很多任务要完成,但是 1.5 已经完成的差不多了。
未来的计划:
更好的转义分析
新编译器后端使用 SSA(使用 Go 会比 C 简单很多)
更多优化:
从 PDFs (或者是 XML)生成机器描述,将会有一个纯机器生成指令定义,“从 PDF 读入,写出一个汇编配置”;
已经部署反汇编程序
摆脱 C 是 Go 项目的一个巨大改进,代码更整洁,提升可测试性,可部署性,也更容易运行。
新的统一工具链减少了代码数量,提升可维护性。
灵活的工具链对可移植性也很重要。
《The State of Go》
这篇 PPT 主要讲解了 Go 1.5 的开发成果,用数据说话,各种图表显示 Go 1.5 跟 Go 1.4 简直不是一个级别的,大量的优化和极高的性能提升。
Go 1.5 主要特性:
1. 并发垃圾收集机制,目标是:GC 延迟小于 10 毫秒。
新的垃圾收集机制是花费一些内存和 CPU 时间来换取更低的延迟时间:
2. 更高的并发性能,设置 GOMAXPROCS=N (where N is your number of CPUs):
更好的 goroutines 执行性能:
更好的 goroutines 转换性能:
3. 整体性能
《Go for Java programmers》
这是 Google 的 Go 团队技术主管经理 Sameer Ajmani 分享的 PPT,为 Java 程序员快速入门 Go 而准备的。
Go 和 Java 有很多共同之处
C 系列 (强类型,括号)
内存安全 (nil 引用,运行时边界检查)
变量总是初始化 (zero/nil/false)
类型断言 (实例)
Go 与 Java 的不同之处
代码程序直接编译成机器码,没有 VM
静态链接二进制
内存布局控制
函数值和词法闭包
内置字符串 (UTF-8)
内置泛型映射和数组/片段
Go 特意去掉了大量的特性
没有构造器
没有 final
没有自定义泛型
为什么 Go 要省去那些特性?
代码清晰明了是首要的
当查看代码时,可以很清晰的知道程序将会做什么
当编写代码的时候,也可以很清晰的让程序做你想做的
有时候这意味着编写出一个循环而不是调用一个模糊的函数。
(不要变的太枯燥)
详细的设计背景请看:
Less is exponentially more (Pike, 2012)
Go at Google: Language Design in the Service of Software Engineering (Pike, 2012)
声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
你可能喜欢
你可能喜欢
向好友分享:
周热点图文
您可能喜欢
您可能喜欢Golang源码安装和学习环境搭建_Linux编程_Linux公社-Linux系统门户网站
你好,游客
Golang源码安装和学习环境搭建
来源:Linux社区&
作者:ketqi
1).源代码安装go语言
Go的工具链采用C语言编写,要构建它,你需要安装一个C编译器;
sudo apt-get install build-essential
Go使用Mercurial进行版本管理,首先你必须安装了Mercurial,对于 /Debian 系统先安装easy_
sudo apt-get install mercurial
sudo apt-get install python-setuptools python-dev
sudo easy_install mercurial
获取代码;hg clone -r release /hg/ $GOROOT
cd $GOROOT/src
./all.bash
2).设置环境变量,在/etc/profile文件同添加以下内容
export GOROOT=$HOME/go
export GOARCH=386
export GOOS=linux
export PATH=.:$PATH:$GOBIN
export GOPATH=$HOME/workspace
GOPATH设置工作空间,允许多个目录,当有多个目录时,用分隔符分隔,当有多个GOPATH时,默认会将go get的内容放在第一个目录下;
$GOPATH 目录约定有三个子目录:
src 存放源代码(比如:.go .c .h .s等)
pkg 编译后生成的文件(比如:.a)
bin 编译后生成的可执行文件(为了方便,可以把此目录加入到 $PATH 变量中)
应用刚刚配置的环境变量:source /etc/profile
3).查看go是否是release版
hg identify
更新go到新版本
cd $GOROOT
hg update release
./all.bash
4).浏览本地doc
在命令行执行godoc -http=:8080,在浏览器地址输入:http://127.0.0.1:8080,即可进入doc界面
5).搭建基于浏览器的交互式Go编程指南-gotour
5.1).安装Go语言英文教程: sudo go get /p/go-tour/gotour
5.2).安装Go语言中文教程: sudo go get bitbucket.org/mikespook/go-tour-zh/gotour
在命令行执行gotour,在浏览器地址输入:http://127.0.0.1:3999,即可进入教程的学习界面。
相关资讯 & & &
& (08月20日)
& (06月17日)
& (08月23日)
& (07月31日)
& (05月10日)
图片资讯 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款如何从源代码构建 Go 1.5 开发环境_百度知道
如何从源代码构建 Go 1.5 开发环境
提问者采纳
1.最简单的方法: public static String reverse1(String str) { return new StringBuffer(str).reverse().toString(); } 2.最常用的方法: public static String reverse3(String s) { char[] array = s.toCharArray(); String reverse = &&; /...
来自团队:
其他类似问题
为您推荐:
开发环境的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁3433人阅读
go 语言源码安装依赖 ,gcc ,make glibc库,等,上述工具安装省略,
另外,其源代码更新采用的是mercurial 工具,安装前先安装mercureal :
1.mercurial安装使用
yum install mercurial
2.设置环境变量在.bash_profile中
export GOROOT=/usr/local/go
export GOOS=linux
export GOARCH=386
export GOBIN=$GOROOT/bin
PATH=$PATH:$GOBIN
export PATH
alias cdg=&cd /project/go&
2.下载go安装包:
hg clone -r release /hg/ $GOROOT
cd $GOROOT/src && ./all.bash
3.运行go &看是否能找到命令
4.编写demo程序验证下:
1.编写demo程序:
package main
import &fmt&
func main() {
fmt.Printf(&Let's go\n&)
1&编译运行:
& go run demo.go
2&单步编译,单步连接
& [ /project/go]#ls
& [ /project/go]#go tool 8g demo.go&
& [ /project/go]#ls
& demo.8 &demo.go
& [ /project/go]#go tool 8l demo.8 &&
& [ /project/go]#ls
& 8.out &demo.8 &demo.go
& [ /project/go]#8.out
& Let's go
5.添加vim 对go支持
将/go/misc/vim 下相关文件拷贝到$HOME/.vimrc&
版权声明:本文为博主原创文章,未经博主允许不得转载。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:560724次
积分:7305
积分:7305
排名:第1322名
原创:168篇
转载:132篇
评论:55条Sublime Text 2搭建Go开发环境,代码提示+补全+调试 - 下载频道
- CSDN.NET
&&&&Sublime Text 2搭建Go开发环境,代码提示+补全+调试
Sublime Text 2搭建Go开发环境,代码提示+补全+调试
Sublime Text 2搭建Go开发环境,代码提示+补全+调试,
【内涵使用教程】
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
您可能还需要
开发技术下载排行

我要回帖

更多关于 go语言编程 源代码 的文章

 

随机推荐