I came, i saw, i go - Cefaro and De Donato
-
Upload
codemotion -
Category
Technology
-
view
366 -
download
1
description
Transcript of I came, i saw, i go - Cefaro and De Donato
@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 tuoapprezzatissmo 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 inheritanceno method or operator overloadingno circular dependencies among packagesno pointer arithmeticno assertionsno 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
CommunicatingSequential 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 CLIENTHtml 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(\AcmeLib\LogInterface 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