SlideShare uma empresa Scribd logo
1 de 37
Go for Rubyists
Should I leave my cozy haven?
Kirill Zonov
Backend & infrastructure engineer
Working mostly with Ruby on a daily basis
Got feet wet with Go, Python, Elixir, Clojure, Swift
Serverless and modular architecture admirer
About me
600 employees
Team members from 50 countries
60 engineers
Backend: Ruby and NodeJS widely, Java and Python occur
sometimes
Frontend: React.js
About the company
Berlin loves orange
How many programming
languages are there in the
world?
Wiki says: 700 (https://en.wikipedia.org/wiki/List_of_programming_languages)
TIOBE says: 250 (https://en.wikipedia.org/wiki/List_of_programming_languages)
How many programming languages are there in the world?
If I already know Ruby and JavaScript
Are there any reasons to learn one more?
Let’s find out!
3 AWS Lambda functions in Go
Golang CoP
Go in Babbel
● Friends telling how awesome and clean it is
● Conferences talks when people migrated from Ruby
(Rails) to Go
● Wanted to experience type safety
● Wanted to write code, which will be faster
● AWS released Go support for Lambdas
Why I started looking at Go
Get to the point!
Released in 2009 in Google
Created by Robert Griesemer, Rob Pike, Ken Thompson
View of history
“One had to choose either efficient compilation, efficient
execution, or ease of programming; all three were not
available in the same mainstream language.
Programmers who could were choosing ease over safety
and efficiency by moving to dynamically typed languages
such as Python and JavaScript rather than C++ or, to a lesser
extent, Java.”
The Quote
Go: The Bad Parts
Syntax of Go
No syntactic sugar
Go: The Bad Parts
Error handling system
Go: The Bad Parts
No OOP
No classes, inheritance and polymorphism
Go: The Bad Parts
Go: The Good Parts
Go: The Good Parts
[source https://www.reddit.com/r/ProgrammerHumor/comments/418x95/theory_vs_reality/ ]
“The problem with object-oriented languages is they’ve got all
this implicit environment that they carry around with them.
You wanted a banana but what you got was a gorilla holding
the banana and the entire jungle.”
- Joe Armstrong
Go: The Good Parts
No OOP
No classes, inheritance and polymorphism
[source https://www.reddit.com/r/ProgrammerHumor/comments/418x95/theory_vs_reality/ ]
Go: The Good Parts
Still some familiar “objects”
Structs and methods. Polymorphism, Inheritance and whatever you love.
Go: The Good Parts
Interfaces
Go: The Good Parts
Go: The Good Parts
Go: The Good Parts
No meta programming
Go: The Good Parts
Just no magic
Easy to understand
Lightweight concurrency with goroutines and channels
Go: The Good Parts
Concurrency model
Ease of provisioning
Go: The Good Parts
1. Statically typed
2. Less magic
3. No meta programming
4. Good concurrency
5. Easier provisioning
6. More difficult to write terrible code
Recap of reasons why to Go
My path for learning Go
● Book
● https://play.golang.org/
● Started blogging
● Suggested to have a CoP at work
● Paired with a more Go-experienced colleague on a new Lambda
● My blog (with enough posts to get started with Golang): http://zonov.me/
● Go interactive playground: https://play.golang.org/
● Succinct and readable book, “Introducing Go”:
https://www.amazon.com/Introducing-Go-Reliable-Scalable-Programs-
ebook/dp/B01AB3G496
● Good bye, OOP: https://medium.com/@cscalfani/goodbye-object-oriented-
programming-a59cda4c0e53
● TIOBE Index: https://www.tiobe.com/tiobe-index/
● Udemy course: https://www.udemy.com/go-the-complete-developers-guide/
Links
● Josephine Wright
● Gleb Sinyavsky
● Fabian Lindenberg
● And to my wife, Kseniia Antipina, for support ^__^
Special thanks to
Kirill Zonov (http://zonov.me), Twitter: @kzonov
Thank you

Mais conteúdo relacionado

Mais procurados

If programming languages were hot babes
If programming languages were hot babesIf programming languages were hot babes
If programming languages were hot babes
Greg Moreno
 

Mais procurados (20)

IronRuby And The DLR
IronRuby And The DLRIronRuby And The DLR
IronRuby And The DLR
 
If programming languages were hot babes
If programming languages were hot babesIf programming languages were hot babes
If programming languages were hot babes
 
Perl5 meta programming
Perl5 meta programmingPerl5 meta programming
Perl5 meta programming
 
How To Be A Real Developer In Two Easy Steps!
How To Be A Real Developer In Two Easy Steps!How To Be A Real Developer In Two Easy Steps!
How To Be A Real Developer In Two Easy Steps!
 
Homomorphic Encryption with ElGamal in Go
Homomorphic Encryption with ElGamal in GoHomomorphic Encryption with ElGamal in Go
Homomorphic Encryption with ElGamal in Go
 
Week2
Week2Week2
Week2
 
Realtime Apps with Django
Realtime Apps with DjangoRealtime Apps with Django
Realtime Apps with Django
 
떠먹는 '오브젝트' Ch05 책임 할당하기
떠먹는 '오브젝트' Ch05 책임 할당하기떠먹는 '오브젝트' Ch05 책임 할당하기
떠먹는 '오브젝트' Ch05 책임 할당하기
 
Ruby - The Hard Bits
Ruby - The Hard BitsRuby - The Hard Bits
Ruby - The Hard Bits
 
Desert Code Camp 2014: C#, the best programming language
Desert Code Camp 2014: C#, the best programming languageDesert Code Camp 2014: C#, the best programming language
Desert Code Camp 2014: C#, the best programming language
 
Mind Your Lang — London Web Standards
Mind Your Lang — London Web StandardsMind Your Lang — London Web Standards
Mind Your Lang — London Web Standards
 
Code Reading
Code ReadingCode Reading
Code Reading
 
F# for startups
F# for startupsF# for startups
F# for startups
 
Technology for reduce of mistakes - うっかりをなくす技術
Technology for reduce of mistakes - うっかりをなくす技術Technology for reduce of mistakes - うっかりをなくす技術
Technology for reduce of mistakes - うっかりをなくす技術
 
F# for startups v2
F# for startups v2F# for startups v2
F# for startups v2
 
Rubyconf 2014 recap
Rubyconf 2014 recapRubyconf 2014 recap
Rubyconf 2014 recap
 
Iron* - An Introduction to Getting Dynamic on .NET
Iron* - An Introduction to Getting Dynamic on .NETIron* - An Introduction to Getting Dynamic on .NET
Iron* - An Introduction to Getting Dynamic on .NET
 
Avoiding API Library Antipatterns
Avoiding API Library AntipatternsAvoiding API Library Antipatterns
Avoiding API Library Antipatterns
 
Ruby 'root'
Ruby 'root'Ruby 'root'
Ruby 'root'
 
Ruby Presentation - Handout
Ruby Presentation - HandoutRuby Presentation - Handout
Ruby Presentation - Handout
 

Semelhante a Go for Rubyists. August 2018. RUG-B Meetup

Ruby tutorial
Ruby tutorialRuby tutorial
Ruby tutorial
knoppix
 
The Intersection of Robotics, Search and AI with Solr, MyRobotLab, and Deep L...
The Intersection of Robotics, Search and AI with Solr, MyRobotLab, and Deep L...The Intersection of Robotics, Search and AI with Solr, MyRobotLab, and Deep L...
The Intersection of Robotics, Search and AI with Solr, MyRobotLab, and Deep L...
Lucidworks
 

Semelhante a Go for Rubyists. August 2018. RUG-B Meetup (20)

Ruby tutorial
Ruby tutorialRuby tutorial
Ruby tutorial
 
PyData Frankfurt - (Efficient) Data Exchange with "Foreign" Ecosystems
PyData Frankfurt - (Efficient) Data Exchange with "Foreign" EcosystemsPyData Frankfurt - (Efficient) Data Exchange with "Foreign" Ecosystems
PyData Frankfurt - (Efficient) Data Exchange with "Foreign" Ecosystems
 
Robotics, Search and AI with Solr, MyRobotLab, and Deeplearning4j
Robotics, Search and AI with Solr, MyRobotLab, and Deeplearning4jRobotics, Search and AI with Solr, MyRobotLab, and Deeplearning4j
Robotics, Search and AI with Solr, MyRobotLab, and Deeplearning4j
 
The Intersection of Robotics, Search and AI with Solr, MyRobotLab, and Deep L...
The Intersection of Robotics, Search and AI with Solr, MyRobotLab, and Deep L...The Intersection of Robotics, Search and AI with Solr, MyRobotLab, and Deep L...
The Intersection of Robotics, Search and AI with Solr, MyRobotLab, and Deep L...
 
Craft of coding
Craft of codingCraft of coding
Craft of coding
 
Go After 4 Years in Production - QCon 2015
Go After 4 Years in Production - QCon 2015Go After 4 Years in Production - QCon 2015
Go After 4 Years in Production - QCon 2015
 
C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem
 
UCLA HACKU'11
UCLA HACKU'11UCLA HACKU'11
UCLA HACKU'11
 
Clojure
ClojureClojure
Clojure
 
What would your own version of Ruby look like? (RubyKaigi)
What would your own version of Ruby look like? (RubyKaigi)What would your own version of Ruby look like? (RubyKaigi)
What would your own version of Ruby look like? (RubyKaigi)
 
Beyond the Hype: 4 Years of Go in Production
Beyond the Hype: 4 Years of Go in ProductionBeyond the Hype: 4 Years of Go in Production
Beyond the Hype: 4 Years of Go in Production
 
Introduction to go lang
Introduction to go langIntroduction to go lang
Introduction to go lang
 
Introduction to Go
Introduction to GoIntroduction to Go
Introduction to Go
 
React Native? A developer's perspective
React Native? A developer's perspectiveReact Native? A developer's perspective
React Native? A developer's perspective
 
Mind Your lang — Accessibility Camp Toronto 2016
Mind Your lang — Accessibility Camp Toronto 2016Mind Your lang — Accessibility Camp Toronto 2016
Mind Your lang — Accessibility Camp Toronto 2016
 
Day 1 - Intro to Ruby
Day 1 - Intro to RubyDay 1 - Intro to Ruby
Day 1 - Intro to Ruby
 
Walter api
Walter apiWalter api
Walter api
 
Golang nuts (by Nii Nai at DevCongress 2013)
Golang nuts (by Nii Nai at DevCongress 2013)Golang nuts (by Nii Nai at DevCongress 2013)
Golang nuts (by Nii Nai at DevCongress 2013)
 
Voice Applications with Adhearsion @ ATLAUG 2012
Voice Applications with Adhearsion @ ATLAUG 2012Voice Applications with Adhearsion @ ATLAUG 2012
Voice Applications with Adhearsion @ ATLAUG 2012
 
Polyglot Grails
Polyglot GrailsPolyglot Grails
Polyglot Grails
 

Mais de Kirill Zonov

Mais de Kirill Zonov (7)

AWS X-Ray introduction and my experience
AWS X-Ray introduction and my experienceAWS X-Ray introduction and my experience
AWS X-Ray introduction and my experience
 
Kubernetes and Helm 101
Kubernetes and Helm 101Kubernetes and Helm 101
Kubernetes and Helm 101
 
IBM Watson as tutor, not a voice interface
IBM Watson as tutor, not a voice interfaceIBM Watson as tutor, not a voice interface
IBM Watson as tutor, not a voice interface
 
DevOpsDays Berlin 2018 Terraform hands-on workshop
DevOpsDays Berlin 2018 Terraform hands-on workshopDevOpsDays Berlin 2018 Terraform hands-on workshop
DevOpsDays Berlin 2018 Terraform hands-on workshop
 
Ruby on Grapes. Why did we choose Grape and why I would choose it again
Ruby on Grapes. Why did we choose Grape and why I would choose it againRuby on Grapes. Why did we choose Grape and why I would choose it again
Ruby on Grapes. Why did we choose Grape and why I would choose it again
 
Haskell. Getting started (RU)
Haskell. Getting started (RU)Haskell. Getting started (RU)
Haskell. Getting started (RU)
 
Haml. New HTML? (RU)
Haml. New HTML? (RU)Haml. New HTML? (RU)
Haml. New HTML? (RU)
 

Último

Hospital management system project report.pdf
Hospital management system project report.pdfHospital management system project report.pdf
Hospital management system project report.pdf
Kamal Acharya
 
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak HamilCara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Kandungan 087776558899
 
Standard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power PlayStandard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power Play
Epec Engineered Technologies
 

Último (20)

HAND TOOLS USED AT ELECTRONICS WORK PRESENTED BY KOUSTAV SARKAR
HAND TOOLS USED AT ELECTRONICS WORK PRESENTED BY KOUSTAV SARKARHAND TOOLS USED AT ELECTRONICS WORK PRESENTED BY KOUSTAV SARKAR
HAND TOOLS USED AT ELECTRONICS WORK PRESENTED BY KOUSTAV SARKAR
 
Unleashing the Power of the SORA AI lastest leap
Unleashing the Power of the SORA AI lastest leapUnleashing the Power of the SORA AI lastest leap
Unleashing the Power of the SORA AI lastest leap
 
Generative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPTGenerative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPT
 
Hospital management system project report.pdf
Hospital management system project report.pdfHospital management system project report.pdf
Hospital management system project report.pdf
 
Thermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - VThermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - V
 
A CASE STUDY ON CERAMIC INDUSTRY OF BANGLADESH.pptx
A CASE STUDY ON CERAMIC INDUSTRY OF BANGLADESH.pptxA CASE STUDY ON CERAMIC INDUSTRY OF BANGLADESH.pptx
A CASE STUDY ON CERAMIC INDUSTRY OF BANGLADESH.pptx
 
PE 459 LECTURE 2- natural gas basic concepts and properties
PE 459 LECTURE 2- natural gas basic concepts and propertiesPE 459 LECTURE 2- natural gas basic concepts and properties
PE 459 LECTURE 2- natural gas basic concepts and properties
 
Orlando’s Arnold Palmer Hospital Layout Strategy-1.pptx
Orlando’s Arnold Palmer Hospital Layout Strategy-1.pptxOrlando’s Arnold Palmer Hospital Layout Strategy-1.pptx
Orlando’s Arnold Palmer Hospital Layout Strategy-1.pptx
 
GEAR TRAIN- BASIC CONCEPTS AND WORKING PRINCIPLE
GEAR TRAIN- BASIC CONCEPTS AND WORKING PRINCIPLEGEAR TRAIN- BASIC CONCEPTS AND WORKING PRINCIPLE
GEAR TRAIN- BASIC CONCEPTS AND WORKING PRINCIPLE
 
AIRCANVAS[1].pdf mini project for btech students
AIRCANVAS[1].pdf mini project for btech studentsAIRCANVAS[1].pdf mini project for btech students
AIRCANVAS[1].pdf mini project for btech students
 
DC MACHINE-Motoring and generation, Armature circuit equation
DC MACHINE-Motoring and generation, Armature circuit equationDC MACHINE-Motoring and generation, Armature circuit equation
DC MACHINE-Motoring and generation, Armature circuit equation
 
S1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptx
S1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptxS1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptx
S1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptx
 
Unit 4_Part 1 CSE2001 Exception Handling and Function Template and Class Temp...
Unit 4_Part 1 CSE2001 Exception Handling and Function Template and Class Temp...Unit 4_Part 1 CSE2001 Exception Handling and Function Template and Class Temp...
Unit 4_Part 1 CSE2001 Exception Handling and Function Template and Class Temp...
 
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak HamilCara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
 
Engineering Drawing focus on projection of planes
Engineering Drawing focus on projection of planesEngineering Drawing focus on projection of planes
Engineering Drawing focus on projection of planes
 
Standard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power PlayStandard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power Play
 
Online electricity billing project report..pdf
Online electricity billing project report..pdfOnline electricity billing project report..pdf
Online electricity billing project report..pdf
 
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
 
Introduction to Serverless with AWS Lambda
Introduction to Serverless with AWS LambdaIntroduction to Serverless with AWS Lambda
Introduction to Serverless with AWS Lambda
 
Thermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.pptThermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.ppt
 

Go for Rubyists. August 2018. RUG-B Meetup

  • 1. Go for Rubyists Should I leave my cozy haven?
  • 2. Kirill Zonov Backend & infrastructure engineer Working mostly with Ruby on a daily basis Got feet wet with Go, Python, Elixir, Clojure, Swift Serverless and modular architecture admirer About me
  • 3. 600 employees Team members from 50 countries 60 engineers Backend: Ruby and NodeJS widely, Java and Python occur sometimes Frontend: React.js About the company
  • 5.
  • 6. How many programming languages are there in the world?
  • 7. Wiki says: 700 (https://en.wikipedia.org/wiki/List_of_programming_languages) TIOBE says: 250 (https://en.wikipedia.org/wiki/List_of_programming_languages) How many programming languages are there in the world?
  • 8. If I already know Ruby and JavaScript Are there any reasons to learn one more?
  • 10. 3 AWS Lambda functions in Go Golang CoP Go in Babbel
  • 11. ● Friends telling how awesome and clean it is ● Conferences talks when people migrated from Ruby (Rails) to Go ● Wanted to experience type safety ● Wanted to write code, which will be faster ● AWS released Go support for Lambdas Why I started looking at Go
  • 12. Get to the point!
  • 13. Released in 2009 in Google Created by Robert Griesemer, Rob Pike, Ken Thompson View of history
  • 14. “One had to choose either efficient compilation, efficient execution, or ease of programming; all three were not available in the same mainstream language. Programmers who could were choosing ease over safety and efficiency by moving to dynamically typed languages such as Python and JavaScript rather than C++ or, to a lesser extent, Java.” The Quote
  • 15. Go: The Bad Parts
  • 17.
  • 18. No syntactic sugar Go: The Bad Parts
  • 19. Error handling system Go: The Bad Parts
  • 20. No OOP No classes, inheritance and polymorphism Go: The Bad Parts
  • 21. Go: The Good Parts
  • 22. Go: The Good Parts [source https://www.reddit.com/r/ProgrammerHumor/comments/418x95/theory_vs_reality/ ]
  • 23. “The problem with object-oriented languages is they’ve got all this implicit environment that they carry around with them. You wanted a banana but what you got was a gorilla holding the banana and the entire jungle.” - Joe Armstrong Go: The Good Parts
  • 24. No OOP No classes, inheritance and polymorphism [source https://www.reddit.com/r/ProgrammerHumor/comments/418x95/theory_vs_reality/ ] Go: The Good Parts
  • 25. Still some familiar “objects” Structs and methods. Polymorphism, Inheritance and whatever you love. Go: The Good Parts
  • 27. Go: The Good Parts
  • 28. Go: The Good Parts No meta programming
  • 29. Go: The Good Parts Just no magic Easy to understand
  • 30. Lightweight concurrency with goroutines and channels Go: The Good Parts
  • 32. Ease of provisioning Go: The Good Parts
  • 33. 1. Statically typed 2. Less magic 3. No meta programming 4. Good concurrency 5. Easier provisioning 6. More difficult to write terrible code Recap of reasons why to Go
  • 34. My path for learning Go ● Book ● https://play.golang.org/ ● Started blogging ● Suggested to have a CoP at work ● Paired with a more Go-experienced colleague on a new Lambda
  • 35. ● My blog (with enough posts to get started with Golang): http://zonov.me/ ● Go interactive playground: https://play.golang.org/ ● Succinct and readable book, “Introducing Go”: https://www.amazon.com/Introducing-Go-Reliable-Scalable-Programs- ebook/dp/B01AB3G496 ● Good bye, OOP: https://medium.com/@cscalfani/goodbye-object-oriented- programming-a59cda4c0e53 ● TIOBE Index: https://www.tiobe.com/tiobe-index/ ● Udemy course: https://www.udemy.com/go-the-complete-developers-guide/ Links
  • 36. ● Josephine Wright ● Gleb Sinyavsky ● Fabian Lindenberg ● And to my wife, Kseniia Antipina, for support ^__^ Special thanks to
  • 37. Kirill Zonov (http://zonov.me), Twitter: @kzonov Thank you

Notas do Editor

  1. It is my second time here and the community is very welcoming and warm. Probably any community is warm these days, just because the weather, but the benevolence is really important, especially when you’re presenting such topic. Go for Rubyists.
  2. Everything is terrible,especially the quality of this gif.
  3. No meta programming. You will never have to argue with your colleagues anymore, explaining them, why not to use metaprogramming in the code