SlideShare a Scribd company logo
Go with the Flow
Nicola Larosa
Does Go really go with the flow?
Or does it rock the boat?
Go with the Flow Nicola Larosa 2/35
The Gopher
Renee French The Go Gopher
Go with the Flow Nicola Larosa 3/35
The name
Go
not "golang"
Go with the Flow Nicola Larosa 4/35
The designers
Robert Griesemer: HotSpot, V8
Rob Pike: Unix, Plan9, UTF-8
Ken Thompson: Unix, UTF-8
Go with the Flow Nicola Larosa 5/35
Where it all begun
Go with the Flow Nicola Larosa 6/35
Where it goes on
Go with the Flow Nicola Larosa 7/35
Why
Because of this
Go with the Flow Nicola Larosa 8/35
Also this
Go with the Flow Nicola Larosa 9/35
Some numbers
C: #include <stdio.h> reads 360 lines from 9 files
C++: #include <iostream> reads 25,326 lines from 131 files
Objective-C: #include <Cocoa/Cocoa.h> reads 112,047 lines
from 689 files
In Go, import "fmt" reads one file: 195 lines summarizing 6
dependent packages
Go with the Flow Nicola Larosa 10/35
C++ complexity
Go with the Flow Nicola Larosa 11/35
different language subsets
hard to read code
poorly documented code
hard to write automatic tools
cost of updates
What to do?
A new programming language of course!
They know how to make one, after all.
Go with the Flow Nicola Larosa 12/35
Go with the Flow Nicola Larosa 13/35
Simplicity
"Are you quite sure that all
those bells and whistles,
all those wonderful facilities
of your so-called powerful
programming languages,
belong to the solution set
rather than the problem set?"
- Edsger W. Dijkstra
Go with the Flow Nicola Larosa 14/35
Keywords, documentation
Language Version Keywords Pages
C K&R, 1988 32 238
C 11 2011 44 683
C++ 1990 48 480
C++ 14 2014 86 1330
Java SE 8 50 788
C# 4.0 77 538
Javascript ECMA-262 41 566
Python 3.5 33 141
Go 2012 25 98
Go with the Flow Nicola Larosa 15/35
Comparisons
Go with the Flow Nicola Larosa 16/35
Python, Ruby: slow (computer), fast (human)
JavaScript: slow-ish (computer), fast-ish (human)
Java: slow start-up, verbose
C: fast (computer), slow (human)
C++: fast (computer), even slower (human)
Comparison chart
Go with the Flow Nicola Larosa 17/35
Quote
"Go seems as perfectly in between C and Python:
it can be seen as a modernized C,
or like a super-optimized Python."
-- Enrico Franchi
Go with the Flow Nicola Larosa 18/35
A "mid-level" language
Go with the Flow Nicola Larosa 19/35
much of the simplicity of high-level languages like Python
much of the speed of low-level languages like C
little of the complexity of "side-level" beasts like C++ and Scala
Lineage
"In 1960, language experts from America and Europe
teamed up to create Algol 60.
In 1970, the Algol tree split into the C and the Pascal branch.
~40 years later, the two branches join again in Go.
Let's see if Go can enjoy an equally long run as its
predecessors!"
-- Robert Griesemer, GopherCon 2015
Go with the Flow Nicola Larosa 20/35
Timeline
Go with the Flow Nicola Larosa 21/35
2007-2008: design
2009/11: open source
2012/03: 1.0
2013/12: 1.2
2015/08: 1.5
2016/02: 1.6
Runtime
Go with the Flow Nicola Larosa 22/35
Goroutine scheduler
Garbage collection
Network polling
Goroutine mapping
Go with the Flow Nicola Larosa 23/35
Goroutine remapping
Go with the Flow Nicola Larosa 24/35
New 1.5 garbage collector
Go with the Flow Nicola Larosa 25/35
GC comparison
Go with the Flow Nicola Larosa 26/35
1.5 GC
Go with the Flow Nicola Larosa 27/35
In the wild #1
Go with the Flow Nicola Larosa 28/35
In the wild #2
Go with the Flow Nicola Larosa 29/35
In the wild #3
Go with the Flow Nicola Larosa 30/35
The website: golang.org
Go with the Flow Nicola Larosa 31/35
The book
2015, covers up to Go 1.5
gopl.io
github.com/adonovan/gopl.io
github.com/teknico/gopl.io
Go with the Flow Nicola Larosa 32/35
That guy
Go with the Flow Nicola Larosa 33/35
These slides
github.com/ajstarks/deck
bitbucket.org/teknico/codemotion-rome-2016
Go with the Flow Nicola Larosa 34/35
Questions!
Go with the Flow Nicola Larosa 35/35

More Related Content

