教年轻 AIoT 创业者如何从 0 到 1 实现AIoT 创业项目 了解详情
写点什么

Google 试验新语言——Go

  • 2009-11-12
  • 本文字数:1069 字

    阅读完需:约 4 分钟

Go 是 Google 的新语言,它是试验性的、开源的,它与 C 语言类似,但是添加了很多特性,像反射、垃圾回收器、动态类型、并发以及并行机制等等。

Rob Pick 在 Tech Talk Channel 上发布了 Go,他是 Go 语言的主要开发者之一,他说,该语言是试验性的,因为“我们并不认为它能解决所有问题,但是我们在使用它,并且认为现在是把它介绍给世界的时候了。” 该语言还在其中包含了并发构造体,它的目的是让开发者能够易于创建并行任务。据作者所说,该语言的目的包括以下几点:

  • 将静态语言的高效性和动态语言的易于编写的特性组合在一起。实际上,开发者能够选择使用静态还是动态的方式。
  • 安全。该语言是类型安全的,它只允许显式的类型转换,而不允许隐式的转换。另外,该语言不提供指针算法,并且会执行垃圾回收,因此是内存安全的。
  • 为并发和通信提供良好的支持。
  • 拥有高效、无延时的垃圾回收机制。
  • 高速编译。

该语言还有一些有趣的特性:

  • 该语言中有指针,但是没有指针算术。
  • 它拥有接口。
  • 它拥有同步通道。这些通道被用于线程间通信,它是并发的基础。Go 推荐通过与其通信来共享内存,而不是通过共享的内存来通信。每次只有一个线程能够访问共享值,该值通过通道在线程之间传递。
  • Go 例程(Goroutine)。这是用于并发的另一种结构。go 例程只是一种拥有“go”关键字前缀的函数或者方法。一个 go 例程与一个线程相关联,并通过通道与其它 go 例程通信。
  • 并行。go 例程和通道能够被用于在多个 CPU 上执行计算。
  • 反射(Reflection)。我们可以在所有类型、通道上实现反射。
  • 内嵌(Embedding)。这是一种简单的继承方式。

迄今为止,该语言有两种编译器。一种针对不同平台有不同的名字。6g 针对 64 位的 x86 或者 AMD64 位平台,8g 针对的是 32 位的 x86 或者 AMD32 位平台,而 5g 针对 ARM 平台。另一种编译器是 gccgo。6g 拥有标记再清除(mark-and-sweep )垃圾回收器,而 gccgo 没有,但是基于 IBM 回收器(IBM’s Recycler)的新垃圾回收器在两种编译器下都可以工作。Go 语言暂时还没有图形化开发界面和调试器。

Go 语言的目的之一是要拥有最快的编译器,似乎它已经达到了。6g 编译器是最快的,而 gccgo 稍慢一些,但是能够产出更优的代码。编译器只会生成机器码,而不会为虚拟机(VM)生成字节码,并且他们说它几乎可以运行得和 C 代码一样快,只比类似的 C 代码慢 10-20%。

现在 go 语言已经提供了很多基本功能库,但还需要很多。Godoc 可以像 javadoc 一样从源代码生成文档。Go 是基于 BSD 许可发行的开源项目。

资源: Go 网站 Rob Pike 的 Go 语言发布仪式

阅读英文原文: Google Experiments with a New Language, Go

活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2009-11-12 19:375394
用户头像

发布了 340 篇内容, 共 123.3 次阅读, 收获喜欢 13 次。

关注

评论

发布
暂无评论
发现更多内容

大数据软件开发培训中心哪家好

小谷哥

对话阿里云叔同:如何看待 2022 年云原生的发展,2023 年有哪些值得关注的技术?

阿里巴巴中间件

阿里云 云原生

跬智信息 (Kyligence) 入选2022年度上海市优质大数据服务供应商目录

Kyligence

大数据 数据分析

深度 | Web 3.0时代去中心化IM 的挑战与思考

环信

Web3.0 环信im

解锁极狐GitLab 自动化功能:Webhook 触发 Pipeline 与计划流水线

极狐GitLab

DevOps pipeline ChatOps webhook ChatGPT

2023年知名堡垒机厂商及价格简单说明

行云管家

网络安全 信息安全 数据安全 堡垒机

看板:自我管理的高效工具!

敏捷开发

项目管理 软件开发 看板

前端程序员就业方向有哪些?

小谷哥

程序员培训后怎么能够在一线城市找到工作?

小谷哥

MoBYv2AL :结合 BOYL 和 MoCo 的主动学习算法

Zilliz

软件测试/测试开发 | app自动化测试(Android)—Capability 使用进阶

测试人

软件测试 自动化测试 测试开发 appium app自动化测试

构建工具tsup入门第一部分

小鑫同学

前端 编译 工具链

深入浅出学习透析Nginx服务器的架构分析及原理分析「底层技术原理+运作架构机制」

C++后台开发

nginx 负载均衡 中间件 后端开发 Linux服务器开发

金兔迎福报、新春第一炮【2022 中国开源年度报告】!

腾源会

开源

大文件传输软件的优势有哪些?-镭速传输

镭速

官宣:计算中间件 Apache Linkis 正式毕业成为 Apache 顶级项目

腾源会

开源

品牌不得不投放户外LED广告的原因

Dylan

LED显示屏 户外LED显示屏 led显示屏厂家

云小课|GaussDB如何进行性能调优

华为云开发者联盟

数据库 后端 华为云 企业号 2 月 PK 榜 华为云开发者联盟

小白科普丨何为树、二叉树和森林

华为云开发者联盟

开发 华为云 企业号 2 月 PK 榜 华为云开发者联盟

前端培训机构毕业后该注意什么?

小谷哥

基于 Flink+Pravega 的游戏服务器监控与调节系统设计

Apache Flink

大数据 flink 实时计算

快速入门pandas进行数据挖掘数据分析[多维度排序、数据筛选、分组计算、透视表](一)

汀丶人工智能

Python 数据挖掘 数据分析 pandas

为啥要对jvm做优化

华为云开发者联盟

开发 华为云 企业号 2 月 PK 榜 华为云开发者联盟

前端技术培训学习的就业怎么样?

小谷哥

Intel官方回应:处理器降价消息不实!全力减少库存

科技之家

干货|常用3D建模软件有哪些?

Finovy Cloud

3DMAX Autodesk Maya 3D软件

2/8 19:00 直播 | StarRocks 实战系列第一期--部署&导入

StarRocks

数据库

Apipost产品介绍

徐天

Apipost预执行脚本使用教程

徐天

基于ModelArts进行流感患者密接排查

华为云开发者联盟

人工智能 华为云 行人检测 企业号 2 月 PK 榜 华为云开发者联盟

C#/VB.NET 在Excel中添加水印

在下毛毛雨

C# .net Excel 添加水印

  • 扫码添加小助手
    领取最新资料包
Google试验新语言——Go_编程语言_Abel Avram_InfoQ精选文章