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

PDF
Migrate Heroku & OpenShift Applications to IBM BlueMix
PDF
Liberty Buildpack: Designed for Extension - Integrating your services in Blue...
PDF
Building a PaaS Platform like Bluemix on OpenStack
PDF
MNAssociationEnterpriseArchitectsCloudFoundryJuly2017
PPTX
Developing Enterprise Applications for the Cloud, from Monolith to Microservices
PDF
Urban code deploy helps with traditional websphere app server migration
PPTX
Serverless design with Fn project
PDF
Orchestrating Cloud-Native and Traditional Application Architectures
Migrate Heroku & OpenShift Applications to IBM BlueMix
Liberty Buildpack: Designed for Extension - Integrating your services in Blue...
Building a PaaS Platform like Bluemix on OpenStack
MNAssociationEnterpriseArchitectsCloudFoundryJuly2017
Developing Enterprise Applications for the Cloud, from Monolith to Microservices
Urban code deploy helps with traditional websphere app server migration
Serverless design with Fn project
Orchestrating Cloud-Native and Traditional Application Architectures

What's hot (20)

PDF
Using Git with Rational Team Concert and Rational ClearCase in enterprise env...
PDF
Cloudfoundry Introduction
PDF
Deploying to and Configuring WebSphere Application Server with UrbanCode Deploy
PDF
Platform as a Service - Cloud Foundry and IBM Bluemix
PPTX
IBM Container Service Overview
PDF
WebSphere Application Server - Meeting Your Cloud and On-Premise Demands
PPTX
Application Considerations for Cloud
PPTX
Introduction to Microservices and Cloud Native Application Architecture
PPTX
Migrating Java EE applications to IBM Bluemix Platform-as-a-Service
PDF
IBM InterConnect 2015 - IIB in the Cloud
PPTX
Building out a Microservices Architecture with WebSphere Liberty Profile and ...
PPTX
Cloud foundry architecture and deep dive
PPT
12-factor applications using WAS Liberty, IBM Bluemix, and Docker
PPTX
Plastic SCM: Entreprise Version Control Platform for Modern Applications and ...
PDF
Kubernetes Basics - ICP Workshop Batch II
PPTX
Cloud Foundry Technical Overview at IBM Interconnect 2016
PDF
3298 microservices and how they relate to esb api and messaging - inter con...
PPTX
Monitoring Cloud Native Apps on Pivotal Cloud Foundry with AppDynamics
PPTX
Cloud Foundry - Second Generation Code (CCNG). Technical Overview
PPTX
Cloud Foundry Vancouver Meetup July 2016
Using Git with Rational Team Concert and Rational ClearCase in enterprise env...
Cloudfoundry Introduction
Deploying to and Configuring WebSphere Application Server with UrbanCode Deploy
Platform as a Service - Cloud Foundry and IBM Bluemix
IBM Container Service Overview
WebSphere Application Server - Meeting Your Cloud and On-Premise Demands
Application Considerations for Cloud
Introduction to Microservices and Cloud Native Application Architecture
Migrating Java EE applications to IBM Bluemix Platform-as-a-Service
IBM InterConnect 2015 - IIB in the Cloud
Building out a Microservices Architecture with WebSphere Liberty Profile and ...
Cloud foundry architecture and deep dive
12-factor applications using WAS Liberty, IBM Bluemix, and Docker
Plastic SCM: Entreprise Version Control Platform for Modern Applications and ...
Kubernetes Basics - ICP Workshop Batch II
Cloud Foundry Technical Overview at IBM Interconnect 2016
3298 microservices and how they relate to esb api and messaging - inter con...
Monitoring Cloud Native Apps on Pivotal Cloud Foundry with AppDynamics
Cloud Foundry - Second Generation Code (CCNG). Technical Overview
Cloud Foundry Vancouver Meetup July 2016
Ad

Similar to Go Within Cloud Foundry (20)

PPTX
Best Programming Language to Learn - Kinsh Technologies
PDF
Best Programming Language to Learn - Kinsh Technologies
PDF
Enterprise 2020
PPTX
Ready, set, go! An introduction to the Go programming language
PDF
Lets Go - An introduction to Google's Go Programming Language
PDF
Let's Go: Introduction to Google's Go Programming Language
PDF
Introduction to Go
PPTX
Introduction to go lang
PDF
Golang : A Hype or the Future?
PPTX
5 Reasons why Business Choose Go Program for Software Development
PPT
A First Look at Google's Go Programming Language
PPT
Google's Go Programming Language - Introduction
PPTX
Golang development go language services in kerala- go language development in...
PDF
Golang, Future of Programming Language.
PPTX
Scaling applications with go
PDF
Hire golang developers and make the shift to brighter business future (build ...
PDF
An introduction to go programming language
PDF
Which programming language should you learn next?
PDF
The Go programming language - Intro by MyLittleAdventure
PPTX
Why Is Rust Gaining Traction In Recent Years?
Best Programming Language to Learn - Kinsh Technologies
Best Programming Language to Learn - Kinsh Technologies
Enterprise 2020
Ready, set, go! An introduction to the Go programming language
Lets Go - An introduction to Google's Go Programming Language
Let's Go: Introduction to Google's Go Programming Language
Introduction to Go
Introduction to go lang
Golang : A Hype or the Future?
5 Reasons why Business Choose Go Program for Software Development
A First Look at Google's Go Programming Language
Google's Go Programming Language - Introduction
Golang development go language services in kerala- go language development in...
Golang, Future of Programming Language.
Scaling applications with go
Hire golang developers and make the shift to brighter business future (build ...
An introduction to go programming language
Which programming language should you learn next?
The Go programming language - Intro by MyLittleAdventure
Why Is Rust Gaining Traction In Recent Years?
Ad

More from Platform CF (19)

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

Recently uploaded (20)

PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
cuic standard and advanced reporting.pdf
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Empathic Computing: Creating Shared Understanding
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Modernizing your data center with Dell and AMD
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Approach and Philosophy of On baking technology
PPTX
A Presentation on Artificial Intelligence
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPT
Teaching material agriculture food technology
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PPTX
Big Data Technologies - Introduction.pptx
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Reach Out and Touch Someone: Haptics and Empathic Computing
Building Integrated photovoltaic BIPV_UPV.pdf
Mobile App Security Testing_ A Comprehensive Guide.pdf
cuic standard and advanced reporting.pdf
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Empathic Computing: Creating Shared Understanding
Digital-Transformation-Roadmap-for-Companies.pptx
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Modernizing your data center with Dell and AMD
Diabetes mellitus diagnosis method based random forest with bat algorithm
Approach and Philosophy of On baking technology
A Presentation on Artificial Intelligence
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Teaching material agriculture food technology
Advanced methodologies resolving dimensionality complications for autism neur...
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Big Data Technologies - Introduction.pptx
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...

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