SlideShare a Scribd company logo
Ready, Set, GO!
Chad McCallum
ASP.NET MVP
iQmetrix Software
www.rtigger.com - @ChadEmm
An Introduction to the Go Programming
Language
What is Go?
 A programming language!
 Initially created as a Google 20% project
 Released as an open source project on November
10th, 2009
 Go 1 (version 1) released on March 28th, 2012
The Software Development Landscape
 Born out of frustration with current languages
 There was a choice between efficient compilation, efficient execution, or
ease of programming – most languages didn’t offer all three
 Computers are faster, but software development isn’t
 Dependency management is an unnecessarily large, complex part of
software development
 The complexity and awkwardness of type systems are losing out to
languages like Python and JavaScript
 Old languages haven’t caught up to modern affordances, like garbage
collection and parallel computation
 Multicore programming is scary and worrysome
Enter Go
 Possible to compile a large program in a few seconds on a
single computer
 Provides a dependency model that avoids the overhead of
traditional systems
 The type system has no hierarchy, so no time is lost
defining relationships
 Fully garbage collected and provides primitives for
concurrent execution and communication
 By design, offers an approach to system software on
multicore machines
A Review of Go’s Features
 Simple language specification
 Compiles statically linked binaries without external
dependencies
 Remote package management
 Concurrency primitives
Simple Language Specification
 “Language specification simple enough to keep in a
programmer’s head”
 No type inheritance (uses duck typing)
 No method or operator overloading
 No pointer math
 No assertions
 No generic programming
Statically Linked Binaries
 Compiles to native machine code (x86 and ARM)
 All referenced libraries are compiled into the same binary
– no need to install libraries or framework on target
machine
 Because there’s no intermediate language, interpreter, or
framework, applications start and run with minimal
overhead
Remote Package Management
 Can import dependencies directly from remote
repositories, like GitHub, BitBucket, Google Code
 go get github.com/ChadMcCallum/gotest
 Uses the current version of the code in “master” (git) or “default”
(mercurial)
 Downloaded to local GOPATH folder
Concurrency Primitives
 goroutine – executes function on a lightweight process
 Similar to task pools in .NET, functions are executed on any
available thread allocated by the application
 Ensures routines don’t block each other
 Allows developers to write synchronous code while being fully non-
blocking
 Channels provide a way to read and write between
routines without managing synchronization
 A routine that writes to a channel will wait until its message is
received
 A routine that reads from a channel will wait until it receives a
message
Why Choose Go?
 Why choose any language?
 Popularity – is there a decent amount of community support?
 Language-domain match – is the strengths of the language geared
towards your problem domain?
 Libraries – what packages already exist that you can reuse?
 Efficiency – does the compiler and execution match up with your
project’s requirements?
 Tools – do the appropriate coding, debugging, tracing, and testing
tools exist?
Popularity
 Currently 36th on the TIOBE Index (March 2014)
 Used in a number of large projects at Google
 Youtube.com, dl.google.com, Google App Engine
 Used in a number of production systems
 Bit.ly, Torbit, pool.ntp.org, Canonical, CloudFlare, Conformal, Nov
artis, BBC, SoundCloud, Moovweb, Heroku, Nokia
 4472 questions in StackOverflow
 16681 topics on the golang-nuts group
Language-Domain Match
 Targeted at systems programming
 Strengths in concurrency and deployment model
 Mostly used in server and message-processing scenarios
 Can, and does, support other scenarios
 Web apps, games, graphical tools, education
Libraries
 25,522 repositories on GitHub
 Application containers,
 web frameworks,
 websockets,
 continuous integration,
 shared key-value stores,
 shared cache,
 distributed messaging,
 maching imaging,
 SQL engines,
 service orchestration,
 client code generation,
 analytics,
 autocomplete,
 load testing,
 http traffic capture,
 static site generation,
 geolocation,
 PaaS
Efficiency
 Natively compiled binaries
 Not interpreted
 No external dependencies
 No Intermediate Language, Common Language Runtime, or
Virtual Machine
 Calculating 8 primes in parallel
