Gopherchina Lecturer Interview

Source: Internet
Author: User
Tags gopher
This is a creation in Article, where the information may have evolved or changed.

This year, the organizer of the Gopherchina conference, owner of the Beego Open source project, and the author of the Go Web programming Xie Mengjun Children's shoes were invited to participate as lecturers in this year's Gopherchina conference. Here is Gopherchina's interview with my lecturer ^0^. The interview will also be published in the public "Go China (No.: Golangchina)" Above, click here to read.

1, first introduce yourself.

Hello everyone! My name is Bai Ming (Tony Bai), is currently an architect of Neusoft Cloud technology, dedicated to the development of the server, the daily work mainly uses the go language. I am a domestic early contact with the Go language programmer and advocater, usually in my blog, Weibo and the public "Iamtonybai" often published some articles on the Go language and go ecological circle of information.

Before contacting go, I mainly use C language to develop some back-end service systems in the field of telecommunications, with many years of experience in product development and technology management in the field of telecommunications. I personally prefer to study and share technology, is "seven weeks seven language" one of the translators, and insisted on writing technical blog for more than 10 years. I'm also an open source enthusiast, and I've shared several gadgets that I've developed on GitHub.

Current research areas include: Go, Kubernetes, Docker, and children's programming education.

2. Recall the origins of Golang. What is the reason for deciding to try Golang? What was the first project that I implemented with the go language? At that time Golang have what surprise performance, and what kind of small deficiency, this deficiency in Golang has been updated to the 1.8 version of the time has been improved?

As we all know, the go language was originally designed and implemented by Robert Griesemer, Ken Thompson and Rob Pike at the end of 2007, officially released in November 2009 and Open Source, and released in March 2012 with version 1.0 and GO1 specifications. It was in 2012 that I began to touch go, and that was due to seeing a 3-day go course from Rob Pike. From that information, I learned about the go design concept and go grammar.

Since the previous immersion in C language for many years, understand the C language in the system programming and server-side programming strong, but also experienced the C syntax "trap" and c manual memory management to the developer's distress. While there are other mainstream languages to choose from in those years, it seems to me that the mental burden they bring to me is too heavy, such as the learning and use complexities of C + + "universe invincible", the huge resource consumption of Java and the vast and miscellaneous framework system, the dynamic language (Ruby, Python) has no static type and makes debugging difficult when run-time crash, and is too small and non-mainstream for functional languages such as Haskell, Clisp. Obviously none of them are my food. Until the advent of Go, C programmer born I was suddenly fascinated by the new language.

Now I think about it, I was hooked on go should be mainly due to the following reasons:

* 静态类型语言、接近于C的性能(对于C程序员来说,这算是某种天然继承性)* 简洁的语法* 内置的并发支持* GC* 贯穿整个语言的正交设计和组合编程思路(兼容对OO的支持)* 工具和功能全面的标准库

And these are some of the reasons that have continued to support my deep learning and use of the go language over the years.

However, since Go1 just came out of the very small crowd, and all aspects of the function is still being perfected, I did not use go in real projects, this situation continued until the end of 2014. It was not until then that I used go in a small project to implement a protocol interface for the public number. It was found that it was very convenient to implement some security protocols using go, as the standard library was built with good support, such as: various AES, SHA256, TLS algorithm implementations. At the same time, the go built-in testing framework, GOFMT, go pprof Tool's performance also makes me feel very comfortable to use.

If there are any shortcomings, it can only be the go to debugging support is obviously insufficient. Even with the latest go 1.8 release, go has improved in debugging, but there is still a big gap in traditional languages like C. But fortunately we have "print" This invincible debug weapon, go of this lack of influence on me slightly slightly ^0^.

Of course, with go on more large projects, the Go package management problem is emerging, which is what the whole go community wants to improve. Fortunately, there is a dedicated commitee to do this, and the latest roadmap shows that the DEP tool will be incorporated into go tools in Go 1.10 dev cycle.

3. Since the birth of 2009, the go language has dominated cloud computing, and as the most professional go language expert, what do you think this is due to its elegant features? Golang What kind of improvement and breakthrough will there be in the future?

"As the most professional Go language expert", this title is indeed deserve. I feel that I am only a member of the domestic gopher, can be a go language in the domestic development to do something very happy ^0^.

Go since the 1.5 release, with the SSA optimization, GC latency optimization in depth, go at home and abroad is really a good trend, especially go to the 2016 Tiobe programming language rankings of the year language, so that more programmers know the go language, understand the go language and use the go language. With cloud computing becoming the norm today in today's IT industry, go has become a heavyweight in this regard. I personally want the go language to be the "C language of the 21st century" and the first language of the cloud platform, from an individual's emotional perspective of go. But this is a process that takes time and relies on the concerted efforts of the world's gopher and go community to achieve it.

Different times, the environment of language growth also differs. And the previous generation and two generations of language seems to be different, whether the next generation of programming language into the programmer's discernment, whether it is worth the programmer to invest, "background" is very important, that is, the so-called programming language into the "Father" era. Go language backs Google this big tree, also has Robert Griesemer, Ken Thompson, Rob Pike Three giants sits, is the real "cattle second generation", it will naturally get a lot of programmers favor. I think it's an out-of-the-field factor for go.

As for the language characteristics of go itself, in the last question, I have already made a preliminary elaboration, here add a few points:

