设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 开源资讯 Google 查看内容

Go语言的演化历程

2014-10-31 10:52| 发布者: joejoe0332| 查看: 3129| 评论: 0|原作者: tonybai.com|来自: tonybai.com

摘要: 本文来自Google的Golang语言设计者之一Rob Pike大神在GopherCon2014大会上的开幕主题演讲资料“Hello, Gophers!”。Rob大神在这次分 享中用了两个生动的例子讲述了Golang的演化历程,总结了Golang到目前为止的成功因 ...

  本文来自Google的Golang语言设计者之一Rob Pike大神在GopherCon2014大会上的开幕主题演讲资料“Hello, Gophers!”。Rob大神在这次分 享中用了两个生动的例子讲述了Golang的演化历程,总结了Golang到目前为止的成功因素,值得广大Golang Programmer & Beginner学习和了解。这里也用了”Golang的演化历程”作为标题。


1、Hello Gophers!

1
2
3
4
5
6
7
package main
 
import "fmt"
 
func main() {
    fmt.Printf("Hello, gophers!\n")
}

  Rob大神的见面礼,后续会有针对这段的演化历史的陈述。


2、历史

  这是一个历史性的时刻。

  Golang已经获得了一定的成功,值得拥有属于自己的技术大会。


3、成功

  促成这份成功的因素有许多:

– 功能

– 缺少的功能

– 功能的组合

– 设计

– 人

– 时间


4、案例学习:两段程序

  我们来近距离回顾两段程序。

  第一个是你见过的第一个Go程序,是属于你的历史时刻。

  第二个是我们见过的第一个Go程序,是属于全世界所有Gophers的历史时刻。

  先看第一个“hello, world”


5、hello.b

1
2
3
4
5
6
7
main( ) {
    extrn a, b, c;
    putchar(a); putchar(b); putchar(c); putchar('!*n');
}
'hell';
'o, w';
'orld';

  上面这段代码首先出现在1972年Brian W. Kernighan的B语言教程中(也有另外一说是出现在那之前的BCPL语言中)。


6、hello.c

1
2
3
4
main()
{
    printf("hello, world");
}

  上面这段代码出现在1974年Brian W. Kernighan编写的《Programming in C: A Tutorial》中。这份教程当时是作为Unix v5文档的一部分。


7、hello.c

1
2
3
4
main()
{
    printf("hello, world\n"); //译注:与上面的hello.c相比,多了个换行符\n输出
}

  这段代码首次出现在1978年Brian W. Kernighan和Dennis M. Ritchie合著的《The C Programming Language》一书中。


8、hello.c, 标准C草案

1
2
3
4
5
6
#include <stdio.h> //译注:与上面hello.c相比, 多了这个头文件包含
 
main()
{
    printf("hello, world\n");
}

  这段代码出现在1988年Brian W. Kernighan和Dennis M. Ritchie合著的《The C Programming Language》第二版一书中,基于标准C草案。


9、hello.c,标准C89

1
2
3
4
5
6
#include <stdio.h>
 
main(void//译注:与上面hello.c相比,多了个void
{
    printf("hello, world\n");
}

  这段代码出现在1988年Brian W. Kernighan和Dennis M. Ritchie合著的《The C Programming Language》第二版第二次修订中。


10、一两代之后…

  (省略所有中间语言)

  关于Golang的讨论开始于2007年年末。

  第一版语言规范起草于2008年3月份。

  用于实验和原型目的的编译器开发工作已经展开。

  最初的编译器输出的是C代码。

  语言规范一形成,我们就重写了编译器,输出本地代码(机器码)。


11、hello.go, 2008年6月6日

1
2
3
4
5
6
package main
 
func main() int {
    print "hello, world\n";
    return 0;
}


12、hello.go,2008年6月27日

1
2
3
4
5
package main
 
func main() {
    print "hello, world\n";
}

  当main函数返回,程序调用exit(0)。


13、hello.go,2008年8月11日

1
2
3
4
5
package main
 
func main() {
    print("hello, world\n");
}

  print调用加上了括号,这时print是一个函数,不再是一个原语。


14、hello.go,2008年10月24日

1
2
3
4
5
6
7
package main
 
import "fmt"
 
func main() {
    fmt.printf("hello, world\n");
}

  我们熟知并喜欢的printf来了。


15、hello.go,2009年1月15日

1
2
3
4
5
6
7
package main
 
import "fmt"
 
func main() {
    fmt.Printf("hello, world\n");
}

  头母大写的函数名用作才是导出的符号。



酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部