The way to Go(2): 语言的主要特性与发展的环境和影响因素
Reference:
语言的主要特性与发展的环境和影响因素
现有编程语言对于Go语言发展的影响:
Why Go?
C/C++ 的发展速度无法跟上计算机发展的脚步;
对比计算机性能的提升,软件开发领域不被认为发展地足够快或者比硬件发展更加成功;
最佳的平衡:快速编译,高效执行,易于开发。
发展目标:
主要目标是将静态语言的安全性和高效性与动态语言的易开发性进行有机结合,达到完美平衡。因此,Go 语言是一门类型安全和内存安全的编程语言。
Go 语言的另一个目标是对于网络通信、并发和并行编程的极佳支持,从而更好地利用大量的分布式和多核的计算机。
Go 语言中另一个非常重要的特性就是它的构建速度(编译和链接到机器代码的速度),一般情况下构建一个程序的时间只需要数百毫秒到几秒。
依赖管理是现今软件开发的一个重要组成部分,Go 语言采用包模型,通过严格的依赖关系检查机制来加快程序构建的速度,提供了非常好的可量测性。
整个 Go 语言标准库的编译时间一般都在 20 秒以内,其它的常规项目也只需要半秒钟的时间来完成编译工作。
Go 语言运行在某种意义上的虚拟机,以此来实现高效快速的垃圾回收(使用了一个简单的标记-清除算法)。
指导设计原则:
减少关键字的数量(25 个)来简化编码过程中的混乱和复杂度。
开发者们的代码都非常容易阅读和理解。众所周知,代码的可读性是软件工程里最重要的一部分( 译者注:代码是写给人看的,不是写给机器看的 )。
语言的特性:
Go 语言从本质上(程序和结构方面)来实现并发编程。
没有类和继承的概念,通过接口(interface)的概念来实现多态性。
函数是 Go 语言中的基本构件,它们的使用方法非常灵活。
Go 语言使用静态类型,所以它是类型安全的一门语言,加上通过构建到本地代码,程序的执行速度也非常快。
作为强类型语言,隐式的类型转换是不被允许的,记住一条原则:让所有的东西都是显式的。
有一些动态语言的特性。
Go 语言支持交叉编译,比如说你可以在运行 Linux 系统的计算机上开发运行下 Windows 下运行的应用程序。
第一门完全支持 UTF-8 的编程语言。
语言的用途:
Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。
高性能分布式系统领域;
复杂事件处理;
实现一般目标;
不适合用来开发对实时性要求很高的软件;
大型分布式应用程序。
小结:
- 简化问题,易于学习
- 内存管理,简洁语法,易于使用
- 快速编译,高效开发
- 高效执行
- 并发支持,轻松驾驭
- 静态类型
- 标准类库,规范统一
- 易于部署
- 文档全面
- 免费开源
2017.8
The way to Go(2): 语言的主要特性与发展的环境和影响因素的更多相关文章
- go语言学习入门篇1---go语言的主要特性与发展
1.1 影响 Go 语言发展的早期编程语言 正如 "21 世纪的 C 语言" 这句话所说,Go 语言并不是凭空而造的,而是和 C++.Java 和 C# 一样属于 C 系.不仅如此 ...
- 前端学习 第三弹: JavaScript语言的特性与发展
前端学习 第三弹: JavaScript语言的特性与发展 javascript的缺点 1.没有命名空间,没有多文件的规范,同名函数相互覆盖 导致js的模块化很差 2.标准库很小 3.null和unde ...
- 用C++语言开发Android程序 配置开发环境
转自:http://www.cnblogs.com/yaotong/p/3622430.html 用C++语言开发Android程序 配置开发环境 如果你是一个C++语言的死忠,你喜欢C++语言到 ...
- C语言编辑编译及集成开发环境
C语言编辑编译及集成开发环境 编辑器 在不同的操作系统上使用不同的编辑器,保存源代码文件时,文件名应指出程序的功能扩展名应为.c. 编译器 编译器把源代码编译成机器语言的二进制指令即目标代码生成目标文 ...
- Java 语言的主要特性
Java语言是简单的 Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用. Java丢弃了C++中很少使用的.很难理解的.令人迷惑的那些特性,如操作符重载.多继承.自动的强 ...
- R语言学习笔记:小试R环境
买了三本R语言的书,同时使用来学习R语言,粗略翻下来感觉第一本最好: <R语言编程艺术>The Art of R Programming <R语言初学者使用>A Beginne ...
- swift语言实战晋级-1 Swift开发环境的搭建
想要进行Swift的学习,必须要有个开发环境.简单的说就是装好了Xcode的Mac系统.那么接下来我们就简单了解一下这方面的内容. 1.1 下载Xcode Xcode是苹果公司出的编程工具,类似于微软 ...
- go语言学习笔记1 Go开发环境
什么是Go?Go是一门并发支持.垃圾回收的编译型系统编程语言,旨在创造一门具有在静态编译语言的高性能和动态语言的高效开发之间拥有良好平衡的一门编程语言. Go的主要特点有哪些?* 类型安全 和 内存安 ...
- R语言爬取动态网页之环境准备
在R实现pm2.5地图数据展示文章中,使用rvest包实现了静态页面的数据抓取,然而rvest只能抓取静态网页,而诸如ajax异步加载的动态网页结构无能为力.在R语言中,爬取这类网页可以使用RSele ...
随机推荐
- ie兼容图片缩小后模糊失真(锯齿)问题
解决IE下图片缩小失真(有锯齿)的问题 首先,这不是一个新鲜玩意儿,很多大牛08年就发现了. 其次,这是个所有IE下普遍都会遇到的问题,而非只针对于IE67.(百度了一下,大半左右的文章是针对于I ...
- mysql 数据操作 多表查询 多表连接查询 全外连接
全外连接:显示左右两个表全部记录 全外连接 在内连接的基础上保留左右两表没有对应关系的记录 full join #注意:mysql不支持全外连接 full JOIN mysql> select ...
- dedecms调用当前栏目的子栏目怎么操作
有时我们建网站会建很多分类,每个分类又有小分类,为了让顶级栏目获得更好的权重和排名,我们会聚合子栏目.那么dedecms调用当前栏目的子栏目怎么操作呢? 有两种方法:标签dede:sonchannel ...
- 关于LUA中的随机数问题
也许很多人会奇怪为什么使用LUA的时候,第一个随机数总是固定,而且常常是最小的那个值,下面我就简要的说明一下吧,说得不好,还请谅解.我现在使用的4.0版本的LUA,看的代码是5.0的,呵呵 LUA4. ...
- python 一个.py文件如何调用另一个.py文件中的类和函数
原文地址https://blog.csdn.net/winycg/article/details/78512300 在同一个文件夹下 调用函数:
- python写http post请求的四种请求体
Web自动化测试(25) HTTP 协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须使用什么编码方式.常见的四种编码方式如下: 1.appli ...
- UNIX历史
一.Multics计划 1965年,AT&T贝尔电话实验室.通用电气公司.麻省理工学院MAC课题组一起联合开发一个称为Multics的新操作系统. Multics 系统的目标是要向大的用户团体 ...
- Baidu 推荐技术平台(offer)
一面: 1 自我介绍 项目介绍. 2 RNN 原理,LSTM原理,GBDT原理,XGB与GBDT的改进. 3 多模匹配,字典树,链表环找入口. 4 c++ static 关键字 5 多线程,线程安全 ...
- 《ABCNN: Attention-Based Convolutional Neural Network for Modeling Sentence Pairs》
代码: keras:https://github.com/phdowling/abcnn-keras tf:https://github.com/galsang/ABCNN 本文是Wenpeng Yi ...
- uva1330 在一个大的矩阵中寻找面积最大的子矩阵
大白书 P50页 #include <algorithm> #include <cstdio> using namespace std; ; int ma[maxn][maxn ...