the longer you will take to solve a production issue. Accessing libraries registry may need Github mirroring. Targeting several OS can become painful Deployment with Rails at Parse.com 20 minutes to do a full deploy or rollback Unicorn, Capistrano, RVM, lots of gems How We Moved Our API From Ruby to Go and Saved Our Sanity (http://blog.parse.com/learn/how-we-moved-our-api- from-ruby-to-go-and-saved-our-sanity/)
Task within an Application 1 Thread ber CPU/Core Thread operations are costly in time Typical relationsip between threads and processes. http://www.javamex.com/tutorials/threads/how_threads_work.shtml
use, the less it will cost. Dealing with concurrency can become seriously complex. Some interpreted languages does not allow parallelism (CRuby, CPython). Global interpreter lock (https://en.wikipedia.org/wiki/Global_interpreter_lock) Parallelism is a Myth in Ruby (https://www.igvita.com/2008/11/13/concurrency-is-a-myth-in-ruby/)
is not important... - unless you are a programmer , Rob Pike One syntax to rule them all Duck typing checked at compilation No generics No exceptions but error values No inheritance but composition Pointer but no pointer arithmetics
code No libc, but native C FFI. Optimization with Assembly Synchronisation based on CSP (http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) (like Erlang, Rust, Akka in Scala) Use kind of Green Threads mapped on OS threads called goroutine
Go (http://blog.iron.io/2013/03/how-we-went-from-30-servers-to-2-go.html) Dropped from 30 to 2 servers and the second server was used only for redundancy. CPU utilization dropped to less than 5%. Memory usage dropped. Only a "few hundred KB's of memory (on startup) vs our Rails apps which were ~50MB (on startup)".
2007 and Open-sourced in 2009 with a BSD-style license Backed by brilliant engineers: Rob Pike, Kenneth Thomson, Robert Griesemer, Brad Fitzpatrick and many others. Developed to be good targeting server development. In fact, good for a lot of other stu . Gopher by Renée French (http://www.reneefrench.com)
open platform for distributed applications for developers and sysadmins - consul (https://www.consul.io) : Service Discovery - etcd (https://github.com/coreos/etcd) : Key-value store for shared con guration and service discovery - Terraform (https://www.terraform.io) : Terraform is a tool for building, changing, and combining infrastructure safely and e ciently. Others: - Go Mobile (https://github.com/golang/go/wiki/Mobile) : Java <-> Go, Objective-C <-> Go - limetext (http://limetext.org/) : Lime Text is a powerful and elegant text editor primarily developed in Go that aims to be a Free and open-source software successor to Sublime Text. - nes (https://github.com/fogleman/nes) : A Nintendo Entertainment System (NES) emulator written in Go - gopherJS (https://gopherjs.github.io) : GopherJS - A compiler from Go to JavaScript (Goroutine included)
Atlassian, Reddit, Net ix, Facebook, Dropbox, Disqus, Tumblr, Twitch, Heroku, Cloudfare, SoundCloud,... Nerds: - Github, Sourcegraph You did not expect them: - BBC, Novartis, Thomson Reuters, The New-York Times Games: - Zynga More Golang User (https://code.google.com/p/go-wiki/wiki/GoUsers)
3.14 b := "some string" var c float32 = 3.14 var d string = "some string" fmt.Println("a:", a) fmt.Println("b:", b) fmt.Println("c:", c) fmt.Println("d:", d) } Run
struct { Name string } func (p Person) changeName(name string) { p.Name = name } func main() { a := Person{Name: "Georges"} b := &Person{Name: "Martin"} a.changeName("Justin") b.changeName("Justin") fmt.Println("A:", a) fmt.Println("B:", b) } Run
walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck James Whitcomb Riley Go deals with polymorphism through the concept of interface No need to import the interface, just implement