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

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

What's hot (20)

(Live) build and run golang web server on android.avi
(Live) build and run golang web server on android.avi(Live) build and run golang web server on android.avi
(Live) build and run golang web server on android.avi
 
Kshitij
KshitijKshitij
Kshitij
 
Kotlin tech talk
Kotlin tech talkKotlin tech talk
Kotlin tech talk
 
What is Kotlin Multiplaform? Why & How?
What is Kotlin Multiplaform? Why & How? What is Kotlin Multiplaform? Why & How?
What is Kotlin Multiplaform? Why & How?
 
Git workflows (Basics)
Git workflows (Basics)Git workflows (Basics)
Git workflows (Basics)
 
Spring-batch Groovy y Gradle
Spring-batch Groovy y GradleSpring-batch Groovy y Gradle
Spring-batch Groovy y Gradle
 
Advantages of Python Learning | Why Python
Advantages of Python Learning | Why PythonAdvantages of Python Learning | Why Python
Advantages of Python Learning | Why Python
 
Introduction to Go
Introduction to GoIntroduction to Go
Introduction to Go
 
Game development using Flutter
Game development using FlutterGame development using Flutter
Game development using Flutter
 
C language in our world 2016
C language in our world 2016C language in our world 2016
C language in our world 2016
 
Kotlin Multiplatform
Kotlin MultiplatformKotlin Multiplatform
Kotlin Multiplatform
 
Flutter beers and pizza
Flutter beers and pizzaFlutter beers and pizza
Flutter beers and pizza
 
C++ and Software Engineering 2015
C++ and Software Engineering 2015C++ and Software Engineering 2015
C++ and Software Engineering 2015
 
自分戦略
自分戦略自分戦略
自分戦略
 
Migrating python.org to buildbot 9 and python 3
Migrating python.org to buildbot 9 and python 3Migrating python.org to buildbot 9 and python 3
Migrating python.org to buildbot 9 and python 3
 
Introduction on Mobile development
Introduction on Mobile developmentIntroduction on Mobile development
Introduction on Mobile development
 
Golang
GolangGolang
Golang
 
C language in our world 2015
C language in our world 2015C language in our world 2015
C language in our world 2015
 
Lets Go - An introduction to Google's Go Programming Language
Lets Go - An introduction to Google's Go Programming Language Lets Go - An introduction to Google's Go Programming Language
Lets Go - An introduction to Google's Go Programming Language
 
Besut Kode Challenge 1
Besut Kode Challenge 1Besut Kode Challenge 1
Besut Kode Challenge 1
 

Similar to Golang skills session1: introduction