.NET Tasks – 12.6 seconds Goroutines – 5.99 seconds
Tools
 go build – compiles packages and dependencies into
executable
 go fix – rewrites programs that use old APIs to use the
newest version
 go fmt – changes source code to match go standard
 go get – download and install packages and dependencies
 go install – compile and install packages and dependencies
 go run – compile and run program
 go test – run tests in packages
IDEs
 LiteIDE – cross-platform IDE with support for Go and
Markdown
 Go plugin for Eclipse (Goclipse) – plugin for Eclipse
 Zeus – Windows-only IDE with Go support
 All three offer debugging, syntax highlighting, and code
completion
Ready, Set, GO!
 golang.org
 tour.golang.org
 play.golang.org
 godoc.org
 gobyexample.com
 goinggo.net
Chad McCallum
@ChadEmm
www.rtigger.com

More Related Content

PPTX
PPTX
ATO 2014 - So You Think You Know 'Go'? The Go Programming Language
PDF
PPT
A First Look at Google's Go Programming Language
PDF
The Go programming language - Intro by MyLittleAdventure
PDF
An introduction to go programming language
PDF
Test-Driven Development with TypeScript+Jasmine+AngularJS
PPTX
Golang - Overview of Go (golang) Language
ATO 2014 - So You Think You Know 'Go'? The Go Programming Language
A First Look at Google's Go Programming Language
The Go programming language - Intro by MyLittleAdventure
An introduction to go programming language
Test-Driven Development with TypeScript+Jasmine+AngularJS
Golang - Overview of Go (golang) Language

What's hot (20)

PPTX
Unit Testing TypeScript
PDF
GoLang Introduction
PPTX
Go Programming language, golang
PPTX
Introduction to GoLang
ODP
Besut Kode Challenge 1
PPTX
Golang (Go Programming Language)
PPTX
Typescript kata The TDD style 2 edition
PPTX
Introduction to go lang
ODP
Besut Kode - Workshop 1
PDF
iTHome Gopher Day 2017: What can Golang do? (Using project 52 as examples)
PDF
Let's Contribute
PDF
Coding with golang
PDF
iThome Chatbot Day: 透過 Golang 無痛建置機器學習聊天機器人
PDF
Go language presentation
PDF
Dependency management in golang
PDF
Behaviour Testing and Continuous Integration with Drupal
PPTX
PDF
Mphasis Digital - Use Go (gloang) for system programming, distributed systems...
PPTX
Getting Started With Version Control
PDF
An Introduction to Go
Unit Testing TypeScript
GoLang Introduction
Go Programming language, golang
Introduction to GoLang
Besut Kode Challenge 1
Golang (Go Programming Language)
Typescript kata The TDD style 2 edition
Introduction to go lang
Besut Kode - Workshop 1
iTHome Gopher Day 2017: What can Golang do? (Using project 52 as examples)
Let's Contribute
Coding with golang
iThome Chatbot Day: 透過 Golang 無痛建置機器學習聊天機器人
Go language presentation
Dependency management in golang
Behaviour Testing and Continuous Integration with Drupal
Mphasis Digital - Use Go (gloang) for system programming, distributed systems...
Getting Started With Version Control
An Introduction to Go
Ad

Similar to Ready, set, go! An introduction to the Go programming language (20)

PDF
Go Within Cloud Foundry
PPTX
Best Programming Language to Learn - Kinsh Technologies
PDF
Best Programming Language to Learn - Kinsh Technologies
PDF
Enterprise 2020
PDF
Introduction to Go
PPTX
Smart modeling of smart software
PPT
Synapse india fundamentals of dotnet development
PPTX
IT TRENDS AND PERSPECTIVES 2016
DOCX
New microsoft office word document
DOCX
New microsoft office word document
DOCX
New microsoft office word document
PPTX
Scaling applications with go
PDF
Golang : A Hype or the Future?
PPTX
Scripting languages presentation_michel_patrickfrancis
PDF
Meetup. Technologies Intro for Non-Tech People
PDF
Advantages of golang development services & 10 most used go frameworks
PDF
Code, ci, infrastructure - the gophers way
PPT
An Introduction To Linux Development Environment
PPTX
20 best ide's for python programming in 2018
PPTX
2018 20 best id es for python programming
Go Within Cloud Foundry
Best Programming Language to Learn - Kinsh Technologies
Best Programming Language to Learn - Kinsh Technologies
Enterprise 2020
Introduction to Go
Smart modeling of smart software
Synapse india fundamentals of dotnet development
IT TRENDS AND PERSPECTIVES 2016
New microsoft office word document
New microsoft office word document
New microsoft office word document
Scaling applications with go
Golang : A Hype or the Future?
Scripting languages presentation_michel_patrickfrancis
Meetup. Technologies Intro for Non-Tech People
Advantages of golang development services & 10 most used go frameworks
Code, ci, infrastructure - the gophers way
An Introduction To Linux Development Environment
20 best ide's for python programming in 2018
2018 20 best id es for python programming
Ad

