Total Pageviews

Tuesday 24 July 2012

Ubuntu desktop下安装go环境

Go语言是Google开发的一个开源项目,目的之一是为了提高开发人员的编程效率。Go语言语法灵活,简洁,清晰,高效。它的并发特性可以方便的用于多核处理器和网络开发,同时灵活新颖的类型系统可以方便的编写模块化的系统。go可以快速编译,同时具有垃圾内存自动回收功能,并且还支持运行时反射。go十一个高效、静态类型,但是邮局有解释语言的动态类型特征的系统级语法。

只介绍Ubuntu下386的go语言安装方法,其他平台的可以到http://code.google.com/p/golang-china/上查看.

1、安装必要的包

sudo apt-get install bison ed gawk gcc libc6-dev make

如果上面有那个安装不上的可能会导致后面的也无法安装,用户也可以分个安装,这样保险些.

2、安装Mercurial

Mercurial其实是一个版本管理系统(可以通过hg名字检测是否安装),类似git.

sudo apt-get install python-setuptools

sudo apt-get install python-dev

sudo apt-get install build-essential

sudo apt-get install mercurial



3、获取go语言源码

hg clone -r release http://go.googlecode.com/hg/ go

4、配置环境变量
先 mkdir bin 
这里,bin是存放GO语言编译器连接器的目录,需要加入到PATH.

nano .bashrc   打开home/your-username目录下的.bashrc文件,加入如下信息,具体含义可以参考官方文档

export GOROOT=$HOME/go
export GOARCH=386
export GOOS=linux
export PATH=${PATH}:$HOME/bin

保存退出后,执行

source .bashrc

使其生效.

5、安装go语言,编译go环境.

$cd go/src

$./all.bash

开始编译,编译完成后会显示如下信息

等到出现:

../test

ALL TESTS PASSED

---

installed go for linux386 in /home/your-username/go

installed commands in /home/your-username/go/bin

就表明编译完成。386对应的编译器是8g,链接器是8l;

我们首先要找到执行文件8g的所在地:

$ sudo find / -name 8g

显示:

/home/brite/go/.hg/store/data/src/cmd/8g
/home/brite/go/src/cmd/8g
/home/brite/go/pkg/tool/linux_386/8g (这里brite是我的用户名)

上面的/home/brite/go/pkg/tool/linux_386/8g这行里的 8g就是执行文件8g,

需把/home/brite/go/pkg/tool/linux_386/添加到PATH,编辑.bashrc,在最末加入:

export PATH=${PATH}:/home/brite/go/pkg/tool/linux_386/

这样就可直接运行8g命令了。

$ 8g -V
显示:
8g version go1.0.2


OK.我们来编写一个最简单的GO程序,代码如下:
    package main 
    import "fmt" 
    func main() { 
        fmt.Printf("hello, world!") 
    } 
将上面的代码保存为hello.go并编译之:

8g hello.go 
编译后生成hello.8,然后运行:

8l hello.8

会生成8.out,执行:

./8.out 
终端上将显示:
hello, world!

这表明go环境搭建成功。在debian/ubuntu服务器上也是一样的安装方法,只是无须sudo.
我亲自测试过,本地ubuntu上和 debian/ubuntu服务器上,均搭建成功。


语法及类库文档
语法见这里:
http://golang.org/doc/go_spec.html

类库见这里:
http://golang.org/pkg/

有用的文档:
http://golang.org/doc/effective_go.html
http://golang.org/doc/go_tutorial.html

如果以前学习C++,可以参考这里:
http://golang.org/doc/go_for_cpp_programmers.html
保持最新版本.

目前GO语言还在不断完善中,还没有到可以进入生产环境的时候,如果想及时更新最新的版本,如下:
    hg pull 
    hg update release 
    make all
---------------------------------------------------------

Go,互联网时代的C语言 - 许式伟  

