【十问十答】对话Go语言开发团队

o是谷歌推出的一门编程语言。熟悉Go语言的开发者都知道其弥补了C语言的不足并且保持了C的极简主义。使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程(使用Go语言的12个理由)。一些主流的项目包括Docker、Heroku's Force.com以及Cloud Foundry's (Go)Router都是基于Go语言编写而来。有人说,Go为云而生,也正是由于其拥有并发性的操作系统以及完美的架构,使其备受开发者的青睐。

  本月10日在巴黎举行的dotGo会议最后一个环节,是对Go语言开发团队(包括memcached开发者Brad Fitzpatrick)的问答。本文译自Sourcegraph的同学的现场记录,让我们一起来聆听大神们怎么看Go语言吧。

  译文如下:

Go语言开发团队成员:Francesc Campoy Flores、Andrew Gerrand、Brad Fitzpatrick、Dave Cheney、Keith Rarick及Blake Mizerany

Q1:在任何编程语言中都会出现反模式(译注:指应该避免的错误用法),尤其是新语言,人们还在学习该使用和复用哪些语言特性。你们在Go语言中看到了哪些反模式,正确的做法是什么?

Dave Cheney:我觉得是包,现在的包实在是太多了。包的粒度应该是一个比较完整和具体的概念,比如HTTP包合适,而HTTP Client就不合适。

  Utility包没问题,但名字不应该只是叫“utils”。

Q2:坊间有不少第三方的依赖管理工具,如:godep,gpm等。未来Go的核心会提供这种功能吗?

Brad Fitzpatrick:我们不想来定义游戏规则,话语权应交给社区,让它们自由竞争,产生胜者。受欢迎的产品稳定几年之后,我们才会考虑纳入语言核心。另外,我们之所以不太操心依赖管理,是因为在Google内部我们不用这些工具。

Andrew Gerrand:语言核心中没有版本管理能促使库的作者们提供好的、稳定的API。约定是包API改变时,只改变导入路径。

Q3:Go语言在Unix环境下的服务器端编程表现不俗。接下来,人们会不会尝试使用Go来进行桌面和嵌入式应用的编写?

Dave Cheney:我乐于看到Go能在小的ARM处理器上有所表现。我们需要让编译器能针对不同的ARM生成相应的代码,这还比较简单。另外,垃圾回收语言需要更多内存,但这也是可以解决的问题。

Brad Fitzpatrick:已经有人用Go编写GUI库了。

Q4:Go语言在对Android支持方面有什么新进展吗?

Andrew Gerrand:当然有!Google纽约办公室的David Crawshaw正在做这方面工作。他有几个让Go在Android上运行的办法:1)通过NDK,游戏应用可以访问画布、触摸事件、声音等;2)使用Java与Go相结合的办法。

Q5:你认为Go语言的垃圾回收器已经适合用于产品环境的长时间运行、低延迟处理了吗?

Brad Fitzpatrick:没问题啊,只要你仔细处理垃圾。我们已尝试重构dl.google.com,产生更少的垃圾,延迟非常小。现在Google内部只剩一个客户的实时需求Go垃圾回收器还无法满足。

Q6:类似dlopen的动态载入代码有什么新进展吗?

Andrew Gerrand: 可以先看看Lance Taylor最近写的关于Go语言执行模式的文档:Go代码可以在哪些不同上下文中运行。这些模式的实现都在计划之中,但何时完成谁来完成,具体还没有时间表,文档可以说是第一步吧。

Brad Fitzpatrick:我想在连接器用Go重写之前都没时间做。

Q7:因为没有机制引用其他goroutine,实现supervision tree和销毁goroutine线程都需要手工操作。这些未来会解决吗,哪些是通过库来支持,哪些会通过修改语言?

Dave Cheney:在今年的GopherCon 会议上,有一种强烈的感觉,设计即使崩溃也能安全恢复的健壮应用是程序员的天职。指望系统层面花费投入精力就能坐收百分百可靠性,是靠不住的。

Andrew Gerrand: 我觉得你应该反过来想想,即使Go语言把这些都实现了又能怎么样呢?整个进程崩溃,清理处理器没法调用时,你还不是得自己处理?