* Go是一门以解决Google内部生产环境中的问题(大规模并发服务)为目标的、兼顾在语言设计层面解决一些软件工程问题的面向大规模并发服务的编程语言;* 开发效率较高(对比主流的C、C++和Java),且执行效率与C相比,没有数量级级别的差异;* 编译速度超快(相对其他需编译的主流语言),无需喝咖啡等待;* Go1兼容性的承诺。

The go language has now evolved to version 1.8, and the go 1.9 development cycle has been opened. This summer, when Go 1.9 was released, go seems to be the key node in the evolution of the version, which is continuing to Go1 compatible (go 1.10, go 1.11 ... ), or the birth of the GO2 specification, there is no clear information. But future improvements and breakthroughs, I think, should be based on the original and design principles of Go language design, which include:

目标: * 高效的静态编译语言 * 动态语言的易用性 * 类型安全和内存安全 * 对并发和通信的良好支持 * 高效、低/趋于零延迟的GC * 高速编译原则: * 保持概念正交 * 保持语法简单 * 保持类型系统精炼,无type hierarchy

From the development of these years go, basically all follow the above goals and principles. Even if Go2 out, does not conform to the above principles of feature, it is difficult to join the Go2 inside.

4. Have you ever been concerned about the Gopher China Conference, what is the impression of the General Assembly's style and content?

For the largest and most influential go conference in mainland China, I began to pay attention to it from the first session, although I did not participate in ^0^ for the first reason. At the second Congress held last year, I was involved as an early bird spectator. And this is the honor of being a lecturer.

Since the birth of Gopherchina, the scale is growing, it is said that this year's participants may exceed 1000 people. and the Gopherchina assembly from the first session of the domestic IT vendors gathered the elite technical staff as lecturers, and get the Go core team support. At each session, the core developers of Go team are invited to the Conference, and even at the first Congress, Robert Griesemer, one of the big go giants, has met the curiosity of the domestic gopher.

And as I observe, the themes of each session of the Gopherchina conference are: language, engineering, the application of new fields, and many other aspects, quite diverse and comprehensive.

5. As lecturers and attendees, what are the expectations for this year's Gopher China conference?

Gopherchina each session is a master gathered, this session is no exception. I am looking forward to every issue of this year's Congress.

6, now many enterprise projects are ready to go, for these projects in charge of any advice and experience to share?

The go language is well known for its easy-to-use, while Go is a very simple language (compared to other mainstream languages), C, Cpp, Java, Python and other programmers to go curve is not steep, so the overall transition of the team to go is not high threshold. But there are a few things that the project leader needs to consider carefully:

(1) Confirm the application scenario of Go Fit project

Go is not a panacea, you can't go with go. However, go from the initial positioning as a system language (Sytem programming Language) gradually evolved into a universal language (General Purpose programming Language), indicating that its adaptability and application scope is very wide, At present, there are large-scale application cases in cloud computing, web development, Big data, games, database, IDE, container and so on. But even so, there are some areas where the application needs to be cautious, such as the embedded domain, such as mobile development, although in both areas go has made a great effort, but there seems to be no major breakthrough.

(2) from the beginning, refer to the best practice of Go

Go after several years of evolution, gradually formed a number of best practices, including: Project code organization, naming, idioms, testing methods, error handling, interface use. See the official talks, blog and presentation video of Go Congress worldwide.

(3) Whole Unit test guarantee

Go has a built-in unit test framework, and unit testing is the basis for verifying code design and is a prerequisite for code refactoring. It is advisable to write test code for code from beginning to end.

(4) Make full use of the standard library

In the Go application, you will find that the Go standard library has provided you with most of the features you want to use. There are even some extreme go purists who prefer functions and methods in the standard library. The Go standard library embodies the Go Code essence of Go team and related contributor, and its stability is absolutely trustworthy. Full and extensive use of the standard library is also easy to organize, build, and migrate project code.

(5) Build Code metric view based on Go tool

For those performance-sensitive systems, it is recommended to build a metric view of code based on Go tool in the internal environment, monitor the impact of code changes on system performance, and facilitate problem diagnosis.

Finally, please give feedback on the go language itself and your feedback is the driving force of the Go language evolution .

7. Are there any gopher that you think are cool? can answer yourself yo ~

On Github.com/golang/go, I often focus on Russ Cox's code. As is known to all, Russ Cox is the most member of the Go Core code submissions, and he is one of the biggest players in the go evolution besides the big Three. From the last two years of Go team development activities, Russ Cox development efficiency is very high, and the proposed proposal thinking of the meticulous and comprehensive impressive.

Dave Cheney is another gopher I've always been concerned about, and he's also an invited lecturer at the second Gopherchina Congress. He spared no effort to "preach" go and, starting with the Go 1.6 release, launched the Go Global release party, becoming another holiday for go community. He is not only an opinion leader in go community, but also contributes many useful tools and ideas to the go community, including: GB, errors and so on.

Dmitry Vyukov, a former Intel Black belt engineer, is currently a Google employee, although he is not a full-time go team person, but he is the Go Scheduler current version of the core implementation. Although the last two years seem to be in Golang's investment is not so much, but still fruitful, go execution Tracer, Go-fuzz (said to join the go Core) is his masterpiece.

Weibo: @tonybai_cn
Public Number: Iamtonybai
Github.com:https://github.com/bigwhite

, Bigwhite. All rights reserved.

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.