PDF
Which Programming Language is the best one?
PDF
Knowing your garbage collector - PyCon Italy 2015
PDF
Git grep cpan
PPTX
24 hours later - FSharp Gotham 2015
PDF
Internet Technology (October – 2016) [Revised Syllabus | Question Paper]
PDF
Knowing your Garbage Collector / Python Madrid
PPTX
FSharp eye for the Haskell guy - London 2015
PDF
Milano Chatbots Meetup - Vittorio Banfi - Bot Design - Codemotion Milan 2016
Which Programming Language is the best one?
Knowing your garbage collector - PyCon Italy 2015
Git grep cpan
24 hours later - FSharp Gotham 2015
Internet Technology (October – 2016) [Revised Syllabus | Question Paper]
Knowing your Garbage Collector / Python Madrid
FSharp eye for the Haskell guy - London 2015
Milano Chatbots Meetup - Vittorio Banfi - Bot Design - Codemotion Milan 2016

Similar to Go With The Flow (20)

PDF
Advantages of golang development services &amp; 10 most used go frameworks
PDF
Introduction to Go
PPTX
Introduction to go lang
PDF
Go Within Cloud Foundry
PPTX
Ready, set, go! An introduction to the Go programming language
PPT
A First Look at Google's Go Programming Language
PPT
Google's Go Programming Language - Introduction
PDF
The Why of Go
PDF
The Awesomeness of Go
PDF
Go. why it goes v2
PDF
Intro to GO (Bangkok Launchpad 2014)
PDF
Go is your friend - Reppucci
PDF
Go is your friend
PDF
The GO programming language
PDF
Introduction to go, and why it's awesome
PPTX
Golang - Overview of Go (golang) Language
PDF
Go for SysAdmins - LISA 2015
PPTX
Go: What's Different ?
PDF
Enterprise 2020
PPTX
Go. Why it goes
Advantages of golang development services &amp; 10 most used go frameworks
Introduction to Go
Introduction to go lang
Go Within Cloud Foundry
Ready, set, go! An introduction to the Go programming language
A First Look at Google's Go Programming Language
Google's Go Programming Language - Introduction
The Why of Go
The Awesomeness of Go
Go. why it goes v2
Intro to GO (Bangkok Launchpad 2014)
Go is your friend - Reppucci
Go is your friend
The GO programming language
Introduction to go, and why it's awesome
Golang - Overview of Go (golang) Language
Go for SysAdmins - LISA 2015
Go: What's Different ?
Enterprise 2020
Go. Why it goes
Ad

More from Codemotion (20)

PDF
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
PDF
Pompili - From hero to_zero: The FatalNoise neverending story
PPTX
Pastore - Commodore 65 - La storia
PPTX
Pennisi - Essere Richard Altwasser
PPTX
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
PPTX
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
PPTX
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
PPTX
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
PDF
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
PDF
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
PDF
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
PDF
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
PDF
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
PDF
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
PPTX
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
PPTX
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
PDF
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
PDF
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
PDF
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
PDF
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Pompili - From hero to_zero: The FatalNoise neverending story
Pastore - Commodore 65 - La storia
Pennisi - Essere Richard Altwasser
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Ad

Recently uploaded (20)

