Go与Hello world革命

Go语言

  • 2007年,三位技术大咖,要设计一个新语言,目标是成为网络和多核时代的C语言。
  • 2008年中期,语言的特性设计已经完成,开始着手实现编译器和运行,Russ Cos加入
  • 2009年,Go开始逐步趋于稳定,同年9月,Go正式发布并开源了源码

Go的基因谱

433013337941345154image.png

  1. 并发特性

由贝尔实验室的Hoare在1978年发布的CSP理论演化而来的。
CSP并发模型在Squeak/Newsqueak、Alef等编程语言中逐步完善,并走向实际应用的

Erlang是CSP理论的另一种实现。

  1. 面向对象、包、接口

Niklaus Wirth设计的Pascal语言,及衍生的相关编程语言。
包的概念、包的导入和声明等语法,主要来自Modula-2编程语言
面向对象所提供的方法的声明语法,则来自Oberon编程语言

GO演出出了自己特有的支持鸭子面向对象类型的隐式接口等诸多特性。

  1. 其他
  • iota是从APL语言借鉴的
  • 词法作用域、嵌套函数,来自Scheme语言
  1. 自己设计的
  • 切片:为轻量级动态数组,提供了有效的随机存取
  • 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版》

猜你喜欢

转载自blog.csdn.net/baidu_34418619/article/details/127811868