際際滷

際際滷Share a Scribd company logo
GOLANGIT
Italian gophers!
I came, I saw, I GO!
2014 golangit meetup @
@giorrrgio
@liuggio
GOLANGIT
I founder
GOLANGIT
Nascita di un logo
original gopher by Ren辿e French
GOLANGIT
Nascita di un logo
Creare un punto di
riferimento per gli
sviluppatori GO italiani
GOLANGIT
Uno UG dedicato a GO
Lavorare insieme per far
diffondere go nel mercato
italiano
GOLANGIT
Uno UG dedicato a GO
Aiutare i neofiti a crescere
GOLANGIT
Uno UG dedicato a GO
da dove partire?
GOLANGIT
Uno UG dedicato a GO
sudo apt-get install golang
GOLANGIT
Uno UG dedicato a GO
GOLANGIT
Uno UG dedicato a GO
Parlane con i tuoi amici
nerd!
GOLANGIT
Uno UG dedicato a GO
Nella prossima soa in cui
metterai mano, un
servizio go sar il tuo
apprezzatissmo easter
egg!
GOLANGIT
Uno UG dedicato a GO
Aspettiamo le tue PR :-)
http://golangit.github.io
GOLANGIT
Uno UG dedicato a GO
GOLANGIT
Perch辿 GO?
Abbiamo troppi core!
GOLANGIT
Problema 1
Abbiamo bisogno di un linguaggio di
programmazione di basso livello
che ci permetta di sfruttare
efficientemente le architetture
multiprocessore
GOLANGIT
Problema 2
S狸, ma ...
GOLANGIT
ERLANG?
GOLANGIT
ERLANG?
GOLANGIT
ERLANG?
Linguaggio di basso livello per lo
sviluppo su architetture
multiprocessore
GOLANGIT
GOLANG!
Nato con la concorrenza
in mente
GOLANGIT
GOLANG!
Nato con la semplicit
in mente
GOLANGIT
GOLANG!
no type inheritance
no method or operator overloading
no circular dependencies among
packages
no pointer arithmetic
no assertions
no generic programming
GOLANGIT
GOLANG!
Scrivere software multi-
thread
non 竪 complicato
GOLANGIT
GOLANG - Goroutines e Channels
Non 竪 cos狸 immediato far
comunicare i thread
GOLANGIT
GOLANG - Goroutines e Channels
Communicating
Sequential Processes
canali di comunicazione tra thread
instanziabili direttamente dai
programmi
GOLANGIT
GOLANG - Goroutines e Channels
Feature decisiva per lo sviluppo
multi-thread:
Decidere esattamente quando
distruggere un oggetto condiviso
tra pi湛 thread pu嘆 diventare
davvero complicato.
GOLANGIT
GOLANG - Garbage Collection
No virtual machine
No JIT-compiling
Compilatore statico
GOLANGIT
GOLANG - No large runtime env
archive, bufio, builtin, bytes, compress,
container, crypto, database, debug,
encoding, errors, expvar, flag, fmt, go,
hash, html, image, index, io, log, math,
mime, net, os, path, reflect, regexp,
runtime, sort, strconv, strings,
suffixarray, sync, syscall, testing, text,
time, unicode, unsafe
GOLANGIT
GOLANG - Standard library
net/http: webserver integrato
fastcgi: utilizzabile con qualsiasi
webserver
GOLANGIT
GOLANG - Amico del webdev
Occhio: una request, una nuova
goroutine
Possibilit di condivisione channel
tra diverse request (e quindi
client)
GOLANGIT
GOLANG - Amico del webdev
HTTP CLIENT
Html parsing
Templating
GOLANGIT
GOLANG - Amico del webdev
Google (ma dai?) - Docker -
Canonical - Heroku -
Digital Ocean - SoundCloud
- Bitly - CloudFlare - BBC
World News - Nokia
Siemens Networks
GOLANGIT
GOLANG - Chi usa Go
GOLANGIT
OH MY GO ANOTHER LANGUAGE ...
GOLANGIT
Go to 60
GOLANGIT
Go to 78
GOLANGIT
Go to 2007
GOLANGIT
GO SCALABILITY
GOLANGIT
GO FEATURES
// Java / php style
Class MyGreatService
{
doSomething(AcmeLibLogInterface
logger)
{
logger->info('boom');
}
GOLANGIT
JAVA INTERFACES
// GO LANG
import "...loggerFunnyLib"
type logger interface {
info()
}
func doSomething(log logger) {
log.info('boom')
}
GOLANGIT
GO INTERFACES
GOLANGIT
Reference
http://www.meetup.com/golangit/
https://golangit.github.io
golangit su google groups

More Related Content

I came, I saw, I GO! - Golangit meetup @ Codemotion Rome 2014