PDF
Salesforce Agentforce AI Implementation.pdf
PPTX
Weekly report ppt - harsh dattuprasad patel.pptx
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
Download FL Studio Crack Latest version 2025 ?
PPTX
Patient Appointment Booking in Odoo with online payment
PPTX
Why Generative AI is the Future of Content, Code & Creativity?
PPTX
Log360_SIEM_Solutions Overview PPT_Feb 2020.pptx
PPTX
Computer Software and OS of computer science of grade 11.pptx
PPTX
Reimagine Home Health with the Power of Agentic AI​
PDF
Product Update: Alluxio AI 3.7 Now with Sub-Millisecond Latency
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PDF
iTop VPN 6.5.0 Crack + License Key 2025 (Premium Version)
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PDF
AI-Powered Threat Modeling: The Future of Cybersecurity by Arun Kumar Elengov...
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
PDF
Designing Intelligence for the Shop Floor.pdf
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
Autodesk AutoCAD Crack Free Download 2025
Salesforce Agentforce AI Implementation.pdf
Weekly report ppt - harsh dattuprasad patel.pptx
Design an Analysis of Algorithms I-SECS-1021-03
Download FL Studio Crack Latest version 2025 ?
Patient Appointment Booking in Odoo with online payment
Why Generative AI is the Future of Content, Code & Creativity?
Log360_SIEM_Solutions Overview PPT_Feb 2020.pptx
Computer Software and OS of computer science of grade 11.pptx
Reimagine Home Health with the Power of Agentic AI​
Product Update: Alluxio AI 3.7 Now with Sub-Millisecond Latency
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
iTop VPN 6.5.0 Crack + License Key 2025 (Premium Version)
Navsoft: AI-Powered Business Solutions & Custom Software Development
AI-Powered Threat Modeling: The Future of Cybersecurity by Arun Kumar Elengov...
Adobe Illustrator 28.6 Crack My Vision of Vector Design
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
Designing Intelligence for the Shop Floor.pdf
Wondershare Filmora 15 Crack With Activation Key [2025
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Autodesk AutoCAD Crack Free Download 2025

Go With The Flow

  • 1. Go with the Flow Nicola Larosa
  • 2. Does Go really go with the flow? Or does it rock the boat? Go with the Flow Nicola Larosa 2/35
  • 3. The Gopher Renee French The Go Gopher Go with the Flow Nicola Larosa 3/35
  • 4. The name Go not "golang" Go with the Flow Nicola Larosa 4/35
  • 5. The designers Robert Griesemer: HotSpot, V8 Rob Pike: Unix, Plan9, UTF-8 Ken Thompson: Unix, UTF-8 Go with the Flow Nicola Larosa 5/35
  • 6. Where it all begun Go with the Flow Nicola Larosa 6/35
  • 7. Where it goes on Go with the Flow Nicola Larosa 7/35
  • 8. Why Because of this Go with the Flow Nicola Larosa 8/35
  • 9. Also this Go with the Flow Nicola Larosa 9/35
  • 10. Some numbers C: #include <stdio.h> reads 360 lines from 9 files C++: #include <iostream> reads 25,326 lines from 131 files Objective-C: #include <Cocoa/Cocoa.h> reads 112,047 lines from 689 files In Go, import "fmt" reads one file: 195 lines summarizing 6 dependent packages Go with the Flow Nicola Larosa 10/35
  • 11. C++ complexity Go with the Flow Nicola Larosa 11/35 different language subsets hard to read code poorly documented code hard to write automatic tools cost of updates
  • 12. What to do? A new programming language of course! They know how to make one, after all. Go with the Flow Nicola Larosa 12/35
  • 13. Go with the Flow Nicola Larosa 13/35
  • 14. Simplicity "Are you quite sure that all those bells and whistles, all those wonderful facilities of your so-called powerful programming languages, belong to the solution set rather than the problem set?" - Edsger W. Dijkstra Go with the Flow Nicola Larosa 14/35
  • 15. Keywords, documentation Language Version Keywords Pages C K&R, 1988 32 238 C 11 2011 44 683 C++ 1990 48 480 C++ 14 2014 86 1330 Java SE 8 50 788 C# 4.0 77 538 Javascript ECMA-262 41 566 Python 3.5 33 141 Go 2012 25 98 Go with the Flow Nicola Larosa 15/35
  • 16. Comparisons Go with the Flow Nicola Larosa 16/35 Python, Ruby: slow (computer), fast (human) JavaScript: slow-ish (computer), fast-ish (human) Java: slow start-up, verbose C: fast (computer), slow (human) C++: fast (computer), even slower (human)
  • 17. Comparison chart Go with the Flow Nicola Larosa 17/35
  • 18. Quote "Go seems as perfectly in between C and Python: it can be seen as a modernized C, or like a super-optimized Python." -- Enrico Franchi Go with the Flow Nicola Larosa 18/35
  • 19. A "mid-level" language Go with the Flow Nicola Larosa 19/35 much of the simplicity of high-level languages like Python much of the speed of low-level languages like C little of the complexity of "side-level" beasts like C++ and Scala
  • 20. Lineage "In 1960, language experts from America and Europe teamed up to create Algol 60. In 1970, the Algol tree split into the C and the Pascal branch. ~40 years later, the two branches join again in Go. Let's see if Go can enjoy an equally long run as its predecessors!" -- Robert Griesemer, GopherCon 2015 Go with the Flow Nicola Larosa 20/35
  • 21. Timeline Go with the Flow Nicola Larosa 21/35 2007-2008: design 2009/11: open source 2012/03: 1.0 2013/12: 1.2 2015/08: 1.5 2016/02: 1.6
  • 22. Runtime Go with the Flow Nicola Larosa 22/35 Goroutine scheduler Garbage collection Network polling
  • 23. Goroutine mapping Go with the Flow Nicola Larosa 23/35
  • 24. Goroutine remapping Go with the Flow Nicola Larosa 24/35
  • 25. New 1.5 garbage collector Go with the Flow Nicola Larosa 25/35
  • 26. GC comparison Go with the Flow Nicola Larosa 26/35
  • 27. 1.5 GC Go with the Flow Nicola Larosa 27/35
  • 28. In the wild #1 Go with the Flow Nicola Larosa 28/35
  • 29. In the wild #2 Go with the Flow Nicola Larosa 29/35
  • 30. In the wild #3 Go with the Flow Nicola Larosa 30/35
  • 31. The website: golang.org Go with the Flow Nicola Larosa 31/35
  • 32. The book 2015, covers up to Go 1.5 gopl.io github.com/adonovan/gopl.io github.com/teknico/gopl.io Go with the Flow Nicola Larosa 32/35
  • 33. That guy Go with the Flow Nicola Larosa 33/35
  • 35. Questions! Go with the Flow Nicola Larosa 35/35