Golang 昨天、今天和明天
昨天
市面上有这么多语言为啥还需要开发Go这么个语言?
07年的一天,几位谷歌的大牛在讨论用C++开发一些有关庞大的分布式集群的工作,非常繁琐但很核心,很是闹心,后来听说C++又要添加35项新特性。大牛听了很是不爽啊,于是讨论能否可开发一款新的语言,运行快、编译快、开发还快。于是几位列举了新语言的主要特性,并且借鉴现有语言众家之所长。说干就干,09年go语言就诞生了。以下是当年列举的主要特性
规范的语法(不需要符号表来解析) 垃圾回收(独有) 无头文件 明确的依赖 无循环依赖 常量只能是数字 int和int32是两种类型 字母大小写设置可见性(letter case sets visibility) 任何类型(type)都有方法(不是类型) 没有子类型继承(不是子类) 包级别初始化以及明确的初始化顺序 文件被编译到一个包里 包package-level globals presented in any order 没有数值类型转换(常量起辅助作用) 接口隐式实现(没有“implement”声明) 嵌入(不会提升到超类) 方法按照函数声明(没有特别的位置要求) 方法即函数 接口只有方法(没有数据) 方法通过名字匹配(而非类型) 没有构造函数和析构函数 postincrement(如++i)是状态,不是表达式 没有preincrement(i++)和predecrement 赋值不是表达式 明确赋值和函数调用中的计算顺序(没有“sequence point”) 没有指针运算 内存一直以零值初始化 局部变量取值合法 方法中没有“this” 分段的堆栈 没有静态和其它类型的注释 没有模板 内建string、slice和map 数组边界检查
今天
目前已经开发的优秀的应用
- Docker 开源的应用容器引擎
- K8s Google 大规模容器管理技术Borg的开源版本,可以实现容器集群的自动化部署、缩容、维护等功能
- grafana 大规模指标数据可视化展示,网络架构和应用分析中最流行的时序数据展示工具
- etcd 高可用key-value数据库
- ...
明天
前景光明,个人看好