Your SlideShare is downloading. ×
Go is your friend - Reppucci
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Go is your friend - Reppucci

874
views

Published on

Slide from Gianfranco Reppucci talk @Codemotion Rome 2014

Slide from Gianfranco Reppucci talk @Codemotion Rome 2014

Published in: Technology

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
874
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
1
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. ROME April 11-12th 2014 Go is your friend Gianfranco Reppucci Lead Developer at Qurami giefferre
  • 2. ROME April 11-12th 2014 - Gianfranco Reppucci About me
  • 3. ROME April 11-12th 2014 - Gianfranco Reppucci
  • 4. ROME April 11-12th 2014 - Gianfranco Reppucci Evolution As developers, we’ve changed a lot since a decade ago
  • 5. ROME April 11-12th 2014 - Gianfranco Reppucci Evolution • Monolithic, 100% custom code • Super-complete, MVC frameworks with tons of built-in features • Simple, bootstrapping frameworks
 w/ dependency managers
  • 6. ROME April 11-12th 2014 - Gianfranco Reppucci Context • There is a lot of different languages available to developers • Some of them are pretty easy, some others have great performances • We can find frameworks and plugins for each of them
  • 7. ROME April 11-12th 2014 - Gianfranco Reppucci The big dilemma I’m starting a new project. Which technology do you think I should use?
  • 8. ROME April 11-12th 2014 - Gianfranco Reppucci There’s no right choice As developers: • A great idea can be built with (perhaps) any language • Pros and cons are everywhere • You’ll pay a certain price for whatever advantages you could have
  • 9. ROME April 11-12th 2014 - Gianfranco Reppucci There’s no right choice As entrepreneurs: • When choosing a specific technology,
 you’ll probably need to justify the decision to yourself, your partners and investors • Decisions would be based on company’s vision
  • 10. ROME April 11-12th 2014 - Gianfranco Reppucci Start using
 something modern Go is an open source programming language
 that makes it easy to build simple,
 reliable and efficient software. quote from golang.org
  • 11. ROME April 11-12th 2014 - Gianfranco Reppucci What Go is: • Open source BSD licensed project • Language specification • Runtime components
 (garbage collector, scheduler, etc) • Two different compilers (gc or gccgo) • Standard libraries • Documentation
  • 12. ROME April 11-12th 2014 - Gianfranco Reppucci History • Developed at Google in 2007 as an experiment • Publicly announced in 2009 • Integrated in App Engine in 2011
  • 13. ROME April 11-12th 2014 - Gianfranco Reppucci Who is using Go?
  • 14. ROME April 11-12th 2014 - Gianfranco Reppucci Who is using Go?
  • 15. ROME April 11-12th 2014 - Gianfranco Reppucci A modern C Go sits somewhere between C and Python. ! It has the static type checking and bit- twiddling powers of C, yet much of the speed of development and conciseness of Python. quote from Graham King
  • 16. ROME April 11-12th 2014 - Gianfranco Reppucci Absolutely genuine • No class inheritance • No method or operator overloading • No circular dependencies among packages • No generic programming • No assertions • No pointer arithmetic
  • 17. ROME April 11-12th 2014 - Gianfranco Reppucci Performance driven Built-in concurrency primitives: • light-weight threads, called goroutines • channels • select statements
  • 18. ROME April 11-12th 2014 - Gianfranco Reppucci I mean, seriously
  • 19. ROME April 11-12th 2014 - Gianfranco Reppucci I mean, seriously
  • 20. ROME April 11-12th 2014 - Gianfranco Reppucci I mean, seriously
  • 21. ROME April 11-12th 2014 - Gianfranco Reppucci Does God exist? • If you have doubts or issues when styling your Go code, you can use gofmt • gofmt’s aim is to format Go files, returning a valid and “beautified” version of the code
  • 22. ROME April 11-12th 2014 - Gianfranco Reppucci A little bit of code
  • 23. ROME April 11-12th 2014 - Gianfranco Reppucci Object Oriented Go
  • 24. ROME April 11-12th 2014 - Gianfranco Reppucci A type declaration ! type Name struct {! ! ! First string! ! ! Middle string! ! ! Last string! ! }
  • 25. ROME April 11-12th 2014 - Gianfranco Reppucci A method declaration ! func (n Name) String() string {! ! ! return fmt.Sprintf(! ! ! ! “%s %c. %s”,! ! ! ! n.First,! ! ! ! n.Middle[0],! ! ! ! n.Last,! ! ! )! ! }
  • 26. ROME April 11-12th 2014 - Gianfranco Reppucci Instancing a Name ! aName := Name{“John”, “Go”, “White”}! ! ! fmt.Println(aName.String())
  • 27. ROME April 11-12th 2014 - Gianfranco Reppucci Goroutines
  • 28. ROME April 11-12th 2014 - Gianfranco Reppucci Given the yell function func yell(word string, seconds int) {! ! time.Sleep(time.Duration(seconds) * time.Second)! ! fmt.Println(word)! }
  • 29. ROME April 11-12th 2014 - Gianfranco Reppucci Guess what’s the output func main() {! ! go yell(“2014”, 5)! ! go yell(“Codemotion”, 1)! ! go yell(“Roma”, 4)! ! time.Sleep(10 * time.Second)! }
  • 30. ROME April 11-12th 2014 - Gianfranco Reppucci Channels
  • 31. ROME April 11-12th 2014 - Gianfranco Reppucci Channels • Implement parallelism and synchronization • Channels can be of any type of data structure, even custom structs • Can be buffered or unbuffered
  • 32. ROME April 11-12th 2014 - Gianfranco Reppucci An example c := make(chan int)! ! go func() {! ! list.Sort()! ! c <- 1! }()! ! doSomethingForAWhile()! <-c
  • 33. ROME April 11-12th 2014 - Gianfranco Reppucci Select statement
  • 34. ROME April 11-12th 2014 - Gianfranco Reppucci Select The select statement is like a switch, but
 it selects over channel operations and
 chooses exactly one of them
  • 35. ROME April 11-12th 2014 - Gianfranco Reppucci An example ticker := time.NewTicker(250 * time.Millisecond)! boom := time.After(1 * time.Second)! ! for {! ! select {! ! ! case <- ticker.C:! ! ! ! fmt.Println(“tick”)! ! ! case <- boom:! ! ! ! fmt.Println(“BOOM!”)! ! ! ! return! ! }! }
  • 36. ROME April 11-12th 2014 - Gianfranco Reppucci Start writing your
 Go code now Open your browser and point it to http://tour.golang.org for a quick tour, or http://play.golang.org to test your own snippets online
  • 37. ROME April 11-12th 2014 - Gianfranco Reppucci Why should I use Go? • Syntax and environments are similar to dynamic languages • Simple language specification • Powerful and lightweight
  • 38. ROME April 11-12th 2014 - Gianfranco Reppucci Why should I use Go? • Full development environment
 (doc, dependencies, formatter, tests) • Static compilation
 with NO dependencies binary output • Multi environment build
  • 39. ROME April 11-12th 2014 - Gianfranco Reppucci So, what’s Go about?
  • 40. ROME April 11-12th 2014 - Gianfranco Reppucci Composition • Go is Object Oriented,
 BUT not in the usual way! • Simple data models, simple interfaces
  • 41. ROME April 11-12th 2014 - Gianfranco Reppucci Concurrency • Easily readable concurrency primitives
  • 42. ROME April 11-12th 2014 - Gianfranco Reppucci Gophers
  • 43. ROME April 11-12th 2014 - Gianfranco Reppucci
  • 44. ROME April 11-12th 2014 - Gianfranco Reppucci Join us tonight GOLANGIT Meetup 18:40 - 19.40
  • 45. ROME April 11-12th 2014 - Gianfranco Reppucci Thank you! Gianfranco Reppucci giefferre
  • 46. ROME April 11-12th 2014 - Gianfranco Reppucci References • The gopher images were created by Renee French and they are Creative Commons Attribution 3.0 licensed • What technology should my startup use? by Matt Aimonetti • Go after four months by Graham King • Golang on Google’s App Engine
  • 47. ROME April 11-12th 2014 - Gianfranco Reppucci References • List of organizations that use Go • The gopher look, a photo by Ken Conley • How we went from 30 servers to 2 by Travis Reeder • Go after 2 years in production by Travis Reeder • Computer Language Benchmarks Game
  • 48. ROME April 11-12th 2014 - Gianfranco Reppucci References • Go at Google • Docker and Go: why did we decide to write docker in Go?