Hire golang developers and make the shift to brighter business future (build ...
Hire golang developers and make the shift to brighter business future (build ...Hire golang developers and make the shift to brighter business future (build ...
Hire golang developers and make the shift to brighter business future (build ...
Katy Slemon
 
Golang taipei #45 10th birthday
Golang taipei #45 10th birthdayGolang taipei #45 10th birthday
Golang taipei #45 10th birthday
Evan Lin
 
When, how & why use golang in 2021 go benefits & use cases
When, how & why use golang in 2021  go benefits & use casesWhen, how & why use golang in 2021  go benefits & use cases
When, how & why use golang in 2021 go benefits & use cases
Katy Slemon
 
Let's Go: Introduction to Google's Go Programming Language
Let's Go: Introduction to Google's Go Programming LanguageLet's Go: Introduction to Google's Go Programming Language
Let's Go: Introduction to Google's Go Programming Language
Ganesh Samarthyam
 
Golang presentaion-2018-07-26
Golang presentaion-2018-07-26Golang presentaion-2018-07-26
Golang presentaion-2018-07-26
Shintaro Ikeda
 
Golang : A Hype or the Future?
Golang : A Hype or the Future?Golang : A Hype or the Future?
Golang : A Hype or the Future?
Mindfire LLC
 
Comparing C and Go
Comparing C and GoComparing C and Go
Comparing C and Go
Marcin Pasinski
 
Google's Go Programming Language - Introduction
Google's Go Programming Language - Introduction Google's Go Programming Language - Introduction
Google's Go Programming Language - Introduction
Ganesh Samarthyam
 
A First Look at Google's Go Programming Language
A First Look at Google's Go Programming LanguageA First Look at Google's Go Programming Language
A First Look at Google's Go Programming Language
Ganesh Samarthyam
 
Why Golang? Settling the Debate Once and For All
Why Golang? Settling the Debate Once and For AllWhy Golang? Settling the Debate Once and For All
Why Golang? Settling the Debate Once and For All
Katy Slemon
 
Let's Go @ St. Louis CocoaHeads
Let's Go @ St. Louis CocoaHeadsLet's Go @ St. Louis CocoaHeads
Let's Go @ St. Louis CocoaHeads
Paul Balogh
 
Golang web development
Golang web developmentGolang web development
Golang web development
Mobinius Technologies
 
Golang Vs NodeJS: Which One To Choose For Your 2023
Golang Vs NodeJS: Which One To Choose For Your 2023Golang Vs NodeJS: Which One To Choose For Your 2023
Golang Vs NodeJS: Which One To Choose For Your 2023
SofiaCarter4
 
Introduction to go lang
Introduction to go langIntroduction to go lang
Introduction to go lang
Amal Mohan N
 
5 Reasons why Business Choose Go Program for Software Development
5 Reasons why Business Choose Go Program for Software Development5 Reasons why Business Choose Go Program for Software Development
5 Reasons why Business Choose Go Program for Software Development
NelsonSEO
 
Golang The Go Programming Language by startelelogic
Golang The Go Programming Language by startelelogicGolang The Go Programming Language by startelelogic
Golang The Go Programming Language by startelelogic
RituPatel551417
 
The Ring programming language version 1.10 book - Part 99 of 212
The Ring programming language version 1.10 book - Part 99 of 212The Ring programming language version 1.10 book - Part 99 of 212
The Ring programming language version 1.10 book - Part 99 of 212
Mahmoud Samir Fayed
 
Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5
Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5
Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5
Amanda Lam
 
Google’s Go Programming Language Is Going Places — By How Far?
Google’s Go Programming Language Is Going Places — By How Far?Google’s Go Programming Language Is Going Places — By How Far?
Google’s Go Programming Language Is Going Places — By How Far?
Igor N
 
The Ring programming language version 1.5.1 book - Part 4 of 180
The Ring programming language version 1.5.1 book - Part 4 of 180The Ring programming language version 1.5.1 book - Part 4 of 180
The Ring programming language version 1.5.1 book - Part 4 of 180
Mahmoud Samir Fayed
 

Similar to Golang skills session1: introduction (20)

Hire golang developers and make the shift to brighter business future (build ...
Hire golang developers and make the shift to brighter business future (build ...Hire golang developers and make the shift to brighter business future (build ...
Hire golang developers and make the shift to brighter business future (build ...
 
Golang taipei #45 10th birthday
Golang taipei #45 10th birthdayGolang taipei #45 10th birthday
Golang taipei #45 10th birthday
 
When, how & why use golang in 2021 go benefits & use cases
When, how & why use golang in 2021  go benefits & use casesWhen, how & why use golang in 2021  go benefits & use cases
When, how & why use golang in 2021 go benefits & use cases
 
Let's Go: Introduction to Google's Go Programming Language
Let's Go: Introduction to Google's Go Programming LanguageLet's Go: Introduction to Google's Go Programming Language
Let's Go: Introduction to Google's Go Programming Language
 
Golang presentaion-2018-07-26
Golang presentaion-2018-07-26Golang presentaion-2018-07-26
Golang presentaion-2018-07-26
 
Golang : A Hype or the Future?
Golang : A Hype or the Future?Golang : A Hype or the Future?
Golang : A Hype or the Future?
 
Comparing C and Go
Comparing C and GoComparing C and Go
Comparing C and Go
 
Google's Go Programming Language - Introduction
Google's Go Programming Language - Introduction Google's Go Programming Language - Introduction
Google's Go Programming Language - Introduction
 
A First Look at Google's Go Programming Language
A First Look at Google's Go Programming LanguageA First Look at Google's Go Programming Language
A First Look at Google's Go Programming Language
 
Why Golang? Settling the Debate Once and For All
Why Golang? Settling the Debate Once and For AllWhy Golang? Settling the Debate Once and For All
Why Golang? Settling the Debate Once and For All
 
Let's Go @ St. Louis CocoaHeads
Let's Go @ St. Louis CocoaHeadsLet's Go @ St. Louis CocoaHeads
Let's Go @ St. Louis CocoaHeads
 
Golang web development
Golang web developmentGolang web development
Golang web development
 
Golang Vs NodeJS: Which One To Choose For Your 2023
Golang Vs NodeJS: Which One To Choose For Your 2023Golang Vs NodeJS: Which One To Choose For Your 2023
Golang Vs NodeJS: Which One To Choose For Your 2023
 
Introduction to go lang
Introduction to go langIntroduction to go lang
Introduction to go lang
 
5 Reasons why Business Choose Go Program for Software Development
5 Reasons why Business Choose Go Program for Software Development5 Reasons why Business Choose Go Program for Software Development
5 Reasons why Business Choose Go Program for Software Development
 
Golang The Go Programming Language by startelelogic
Golang The Go Programming Language by startelelogicGolang The Go Programming Language by startelelogic
Golang The Go Programming Language by startelelogic
 
The Ring programming language version 1.10 book - Part 99 of 212
The Ring programming language version 1.10 book - Part 99 of 212The Ring programming language version 1.10 book - Part 99 of 212
The Ring programming language version 1.10 book - Part 99 of 212
 
Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5
Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5
Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5
 
Google’s Go Programming Language Is Going Places — By How Far?
Google’s Go Programming Language Is Going Places — By How Far?Google’s Go Programming Language Is Going Places — By How Far?
Google’s Go Programming Language Is Going Places — By How Far?
 
The Ring programming language version 1.5.1 book - Part 4 of 180
The Ring programming language version 1.5.1 book - Part 4 of 180The Ring programming language version 1.5.1 book - Part 4 of 180
The Ring programming language version 1.5.1 book - Part 4 of 180
 

Recently uploaded

ENISA Threat Landscape 2023 documentation
ENISA Threat Landscape 2023 documentationENISA Threat Landscape 2023 documentation
ENISA Threat Landscape 2023 documentation
sofiafernandezon
 
Ported to Cloud with Wing_ Blue ZnZone app from _Hexagonal Architecture Expla...
Ported to Cloud with Wing_ Blue ZnZone app from _Hexagonal Architecture Expla...Ported to Cloud with Wing_ Blue ZnZone app from _Hexagonal Architecture Expla...
Ported to Cloud with Wing_ Blue ZnZone app from _Hexagonal Architecture Expla...
Asher Sterkin
 
NBFC Software: Optimize Your Non-Banking Financial Company
NBFC Software: Optimize Your Non-Banking Financial CompanyNBFC Software: Optimize Your Non-Banking Financial Company
NBFC Software: Optimize Your Non-Banking Financial Company
NBFC Softwares
 
CViewSurvey Digitech Pvt Ltd that works on a proven C.A.A.G. model.
CViewSurvey Digitech Pvt Ltd that  works on a proven C.A.A.G. model.CViewSurvey Digitech Pvt Ltd that  works on a proven C.A.A.G. model.
CViewSurvey Digitech Pvt Ltd that works on a proven C.A.A.G. model.
bhatinidhi2001
 
NYC 26-Jun-2024 Combined Presentations.pdf
NYC 26-Jun-2024 Combined Presentations.pdfNYC 26-Jun-2024 Combined Presentations.pdf
NYC 26-Jun-2024 Combined Presentations.pdf
AUGNYC
 
active-directory-auditing-solution (2).pptx
active-directory-auditing-solution (2).pptxactive-directory-auditing-solution (2).pptx
active-directory-auditing-solution (2).pptx
sudsdeep
 
Cultural Shifts: Embracing DevOps for Organizational Transformation
Cultural Shifts: Embracing DevOps for Organizational TransformationCultural Shifts: Embracing DevOps for Organizational Transformation
Cultural Shifts: Embracing DevOps for Organizational Transformation
Mindfire Solution
 
What is OCR Technology and How to Extract Text from Any Image for Free
What is OCR Technology and How to Extract Text from Any Image for FreeWhat is OCR Technology and How to Extract Text from Any Image for Free
What is OCR Technology and How to Extract Text from Any Image for Free
TwisterTools
 
Software development... for all? (keynote at ICSOFT'2024)
Software development... for all? (keynote at ICSOFT'2024)Software development... for all? (keynote at ICSOFT'2024)
Software development... for all? (keynote at ICSOFT'2024)
miso_uam
 
FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)
FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)
FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)
Roshan Dwivedi
 
ThaiPy meetup - Indexes and Django
ThaiPy meetup - Indexes and DjangoThaiPy meetup - Indexes and Django
ThaiPy meetup - Indexes and Django
akshesh doshi
 
Splunk_Remote_Work_Insights_Overview.pptx
Splunk_Remote_Work_Insights_Overview.pptxSplunk_Remote_Work_Insights_Overview.pptx
Splunk_Remote_Work_Insights_Overview.pptx
sudsdeep
 
How we built TryBoxLang in under 48 hours
How we built TryBoxLang in under 48 hoursHow we built TryBoxLang in under 48 hours
How we built TryBoxLang in under 48 hours
Ortus Solutions, Corp
 
BITCOIN HEIST RANSOMEWARE ATTACK PREDICTION
BITCOIN HEIST RANSOMEWARE ATTACK PREDICTIONBITCOIN HEIST RANSOMEWARE ATTACK PREDICTION
BITCOIN HEIST RANSOMEWARE ATTACK PREDICTION
ssuser2b426d1
 
WhatsApp Tracker - Tracking WhatsApp to Boost Online Safety.pdf
WhatsApp Tracker -  Tracking WhatsApp to Boost Online Safety.pdfWhatsApp Tracker -  Tracking WhatsApp to Boost Online Safety.pdf
WhatsApp Tracker - Tracking WhatsApp to Boost Online Safety.pdf
onemonitarsoftware
 
Independence Day Hasn’t Always Been a U.S. Holiday.pdf
Independence Day Hasn’t Always Been a U.S. Holiday.pdfIndependence Day Hasn’t Always Been a U.S. Holiday.pdf
Independence Day Hasn’t Always Been a U.S. Holiday.pdf
Livetecs LLC
 
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) AWS Security .pdf
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) AWS Security .pdfAWS Cloud Practitioner Essentials (Second Edition) (Arabic) AWS Security .pdf
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) AWS Security .pdf
karim wahed
 
Overview of ERP - Mechlin Technologies.pptx
Overview of ERP - Mechlin Technologies.pptxOverview of ERP - Mechlin Technologies.pptx
Overview of ERP - Mechlin Technologies.pptx
Mitchell Marsh
 
Cisco Live Announcements: New ThousandEyes Release Highlights - July 2024
Cisco Live Announcements: New ThousandEyes Release Highlights - July 2024Cisco Live Announcements: New ThousandEyes Release Highlights - July 2024
Cisco Live Announcements: New ThousandEyes Release Highlights - July 2024
ThousandEyes
 
Safe Work Permit Management Software for Hot Work Permits
Safe Work Permit Management Software for Hot Work PermitsSafe Work Permit Management Software for Hot Work Permits
Safe Work Permit Management Software for Hot Work Permits
sheqnetworkmarketing
 

Recently uploaded (20)

ENISA Threat Landscape 2023 documentation
ENISA Threat Landscape 2023 documentationENISA Threat Landscape 2023 documentation
ENISA Threat Landscape 2023 documentation
 
Ported to Cloud with Wing_ Blue ZnZone app from _Hexagonal Architecture Expla...
Ported to Cloud with Wing_ Blue ZnZone app from _Hexagonal Architecture Expla...Ported to Cloud with Wing_ Blue ZnZone app from _Hexagonal Architecture Expla...
Ported to Cloud with Wing_ Blue ZnZone app from _Hexagonal Architecture Expla...
 
NBFC Software: Optimize Your Non-Banking Financial Company
NBFC Software: Optimize Your Non-Banking Financial CompanyNBFC Software: Optimize Your Non-Banking Financial Company
NBFC Software: Optimize Your Non-Banking Financial Company
 
CViewSurvey Digitech Pvt Ltd that works on a proven C.A.A.G. model.
CViewSurvey Digitech Pvt Ltd that  works on a proven C.A.A.G. model.CViewSurvey Digitech Pvt Ltd that  works on a proven C.A.A.G. model.
CViewSurvey Digitech Pvt Ltd that works on a proven C.A.A.G. model.
 
NYC 26-Jun-2024 Combined Presentations.pdf
NYC 26-Jun-2024 Combined Presentations.pdfNYC 26-Jun-2024 Combined Presentations.pdf
NYC 26-Jun-2024 Combined Presentations.pdf
 
active-directory-auditing-solution (2).pptx
active-directory-auditing-solution (2).pptxactive-directory-auditing-solution (2).pptx
active-directory-auditing-solution (2).pptx
 
Cultural Shifts: Embracing DevOps for Organizational Transformation
Cultural Shifts: Embracing DevOps for Organizational TransformationCultural Shifts: Embracing DevOps for Organizational Transformation
Cultural Shifts: Embracing DevOps for Organizational Transformation
 
What is OCR Technology and How to Extract Text from Any Image for Free
What is OCR Technology and How to Extract Text from Any Image for FreeWhat is OCR Technology and How to Extract Text from Any Image for Free
What is OCR Technology and How to Extract Text from Any Image for Free
 
Software development... for all? (keynote at ICSOFT'2024)
Software development... for all? (keynote at ICSOFT'2024)Software development... for all? (keynote at ICSOFT'2024)
Software development... for all? (keynote at ICSOFT'2024)
 
FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)
FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)
FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)
 
ThaiPy meetup - Indexes and Django
ThaiPy meetup - Indexes and DjangoThaiPy meetup - Indexes and Django
ThaiPy meetup - Indexes and Django
 
Splunk_Remote_Work_Insights_Overview.pptx
Splunk_Remote_Work_Insights_Overview.pptxSplunk_Remote_Work_Insights_Overview.pptx
Splunk_Remote_Work_Insights_Overview.pptx
 
How we built TryBoxLang in under 48 hours
How we built TryBoxLang in under 48 hoursHow we built TryBoxLang in under 48 hours
How we built TryBoxLang in under 48 hours
 
BITCOIN HEIST RANSOMEWARE ATTACK PREDICTION
BITCOIN HEIST RANSOMEWARE ATTACK PREDICTIONBITCOIN HEIST RANSOMEWARE ATTACK PREDICTION
BITCOIN HEIST RANSOMEWARE ATTACK PREDICTION
 
WhatsApp Tracker - Tracking WhatsApp to Boost Online Safety.pdf
WhatsApp Tracker -  Tracking WhatsApp to Boost Online Safety.pdfWhatsApp Tracker -  Tracking WhatsApp to Boost Online Safety.pdf
WhatsApp Tracker - Tracking WhatsApp to Boost Online Safety.pdf
 
Independence Day Hasn’t Always Been a U.S. Holiday.pdf
Independence Day Hasn’t Always Been a U.S. Holiday.pdfIndependence Day Hasn’t Always Been a U.S. Holiday.pdf
Independence Day Hasn’t Always Been a U.S. Holiday.pdf
 
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) AWS Security .pdf
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) AWS Security .pdfAWS Cloud Practitioner Essentials (Second Edition) (Arabic) AWS Security .pdf
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) AWS Security .pdf
 
Overview of ERP - Mechlin Technologies.pptx
Overview of ERP - Mechlin Technologies.pptxOverview of ERP - Mechlin Technologies.pptx
Overview of ERP - Mechlin Technologies.pptx
 
Cisco Live Announcements: New ThousandEyes Release Highlights - July 2024
Cisco Live Announcements: New ThousandEyes Release Highlights - July 2024Cisco Live Announcements: New ThousandEyes Release Highlights - July 2024
Cisco Live Announcements: New ThousandEyes Release Highlights - July 2024
 
Safe Work Permit Management Software for Hot Work Permits
Safe Work Permit Management Software for Hot Work PermitsSafe Work Permit Management Software for Hot Work Permits
Safe Work Permit Management Software for Hot Work Permits
 

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