SlideShare a Scribd company logo
Golang Skills Training
Sofiane Imadali, Ayoub Bousselmi
Session 1: generalities and methodology
16/04/2019 Golang Skills 1
Agenda
 Goals
 General introduction
 Origins and evolution
 Main characteristics, Context and Why a new language
 Journey from Python to Go (with code snippets)
 A first code dive: the Prometheus case
 Methodology
 Define steps for training (see ToC of tour & Trello)
 Long-term project proposal
 Tools (tour, github/gitlab (?), wekan …)
16/04/2019 Golang Skills 2
Goals
16/04/2019 Golang Skills 3
Goals
16/04/2019 Golang Skills 4
 Understand the basics of the language and be
autonomous to read, modify and create go code
 Dive into a long term collaborative project to
develop something meaningful in go
 Start creating and integrating Prometheus
exporters in go
General introduction
16/04/2019 Golang Skills 5
Origins and evolution
16/04/2019 Golang Skills 6
First appeared
 November 10, 2009; 9 years ago
Designed by
 Robert Griesemer: known for his work at the Java HotSpot Virtual
Machine
 Rob Pike: member of the Unix team at Bell Labs, worked at the Plan 9
and Inferno operating systems and the Limbo programming language
 Ken Thompson: (member of the Unix team at Bell Labs, one of the
fathers of C, Unix and Plan 9 operating systems, co-developed UTF-8
with Rob Pike
Stable release
 1.12.4 / April 11th, 2019;
Origins and evolution
16/04/2019 Golang Skills 7
Go: TIOBE’s Programming Language of 2016
Main characteristics, Context and Why a new language
16/04/2019 Golang Skills 8
• Go is a language designed from the ground up, as a ‘C for the 21st
century’.
• C-family: C++, Java and C#
• Concurrency mechanism: inspired by Tony Hoare’s CSP (Communicating
Sequential Processes) theory as used by the Erlang language.
• Completely open-source language, distributed with a BSD license, so it can
be used by everybody even for commercial purposes without a fee
• Resemblance with the C-syntax, more concise and clean.
• It also has characteristics of a dynamic language, so Python and Ruby
programmers feel more comfortable with it.
Main characteristics, Context and Why a new language
16/04/2019 Golang Skills 9
• C/C++ did not evolve with the computing landscape: so there is a definite
need for a new systems language, appropriate for needs of our computing
era
• In contrast to computing power, software development is not considerably
faster or more successful (considering the number of failed projects) and
applications still grow in size, so a new low-level language, but equipped with
higher concepts, is needed
• Before Go a developer had to choose between fast execution but slow and
not efficient building (like C++), efficient compilation (but not so fast
execution, like .NET or Java), or ease of programming (but slower execution,
like the dynamic languages): Go is an attempt to combine all three wishes:
efficient and thus fast compilation, fast execution, ease of programming
16/04/2019 Golang Skills 10
When you
propose to
develop
in Go…
Journey
from
Python to
Go
16/04/2019 Golang Skills 11
Comparing
programming
languages is like
comparing
sport cars…
Journey from Python to Go
16/04/2019 Golang Skills 12
Python Go
#1 Paradigm
Object oriented
Imperative
Functional
Procedural
Reflective
Procedural
Functional
Concurrent
Journey from Python to Go
16/04/2019 Golang Skills 13
Python Go
#2 Execution
Interpreted
(compiled to bytecode)
Garbage collected
Compiled
(statically linked,
dynamically linked)
Garbage collected
Journey from Python to Go
16/04/2019 Golang Skills 14
Python Go
#3 Type system
Dynamically typed Statically typed
Journey from Python to Go
16/04/2019 Golang Skills 15
Python Go
#4 Syntax
Indentation { opening and closing }
braces
Journey from Python to Go
16/04/2019 Golang Skills 16
Python Go
#5 Concurrency
Take time to implement
Extra effort to use all
the available processing
power
simple
built-in
Journey from Python to Go
16/04/2019 Golang Skills 17
Python Go
#6 Dependencies Management
pip install
requirements.txt
go get
go mod
vendor
Others (glide, GoPkg)
16/04/2019 Golang Skills 18
When you
have
choose…
Journey from Python to Go
16/04/2019 Golang Skills 19
Python Ruby Node.js C/C++ Java Go
Semicolons N N Y Y Y N*
Curly braces N N* Y Y Y Y
Static types N N N Y Y Y
Concurrency -
simplicity
N N Y N N Y
Concurrency –
multi-core
N N N Y Y Y
Compiled N N N Y Y Y
OO: classes,
inheritance, etc.
Y Y Y Y Y N*
A first code dive:
the Prometheus case
16/04/2019 Golang Skills 20
Methodology
16/04/2019 Golang Skills 21
16/04/2019 Golang Skills 22
Project
Training
Methodology
16/04/2019 Golang Skills 23
Methodology
It’s about finding the balance between training, a project,
and not being bored or lost
16/04/2019 Golang Skills 24
Training
 Generalities (today)
 Environment
 Installation, IDE, Books, and more
 The language
 Basics
 Methods, Interfaces
 Concurrency
 Idiomatic go and common errors
 Production ready code
 Project structure
 Unitests, Code coverage, and CI/CD
 Versioning your code
16/04/2019 Golang Skills 25
Project
 Definition (today)
 Scrum
 Tasks and goals
 Tools to use
 Contributions in parallel with the training
 Code review and releases
 Proposal: a basic Prometheus exporter
 Using a metrics generator/collector library
 Export them to Prometheus
 Make a CLI for the tool
 Make a dashboard or API (?)
 Source code
 Project, code, and review
 Tour and playground
 For the training, learning, and testing
 Project tasks
 Scrum-like, collaboration
16/04/2019 Golang Skills 26
Tools
 Github + Travis
 Gitlab + Gitlab-CI
 Wekan
 Trello
Thanks
sofiane.imadali@orange.com
ayoub.bousselmi@orange.com
16/04/2019 Golang Skills 27

More Related Content

What's hot (20)

PDF
(Live) build and run golang web server on android.avi
SeongJae Park
 
PDF
Kotlin tech talk
Tjerk W
 
PPTX
What is Kotlin Multiplaform? Why & How?
Shady Selim
 
PDF
Git workflows (Basics)
Roman Kuba
 
PDF
Spring-batch Groovy y Gradle
Antonio Mas
 
PPTX
Advantages of Python Learning | Why Python
EvoletTechnologiesCo
 
PDF
Introduction to Go
Simon Hewitt
 
PDF
Game development using Flutter
Shady Selim
 
PDF
C language in our world 2016
Juraj Michálek
 
PPTX
Kotlin Multiplatform
Kevin Galligan
 
PDF
Flutter beers and pizza
Jon Durán
 
PDF
C++ and Software Engineering 2015
Juraj Michálek
 
PDF
自分戦略
bleis tift
 
PDF
Migrating python.org to buildbot 9 and python 3
Craig Rodrigues
 
PPTX
Introduction on Mobile development
Shady Selim
 
PPTX
Golang
Michael Blake
 
PDF
C language in our world 2015
Juraj Michálek
 
PDF
Lets Go - An introduction to Google's Go Programming Language
Ganesh Samarthyam
 
ODP
Besut Kode Challenge 1
John Vandenberg
 
(Live) build and run golang web server on android.avi
SeongJae Park
 
Kotlin tech talk
Tjerk W
 
What is Kotlin Multiplaform? Why & How?
Shady Selim
 
Git workflows (Basics)
Roman Kuba
 
Spring-batch Groovy y Gradle
Antonio Mas
 
Advantages of Python Learning | Why Python
EvoletTechnologiesCo
 
Introduction to Go
Simon Hewitt
 
Game development using Flutter
Shady Selim
 
C language in our world 2016
Juraj Michálek
 
Kotlin Multiplatform
Kevin Galligan
 
Flutter beers and pizza
Jon Durán
 
C++ and Software Engineering 2015
Juraj Michálek
 
自分戦略
bleis tift
 
Migrating python.org to buildbot 9 and python 3
Craig Rodrigues
 
Introduction on Mobile development
Shady Selim
 
C language in our world 2015
Juraj Michálek
 
Lets Go - An introduction to Google's Go Programming Language
Ganesh Samarthyam
 
Besut Kode Challenge 1
John Vandenberg
 

Similar to Golang skills session1: introduction (20)

PPT
A First Look at Google's Go Programming Language
Ganesh Samarthyam
 
PPT
Google's Go Programming Language - Introduction
Ganesh Samarthyam
 
PDF
Hire golang developers and make the shift to brighter business future (build ...
Katy Slemon
 
PPTX
Go fundamentals
Ron Barabash
 
PPTX
Ready, set, go! An introduction to the Go programming language
RTigger
 
PPTX
Golang - Overview of Go (golang) Language
Aniruddha Chakrabarti
 
PPTX
Golang 101 (Concurrency vs Parallelism)
Pramesti Hatta K.
 
PDF
How to master a programming language: a Golang example"
Evan Lin
 
PDF
Let's Go: Introduction to Google's Go Programming Language
Ganesh Samarthyam
 
PPTX
Golang introduction
DineshDinesh131
 
PPTX
Go programing language
Ramakrishna kapa
 
PDF
The GO programming language
Marco Sabatini
 
PDF
Google’s Go Programming Language Is Going Places — By How Far?
Igor N
 
PDF
Go_ Building Web Applications ( PDFDrive.com ).pdf
RicardoSousa631355
 
PPT
Introduction to Go ProgrammingLanguage.ppt
PedroAlexandre215482
 
PPTX
go language- haseeb.pptx
ArsalanMaqsood1
 
PPTX
Lab1GoBasicswithgo_foundationofgolang.pptx
stasneemattia
 
PDF
An introduction to go programming language
Technology Parser
 
PPTX
Introduction to go lang
Amal Mohan N
 
PDF
Go. why it goes v2
Sergey Pichkurov
 
A First Look at Google's Go Programming Language
Ganesh Samarthyam
 
Google's Go Programming Language - Introduction
Ganesh Samarthyam
 
Hire golang developers and make the shift to brighter business future (build ...
Katy Slemon
 
Go fundamentals
Ron Barabash
 
Ready, set, go! An introduction to the Go programming language
RTigger
 
Golang - Overview of Go (golang) Language
Aniruddha Chakrabarti
 
Golang 101 (Concurrency vs Parallelism)
Pramesti Hatta K.
 
How to master a programming language: a Golang example"
Evan Lin
 
Let's Go: Introduction to Google's Go Programming Language
Ganesh Samarthyam
 
Golang introduction
DineshDinesh131
 
Go programing language
Ramakrishna kapa
 
The GO programming language
Marco Sabatini
 
Google’s Go Programming Language Is Going Places — By How Far?
Igor N
 
Go_ Building Web Applications ( PDFDrive.com ).pdf
RicardoSousa631355
 
Introduction to Go ProgrammingLanguage.ppt
PedroAlexandre215482
 
go language- haseeb.pptx
ArsalanMaqsood1
 
Lab1GoBasicswithgo_foundationofgolang.pptx
stasneemattia
 
An introduction to go programming language
Technology Parser
 
Introduction to go lang
Amal Mohan N
 
Go. why it goes v2
Sergey Pichkurov
 
Ad

Recently uploaded (20)

PDF
iTop VPN With Crack Lifetime Activation Key-CODE
utfefguu
 
PPTX
Homogeneity of Variance Test Options IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PDF
Digger Solo: Semantic search and maps for your local files
seanpedersen96
 
PDF
Top Agile Project Management Tools for Teams in 2025
Orangescrum
 
PDF
Wondershare PDFelement Pro Crack for MacOS New Version Latest 2025
bashirkhan333g
 
PDF
The 5 Reasons for IT Maintenance - Arna Softech
Arna Softech
 
PPTX
Change Common Properties in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PDF
HiHelloHR – Simplify HR Operations for Modern Workplaces
HiHelloHR
 
PDF
AI + DevOps = Smart Automation with devseccops.ai.pdf
Devseccops.ai
 
PPTX
Hardware(Central Processing Unit ) CU and ALU
RizwanaKalsoom2
 
PPTX
Home Care Tools: Benefits, features and more
Third Rock Techkno
 
PPTX
Transforming Mining & Engineering Operations with Odoo ERP | Streamline Proje...
SatishKumar2651
 
PDF
Driver Easy Pro 6.1.1 Crack Licensce key 2025 FREE
utfefguu
 
PDF
How to Hire AI Developers_ Step-by-Step Guide in 2025.pdf
DianApps Technologies
 
PDF
유니티에서 Burst Compiler+ThreadedJobs+SIMD 적용사례
Seongdae Kim
 
PPTX
Agentic Automation Journey Series Day 2 – Prompt Engineering for UiPath Agents
klpathrudu
 
PDF
Build It, Buy It, or Already Got It? Make Smarter Martech Decisions
bbedford2
 
PPTX
ChiSquare Procedure in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PDF
4K Video Downloader Plus Pro Crack for MacOS New Download 2025
bashirkhan333g
 
PPTX
Empowering Asian Contributions: The Rise of Regional User Groups in Open Sour...
Shane Coughlan
 
iTop VPN With Crack Lifetime Activation Key-CODE
utfefguu
 
Homogeneity of Variance Test Options IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
Digger Solo: Semantic search and maps for your local files
seanpedersen96
 
Top Agile Project Management Tools for Teams in 2025
Orangescrum
 
Wondershare PDFelement Pro Crack for MacOS New Version Latest 2025
bashirkhan333g
 
The 5 Reasons for IT Maintenance - Arna Softech
Arna Softech
 
Change Common Properties in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
HiHelloHR – Simplify HR Operations for Modern Workplaces
HiHelloHR
 
AI + DevOps = Smart Automation with devseccops.ai.pdf
Devseccops.ai
 
Hardware(Central Processing Unit ) CU and ALU
RizwanaKalsoom2
 
Home Care Tools: Benefits, features and more
Third Rock Techkno
 
Transforming Mining & Engineering Operations with Odoo ERP | Streamline Proje...
SatishKumar2651
 
Driver Easy Pro 6.1.1 Crack Licensce key 2025 FREE
utfefguu
 
How to Hire AI Developers_ Step-by-Step Guide in 2025.pdf
DianApps Technologies
 
유니티에서 Burst Compiler+ThreadedJobs+SIMD 적용사례
Seongdae Kim
 
Agentic Automation Journey Series Day 2 – Prompt Engineering for UiPath Agents
klpathrudu
 
Build It, Buy It, or Already Got It? Make Smarter Martech Decisions
bbedford2
 
ChiSquare Procedure in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
4K Video Downloader Plus Pro Crack for MacOS New Download 2025
bashirkhan333g
 
Empowering Asian Contributions: The Rise of Regional User Groups in Open Sour...
Shane Coughlan
 
Ad

Golang skills session1: introduction

  • 1. Golang Skills Training Sofiane Imadali, Ayoub Bousselmi Session 1: generalities and methodology 16/04/2019 Golang Skills 1
  • 2. Agenda  Goals  General introduction  Origins and evolution  Main characteristics, Context and Why a new language  Journey from Python to Go (with code snippets)  A first code dive: the Prometheus case  Methodology  Define steps for training (see ToC of tour & Trello)  Long-term project proposal  Tools (tour, github/gitlab (?), wekan …) 16/04/2019 Golang Skills 2
  • 4. Goals 16/04/2019 Golang Skills 4  Understand the basics of the language and be autonomous to read, modify and create go code  Dive into a long term collaborative project to develop something meaningful in go  Start creating and integrating Prometheus exporters in go
  • 6. Origins and evolution 16/04/2019 Golang Skills 6 First appeared  November 10, 2009; 9 years ago Designed by  Robert Griesemer: known for his work at the Java HotSpot Virtual Machine  Rob Pike: member of the Unix team at Bell Labs, worked at the Plan 9 and Inferno operating systems and the Limbo programming language  Ken Thompson: (member of the Unix team at Bell Labs, one of the fathers of C, Unix and Plan 9 operating systems, co-developed UTF-8 with Rob Pike Stable release  1.12.4 / April 11th, 2019;
  • 7. Origins and evolution 16/04/2019 Golang Skills 7 Go: TIOBE’s Programming Language of 2016
  • 8. Main characteristics, Context and Why a new language 16/04/2019 Golang Skills 8 • Go is a language designed from the ground up, as a ‘C for the 21st century’. • C-family: C++, Java and C# • Concurrency mechanism: inspired by Tony Hoare’s CSP (Communicating Sequential Processes) theory as used by the Erlang language. • Completely open-source language, distributed with a BSD license, so it can be used by everybody even for commercial purposes without a fee • Resemblance with the C-syntax, more concise and clean. • It also has characteristics of a dynamic language, so Python and Ruby programmers feel more comfortable with it.
  • 9. Main characteristics, Context and Why a new language 16/04/2019 Golang Skills 9 • C/C++ did not evolve with the computing landscape: so there is a definite need for a new systems language, appropriate for needs of our computing era • In contrast to computing power, software development is not considerably faster or more successful (considering the number of failed projects) and applications still grow in size, so a new low-level language, but equipped with higher concepts, is needed • Before Go a developer had to choose between fast execution but slow and not efficient building (like C++), efficient compilation (but not so fast execution, like .NET or Java), or ease of programming (but slower execution, like the dynamic languages): Go is an attempt to combine all three wishes: efficient and thus fast compilation, fast execution, ease of programming
  • 10. 16/04/2019 Golang Skills 10 When you propose to develop in Go…
  • 11. Journey from Python to Go 16/04/2019 Golang Skills 11 Comparing programming languages is like comparing sport cars…
  • 12. Journey from Python to Go 16/04/2019 Golang Skills 12 Python Go #1 Paradigm Object oriented Imperative Functional Procedural Reflective Procedural Functional Concurrent
  • 13. Journey from Python to Go 16/04/2019 Golang Skills 13 Python Go #2 Execution Interpreted (compiled to bytecode) Garbage collected Compiled (statically linked, dynamically linked) Garbage collected
  • 14. Journey from Python to Go 16/04/2019 Golang Skills 14 Python Go #3 Type system Dynamically typed Statically typed
  • 15. Journey from Python to Go 16/04/2019 Golang Skills 15 Python Go #4 Syntax Indentation { opening and closing } braces
  • 16. Journey from Python to Go 16/04/2019 Golang Skills 16 Python Go #5 Concurrency Take time to implement Extra effort to use all the available processing power simple built-in
  • 17. Journey from Python to Go 16/04/2019 Golang Skills 17 Python Go #6 Dependencies Management pip install requirements.txt go get go mod vendor Others (glide, GoPkg)
  • 18. 16/04/2019 Golang Skills 18 When you have choose…
  • 19. Journey from Python to Go 16/04/2019 Golang Skills 19 Python Ruby Node.js C/C++ Java Go Semicolons N N Y Y Y N* Curly braces N N* Y Y Y Y Static types N N N Y Y Y Concurrency - simplicity N N Y N N Y Concurrency – multi-core N N N Y Y Y Compiled N N N Y Y Y OO: classes, inheritance, etc. Y Y Y Y Y N*
  • 20. A first code dive: the Prometheus case 16/04/2019 Golang Skills 20
  • 22. 16/04/2019 Golang Skills 22 Project Training Methodology
  • 23. 16/04/2019 Golang Skills 23 Methodology It’s about finding the balance between training, a project, and not being bored or lost
  • 24. 16/04/2019 Golang Skills 24 Training  Generalities (today)  Environment  Installation, IDE, Books, and more  The language  Basics  Methods, Interfaces  Concurrency  Idiomatic go and common errors  Production ready code  Project structure  Unitests, Code coverage, and CI/CD  Versioning your code
  • 25. 16/04/2019 Golang Skills 25 Project  Definition (today)  Scrum  Tasks and goals  Tools to use  Contributions in parallel with the training  Code review and releases  Proposal: a basic Prometheus exporter  Using a metrics generator/collector library  Export them to Prometheus  Make a CLI for the tool  Make a dashboard or API (?)
  • 26.  Source code  Project, code, and review  Tour and playground  For the training, learning, and testing  Project tasks  Scrum-like, collaboration 16/04/2019 Golang Skills 26 Tools  Github + Travis  Gitlab + Gitlab-CI  Wekan  Trello