SlideShare una empresa de Scribd logo
1 de 42
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

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...Natale Vinto
 
Ubuntu Phone: the community smartphone
Ubuntu Phone: the community smartphoneUbuntu Phone: the community smartphone
Ubuntu Phone: the community smartphoneGiulio Collura
 
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...Marco Parenzan
 
Iced tea, la macchina virtuale Java libera
Iced tea, la macchina virtuale Java liberaIced tea, la macchina virtuale Java libera
Iced tea, la macchina virtuale Java liberaVitalij Zadneprovskij
 
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
 
Introduzione alla localizzazione web
Introduzione alla localizzazione webIntroduzione alla localizzazione web
Introduzione alla localizzazione webQabiria
 
Html5 apps - GWT oriented
Html5 apps - GWT orientedHtml5 apps - GWT oriented
Html5 apps - GWT orientedfirenze-gtug
 
Faccio cose. Vedo gente. Localizzo siti.
Faccio cose. Vedo gente. Localizzo siti.Faccio cose. Vedo gente. Localizzo siti.
Faccio cose. Vedo gente. Localizzo siti.Qabiria
 
Streaming in Java e Flex con Red5
Streaming in Java e Flex con Red5Streaming in Java e Flex con Red5
Streaming in Java e Flex con Red5Marcello Teodori
 
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 tecnicaBergamo Linux Users Group
 

La actualidad más candente (19)

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...
 
Ubuntu Phone: the community smartphone
Ubuntu Phone: the community smartphoneUbuntu Phone: the community smartphone
Ubuntu Phone: the community smartphone
 
Git e Git Flow
Git e Git Flow Git e Git Flow
Git e Git Flow
 
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...
 
Progetto Linux va a scuola
Progetto Linux va a scuolaProgetto Linux va a scuola
Progetto Linux va a scuola
 
Iced tea, la macchina virtuale Java libera
Iced tea, la macchina virtuale Java liberaIced tea, la macchina virtuale Java libera
Iced tea, la macchina virtuale Java libera
 
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
 
Go on AppEngine
Go on AppEngineGo on AppEngine
Go on AppEngine
 
Introduzione alla localizzazione web
Introduzione alla localizzazione webIntroduzione alla localizzazione web
Introduzione alla localizzazione web
 
Html5 apps - GWT oriented
Html5 apps - GWT orientedHtml5 apps - GWT oriented
Html5 apps - GWT oriented
 
Git e GitHub
Git e GitHubGit e GitHub
Git e GitHub
 
Faccio cose. Vedo gente. Localizzo siti.
Faccio cose. Vedo gente. Localizzo siti.Faccio cose. Vedo gente. Localizzo siti.
Faccio cose. Vedo gente. Localizzo siti.
 
Streaming in Java e Flex con Red5
Streaming in Java e Flex con Red5Streaming in Java e Flex con Red5
Streaming in Java e Flex con Red5
 
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
 
Introduzione a Python e GitHub
Introduzione a Python e GitHub Introduzione a Python e GitHub
Introduzione a Python e GitHub
 
Anatomia di un progetto open-source
Anatomia di un progetto open-sourceAnatomia di un progetto open-source
Anatomia di un progetto open-source
 
Git branching model
Git branching modelGit branching model
Git branching model
 
Perchè Git?
Perchè Git?Perchè Git?
Perchè Git?
 
Drush make vs composer
 Drush make vs composer Drush make vs composer
Drush make vs composer
 

Destacado

KDE Plasma widgets
KDE Plasma widgetsKDE Plasma widgets
KDE Plasma widgetsPietro Lerro
 
Sviluppare su OpenOffice.org con Java
Sviluppare su OpenOffice.org con JavaSviluppare su OpenOffice.org con Java
Sviluppare su OpenOffice.org con JavaMarcello Teodori
 
Java ME per palmari e PDA
Java ME per palmari e PDAJava ME per palmari e PDA
Java ME per palmari e PDAStefano Sanna
 
Android App Development - Unimore
Android App Development - UnimoreAndroid App Development - Unimore
Android App Development - UnimoreNicola Corti
 
Android App Development, Creare la nostra prima app
Android App Development, Creare la nostra prima appAndroid App Development, Creare la nostra prima app
Android App Development, Creare la nostra prima appNicola Corti
 

