-
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
-
4.
Berlin loves orange
-
5.
How many programming
languages are there in the
world?
-
6.
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?
-
7.
If I already know Ruby and JavaScript
Are there any reasons to learn one more?
-
8.
Let’s find out!
-
9.
3 AWS Lambda functions in Go
Golang CoP
Go in Babbel
-
10.
● 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
-
11.
Get to the point!
-
12.
Released in 2009 in Google
Created by Robert Griesemer, Rob Pike, Ken Thompson
View of history
-
13.
“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
-
14.
Go: The Bad Parts
-
15.
Syntax of Go
-
16.
No syntactic sugar
Go: The Bad Parts
-
17.
Error handling system
Go: The Bad Parts
-
18.
No OOP
No classes, inheritance and polymorphism
Go: The Bad Parts
-
19.
Go: The Good Parts
-
20.
Go: The Good Parts
[source https://www.reddit.com/r/ProgrammerHumor/comments/418x95/theory_vs_reality/ ]
-
21.
“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
-
22.
No OOP
No classes, inheritance and polymorphism
[source https://www.reddit.com/r/ProgrammerHumor/comments/418x95/theory_vs_reality/ ]
Go: The Good Parts
-
23.
Still some familiar “objects”
Structs and methods. Polymorphism, Inheritance and whatever you love.
Go: The Good Parts
-
24.
Interfaces
Go: The Good Parts
-
25.
Go: The Good Parts
-
26.
Go: The Good Parts
No meta programming
-
27.
Go: The Good Parts
Just no magic
Easy to understand
-
28.
Lightweight concurrency with goroutines and channels
Go: The Good Parts
-
29.
Concurrency model
-
30.
Ease of provisioning
Go: The Good Parts
-
31.
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
-
32.
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
-
33.
● 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
-
34.
● Josephine Wright
● Gleb Sinyavsky
● Fabian Lindenberg
● And to my wife, Kseniia Antipina, for support ^__^
Special thanks to
-
35.
Kirill Zonov (http://zonov.me), Twitter: @kzonov
Thank you
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.
Everything is terrible,especially the quality of this gif.
No meta programming. You will never have to argue with your colleagues anymore, explaining them, why not to use metaprogramming in the code