Q8:堆压缩在路线图上吗?还是要等到在2.0版本大改?

Brad Fitzpatrick:这个在路线图上。(Brad自己在此次会议的演讲中说,Go 2.0还根本没影呢)

Q9:Go语言在新特性开发上好像较保守,不愿意增加新特性,这是有意为之吗?

Dave Cheney:是的,这正是Go的特色之一。

Andrew Gerrand:Go的设计当初只需要三名成员达成共识就行。现在成员多多了,所谓众口难调,共识更难达成。(半开玩笑的口气)小痛点不值得改,而大痛点需要大改,又很难hold住。Go 1.x总体已经定型了,我不认为增加泛型能突然让大家都满意。

Brad Fitzpatrick:记住,标准委员会永远不会删掉任何东西。

Q10:大公司对选择新语言显得更为慎重,对于说服他们来使用Go语言有什么建议吗?

Dave Cheney:Go语言进入某个公司,往往是因为能解决具体问题,而不是来自上层的命令。这是最好的推广语:“它能帮我解决问题。”

Andrew Gerrand:我必须指出,现在使用Go语言的大公司很多,包括苹果、Comcast、Facebook等等。更长列表参见这里。

  英文出自:dotGo

原文发布于微信公众号 - Golang语言社区(Golangweb)

原文发表时间:2016-02-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏工科狗和生物喵

送你一台“云端办公电脑”!

前阵子因为做课程设计,有的时候人不在宿舍,电脑不在身边的话就没有办法画图!但是作为一个积极向上的五好优秀少年,我怎么可能会放松自己呢?所以就在上网的时候瞎逛,找...

1.5K8
来自专栏魏艾斯博客www.vpsss.net

聊聊 Vultr 服务器优势和选择理由

1K3
来自专栏知晓程序

鹅厂美女工程师来告诉你,小程序码是如何「绽放」的 | 晓组织 #20

腾讯 CDC 全称为「用户研究与体验设计中心」,是腾讯公司级设计团队,致力于提升腾讯产品的用户体验,探索互联网生态体验创新。

1532
来自专栏SDNLAB

大师兄东游记:OpenStack东京峰会之Neutron观察

我其实是比较不乐意带着任务去参加OpenStack的设计大会的,尤其是外派的任务。但是从东京回来,各位同事和同僚总是要问我一些相关信息,比如:大师兄,Neutr...

3686
来自专栏opengps

[置顶] openGPS.cn - 高精度IP定位原理

关于IP定位,最早是通过运营商实现,每个运营商申请到的ip段,在某个范围内使用。

8596
来自专栏腾讯Bugly的专栏

微信iOS收款到账语音提醒开发总结

一、背景 为了解决小商户老板们在频繁交易中不方便核对、确认到账的痛点,产品MM提出了新版本需要支持收款到账语音提醒功能。这篇文章总结了开发过程中遇到的坑和一些小...

4566
来自专栏SDNLAB

浅谈对5G核心网演进方向的几点展望

最近读到一篇关于5G核心网的论文《Revolutionary Direction for 5G Mobile Core Network Architecture...

4238
来自专栏BestSDK

听云SDK发布《2017中国云计算评测报告》,一文读懂所有云服务的优劣势

听云发布《2017中国云计算评测报告》,本次报告从用户视角出发,对各家云服务提供商的综合用户体验、性能与可用性以及服务与易用性这三个方面进行了盘点,凸显出各家云...

4456
来自专栏SDNLAB

SDN技术分享(十):GoogleFiber的宽带接入速率控制解决方案

本次分(zhuang)享(bi)呢,主要探讨一个新兴SP客户的案例。 G家,这是非传统的SP。我们一起来看一下G家的市场策略以及使用的关键技术. 内容比较多,我...

49013
来自专栏极乐技术社区

小程序开放小游戏类目 | 小程序升级实时音视频录制播放等能力

轻松一刻 ? 漫画来自于西乔《神秘的程序员们》 01 微信新增小程序任务栏、程序间快速切换功能,开放小游戏开发文档和开发者工具 1、新增小程序任务栏功能 6.6...

4827

扫码关注云+社区

领取腾讯云代金券