SlideShare ist ein Scribd-Unternehmen logo
1 von 42
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017
MongoDB
 

Was ist angesagt? (20)

Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
 
Introduzione a Docker (Maggio 2017) [ITA]
Introduzione a Docker (Maggio 2017) [ITA]Introduzione a Docker (Maggio 2017) [ITA]
Introduzione a Docker (Maggio 2017) [ITA]
 
Introduzione a Docker (parte 2 - Pratica)
Introduzione a Docker (parte 2 - Pratica)Introduzione a Docker (parte 2 - Pratica)
Introduzione a Docker (parte 2 - Pratica)
 
Vagrant e Docker a confronto;scegliere ed iniziare
Vagrant e  Docker a confronto;scegliere ed iniziareVagrant e  Docker a confronto;scegliere ed iniziare
Vagrant e Docker a confronto;scegliere ed iniziare
 
[drupalday2017] - DevOps: strumenti di automazione per Drupal8
[drupalday2017] - DevOps: strumenti di automazione per Drupal8[drupalday2017] - DevOps: strumenti di automazione per Drupal8
[drupalday2017] - DevOps: strumenti di automazione per Drupal8
 
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
 
Docker Fudamentals
Docker FudamentalsDocker Fudamentals
Docker Fudamentals
 
Closure Visto Da Vicino
Closure Visto Da VicinoClosure Visto Da Vicino
Closure Visto Da Vicino
 
Mobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web DevelopersMobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web Developers
 
I linguaggi di programmazione e il mondo open-source
I linguaggi di programmazione e il mondo open-sourceI linguaggi di programmazione e il mondo open-source
I linguaggi di programmazione e il mondo open-source
 
Introduzione pratica a docker, da chi lo ha appena conosciuto
Introduzione pratica a docker, da chi lo ha appena conosciutoIntroduzione pratica a docker, da chi lo ha appena conosciuto
Introduzione pratica a docker, da chi lo ha appena conosciuto
 
Ubuntu Touch: Sviluppo App e Convergenza
Ubuntu Touch: Sviluppo App e ConvergenzaUbuntu Touch: Sviluppo App e Convergenza
Ubuntu Touch: Sviluppo App e Convergenza
 
Automation Night (Docker)
Automation Night (Docker)Automation Night (Docker)
Automation Night (Docker)
 
Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017
 
Progetto Linux va a scuola - Descrizione tecnica
Progetto Linux va a scuola - Descrizione tecnicaProgetto Linux va a scuola - Descrizione tecnica
Progetto Linux va a scuola - Descrizione tecnica
 
Progetto Linux va a scuola
Progetto Linux va a scuolaProgetto Linux va a scuola
Progetto Linux va a scuola
 
Conferenza Pymaemo
Conferenza PymaemoConferenza Pymaemo
Conferenza Pymaemo
 
Introduzione DevOps con Ansible
Introduzione DevOps con AnsibleIntroduzione DevOps con Ansible
Introduzione DevOps con Ansible
 
App Engine + Python
App Engine + PythonApp Engine + Python
App Engine + Python
 
Anatomia di un progetto open-source
Anatomia di un progetto open-sourceAnatomia di un progetto open-source
Anatomia di un progetto open-source
 

Ähnlich wie I came i saw i go - golang it meetup codemotion rome 2014

Costruisci la tua piattaforma open-source di video-sharing in Python
Costruisci la tua piattaforma open-source di video-sharing in Python Costruisci la tua piattaforma open-source di video-sharing in Python
Costruisci la tua piattaforma open-source di video-sharing in Python
simahawk
 

Ähnlich wie I came i saw i go - golang it meetup codemotion rome 2014 (20)

Go on AppEngine
Go on AppEngineGo on AppEngine
Go on AppEngine
 
Sviluppare plugin per google Chrome
Sviluppare plugin per google ChromeSviluppare plugin per google Chrome
Sviluppare plugin per google Chrome
 
Do pair programming with an artificial intelligence
Do pair programming with an artificial intelligenceDo pair programming with an artificial intelligence
Do pair programming with an artificial intelligence
 
Adesso In Onda
Adesso In OndaAdesso In Onda
Adesso In Onda
 
GAE python GDG Milano - L01
GAE python GDG Milano - L01GAE python GDG Milano - L01
GAE python GDG Milano - L01
 
Programmiamo iPhone e iPad (e non solo!) con MonoTouch
Programmiamo iPhone e iPad (e non solo!) con MonoTouchProgrammiamo iPhone e iPad (e non solo!) con MonoTouch
Programmiamo iPhone e iPad (e non solo!) con MonoTouch
 
Fastify has defeated Lagacy-Code
Fastify has defeated Lagacy-CodeFastify has defeated Lagacy-Code
Fastify has defeated Lagacy-Code
 
Golang Introduzione
Golang IntroduzioneGolang Introduzione
Golang Introduzione
 
