i came, i saw, i go! - golangit meetup @ codemotion rome 2014

Post on 18-May-2015

623 Views

Category:

Software

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Primo Meetup dello user group Golangit al Codemotion 2014 di Roma. Introduzione al gruppo e al linguaggio.

TRANSCRIPT

GOLANGITItalian 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 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

top related