SlideShare a Scribd company logo
1
Mike Gehard
Software Engineer, Pivotal Labs
Go Within Cloud Foundry
2
ME
3
4
4
5
5
History of Go
6
6
History of Go
6
September 21, 2007
Work begins on Go within Google
Robert Griesemer, Rob Pike, Ken Thompson
6
History of Go
6
September 21, 2007
Work begins on Go within Google
Robert Griesemer, Rob Pike, Ken Thompson
Late 2008
Russ Cox joins team
6
History of Go
6
September 21, 2007
Work begins on Go within Google
Robert Griesemer, Rob Pike, Ken Thompson
Late 2008
Russ Cox joins team
November 10, 2009
Public, open source project
6
History of Go
6
September 21, 2007
Work begins on Go within Google
Robert Griesemer, Rob Pike, Ken Thompson
Late 2008
Russ Cox joins team
November 10, 2009
Public, open source project
March 28, 2012
Go 1.0 released
6
History of Go
6
September 21, 2007
Work begins on Go within Google
Robert Griesemer, Rob Pike, Ken Thompson
Late 2008
Russ Cox joins team
November 10, 2009
Public, open source project
March 28, 2012
Go 1.0 released
Early 2013
GoRouter put into production
6
Why Go?
Go was born out of frustration with existing languages and environments for
systems programming. Programming had become too difficult and the choice
of languages was partly to blame. One had to choose either efficient
compilation, efficient execution, or ease of programming; all three were not
available in the same mainstream language. Programmers who could were
choosing ease over safety and efficiency by moving to dynamically typed
languages such as Python and JavaScript rather than C++ or, to a lesser
extent, Java.
Go is an attempt to combine the ease of programming of an interpreted,
dynamically typed language with the efficiency and safety of a statically typed,
compiled language. It also aims to be modern, with support for networked and
multicore computing. Finally, it is intended to be fast: it should take at most a
few seconds to build a large executable on a single computer. To meet these
goals required addressing a number of linguistic issues: an expressive but
lightweight type system; concurrency and garbage collection; rigid
dependency specification; and so on. These cannot be addressed well by
libraries or tools; a new language was called for.
- Go FAQ (http://golang.org/doc/faq#creating_a_new_language)
7
7
8
8
8
Go was born out of frustration with existing languages and
environments for systems programming. Programming had
become too difficult and the choice of languages was partly to
blame. One had to choose either efficient compilation,
efficient execution, or ease of programming; all three were
not available in the same mainstream language. Programmers
who could were choosing ease over safety and efficiency by
moving to dynamically typed languages such as Python and
JavaScript rather than C++ or, to a lesser extent, Java.
8
8
Go was born out of frustration with existing languages and
environments for systems programming. Programming had
become too difficult and the choice of languages was partly to
blame. One had to choose either efficient compilation,
efficient execution, or ease of programming; all three were
not available in the same mainstream language. Programmers
who could were choosing ease over safety and efficiency by
moving to dynamically typed languages such as Python and
JavaScript rather than C++ or, to a lesser extent, Java.
Go is an attempt to combine the ease of programming of an
interpreted, dynamically typed language with the efficiency and
safety of a statically typed, compiled language. It also aims to
be modern, with support for networked and multicore
computing. Finally, it is intended to be fast: it should take at
most a few seconds to build a large executable on a single
computer. To meet these goals required addressing a number
of linguistic issues: an expressive but lightweight type system;
concurrency and garbage collection; rigid dependency
specification; and so on. These cannot be addressed well by
libraries or tools; a new language was called for.
8
9
Go is an attempt to combine the ease of programming of an interpreted,
dynamically typed language with the efficiency and safety of a statically
typed, compiled language. It also aims to be modern, with support for
networked and multicore computing. Finally, it is intended to be fast: it
should take at most a few seconds to build a large executable on a
single computer. To meet these goals required addressing a number of
linguistic issues: an expressive but lightweight type system; concurrency
and garbage collection; rigid dependency specification; and so on. These
cannot be addressed well by libraries or tools; a new language was
called for.
Go was born out of frustration with existing languages and
environments for systems programming. Programming had
become too difficult and the choice of languages was partly to
blame. One had to choose either efficient compilation,
efficient execution, or ease of programming; all three were
not available in the same mainstream language. Programmers
who could were choosing ease over safety and efficiency by
moving to dynamically typed languages such as Python and
JavaScript rather than C++ or, to a lesser extent, Java.
Go is an attempt to combine the ease of programming of an
interpreted, dynamically typed language with the efficiency and
safety of a statically typed, compiled language. It also aims to
be modern, with support for networked and multicore
computing. Finally, it is intended to be fast: it should take at
most a few seconds to build a large executable on a single
computer. To meet these goals required addressing a number
of linguistic issues: an expressive but lightweight type system;
concurrency and garbage collection; rigid dependency
specification; and so on. These cannot be addressed well by
libraries or tools; a new language was called for.
9
10
Go was born out of frustration with existing languages and
environments for systems programming. Programming had
become too difficult and the choice of languages was partly to
blame. One had to choose either efficient compilation,
efficient execution, or ease of programming; all three were
not available in the same mainstream language. Programmers
who could were choosing ease over safety and efficiency by
moving to dynamically typed languages such as Python and
JavaScript rather than C++ or, to a lesser extent, Java.
Go is an attempt to combine the ease of programming of an
interpreted, dynamically typed language with the efficiency and
safety of a statically typed, compiled language. It also aims to
be modern, with support for networked and multicore
computing. Finally, it is intended to be fast: it should take at
most a few seconds to build a large executable on a single
computer. To meet these goals required addressing a number
of linguistic issues: an expressive but lightweight type system;
concurrency and garbage collection; rigid dependency
specification; and so on. These cannot be addressed well by
libraries or tools; a new language was called for.
10
11
11
12
12
13
Go was born out of frustration with existing languages and
environments for systems programming. Programming had
become too difficult and the choice of languages was partly to
blame. One had to choose either efficient compilation,
efficient execution, or ease of programming; all three were
not available in the same mainstream language. Programmers
who could were choosing ease over safety and efficiency by
moving to dynamically typed languages such as Python and
JavaScript rather than C++ or, to a lesser extent, Java.
Go is an attempt to combine the ease of programming of an
interpreted, dynamically typed language with the efficiency and
safety of a statically typed, compiled language. It also aims to
be modern, with support for networked and multicore
computing. Finally, it is intended to be fast: it should take at
most a few seconds to build a large executable on a single
computer. To meet these goals required addressing a number
of linguistic issues: an expressive but lightweight type system;
concurrency and garbage collection; rigid dependency
specification; and so on. These cannot be addressed well by
libraries or tools; a new language was called for.
13
14
Go was born out of frustration with existing languages and
environments for systems programming. Programming had
become too difficult and the choice of languages was partly to
blame. One had to choose either efficient compilation,
efficient execution, or ease of programming; all three were
not available in the same mainstream language. Programmers
who could were choosing ease over safety and efficiency by
moving to dynamically typed languages such as Python and
JavaScript rather than C++ or, to a lesser extent, Java.
Go is an attempt to combine the ease of programming of an
interpreted, dynamically typed language with the efficiency and
safety of a statically typed, compiled language. It also aims to
be modern, with support for networked and multicore
computing. Finally, it is intended to be fast: it should take at
most a few seconds to build a large executable on a single
computer. To meet these goals required addressing a number
of linguistic issues: an expressive but lightweight type system;
concurrency and garbage collection; rigid dependency
specification; and so on. These cannot be addressed well by
libraries or tools; a new language was called for.
14
15
Go was born out of frustration with existing languages and
environments for systems programming. Programming had
become too difficult and the choice of languages was partly to
blame. One had to choose either efficient compilation,
efficient execution, or ease of programming; all three were
not available in the same mainstream language. Programmers
who could were choosing ease over safety and efficiency by
moving to dynamically typed languages such as Python and
JavaScript rather than C++ or, to a lesser extent, Java.
Go is an attempt to combine the ease of programming of an
interpreted, dynamically typed language with the efficiency and
safety of a statically typed, compiled language. It also aims to
be modern, with support for networked and multicore
computing. Finally, it is intended to be fast: it should take at
most a few seconds to build a large executable on a single
computer. To meet these goals required addressing a number
of linguistic issues: an expressive but lightweight type system;
concurrency and garbage collection; rigid dependency
specification; and so on. These cannot be addressed well by
libraries or tools; a new language was called for.
15
16
16
17
Go was born out of frustration with existing languages and
environments for systems programming. Programming had
become too difficult and the choice of languages was partly to
blame. One had to choose either efficient compilation,
efficient execution, or ease of programming; all three were
not available in the same mainstream language. Programmers
who could were choosing ease over safety and efficiency by
moving to dynamically typed languages such as Python and
JavaScript rather than C++ or, to a lesser extent, Java.
Go is an attempt to combine the ease of programming of an
interpreted, dynamically typed language with the efficiency and
safety of a statically typed, compiled language. It also aims to
be modern, with support for networked and multicore
computing. Finally, it is intended to be fast: it should take at
most a few seconds to build a large executable on a single
computer. To meet these goals required addressing a number
of linguistic issues: an expressive but lightweight type system;
concurrency and garbage collection; rigid dependency
specification; and so on. These cannot be addressed well by
libraries or tools; a new language was called for.
17
18
cannot be addressed well by libraries
or tools; a new language was called
for.
18
19
19
20
20
21
21
22
22
23
23
24
24
25
25
26
26
27
27
28
28
29
29
30
30
31
31
32
32
33
33
34
34
Credits
• http://talks.golang.org/2012/splash.article
• http://www.flickr.com/photos/sebilden/6898920548
• http://www.flickr.com/photos/samjuk/1215416320
• http://www.flickr.com/photos/40320455@N03/4289782818
• http://www.flickr.com/photos/55723329@N00/6657150957
35
35
Questions?
@mikegehard
@pivotallabs
36
36

More Related Content

What's hot (20)

PDF
Using Git with Rational Team Concert and Rational ClearCase in enterprise env...
Bartosz Chrabski
 
PDF
Cloudfoundry Introduction
Yitao Jiang
 
PDF
Deploying to and Configuring WebSphere Application Server with UrbanCode Deploy
Claudia Ring
 
PDF
Platform as a Service - Cloud Foundry and IBM Bluemix
David Currie
 
PPTX
IBM Container Service Overview
Kyle Brown
 
PDF
WebSphere Application Server - Meeting Your Cloud and On-Premise Demands
Ian Robinson
 
PPTX
Application Considerations for Cloud
Kyle Brown
 
PPTX
Introduction to Microservices and Cloud Native Application Architecture
David Currie
 
PPTX
Migrating Java EE applications to IBM Bluemix Platform-as-a-Service
David Currie
 
PDF
IBM InterConnect 2015 - IIB in the Cloud
Andrew Coleman
 
PPTX
Building out a Microservices Architecture with WebSphere Liberty Profile and ...
David Currie
 
PPTX
Cloud foundry architecture and deep dive
Animesh Singh
 
PPT
12-factor applications using WAS Liberty, IBM Bluemix, and Docker
Erin Schnabel
 
PPTX
Plastic SCM: Entreprise Version Control Platform for Modern Applications and ...
Kiko Monteverde
 
PDF
Kubernetes Basics - ICP Workshop Batch II
PT Datacomm Diangraha
 
PPTX
Cloud Foundry Technical Overview at IBM Interconnect 2016
Stormy Peters
 
PDF
3298 microservices and how they relate to esb api and messaging - inter con...
Kim Clark
 
PPTX
Monitoring Cloud Native Apps on Pivotal Cloud Foundry with AppDynamics
Nima Badiey
 
PPTX
Cloud Foundry - Second Generation Code (CCNG). Technical Overview
Nima Badiey
 
PPTX
Cloud Foundry Vancouver Meetup July 2016
Stuart Charlton
 
Using Git with Rational Team Concert and Rational ClearCase in enterprise env...
Bartosz Chrabski
 
Cloudfoundry Introduction
Yitao Jiang
 
Deploying to and Configuring WebSphere Application Server with UrbanCode Deploy
Claudia Ring
 
Platform as a Service - Cloud Foundry and IBM Bluemix
David Currie
 
IBM Container Service Overview
Kyle Brown
 
WebSphere Application Server - Meeting Your Cloud and On-Premise Demands
Ian Robinson
 
Application Considerations for Cloud
Kyle Brown
 
Introduction to Microservices and Cloud Native Application Architecture
David Currie
 
Migrating Java EE applications to IBM Bluemix Platform-as-a-Service
David Currie
 
IBM InterConnect 2015 - IIB in the Cloud
Andrew Coleman
 
Building out a Microservices Architecture with WebSphere Liberty Profile and ...
David Currie
 
Cloud foundry architecture and deep dive
Animesh Singh
 
12-factor applications using WAS Liberty, IBM Bluemix, and Docker
Erin Schnabel
 
Plastic SCM: Entreprise Version Control Platform for Modern Applications and ...
Kiko Monteverde
 
Kubernetes Basics - ICP Workshop Batch II
PT Datacomm Diangraha
 
Cloud Foundry Technical Overview at IBM Interconnect 2016
Stormy Peters
 
3298 microservices and how they relate to esb api and messaging - inter con...
Kim Clark
 
Monitoring Cloud Native Apps on Pivotal Cloud Foundry with AppDynamics
Nima Badiey
 
Cloud Foundry - Second Generation Code (CCNG). Technical Overview
Nima Badiey
 
Cloud Foundry Vancouver Meetup July 2016
Stuart Charlton
 

Similar to Go Within Cloud Foundry (20)

PPTX
Best Programming Language to Learn - Kinsh Technologies
Nishant Desai
 
PDF
Best Programming Language to Learn - Kinsh Technologies
Nishant Desai
 
PDF
Enterprise 2020
Siarhei Hladkou
 
PPTX
Ready, set, go! An introduction to the Go programming language
RTigger
 
PDF
Let's Go: Introduction to Google's Go Programming Language
Ganesh Samarthyam
 
PDF
Lets Go - An introduction to Google's Go Programming Language
Ganesh Samarthyam
 
PDF
Introduction to Go
Simon Hewitt
 
PPTX
Introduction to go lang
Amal Mohan N
 
PDF
Golang : A Hype or the Future?
Mindfire LLC
 
PPTX
5 Reasons why Business Choose Go Program for Software Development
NelsonSEO
 
PPT
A First Look at Google's Go Programming Language
Ganesh Samarthyam
 
PPT
Google's Go Programming Language - Introduction
Ganesh Samarthyam
 
PPTX
Golang development go language services in kerala- go language development in...
Zewia Software Solutions (P) Ltd
 
PDF
Golang, Future of Programming Language.
Sunil Yadav
 
PPTX
Scaling applications with go
Vimlesh Sharma
 
PDF
Hire golang developers and make the shift to brighter business future (build ...
Katy Slemon
 
PDF
An introduction to go programming language
Technology Parser
 
PDF
Which programming language should you learn next?
Ganesh Samarthyam
 
PDF
The Go programming language - Intro by MyLittleAdventure
mylittleadventure
 
PPTX
Why Is Rust Gaining Traction In Recent Years?
Techahead Software
 
Best Programming Language to Learn - Kinsh Technologies
Nishant Desai
 
Best Programming Language to Learn - Kinsh Technologies
Nishant Desai
 
Enterprise 2020
Siarhei Hladkou
 
Ready, set, go! An introduction to the Go programming language
RTigger
 
Let's Go: Introduction to Google's Go Programming Language
Ganesh Samarthyam
 
Lets Go - An introduction to Google's Go Programming Language
Ganesh Samarthyam
 
Introduction to Go
Simon Hewitt
 
Introduction to go lang
Amal Mohan N
 
Golang : A Hype or the Future?
Mindfire LLC
 
5 Reasons why Business Choose Go Program for Software Development
NelsonSEO
 
A First Look at Google's Go Programming Language
Ganesh Samarthyam
 
Google's Go Programming Language - Introduction
Ganesh Samarthyam
 
Golang development go language services in kerala- go language development in...
Zewia Software Solutions (P) Ltd
 
Golang, Future of Programming Language.
Sunil Yadav
 
Scaling applications with go
Vimlesh Sharma
 
Hire golang developers and make the shift to brighter business future (build ...
Katy Slemon
 
An introduction to go programming language
Technology Parser
 
Which programming language should you learn next?
Ganesh Samarthyam
 
The Go programming language - Intro by MyLittleAdventure
mylittleadventure
 
Why Is Rust Gaining Traction In Recent Years?
Techahead Software
 
Ad

More from Platform CF (19)

PPTX
The Platform for Building Great Software
Platform CF
 
PPTX
The Path to Stackato
Platform CF
 
PPT
Continuous Deployment with Cloud Foundry, Github and Travis CI
Platform CF
 
PPTX
The Journey to Cloud Foundry
Platform CF
 
PPTX
Pivotal HD as a Cloud Foundry Service
Platform CF
 
POTX
What Lessons Can Cloud Foundry Teach to IaaS?
Platform CF
 
PPTX
Cloud Foundry at VMware
Platform CF
 
PDF
Continuous Delivery with Cloud Foundry
Platform CF
 
PDF
From Zero To Factory
Platform CF
 
PPTX
The IBM dashboard for operational metrics
Platform CF
 
PPTX
Service Distribution to Any Cloud - Cloud Elements
Platform CF
 
PPTX
Cloud Foundry Marketplace Powered by AppDirect
Platform CF
 
PPTX
The Path to Stackato
Platform CF
 
PPTX
Multi-site Architecture Considerations
Platform CF
 
PPTX
Intro to MoPaaS
Platform CF
 
PPTX
Cloud Foundry at NTT
Platform CF
 
PPT
Building Opportunity with an Open Cloud Architecture
Platform CF
 
PPTX
Extending Cloud Foundry to .NET
Platform CF
 
PPTX
Cloud Foundry at Rakuten
Platform CF
 
The Platform for Building Great Software
Platform CF
 
The Path to Stackato
Platform CF
 
Continuous Deployment with Cloud Foundry, Github and Travis CI
Platform CF
 
The Journey to Cloud Foundry
Platform CF
 
Pivotal HD as a Cloud Foundry Service
Platform CF
 
What Lessons Can Cloud Foundry Teach to IaaS?
Platform CF
 
Cloud Foundry at VMware
Platform CF
 
Continuous Delivery with Cloud Foundry
Platform CF
 
From Zero To Factory
Platform CF
 
The IBM dashboard for operational metrics
Platform CF
 
Service Distribution to Any Cloud - Cloud Elements
Platform CF
 
Cloud Foundry Marketplace Powered by AppDirect
Platform CF
 
The Path to Stackato
Platform CF
 
Multi-site Architecture Considerations
Platform CF
 
Intro to MoPaaS
Platform CF
 
Cloud Foundry at NTT
Platform CF
 
Building Opportunity with an Open Cloud Architecture
Platform CF
 
Extending Cloud Foundry to .NET
Platform CF
 
Cloud Foundry at Rakuten
Platform CF
 
Ad

Recently uploaded (20)

PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
PDF
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
PDF
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
PDF
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
PPTX
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
PDF
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
PDF
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
PDF
Blockchain Transactions Explained For Everyone
CIFDAQ
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PDF
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
PDF
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
PDF
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PDF
From Code to Challenge: Crafting Skill-Based Games That Engage and Reward
aiyshauae
 
PPTX
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
PDF
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PDF
SWEBOK Guide and Software Services Engineering Education
Hironori Washizaki
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
Blockchain Transactions Explained For Everyone
CIFDAQ
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
From Code to Challenge: Crafting Skill-Based Games That Engage and Reward
aiyshauae
 
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
SWEBOK Guide and Software Services Engineering Education
Hironori Washizaki
 

Go Within Cloud Foundry

  • 1. 1
  • 2. Mike Gehard Software Engineer, Pivotal Labs Go Within Cloud Foundry 2
  • 4. 4 4
  • 5. 5 5
  • 7. History of Go 6 September 21, 2007 Work begins on Go within Google Robert Griesemer, Rob Pike, Ken Thompson 6
  • 8. History of Go 6 September 21, 2007 Work begins on Go within Google Robert Griesemer, Rob Pike, Ken Thompson Late 2008 Russ Cox joins team 6
  • 9. History of Go 6 September 21, 2007 Work begins on Go within Google Robert Griesemer, Rob Pike, Ken Thompson Late 2008 Russ Cox joins team November 10, 2009 Public, open source project 6
  • 10. History of Go 6 September 21, 2007 Work begins on Go within Google Robert Griesemer, Rob Pike, Ken Thompson Late 2008 Russ Cox joins team November 10, 2009 Public, open source project March 28, 2012 Go 1.0 released 6
  • 11. History of Go 6 September 21, 2007 Work begins on Go within Google Robert Griesemer, Rob Pike, Ken Thompson Late 2008 Russ Cox joins team November 10, 2009 Public, open source project March 28, 2012 Go 1.0 released Early 2013 GoRouter put into production 6
  • 12. Why Go? Go was born out of frustration with existing languages and environments for systems programming. Programming had become too difficult and the choice of languages was partly to blame. One had to choose either efficient compilation, efficient execution, or ease of programming; all three were not available in the same mainstream language. Programmers who could were choosing ease over safety and efficiency by moving to dynamically typed languages such as Python and JavaScript rather than C++ or, to a lesser extent, Java. Go is an attempt to combine the ease of programming of an interpreted, dynamically typed language with the efficiency and safety of a statically typed, compiled language. It also aims to be modern, with support for networked and multicore computing. Finally, it is intended to be fast: it should take at most a few seconds to build a large executable on a single computer. To meet these goals required addressing a number of linguistic issues: an expressive but lightweight type system; concurrency and garbage collection; rigid dependency specification; and so on. These cannot be addressed well by libraries or tools; a new language was called for. - Go FAQ (http://golang.org/doc/faq#creating_a_new_language) 7 7
  • 13. 8 8
  • 14. 8 Go was born out of frustration with existing languages and environments for systems programming. Programming had become too difficult and the choice of languages was partly to blame. One had to choose either efficient compilation, efficient execution, or ease of programming; all three were not available in the same mainstream language. Programmers who could were choosing ease over safety and efficiency by moving to dynamically typed languages such as Python and JavaScript rather than C++ or, to a lesser extent, Java. 8
  • 15. 8 Go was born out of frustration with existing languages and environments for systems programming. Programming had become too difficult and the choice of languages was partly to blame. One had to choose either efficient compilation, efficient execution, or ease of programming; all three were not available in the same mainstream language. Programmers who could were choosing ease over safety and efficiency by moving to dynamically typed languages such as Python and JavaScript rather than C++ or, to a lesser extent, Java. Go is an attempt to combine the ease of programming of an interpreted, dynamically typed language with the efficiency and safety of a statically typed, compiled language. It also aims to be modern, with support for networked and multicore computing. Finally, it is intended to be fast: it should take at most a few seconds to build a large executable on a single computer. To meet these goals required addressing a number of linguistic issues: an expressive but lightweight type system; concurrency and garbage collection; rigid dependency specification; and so on. These cannot be addressed well by libraries or tools; a new language was called for. 8
  • 16. 9 Go is an attempt to combine the ease of programming of an interpreted, dynamically typed language with the efficiency and safety of a statically typed, compiled language. It also aims to be modern, with support for networked and multicore computing. Finally, it is intended to be fast: it should take at most a few seconds to build a large executable on a single computer. To meet these goals required addressing a number of linguistic issues: an expressive but lightweight type system; concurrency and garbage collection; rigid dependency specification; and so on. These cannot be addressed well by libraries or tools; a new language was called for. Go was born out of frustration with existing languages and environments for systems programming. Programming had become too difficult and the choice of languages was partly to blame. One had to choose either efficient compilation, efficient execution, or ease of programming; all three were not available in the same mainstream language. Programmers who could were choosing ease over safety and efficiency by moving to dynamically typed languages such as Python and JavaScript rather than C++ or, to a lesser extent, Java. Go is an attempt to combine the ease of programming of an interpreted, dynamically typed language with the efficiency and safety of a statically typed, compiled language. It also aims to be modern, with support for networked and multicore computing. Finally, it is intended to be fast: it should take at most a few seconds to build a large executable on a single computer. To meet these goals required addressing a number of linguistic issues: an expressive but lightweight type system; concurrency and garbage collection; rigid dependency specification; and so on. These cannot be addressed well by libraries or tools; a new language was called for. 9
  • 17. 10 Go was born out of frustration with existing languages and environments for systems programming. Programming had become too difficult and the choice of languages was partly to blame. One had to choose either efficient compilation, efficient execution, or ease of programming; all three were not available in the same mainstream language. Programmers who could were choosing ease over safety and efficiency by moving to dynamically typed languages such as Python and JavaScript rather than C++ or, to a lesser extent, Java. Go is an attempt to combine the ease of programming of an interpreted, dynamically typed language with the efficiency and safety of a statically typed, compiled language. It also aims to be modern, with support for networked and multicore computing. Finally, it is intended to be fast: it should take at most a few seconds to build a large executable on a single computer. To meet these goals required addressing a number of linguistic issues: an expressive but lightweight type system; concurrency and garbage collection; rigid dependency specification; and so on. These cannot be addressed well by libraries or tools; a new language was called for. 10
  • 18. 11 11
  • 19. 12 12
  • 20. 13 Go was born out of frustration with existing languages and environments for systems programming. Programming had become too difficult and the choice of languages was partly to blame. One had to choose either efficient compilation, efficient execution, or ease of programming; all three were not available in the same mainstream language. Programmers who could were choosing ease over safety and efficiency by moving to dynamically typed languages such as Python and JavaScript rather than C++ or, to a lesser extent, Java. Go is an attempt to combine the ease of programming of an interpreted, dynamically typed language with the efficiency and safety of a statically typed, compiled language. It also aims to be modern, with support for networked and multicore computing. Finally, it is intended to be fast: it should take at most a few seconds to build a large executable on a single computer. To meet these goals required addressing a number of linguistic issues: an expressive but lightweight type system; concurrency and garbage collection; rigid dependency specification; and so on. These cannot be addressed well by libraries or tools; a new language was called for. 13
  • 21. 14 Go was born out of frustration with existing languages and environments for systems programming. Programming had become too difficult and the choice of languages was partly to blame. One had to choose either efficient compilation, efficient execution, or ease of programming; all three were not available in the same mainstream language. Programmers who could were choosing ease over safety and efficiency by moving to dynamically typed languages such as Python and JavaScript rather than C++ or, to a lesser extent, Java. Go is an attempt to combine the ease of programming of an interpreted, dynamically typed language with the efficiency and safety of a statically typed, compiled language. It also aims to be modern, with support for networked and multicore computing. Finally, it is intended to be fast: it should take at most a few seconds to build a large executable on a single computer. To meet these goals required addressing a number of linguistic issues: an expressive but lightweight type system; concurrency and garbage collection; rigid dependency specification; and so on. These cannot be addressed well by libraries or tools; a new language was called for. 14
  • 22. 15 Go was born out of frustration with existing languages and environments for systems programming. Programming had become too difficult and the choice of languages was partly to blame. One had to choose either efficient compilation, efficient execution, or ease of programming; all three were not available in the same mainstream language. Programmers who could were choosing ease over safety and efficiency by moving to dynamically typed languages such as Python and JavaScript rather than C++ or, to a lesser extent, Java. Go is an attempt to combine the ease of programming of an interpreted, dynamically typed language with the efficiency and safety of a statically typed, compiled language. It also aims to be modern, with support for networked and multicore computing. Finally, it is intended to be fast: it should take at most a few seconds to build a large executable on a single computer. To meet these goals required addressing a number of linguistic issues: an expressive but lightweight type system; concurrency and garbage collection; rigid dependency specification; and so on. These cannot be addressed well by libraries or tools; a new language was called for. 15
  • 23. 16 16
  • 24. 17 Go was born out of frustration with existing languages and environments for systems programming. Programming had become too difficult and the choice of languages was partly to blame. One had to choose either efficient compilation, efficient execution, or ease of programming; all three were not available in the same mainstream language. Programmers who could were choosing ease over safety and efficiency by moving to dynamically typed languages such as Python and JavaScript rather than C++ or, to a lesser extent, Java. Go is an attempt to combine the ease of programming of an interpreted, dynamically typed language with the efficiency and safety of a statically typed, compiled language. It also aims to be modern, with support for networked and multicore computing. Finally, it is intended to be fast: it should take at most a few seconds to build a large executable on a single computer. To meet these goals required addressing a number of linguistic issues: an expressive but lightweight type system; concurrency and garbage collection; rigid dependency specification; and so on. These cannot be addressed well by libraries or tools; a new language was called for. 17
  • 25. 18 cannot be addressed well by libraries or tools; a new language was called for. 18
  • 26. 19 19
  • 27. 20 20
  • 28. 21 21
  • 29. 22 22
  • 30. 23 23
  • 31. 24 24
  • 32. 25 25
  • 33. 26 26
  • 34. 27 27
  • 35. 28 28
  • 36. 29 29
  • 37. 30 30
  • 38. 31 31
  • 39. 32 32
  • 40. 33 33
  • 41. 34 34
  • 42. Credits • http://talks.golang.org/2012/splash.article • http://www.flickr.com/photos/sebilden/6898920548 • http://www.flickr.com/photos/samjuk/1215416320 • http://www.flickr.com/photos/40320455@N03/4289782818 • http://www.flickr.com/photos/55723329@N00/6657150957 35 35