SMAU 2010 - Scenari futuri del Video-on-the-Web: selezione o coabitazione dei...
SMAU 2010 - Scenari futuri del Video-on-the-Web: selezione o coabitazione dei...SMAU 2010 - Scenari futuri del Video-on-the-Web: selezione o coabitazione dei...
SMAU 2010 - Scenari futuri del Video-on-the-Web: selezione o coabitazione dei...
 
WUI con Google Polymer
WUI con Google PolymerWUI con Google Polymer
WUI con Google Polymer
 
International SEO - Come localizzare il proprio Sito - Monari Convegno GT 2012
International SEO - Come localizzare il proprio Sito - Monari Convegno GT 2012International SEO - Come localizzare il proprio Sito - Monari Convegno GT 2012
International SEO - Come localizzare il proprio Sito - Monari Convegno GT 2012
 
Sviluppare con Portofino
Sviluppare con PortofinoSviluppare con Portofino
Sviluppare con Portofino
 
Introduzione a CoderDojo
Introduzione a CoderDojoIntroduzione a CoderDojo
Introduzione a CoderDojo
 
Formati aperti vs formati proprietari
Formati aperti vs formati proprietariFormati aperti vs formati proprietari
Formati aperti vs formati proprietari
 
Html5 apps - GWT oriented
Html5 apps - GWT orientedHtml5 apps - GWT oriented
Html5 apps - GWT oriented
 
Costruisci la tua piattaforma open-source di video-sharing in Python
Costruisci la tua piattaforma open-source di video-sharing in Python Costruisci la tua piattaforma open-source di video-sharing in Python
Costruisci la tua piattaforma open-source di video-sharing in Python
 
MonoTouch, un anno dopo
MonoTouch, un anno dopoMonoTouch, un anno dopo
MonoTouch, un anno dopo
 
formazione al coding.pdf
formazione al coding.pdfformazione al coding.pdf
formazione al coding.pdf
 
Python per tutti
Python per tuttiPython per tutti
Python per tutti
 
VoIP e Software Libero - Antonio Gallo - www.badpenguin.org
VoIP e Software Libero - Antonio Gallo - www.badpenguin.orgVoIP e Software Libero - Antonio Gallo - www.badpenguin.org
VoIP e Software Libero - Antonio Gallo - www.badpenguin.org
 

Mehr von Giulio De Donato

Leaphly fight monolothic today
Leaphly fight monolothic todayLeaphly fight monolothic today
Leaphly fight monolothic today
Giulio De Donato
 

Mehr von Giulio De Donato (13)

Docker italia fatti un container tutto tuo
Docker italia fatti un container tutto tuoDocker italia fatti un container tutto tuo
Docker italia fatti un container tutto tuo
 
Lets isolate a process with no container like docker
Lets isolate a process with no container like dockerLets isolate a process with no container like docker
Lets isolate a process with no container like docker
 
More developers on DevOps with Docker orchestration
More developers on DevOps with Docker orchestrationMore developers on DevOps with Docker orchestration
More developers on DevOps with Docker orchestration
 
really really really awesome php application with bdd behat and iterfaces
really really really awesome php application with bdd behat and iterfacesreally really really awesome php application with bdd behat and iterfaces
really really really awesome php application with bdd behat and iterfaces
 
Import golang; struct microservice
Import golang; struct microserviceImport golang; struct microservice
Import golang; struct microservice
 
Json web token api authorization
Json web token api authorizationJson web token api authorization
Json web token api authorization
 
Think horizontally ood, ddd and bdd
Think horizontally ood, ddd and bddThink horizontally ood, ddd and bdd
Think horizontally ood, ddd and bdd
 
Benchmark Profile and Boost your Symfony application
Benchmark Profile and Boost your Symfony applicationBenchmark Profile and Boost your Symfony application
Benchmark Profile and Boost your Symfony application
 
Leaphly fight monolothic today
Leaphly fight monolothic todayLeaphly fight monolothic today
Leaphly fight monolothic today
 
It's all about behaviour, also in php - phpspec
It's all about behaviour, also in php - phpspecIt's all about behaviour, also in php - phpspec
It's all about behaviour, also in php - phpspec
 
Design pattern in Symfony2 - Nanos gigantium humeris insidentes
Design pattern in Symfony2 - Nanos gigantium humeris insidentesDesign pattern in Symfony2 - Nanos gigantium humeris insidentes
Design pattern in Symfony2 - Nanos gigantium humeris insidentes
 
Caching and data analysis will move your Symfony2 application to the next level
Caching and data analysis will move your Symfony2 application to the next levelCaching and data analysis will move your Symfony2 application to the next level
Caching and data analysis will move your Symfony2 application to the next level
 
Rationally boost your symfony2 application with caching tips and monitoring
Rationally boost your symfony2 application with caching tips and monitoringRationally boost your symfony2 application with caching tips and monitoring
Rationally boost your symfony2 application with caching tips and monitoring
 

I came i saw i go - golang it meetup codemotion rome 2014