Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Go - A great language for building web applicat...
Search
sporto
September 06, 2013
1
320
Go - A great language for building web applications
sporto
September 06, 2013
Tweet
Share
More Decks by sporto
See All by sporto
React inside Elm
sporto
2
170
Elm
sporto
1
250
Redux: Flux Reduced
sporto
1
330
Practically Immutable
sporto
0
180
Webpack and React
sporto
4
380
Rails with Webpack
sporto
1
210
Lesson learnt building Single Page Application
sporto
0
120
Grunt
sporto
1
170
Safe Testing in Ruby
sporto
1
120
Featured
See All Featured
Building an army of robots
kneath
302
45k
The Cult of Friendly URLs
andyhume
78
6.1k
GraphQLの誤解/rethinking-graphql
sonatard
68
10k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
960
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
174
51k
RailsConf 2023
tenderlove
29
970
The Invisible Side of Design
smashingmag
299
50k
Automating Front-end Workflow
addyosmani
1366
200k
Statistics for Hackers
jakevdp
797
220k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Reflections from 52 weeks, 52 projects
jeffersonlam
348
20k
Transcript
Go Why use it for building web application? @sebasporto
Comparing it to languages I use and love Ruby JavaScript
To start with + Lightweight + Relatively easy to learn
+ Familiar
It is fast
Bubble sort benchmark # ruby bubble.call([2, 10, 1, 9, 5,
6, 8, 3, 7, 4]) // JS bubble([2, 10, 1, 9, 5, 6, 8, 3, 7, 4]); // Go arr := []int{2, 10, 1, 9, 5, 6, 8, 3, 7, 4} bubble(arr) Code here
It is fast! 190x faster than Ruby
Concurrency as core feature
Concurrency - Parallel requests
None
Concurrency - Parallel requests Ruby Mutex and Threads :( EventMachine
:(
Concurrency - Parallel requests Node.js var defX = Q.defer(); var
defY = Q.defer(); var oneAndTwo = Q .all([defX.promise, defY.promise]) .then(processConcat); requestValue('/x', defX); requestValue('/y', defY);
Concurrency - Parallel requests Go var cx chan string =
make(chan string) var cy chan string = make(chan string) go requestValue("/x", cx) go requestValue("/y", cy) x := <-‐cx y := <-‐cy processConcat(x, y)
Efficient memory usage
# Run benchmark ab -‐n 10000 -‐c 100 http://127.0.0.1:8100/ Node.js
FATAL ERROR: (...) process out of memory Go Time taken for tests: 20.689 seconds Complete requests: 10000 # No problems
Rich standard library + Http + Templating + JSON
Static typing (+ IMO) + More robust + Easier to
refactor + Less tests + Compiler can go crazy with optimisations + Still flexible (with interfaces) + No ceremony
Compiled But ultra fast
Single binary + Compile and deploy + No need to
worry about dependencies, e.g. NPM modules, RubyGems
A lot more + Simple and flexible object system -
composition + Functions as first class + Closures + Standard formating of source code
It is great alternative Try it!
Thanks @sebasporto