Destacado (6)

KDE Plasma widgets
KDE Plasma widgetsKDE Plasma widgets
KDE Plasma widgets
 
Sviluppare su OpenOffice.org con Java
Sviluppare su OpenOffice.org con JavaSviluppare su OpenOffice.org con Java
Sviluppare su OpenOffice.org con Java
 
Corso UML
Corso UMLCorso UML
Corso UML
 
Java ME per palmari e PDA
Java ME per palmari e PDAJava ME per palmari e PDA
Java ME per palmari e PDA
 
Android App Development - Unimore
Android App Development - UnimoreAndroid App Development - Unimore
Android App Development - Unimore
 
Android App Development, Creare la nostra prima app
Android App Development, Creare la nostra prima appAndroid App Development, Creare la nostra prima app
Android App Development, Creare la nostra prima app
 

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

Sviluppare plugin per google Chrome
Sviluppare plugin per google ChromeSviluppare plugin per google Chrome
Sviluppare plugin per google ChromeCodemotion
 
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 intelligenceGiulio Roggero
 
Deno - L'anagramma di node
Deno - L'anagramma di nodeDeno - L'anagramma di node
Deno - L'anagramma di nodeFrancesco Sciuti
 
GAE python GDG Milano - L01
GAE python GDG Milano - L01GAE python GDG Milano - L01
GAE python GDG Milano - L01Paolo Dadda
 
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 MonoTouchStefano Ottaviani
 
Fastify has defeated Lagacy-Code
Fastify has defeated Lagacy-CodeFastify has defeated Lagacy-Code
Fastify has defeated Lagacy-CodeCommit University
 
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...Roberto Ellero
 
WUI con Google Polymer
WUI con Google PolymerWUI con Google Polymer
WUI con Google PolymerNaLUG
 
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 2012Bizup
 
Sviluppare con Portofino
Sviluppare con PortofinoSviluppare con Portofino
Sviluppare con PortofinoNaLUG
 
Introduzione a CoderDojo
Introduzione a CoderDojoIntroduzione a CoderDojo
Introduzione a CoderDojoagnese addone
 
Formati aperti vs formati proprietari
Formati aperti vs formati proprietariFormati aperti vs formati proprietari
Formati aperti vs formati proprietariRiccardo Zanella
 
formazione al coding.pdf
formazione al coding.pdfformazione al coding.pdf
formazione al coding.pdfLaura Antichi
 
Python per tutti
Python per tuttiPython per tutti
Python per tuttimasci
 
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.orgAntonio Gallo
 
Smau milano 2012 arena social media davide-senatore
Smau milano 2012   arena social media davide-senatoreSmau milano 2012   arena social media davide-senatore
Smau milano 2012 arena social media davide-senatoreSMAU
 
Applicazioni mobili: strumenti, costi soluzioni e peformance
Applicazioni mobili: strumenti, costi soluzioni e peformanceApplicazioni mobili: strumenti, costi soluzioni e peformance
Applicazioni mobili: strumenti, costi soluzioni e peformanceDiego La Monica
 
Stato della arte di Plone: verso Plone 6
Stato della arte di Plone: verso Plone 6Stato della arte di Plone: verso Plone 6
Stato della arte di Plone: verso Plone 6Stefano Marchetti
 

Similar a I came, I saw, I GO! - Golangit meetup @ Codemotion Rome 2014 (20)

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
 
Deno - L'anagramma di node
Deno - L'anagramma di nodeDeno - L'anagramma di node
Deno - L'anagramma di node
 
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
 
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
 
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
 
Smau milano 2012 arena social media davide-senatore
Smau milano 2012   arena social media davide-senatoreSmau milano 2012   arena social media davide-senatore
Smau milano 2012 arena social media davide-senatore
 
Applicazioni mobili: strumenti, costi soluzioni e peformance
Applicazioni mobili: strumenti, costi soluzioni e peformanceApplicazioni mobili: strumenti, costi soluzioni e peformance
Applicazioni mobili: strumenti, costi soluzioni e peformance
 
Stato della arte di Plone: verso Plone 6
Stato della arte di Plone: verso Plone 6Stato della arte di Plone: verso Plone 6
Stato della arte di Plone: verso Plone 6
 

Más de Giorgio Cefaro