上海七牛信息技术有限公司 CEO 许式伟 上海七牛信息技术有限公司 CEO 许式伟曾任盛大资深研究员、金山技术总监、WPS Office 2005 首席架构师,开源爱好者。技术关注领域包括分布式存储、网络操作系统、Erlang 风格编程与最佳服务端编程实践、搜索引擎等。
  
 他是门票4200元的QCon2012北京大会的讲师。
 
内容简介:语言的选择已经非常之多。偏系统级的语言大多为静态类型语言,例如C,C++,Java,C#,Delphi;也有偏快速业务开发的语言,大都为动态类型,例如PHP,Python,Perl,Ruby,JavaScript;还有面向特定领域的,例如R和Matlab。
那么,为什么我们需要Go这样一门新语言呢?这门语言究竟肩负着怎样的使命而面世?最初,Go语言官方自称是一门系统级语言。之所以开发Go语言, 是因为“近10年左右开发程序之难让我们有点沮丧”。Go语言这一定位暗示了希望取代C和Java地位,成为最流行的语言。在 2000年前的单机时代,C语言是编程之王。随着机器性能的提升,软件规模与复杂度的提高,Java逐步取代了C的位置。尽管看起来Java已经深获人 心,但Java编程的体验并未尽如人意。历年来的编程语言排行榜显示,Java语言的市场份额在逐步下跌,并趋近于 C 语言的水平。这对于Java来说是非常尴尬的。作为一个现代化的语言,拥有众多C语言无法企及的特性,但似乎市场并不买账。也许挺Java的公司非常之 多,有钱的如 IBM、Oracle(Sun)之类,亦无法改变这个局势。
Go语言的作者们很清楚,C++真的没啥值得参考的,他们要学习的是C语言。C语言经久不衰的根源是它足够简单。Go语言也要足够得简单。那么,互联网时代的C语言需要哪些东西呢?
首先,并行与分布式支持。多核化和集群化是互联网时代的典型特征。作为一个互联网时代的C语言,必须要让这门语言操作多核与计算机集群如单机一样容 易。其次是软件工程支持,工程规模不断扩大是产业发展的必然趋势。单机时代语言可以只关心问题本身的解决。互联网时代的C语言还需要考虑软件品质保障、团 队协作相关的话题。最后,编程哲学的重塑。计算机软件经历了数十年的发展,形成了多种学术流派,有面向过程编程、面向对象编程,函数式编程、面向消息编程 等等。这些思想究竟孰优孰劣,众说纷纭。什么才是最佳的编程实践?
在本次演讲中,我们将来看下Go作为互联网时代的C语言,是如何应对这些问题的。

《Google AppEngine》的介绍 - 陆康
陆康  Android上著名应用Aldiko公司的工程师。曾写过Google Appengine的中文教程。
Twitter:@lookon
Aldiko主页:www.aldiko.com.
Go项目组正式发布了Go编程语言、官方库和工具集的1.0稳定版本,同步开发的 GAE 团队很早就按捺不住,很快删除了appengine-go项目的全部下载,并正式发布了1.6.4版的Google App Engine SDK for the Go runtime
Go runtime为常用的App Engine服务(Blobstore、Datastore、Memcache 等)提供了简明易用的Go API和直截了当的开发过程。与Python及Java SDK一样,Go应用也可以通过开发服务器在本地测试,最方便的是开发服务器会自动编译Go代码,因此测试修改后的代码只是刷新浏览器这样简单。
Go 1 SDK还包含一些功能改进与错误修正,整个SDK采用了Go 1的time API,还为批量操作的错误处理提供了MultiError数据类型,此外还支持Datastore Cursors及XMPPLog服务。详情可参阅发布说明
尽管目前Go App Engine runtime还处于测试阶段,Go 1所提供的语言稳定性是一项重要的里程碑。若要进一步了解Go 1的情况,可以参考Go 1发布以及 golang.org 丰富的文档