SlideShare a Scribd company logo
1 of 27
Download to read offline
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.aviSeongJae Park
 
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 GradleAntonio Mas
 
Advantages of Python Learning | Why Python
Advantages of Python Learning | Why PythonAdvantages of Python Learning | Why Python
Advantages of Python Learning | Why PythonEvoletTechnologiesCo
 
Introduction to Go
Introduction to GoIntroduction to Go
Introduction to GoSimon Hewitt
 
Game development using Flutter
Game development using FlutterGame development using Flutter
Game development using FlutterShady Selim
 
C language in our world 2016
C language in our world 2016C language in our world 2016
C language in our world 2016Juraj Michálek
 
Flutter beers and pizza
Flutter beers and pizzaFlutter beers and pizza
Flutter beers and pizzaJon Durán
 
C++ and Software Engineering 2015
C++ and Software Engineering 2015C++ and Software Engineering 2015
C++ and Software Engineering 2015Juraj Michálek
 
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 3Craig Rodrigues
 
Introduction on Mobile development
Introduction on Mobile developmentIntroduction on Mobile development
Introduction on Mobile developmentShady Selim
 
C language in our world 2015
C language in our world 2015C language in our world 2015
C language in our world 2015Juraj 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
 

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 birthdayEvan 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 casesKaty 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 LanguageGanesh Samarthyam
 
Golang presentaion-2018-07-26
Golang presentaion-2018-07-26Golang presentaion-2018-07-26
Golang presentaion-2018-07-26Shintaro 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
 
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 LanguageGanesh 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 AllKaty Slemon
 
Let's Go @ St. Louis CocoaHeads
Let's Go @ St. Louis CocoaHeadsLet's Go @ St. Louis CocoaHeads
Let's Go @ St. Louis CocoaHeadsPaul Balogh
 
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 2023SofiaCarter4
 
Introduction to go lang
Introduction to go langIntroduction to go lang
Introduction to go langAmal 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 DevelopmentNelsonSEO
 
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 212Mahmoud 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 5Amanda 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 180Mahmoud Samir Fayed
 
NodeJS vs Golang - A detailed comparison
NodeJS vs Golang - A detailed comparisonNodeJS vs Golang - A detailed comparison
NodeJS vs Golang - A detailed comparisonDevathon
 

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
 
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
 
NodeJS vs Golang - A detailed comparison
NodeJS vs Golang - A detailed comparisonNodeJS vs Golang - A detailed comparison
NodeJS vs Golang - A detailed comparison
 

Recently uploaded

Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 

Recently uploaded (20)

Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 

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