Alexa, AWS lambda & wikidata (ITA)
Alexa, AWS lambda & wikidata (ITA)Alexa, AWS lambda & wikidata (ITA)
Alexa, AWS lambda & wikidata (ITA)Giorgio Cefaro
 
PHP object calisthenics
PHP object calisthenicsPHP object calisthenics
PHP object calisthenicsGiorgio Cefaro
 
Import golang; struct microservice - Codemotion Rome 2015
Import golang; struct microservice - Codemotion Rome 2015Import golang; struct microservice - Codemotion Rome 2015
Import golang; struct microservice - Codemotion Rome 2015Giorgio Cefaro
 
Nanos gigantium humeris insidentes (design patterns inside symfony 2)
Nanos gigantium humeris insidentes (design patterns inside symfony 2)Nanos gigantium humeris insidentes (design patterns inside symfony 2)
Nanos gigantium humeris insidentes (design patterns inside symfony 2)Giorgio Cefaro
 
Datagrids with Symfony 2, Backbone and Backgrid
Datagrids with Symfony 2, Backbone and BackgridDatagrids with Symfony 2, Backbone and Backgrid
Datagrids with Symfony 2, Backbone and BackgridGiorgio Cefaro
 
High Performance Web Apps con PHP e Symfony 2
High Performance Web Apps con PHP  e Symfony 2High Performance Web Apps con PHP  e Symfony 2
High Performance Web Apps con PHP e Symfony 2Giorgio Cefaro
 
An introduction to Symfony 2 for symfony 1 developers
An introduction to Symfony 2 for symfony 1 developersAn introduction to Symfony 2 for symfony 1 developers
An introduction to Symfony 2 for symfony 1 developersGiorgio Cefaro
 
Netbeans e Xdebug per debugging e profiling di applicazioni PHP
Netbeans e Xdebug per debugging e profiling di applicazioni PHPNetbeans e Xdebug per debugging e profiling di applicazioni PHP
Netbeans e Xdebug per debugging e profiling di applicazioni PHPGiorgio Cefaro
 

Más de Giorgio Cefaro (11)

Alexa, AWS lambda & wikidata (ITA)
Alexa, AWS lambda & wikidata (ITA)Alexa, AWS lambda & wikidata (ITA)
Alexa, AWS lambda & wikidata (ITA)
 
PHP object calisthenics
PHP object calisthenicsPHP object calisthenics
PHP object calisthenics
 
Don't fear the rebase
Don't fear the rebaseDon't fear the rebase
Don't fear the rebase
 
jsDay 2016 recap
jsDay 2016 recapjsDay 2016 recap
jsDay 2016 recap
 
Import golang; struct microservice - Codemotion Rome 2015
Import golang; struct microservice - Codemotion Rome 2015Import golang; struct microservice - Codemotion Rome 2015
Import golang; struct microservice - Codemotion Rome 2015
 
Nanos gigantium humeris insidentes (design patterns inside symfony 2)
Nanos gigantium humeris insidentes (design patterns inside symfony 2)Nanos gigantium humeris insidentes (design patterns inside symfony 2)
Nanos gigantium humeris insidentes (design patterns inside symfony 2)
 
Datagrids with Symfony 2, Backbone and Backgrid
Datagrids with Symfony 2, Backbone and BackgridDatagrids with Symfony 2, Backbone and Backgrid
Datagrids with Symfony 2, Backbone and Backgrid
 
High Performance Web Apps con PHP e Symfony 2
High Performance Web Apps con PHP  e Symfony 2High Performance Web Apps con PHP  e Symfony 2
High Performance Web Apps con PHP e Symfony 2
 
From LAMP to LNNP
From LAMP to LNNPFrom LAMP to LNNP
From LAMP to LNNP
 
An introduction to Symfony 2 for symfony 1 developers
An introduction to Symfony 2 for symfony 1 developersAn introduction to Symfony 2 for symfony 1 developers
An introduction to Symfony 2 for symfony 1 developers
 
Netbeans e Xdebug per debugging e profiling di applicazioni PHP
Netbeans e Xdebug per debugging e profiling di applicazioni PHPNetbeans e Xdebug per debugging e profiling di applicazioni PHP
Netbeans e Xdebug per debugging e profiling di applicazioni PHP
 

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