#[1]Evrone feed
IFRAME: [2]
https://www.googletagmanager.com/ns.html?id=GTM-MJDPMD9
* [3]Services
[4]Web development
[5]Ruby
[6]Python
[7]Elixir
[8]Haskell
[9]Go
[10]Rust
[11]React
[12]Node.js
[13]DevOps
[14]User experience & design
[15]Branding
[16]UI design
[17]Mobile design
[18]Web design
[19]Product design
[20]Mobile app development
[21]iOS
[22]Android
[23]Cordova
[24]React Native
[25]Flutter
[26]Blockchain solutions
[27]ETH
[28]Bitcoin
[29]NEM
[30]Hyperledger
[31]Solidity
[32]Smart Contract
* [33]Industries
[34]Fintech Evrone’s team of experts provides web development
services to global financial services players.
[35]CRM We specialize in developing custom, scalable CRM systems,
tailored to meet the needs of your individual business.
[36]eCommerce Our B2C and B2B eCommerce consulting & development
services are aimed at scaling your business experience.
[37]ERP Evrone's expert team offers custom solutions and consulting
in ERP software & app development and integration.
[38]Artificial intelligence We provide artificial intelligence
solutions that simplify your business processes and increase
efficiency.
[39]Machine Learning Our team delivers machine learning solutions
for cryptocurrency, trading, and financial systems development.
[40]Media Our team develops efficient, user-friendly web portals,
as well as custom media and online service platforms.
* [41]Cases
* [42]Contact
* [43]Hire us
* [44]Let’s talk
Rob Pike Interview
Rob Pike interview: “Go has indeed become the language of cloud
infrastructure“
Introduction
We spoke to Rob Pike, the co-author of the Go programming language,
about a career spanning four decades, the evolution of Go over the last
ten years, and into the future.
The Interview
Evrone: Unlike many developers today, you started your career decades
ago at Bell Labs. What’s been the biggest change in the way we develop
software that you can think of, given your rare perspective?
Rob: The scale is much bigger today. Not just of the computers and the
network, but the programs themselves. All of Unix version 6 (circa
1975) fits comfortably on a single RK05 disk pack, which has just over
2MB of storage, with lots of room left over for user software. And that
was a fine computing environment, or at least seemed like one at the
time. Although I can, of course, explain much of the growth, it is
astonishing and perhaps not all of it is justified.
Evrone: Given the "resistance to change" and "promise of compatibility"
ideas, how do you see the next 10 years for the Go programming language
and its ecosystem? What is the best future you envision for your
technology?
Rob: Although it's far from certain, after over a decade of work it
looks like a design for parametric polymorphism, what is colloquially
but misleadingly called generics, is coming in the next year or two. It
was a very hard problem to find a design that works within the existing
language and feels as if it belongs, but Ian Taylor invested a
phenomenal amount of energy into the problem and it looks like the
answer is now in reach.
How that affects the libraries, the ecosystem, and the community will
be fascinating to watch.
Evrone: With "gradual typing" being introduced into "dynamically typed"
languages and "type inference" into "statically typed", the line
between two is now blurred. What is your opinion on a type system for a
modern programming language?
Rob: I am a big fan of static typing because of the stability and
safety it brings.
I am a big fan of dynamic typing because of the fun and lightweight
feel it brings. (As a side note, the big push for integrated unit
testing can be credited to languages like Python, which drove testing
to demonstrate correctness that the typing system failed to provide.)
I am not a fan of type-driven programming, type hierarchies and classes
and inheritance. Although many hugely successful projects have been
built that way, I feel the approach pushes important decisions too
early into the design phase, before experience can influence it. In
other words, I prefer composition to inheritance.
However, I say to those who are comfortable using inheritance to
structure their programs: pay no attention and please continue to use
what works for you.
Evrone: Sometimes people use technologies in strange ways. For example,
to generate efficient Go code from the high-level Python or Ruby code
(yes, we saw that happening!) Over the years, what is the strangest,
most creative or amusing Go usage have you seen? What surprised you the
most?
Rob: The biggest surprise was when we learned that Go was being used to
write malware. You can't control who will use your work or what they
will do with it.
Evrone: You created a number of text editors. What do you think about
the Visual Studio code? With technologies like LSP, the line between
"text editor" and IDE is blurred now. Do you think software developers
need full-featured IDEs like GoLand or using VSCode is fine?
Rob: I am from a different time, before IDEs, but there was talk early
in the project about whether Go needed an IDE to succeed. No one on the
team had the right skill set, though, so we did not try to create one.
However, we did create core libraries for parsing and printing Go code,
which soon enabled high-quality plugins for all manner of editor and
IDE, and that was a serendipitous success.
More recently, we've been working hard on an LSP server for Go called
gopls, which can be used by any editor or IDE that supports that
protocol to improve the experience working with the language.
Perhaps because of our comfort working with simpler styles of editor,
we made sure that one could work comfortably in Go without heavy
lifting from the programming environment. An IDE can certainly help,
though: most of those I see working in Go today use one, or at least an
editor with custom Go support, and get much value from it.
The question of what style of editor to use is a matter of taste,
colored by the culture of the language you work in.
Evrone: Software developers tend to label things, such as Dart being a
"frontend language", and C being a "system low-level language", and so
on. How would you term the Go programming language now, given its
feature set and usage?
Rob: Go is a general-purpose programming language. Write whatever you
want in it and don't worry about pinning the language, or any other
technology for that matter, to a single problem domain.
Evrone: What other modern programming languages do you personally like?
Rob: The Go experience has taught me that people love to opine about
languages, perhaps more than almost any other element of our field. And
I have certainly done so myself. But I am tired of the negativity that
often results, so now I try to avoid judging things for others.
There has been a real renaissance in language design over the last 10
years or so, after a period where very few new languages were arriving
and succeeding. It's great to see this and the innovation it brings.
Evrone: How does being a Google employee help you develop and guide the
Go language? How important is it to be able to ask "tell us how you use
our language" on Twitter and get responses from the biggest companies
all over the world? Is it just a nice addition or an essential part of
language development? How does Google help you?
Rob: Google has been very generous in its support for the Go project,
for which I am very grateful. And of course the language was created
because we thought Google needed it; what became called "cloud
computing" needed a language with good support for concurrency and easy
deployment, among other things. But Google has not directed the project
in any significant way. It supports us and lets us do what we think is
best.
Regarding other companies and other users, input from the community is
a vital part of understanding how the project, by which I mean the
language, compiler, tools, runtime, library, environment — all of it —
advances.
Evrone: After 10 years of Go development and observing how it is used,
what can you name the biggest design success and, opposite, biggest
design failure for the language? It's strongest and weakest points,
respectively?
Rob: I would like to call out two things, one technical and one
political.
The technical one is first-class support for concurrent computation. Go
is only a decade or so old, but when it was being developed,
"threading" and concurrency were not widely appreciated in the
programming community. In fact a major reason for creating Go was the
difficulty of doing concurrent computation in C++ at the time. It
became clear shortly after launch that the concurrency support was a
major attraction, one that compensated for what some felt were
weaknesses in other parts of the language. Concurrency struck a nerve.
And once people played with the concurrency, they started exploring the
other things about the language and learned that there was more there
than they originally thought. Support for concurrency was the gateway.
As John Graham-Cumming of Cloudflare says, "I came for the easy
concurrency, I stayed for the easy composition".
Go changed the conversation around how to program multicore computers.
The political success was the firm promise made about compatibility for
Go version 1. Once we, and the community, had used Go for a few years,
we had a long list of things we wanted to fix, but change is
disruptive. So we did a careful program of updates, with the "go fix"
command to pull the community along, and once that was done, not only
did we stop, we promised to stay stopped. That stability — Go programs
written in 2012 will still compile and run perfectly today — was a huge
enabler for growth. Companies could use the language with confidence
that we would not break their software. The adoption rate increased
dramatically after version 1 and its compatibility promise appeared.
And although we have since learned of many other things we would like
to change, we can't break existing programs, and we are fine with that.
Evrone: What does your work-life balance look like? There are lots of
talks about "burn-outs" right now, and the epidemic situation does not
help at all. Any hints from your 40-year journey for new generations of
developers?
Rob: The best way to avoid burnout is to do something you truly enjoy
in an environment that supports you. I've been very lucky in that
regard through my whole career, but I realize not everyone is as
fortunate. If you're feeling stressed by work, you should feel free to
take a break or change direction, especially in our current situation.
Evrone: In hindsight, the popularity of many technologies is credited
to so-called "killer apps" that made them popular. Can you name such a
"killer app(s)" for the Go programming language and what do you think
about such a "killer app" idea as a whole?
Rob: A few years ago, Danny Berkholz called Go "the emerging language
of cloud infrastructure," and that is no accident. Go was designed by
people working at Google to make it easier to write Google-relevant
software, in particular network-resident servers. That's what we call
"cloud" today. (Some of the motivation for the design is in my Splash
keynote from 2012, Go at Google: Language Design in the Service of
Software Engineering.)
So although it was gratifying and important to see Docker, Kubernetes,
and many other components of [45]cloud computing written in Go, it's
perhaps not too surprising. Go has indeed become the language of cloud
infrastructure.
Evrone: What competition do you see for the Go programming language
right now and in what area? What is your opinion about Rust with its
"no-garbage-collection" ideas and compile-time guarantees?
Rob: Rust is an intriguing language and I watch its development with
interest. Beyond that, I offer no opinion, as I said above.
Evrone: Go has just reached 70k stars on GitHub! How do you see
different social activities like GitHub, Reddit, Twitter, offline and
online conferences, webinars etc influence the language? Are they
important for the language's success or they just reflect it?
Rob: The people we have met through conferences and social media have
been a critical part of the development of Go and all its elements.
Many, many contributors have affected the development in positive ways,
including the original port to Windows and a number of non-x86
architectures, development of tools and libraries, thoughtful
discussions of technical proposals, and much more.
And it goes the other way, as the Go team reaches out to the community
to start discussions, pose questions, and ask for help and guidance.
One thing that I think is important is to engage with the community as
one voice, to speak as a team rather than as individuals. A consistent
message is more easily understood.
Evrone: How being the author of one of the popular programming
languages has changed your life?
Rob: A correction: I am a co-author, not the author. Ken Thompson and
Robert Griesemer started the project with me, and many others
contributed massively. So please don't single me out as "the author".
To answer your question, Go has certainly raised my public profile and
introduced me to a new and vibrant community but beyond that it hasn't
had much effect. I've had a long career with other successes (and
innumerable failures).
Evrone: Imagine that you have an opportunity to travel back in time and
give only one piece of advice to your younger self, at around the time
you’ve started to design the Go language spec. What advice would you
give to yourself and your colleagues?
Rob: That's easy: Ignore the haters. Just listen to the voices that
understand and share your goals; they're the ones to care about. Not
everyone agrees with what you're doing, and that's OK. But those who
engage in advancing what you're trying to do can be a fantastic source
of ideas, energy, and inspiration.
We will always be thankful to our passionate community.
At Evrone we pride ourselves on using the best tool for the job,
whether that’s [46]Ruby on Rails, [47]Python, [48]Elixir, or, of
course, [49]Go. We strive to stay at the forefront of a range of
technologies to be able to provide the best and most appropriate
solutions to meet our clients’ needs, and we’re very happy to do all we
can to help bring developer communities together.
Although it was gratifying and important to see Docker, Kubernetes, and
many other components of cloud computing written in Go, it’s perhaps
not too surprising. Go has indeed become the language of cloud
infrastructure.
Rob Pike
Co-author of the Go programming language
Used technologies:
[50]Ruby
[51]Rust
[52]Go
[53]Python
[54]DevOps
Contact us
Have a project in mind?
Let's make it happen
____________________________________________________________ Your name
*
____________________________________________________________ Your email
address *
[- None -__________] Budget
[- None -_________] Position
____________________________________________________________ Your phone
number
Attach file
Upload
Add a new file
Files must be less than 8 MB.
Allowed file types: jpg jpeg png txt rtf pdf doc docx ppt pptx.
____________________________________________________________
Write your message here
Send message
This site is protected by reCAPTCHA and the Google [55]Privacy Policy
and [56]Terms of Service apply.
[57]44 Tehama St, San Francisco, CA 94105
[58]+1 415 299 48 83
[59]
[email protected]
[60]Terms of service [61]Privacy policy [62]Impressum
[63]Facebook [64]Instagram [65]Twitter [66]Github [67]Linkedin
[68]Github [69]Linkedin [70]Telegram
[71]Telegram [72]Youtube [73]Behance [74]Dribbble
[75]Explore open jobs
©2008—2020 Evrone
References
Visible links
1.
https://evrone.com/feed.xml
2.
https://www.googletagmanager.com/ns.html?id=GTM-MJDPMD9
3. javascript:;
4.
https://evrone.com/web-development
5.
https://evrone.com/ruby
6.
https://evrone.com/python
7.
https://evrone.com/elixir
8.
https://evrone.com/haskell
9.
https://evrone.com/go
10.
https://evrone.com/rust
11.
https://evrone.com/react
12.
https://evrone.com/nodejs
13.
https://evrone.com/devops
14.
https://evrone.com/design
15.
https://evrone.com/branding
16.
https://evrone.com/ui-design
17.
https://evrone.com/mobile-design
18.
https://evrone.com/web-design
19.
https://evrone.com/product-design
20.
https://evrone.com/mobile-development
21.
https://evrone.com/ios
22.
https://evrone.com/android
23.
https://evrone.com/cordova
24.
https://evrone.com/react-native
25.
https://evrone.com/flutter
26.
https://evrone.com/blockchain
27.
https://evrone.com/eth
28.
https://evrone.com/bitcoin
29.
https://evrone.com/nem
30.
https://evrone.com/hyperledger
31.
https://evrone.com/solidity
32.
https://evrone.com/smart-contract
33. javascript:;
34.
https://evrone.com/fintech
35.
https://evrone.com/crm
36.
https://evrone.com/ecommerce
37.
https://evrone.com/erp
38.
https://evrone.com/artificial-intelligence
39.
https://evrone.com/machine-learning
40.
https://evrone.com/media
41.
https://evrone.com/cases
42.
https://evrone.com/offices
43.
https://evrone.com/rob-pike-interview#hire_us
44.
https://evrone.com/rob-pike-interview#hire_us
45.
https://evrone.com/key-cloud-computing-trends-2020
46.
https://evrone.com/ruby
47.
https://evrone.com/python
48.
https://evrone.com/elixir
49.
https://evrone.com/go
50.
https://evrone.com/ruby
51.
https://evrone.com/rust
52.
https://evrone.com/go
53.
https://evrone.com/python
54.
https://evrone.com/devops
55.
https://policies.google.com/privacy
56.
https://policies.google.com/terms
57.
https://goo.gl/maps/p4FZtt7kdWND2C8s8
58. tel:+14152994883
59. mailto:
[email protected]
60.
https://evrone.com/terms
61.
https://evrone.com/privacy
62.
https://evrone.com/impressum
63.
https://www.facebook.com/evrone
64.
https://www.instagram.com/evrone_com/
65.
https://twitter.com/evronecom
66.
https://github.com/evrone
67.
https://www.linkedin.com/company/evrone
68.
https://github.com/evrone
69.
https://www.linkedin.com/company/evrone
70.
https://t.me/evrone
71.
https://t.me/evrone
72.
https://www.youtube.com/EvroneDevelopment
73.
https://www.behance.net/evronedesign
74.
https://dribbble.com/Evrone
75.
http://jobs.evrone.com/
Hidden links:
77.
https://evrone.com/