More from RTigger (20)

PPTX
You Can't Buy Agile
PPTX
Caching up is hard to do: Improving your Web Services' Performance
PPTX
Open source web services
PPTX
How to hire a hacker
PPTX
Windows 8 programming with html and java script
PPTX
Open regina
PPTX
Single page apps and the web of tomorrow
PPTX
Async in .NET
PPTX
Give your web apps some backbone
PPTX
Hackers, hackathons, and you
PPTX
AJAX, JSON, and Client-Side Templates
PPTX
JavaScript!
PPTX
Parallel Processing
PPTX
Node.js
PPTX
Reactive Extensions
PPTX
Sql vs NoSQL
PPTX
Git’in Jiggy With Git
PPTX
What The F#
PPTX
Web Services
PPTX
Total Engagement
You Can't Buy Agile
Caching up is hard to do: Improving your Web Services' Performance
Open source web services
How to hire a hacker
Windows 8 programming with html and java script
Open regina
Single page apps and the web of tomorrow
Async in .NET
Give your web apps some backbone
Hackers, hackathons, and you
AJAX, JSON, and Client-Side Templates
JavaScript!
Parallel Processing
Node.js
Reactive Extensions
Sql vs NoSQL
Git’in Jiggy With Git
What The F#
Web Services
Total Engagement

Recently uploaded (20)

PDF
Encapsulation_ Review paper, used for researhc scholars
PPT
Teaching material agriculture food technology
PPTX
sap open course for s4hana steps from ECC to s4
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
Cloud computing and distributed systems.
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Electronic commerce courselecture one. Pdf
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Encapsulation_ Review paper, used for researhc scholars
Teaching material agriculture food technology
sap open course for s4hana steps from ECC to s4
Reach Out and Touch Someone: Haptics and Empathic Computing
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Review of recent advances in non-invasive hemoglobin estimation
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Cloud computing and distributed systems.
Per capita expenditure prediction using model stacking based on satellite ima...
Advanced methodologies resolving dimensionality complications for autism neur...
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
The Rise and Fall of 3GPP – Time for a Sabbatical?
Electronic commerce courselecture one. Pdf
Dropbox Q2 2025 Financial Results & Investor Presentation
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...

