A conversation with the Go team
6 June 2013
At Google I/O 2013, several members of the Go team hosted a "Fireside chat." Robert Griesemer, Rob Pike, David Symonds, Andrew Gerrand, Ian Lance Taylor, Sameer Ajmani, Brad Fitzpatrick, and Nigel Tao took questions from the audience and people around the world about various aspects of the Go project.
We also hosted a similar session at I/O last year: Meet the Go team.
There were many more questions from Google Moderator than we were able to answer in the short 40 minute session. Here we answer some of those we missed in the live session.
Linking speed (and memory usage) for the gc toolchain are a known problem. Are there any plans to address this during the 1.2 cycle?
Rob: Yes. We are always thinking about ways to improve performance of the tools as well as the language and libraries.
I have been very pleased to see how quickly Go appears to be gaining traction. Can you talk about the reactions you have experienced working with other developers inside and outside Google? Are there any major sticking points remaining?
Robert: A lot of developers that seriously tried Go are very happy with it. Many of them report a much smaller, more readable and thus maintainable code base: A 50% code size reduction or more when coming from C++ seems common. Developers that switched to Go from Python are invariably pleased with the performance gain. The typical complaints are about small inconsistencies in the language (some of which we might iron out at some point). What surprises me is that almost nobody complains about the lack of generics.
When will Go be a first-class language for Android development?
Andrew: This would be great, but we don't have anything to announce.
Is there a roadmap for the next version of Go?
Andrew: We have no feature roadmap as such. The contributors tend to work on what interests them. Active areas of development include the gc and gccgo compilers, the garbage collector and runtime, and many others. We expect the majority of exciting new additions will be in the form of improvements to our tools. You can find design discussions and code reviews on the golang-dev mailing list.
As for the timeline, we do have concrete plans: we expect to release Go 1.2 on December 1, 2013.
Where do you guys want to see Go used externally? What would you consider a big win for Go adoption outside Google? Where do you think Go has the potential to make a significant impact?
Rob: Where Go is deployed is up to its users, not to us. We're happy to see it gain traction anywhere it helps. It was designed with server-side software in mind, and is showing promise there, but has also shown strengths in many other areas and the story is really just beginning. There are many surprises to come.
Ian: It’s easier for startups to use Go, because they don’t have an entrenched code base that they need to work with. So I see two future big wins for Go. One would be a significant use of Go by an existing large software company other than Google. Another would be a significant IPO or acquisition of a startup that primarily uses Go. These are both indirect: clearly choice of programming language is a very small factor in the success of a company. But it would be another way to show that Go can be part of a successful software system.
Have you thought any (more) about the potential of dynamically loading Go packages or objects and how it could work in Go? I think this could enable some really interesting and expressive constructs, especially coupled with interfaces.
Rob: This is an active topic of discussion. We appreciate how powerful the concept can be and hope we can find a way to implement it before too long. There are serious challenges in the design approach to take and the need to make it work portably.
There was a discussion a while ago about collecting some best-of-breed
database/sql
drivers in a more central place.
Some people had strong opinions to the contrary though.
Where is database/sql
and its drivers going in the next year?
Brad: While we could create an official subrepo (“go.db”) for database drivers, we fear that would unduly bless certain drivers. At this point we’d still rather see healthy competition between different drivers. The SQLDrivers wiki page lists some good ones.
The database/sql
package didn’t get much attention for a while, due to lack of
drivers. Now that drivers exist, usage of the package is increasing and
correctness and performance bugs are now being reported (and fixed). Fixes will
continue, but no major changes to the interface of database/sql
are planned.
There might be small extensions here and there as needed for performance or to
assist some drivers.
What is the status of versioning? Is importing some code from github a best practice recommended by the Go team? What happens when we publish our code that is dependent on a github repo and the API of the dependee changes?
Ian: This is frequently discussed on the mailing list. What we do internally is take a snapshot of the imported code, and update that snapshot from time to time. That way, our code base won't break unexpectedly if the API changes. But we understand that that approach doesn’t work very well for people who are themselves providing a library. We’re open to good suggestions in this area. Remember that this is an aspect of the tools that surround the language rather than the language itself; the place to fix this is in the tools, not the language.
What about Go and Graphical User Interfaces?
Rob: This is a subject close to my heart. Newsqueak, a very early precursor language, was designed specifically for writing graphics programs (that's what we used to call apps). The landscape has changed a lot but I think Go's concurrency model has much to offer in the field of interactive graphics.
Andrew: There are many bindings for existing graphics libraries out there, and a few Go-specific projects. One of the more promising ones is go.uik, but it's still in its early days. I think there's a lot of potential for a great Go-specific UI toolkit for writing native applications (consider handling user events by receiving from a channel), but developing a production-quality package is a significant undertaking. I have no doubt one will come in time.
In the meantime, the web is the most broadly available platform for user interfaces. Go provides great support for building web apps, albeit only on the back end.
In the mailing lists Adam Langley has stated that the TLS code has not been reviewed by outside groups, and thus should not be used in production. Are there plans to have the code reviewed? A good secure implementation of concurrent TLS would be very nice.
Adam: Cryptography is notoriously easy to botch in subtle and surprising ways and I’m only human. I don’t feel that I can warrant that Go’s TLS code is flawless and I wouldn’t want to misrepresent it.
There are a couple of places where the code is known to have side-channel issues: the RSA code is blinded but not constant time, elliptic curves other than P-224 are not constant time and the Lucky13 attack might work. I hope to address the latter two in the Go 1.2 timeframe with a constant-time P-256 implementation and AES-GCM.
Nobody has stepped forward to do a review of the TLS stack however and I’ve not investigated whether we could get Matasano or the like to do it. That depends on whether Google wishes to fund it.
What do you think about GopherCon 2014? Does anyone from the team plan to attend?
Andrew: It's very exciting. I'm sure some of us will be there.
相關推薦
A conversation with the Go team
6 June 2013 At Google I/O 2013, several members of the Go team hosted a "Fireside chat." Robert Griese
What I, as a College Senior, Learned from my Conversation with the CEO of Microsoft
On Wednesday, October 10th, I was afforded the opportunity to sit down with Microsoft CEO, Satya Nadella at the United States Naval Academy for a fireside
A Conversation with One of the Few Scientists in Congress
A Conversation with One of the Few Scientists in CongressRep. Bill Foster weighs in on the most important science issues facing the countryBy Dina Fine Mar
Let's Explain A.I. With the Help of This Dog Presented by Facebook
Engineers train computers to recognize common patterns in mountains of data by exposing them to numerous variations of the same thing. This process is call
Announcing EKoSystem Day – A Day with the EKS Community
Our goal at AWS has always been to ensure that the partner community around every AWS service is rich, vibrant, and ready to meet the div
AWS EKoSystem Day, Kubernetes Birthday Edition: A Day with the EKS Community
from Saptak Sen, Product Manager, Container Services, Amazon Web Services: For EKoSystem Day, we’ve invited par
c.n.discovery.InstanceInfoReplicator : There was a problem with the instance info replicator
在搭建springcloud專案過程中,版本finchrey SR2, 我的微服務pom如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"
1Z0-051 25. You need to create a table with the following column specifications:
25. You need tocreate a table with the following column specifications: 1. Employee ID(numeric data type) for each employee 2. Employee N
Can not find a java.io.InputStream with the name [downloadFile] in the invocation stack.
dex parameter work put 嚴重 efi open post onerror 1、錯誤描寫敘述八月 14, 2015 4:22:45 下午 com.opensymphony.xwork2.util.logging.jdk.JdkLogger error
Your build settings specify a provisioning profile with the UUID, no provisioning profile was
settings 解決 目的 del 查找 set post 出錯 pretty iOS 真機調試問題 在Archive項目時,出現了“Your build settings specify a provisioning profile with the UUID
Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP
統一 apple col convert rstp stp line methods gree <?php class Car { var $color = "add"; function Car($color="green") {
[Nuxt] Setup a "Hello World" Server-Rendered Vue.js Application with the Vue-CLI and Nuxt
clas red eat side pre obj sta ted blog Install: npm install -g vue-cli Init project: vue init nuxt/starter . Run: n
a different object with the same identifier value was already associated with the session
user exc factory cti lec execute with sta 兩個 錯誤提示: org.springframework.dao.DuplicateKeyException: a different object with the same identi
bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml. Do you need to install a parser library?
join with python ast 環境 測試 href from local 環境是win10 python3.5 安裝beautifulsoup後,運行測試報錯 from bs4 import BeautifulSoup soup = Beautiful
[error:沒有解析庫]Couldn't find a tree builder with the features you requested: xml. Do you need to install a parser library?
error ted requested install lib you features builder all 將代碼拷貝到服務器上運行,發生錯誤提示需要新安裝parser library. 查看代碼中發現有以下內容: soup = BeautifulSoup(open(
Couldn't find a tree builder with the features you requested: lxml. Do you need to install a parser library?
res requested tro fin IT html str 成功 color python3.6.3 我在處理爬蟲時候使用BeautifulSoup中遇到報錯 “ bs4.FeatureNotFound: Couldn‘t find a tree builde
Design of a machine for the universal non-contact measurement of large free-form optics with 30 nm uncertainty
gid surface path cap data ota sig axis com 4.3. Metrology system design The metrology loop should measure the position of the probe rel
hibernate的報錯資訊a different object with the same identifier value was already associated with the session解決辦法
廢話不多說,直接說原因,這是在hibernate中,有2個相同型別的實體類具有同樣的主鍵識別符號,然後呼叫update或者呼叫saveOrUpdate,我朋友出這個錯的由於他想要update一條資料時,獲取主鍵時從資料庫查詢獲取,此時接收的物件的主鍵id是12,吧這個值賦給要更新入參的物件,2個物件的主鍵就都
Hibernate經典異常:org.hibernate.NonUniqueObjectException: a different object with the same identifier
最近在用Hibernate做資料修改和刪除的時候,遇到一個Hibernate的經典異常之一: 看了將近兩天的各種部落格、論壇,花費了大量的精力嘗試了 session.evict()、session.clear()、session.merge()等部落格、論壇上的數種方法以及自己的各
a different object with the same identifier value was already associated with the session異常
錯誤資訊:a different object with the same identifier value was already associated with the session...... 字面意思:在session中存在識別符號(identifier)相同,物件卻不止一個的情況報出