Go语言
- 2007年,三位技术大咖,要设计一个新语言,目标是成为网络和多核时代的C语言。
- 2008年中期,语言的特性设计已经完成,开始着手实现编译器和运行,Russ Cos加入
- 2009年,Go开始逐步趋于稳定,同年9月,Go正式发布并开源了源码
Go的基因谱
- 并发特性
由贝尔实验室的Hoare在1978年发布的CSP理论演化而来的。
CSP并发模型在Squeak/Newsqueak、Alef等编程语言中逐步完善,并走向实际应用的
Erlang是CSP理论的另一种实现。
- 面向对象、包、接口
Niklaus Wirth设计的Pascal语言,及衍生的相关编程语言。
包的概念、包的导入和声明等语法,主要来自Modula-2编程语言
面向对象所提供的方法的声明语法,则来自Oberon编程语言
GO演出出了自己特有的支持鸭子面向对象类型的隐式接口等诸多特性。
- 其他
- iota是从APL语言借鉴的
- 词法作用域、嵌套函数,来自Scheme语言
- 自己设计的
- 切片:为轻量级动态数组,提供了有效的随机存取
- defer
Hello World
B语言
Ken Thompson年轻时,在贝尔实验室为了辅助Unix系统的开发,设计了一个通用的程序设计语言,称作B语言。
//定义全局变量,设定要输出的内容
//每个变量的长度,必须对齐到4字节,和写汇编语言一样
a 'hell';
b 'o, w';
c 'orld';
//多次调用putchar函数输出字符
//!*n表示换行
main(){
extrn a,b,c;
putchar(a);putchar(b);putchar(c);
putchar('!*n');
}
B语言简单,功能有限,缺乏灵活的数据类型,使用起来比较困难
Ken的同事Dennis Ritchie为了提供丰富的类型,便以B语言的基础,开发出了C语言,并重写了UNIX。到目前为止,C语言成为常用的程序语言之一。
C语言
早期
main(){
printf("hello, world")
}
/*
说明
1. main函数没有明确的返回值类型,默认为int类型
2. printf函数默认不需要导入函数声明即可使用
3. main没有明确返回语句,但默认返回0
*/
- 函数不用写返回值
- 函数参数可以忽略
- 使用printf不需要包含头文件
1978年,《C程序设计语言·第1版》
main(){
printf("hello, world\n")
}
增加了换行符, 比!*n
简洁
1988年,《C程序设计语言·第2版》