Ready, set, go! An introduction to the Go programming language

  • 1. Ready, Set, GO! Chad McCallum ASP.NET MVP iQmetrix Software www.rtigger.com - @ChadEmm An Introduction to the Go Programming Language
  • 2. What is Go?  A programming language!  Initially created as a Google 20% project  Released as an open source project on November 10th, 2009  Go 1 (version 1) released on March 28th, 2012
  • 3. The Software Development Landscape  Born out of frustration with current languages  There was a choice between efficient compilation, efficient execution, or ease of programming – most languages didn’t offer all three  Computers are faster, but software development isn’t  Dependency management is an unnecessarily large, complex part of software development  The complexity and awkwardness of type systems are losing out to languages like Python and JavaScript  Old languages haven’t caught up to modern affordances, like garbage collection and parallel computation  Multicore programming is scary and worrysome
  • 4. Enter Go  Possible to compile a large program in a few seconds on a single computer  Provides a dependency model that avoids the overhead of traditional systems  The type system has no hierarchy, so no time is lost defining relationships  Fully garbage collected and provides primitives for concurrent execution and communication  By design, offers an approach to system software on multicore machines
  • 5. A Review of Go’s Features  Simple language specification  Compiles statically linked binaries without external dependencies  Remote package management  Concurrency primitives
  • 6. Simple Language Specification  “Language specification simple enough to keep in a programmer’s head”  No type inheritance (uses duck typing)  No method or operator overloading  No pointer math  No assertions  No generic programming
  • 7. Statically Linked Binaries  Compiles to native machine code (x86 and ARM)  All referenced libraries are compiled into the same binary – no need to install libraries or framework on target machine  Because there’s no intermediate language, interpreter, or framework, applications start and run with minimal overhead
  • 8. Remote Package Management  Can import dependencies directly from remote repositories, like GitHub, BitBucket, Google Code  go get github.com/ChadMcCallum/gotest  Uses the current version of the code in “master” (git) or “default” (mercurial)  Downloaded to local GOPATH folder
  • 9. Concurrency Primitives  goroutine – executes function on a lightweight process  Similar to task pools in .NET, functions are executed on any available thread allocated by the application  Ensures routines don’t block each other  Allows developers to write synchronous code while being fully non- blocking  Channels provide a way to read and write between routines without managing synchronization  A routine that writes to a channel will wait until its message is received  A routine that reads from a channel will wait until it receives a message
  • 10. Why Choose Go?  Why choose any language?  Popularity – is there a decent amount of community support?  Language-domain match – is the strengths of the language geared towards your problem domain?  Libraries – what packages already exist that you can reuse?  Efficiency – does the compiler and execution match up with your project’s requirements?  Tools – do the appropriate coding, debugging, tracing, and testing tools exist?
  • 11. Popularity  Currently 36th on the TIOBE Index (March 2014)  Used in a number of large projects at Google  Youtube.com, dl.google.com, Google App Engine  Used in a number of production systems  Bit.ly, Torbit, pool.ntp.org, Canonical, CloudFlare, Conformal, Nov artis, BBC, SoundCloud, Moovweb, Heroku, Nokia  4472 questions in StackOverflow  16681 topics on the golang-nuts group
  • 12. Language-Domain Match  Targeted at systems programming  Strengths in concurrency and deployment model  Mostly used in server and message-processing scenarios  Can, and does, support other scenarios  Web apps, games, graphical tools, education
  • 13. Libraries  25,522 repositories on GitHub  Application containers,  web frameworks,  websockets,  continuous integration,  shared key-value stores,  shared cache,  distributed messaging,  maching imaging,  SQL engines,  service orchestration,  client code generation,  analytics,  autocomplete,  load testing,  http traffic capture,  static site generation,  geolocation,  PaaS
  • 14. Efficiency  Natively compiled binaries  Not interpreted  No external dependencies  No Intermediate Language, Common Language Runtime, or Virtual Machine  Calculating 8 primes in parallel .NET Tasks – 12.6 seconds Goroutines – 5.99 seconds
  • 15. Tools  go build – compiles packages and dependencies into executable  go fix – rewrites programs that use old APIs to use the newest version  go fmt – changes source code to match go standard  go get – download and install packages and dependencies  go install – compile and install packages and dependencies  go run – compile and run program  go test – run tests in packages
  • 16. IDEs  LiteIDE – cross-platform IDE with support for Go and Markdown  Go plugin for Eclipse (Goclipse) – plugin for Eclipse  Zeus – Windows-only IDE with Go support  All three offer debugging, syntax highlighting, and code completion
  • 17. Ready, Set, GO!  golang.org  tour.golang.org  play.golang.org  godoc.org  gobyexample.com  goinggo.net Chad McCallum @ChadEmm www.rtigger.com

Editor's Notes

  • #8: Do a demo compile of a go app hereGo build car.go
  • #9: Download a package and show compiled resultGo get github.com/mitchellh/multistepBrowse to d:\go\pkg\...
  • #10: Show code for channels.go, execute
  • #12: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
  • #14: https://github.com/search?o=desc&q=language%3Ago&s=stars&type=Repositories
  • #15: Show source code for .net and go. Execute, show result