Good artists borrow,
	 	 	 	 	 	 	 great artists steal.
                              — Pablo Picasso




The Go Programmi...
TIOBE Index Platz 13
               Sprache des Jahres 2009                                13




    0     0     0     0 ...
Ende 20  07 Star t durch
 Rober t Griese mer, Rob Pike
     und K en Thompson
                     Design Mitte 20
       ...
In etwa
                         C   Geschwindigkeit




Hohe Geschwindigkeit
10
           Sekunden
           584 Dateien
           4,1 MB




Compiling der Go Packages
Einfachheit
Organisation in Paketen
Export durch Großschreibung
Typenvielfalt
Wahrheitswerte        Maps    Referenzen

  Strukturen      Zahlen von 8 bis 64 Bit

   Arrays und Slices       Zeichenket...
Implizite Variablendeklaration
Vielfältige und mächtige Schleifen
Klare Strukturen
String


   Open                   IsOpen

                MyType

   Close                   Size



Typen und Methoden
type Door struct { ... }

func NewDoor(width, height float64) *Door { ... }

func (d *Door) Open() { ... }

func (d *Door)...
Schnittstellen zur Abstraktion
type Foo int64
type Bar struct { id string }

type TypePrintable interface {
   PrintType() string
}

func (f Foo) PrintTy...
Nebenläufigkeit
package event

type Event interface { ... }

type Handler interface {
   Id()
   Handle(evt Event)
}

type Manager struct ...
func NewManager() *Manager {
   sub := make(map[string]Handler)
   subc := make(chan Handler)
   evtc := make(chan Event)
...
func (m *Manager) Subscribe(h Handler) {
   m.subscribeChan <- h
}

func (m *Manager) Raise(e Event) {
   m.eventChan <- e...
func (m *Manager) server() {
   for {
      select {
      case h := <-subscribeChan:
         m.subscribers[h.Id()] = h
 ...
Speicherverwaltung
Umfangreiche Bibliothek
gofmt     gotest       prof
                              make
  godoc




Hilfreiche Werkzeuge
Fazit und Ausblick
Einfache Erlernbarkeit

                              Nahe an d
                                        ynamischen
       ...
Performanz / Spaß / Technologie
Upcoming SlideShare
Loading in …5
×

Google Go - Good artists borrow, great artists steal.

1,591 views

Published on

CeBIT 2010 - Introduction into Google Go

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,591
On SlideShare
0
From Embeds
0
Number of Embeds
33
Actions
Shares
0
Downloads
42
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide




  • Standardpakete























  • Google Go - Good artists borrow, great artists steal.

    1. 1. Good artists borrow, great artists steal. — Pablo Picasso The Go Programming Language Frank Müller
    2. 2. TIOBE Index Platz 13 Sprache des Jahres 2009 13 0 0 0 0 0 0 0 0 0 0 0 Jan Feb Mär Apr Mai Jun Jul Aug Sep Okt Nov Dez Steile Karriere
    3. 3. Ende 20 07 Star t durch Rober t Griese mer, Rob Pike und K en Thompson Design Mitte 20 08 fer tig, Implementierung beginnt ntlic hung Veröf fe mber 2009 Zielsetzung: N ove schnelle, einfache und moderne Systemsprache Historie und Motivation
    4. 4. In etwa C Geschwindigkeit Hohe Geschwindigkeit
    5. 5. 10 Sekunden 584 Dateien 4,1 MB Compiling der Go Packages
    6. 6. Einfachheit
    7. 7. Organisation in Paketen
    8. 8. Export durch Großschreibung
    9. 9. Typenvielfalt
    10. 10. Wahrheitswerte Maps Referenzen Strukturen Zahlen von 8 bis 64 Bit Arrays und Slices Zeichenketten Schnittstellen Funktionen Kanäle Standardtypen
    11. 11. Implizite Variablendeklaration
    12. 12. Vielfältige und mächtige Schleifen
    13. 13. Klare Strukturen
    14. 14. String Open IsOpen MyType Close Size Typen und Methoden
    15. 15. type Door struct { ... } func NewDoor(width, height float64) *Door { ... } func (d *Door) Open() { ... } func (d *Door) Close() { ... } func (d *Door) IsOpen() bool { ... } func (d *Door) Size() (float64, float64) { ... } func (d *Door) String() string { ... } Typen und Methoden
    16. 16. Schnittstellen zur Abstraktion
    17. 17. type Foo int64 type Bar struct { id string } type TypePrintable interface { PrintType() string } func (f Foo) PrintType() string { return “I‘m a Foo (int64).“ } func (b Bar) PrintType() string { return “I‘m a Bar (struct).“ } Schnittstellen
    18. 18. Nebenläufigkeit
    19. 19. package event type Event interface { ... } type Handler interface { Id() Handle(evt Event) } type Manager struct { subscribers   map[string]Handler subscribeChan chan Handler eventChan     chan Event stopChan      chan bool } Beispiel (Teil 1)
    20. 20. func NewManager() *Manager { sub := make(map[string]Handler) subc := make(chan Handler) evtc := make(chan Event) stpc := make(chan bool) mngr := &Manager{sub, subc, evtc, stpc} go mngr.server() return mngr } Beispiel (Teil 2)
    21. 21. func (m *Manager) Subscribe(h Handler) { m.subscribeChan <- h } func (m *Manager) Raise(e Event) { m.eventChan <- e } func (m *Manager) Stop() { m.stopChan <- true } Beispiel (Teil 3)
    22. 22. func (m *Manager) server() { for { select { case h := <-subscribeChan: m.subscribers[h.Id()] = h case e := <-eventChan: for _, h := range m.subscribers { go h.Handle(e) } case <-stopChan: return } } } Beispiel (Teil 4)
    23. 23. Speicherverwaltung
    24. 24. Umfangreiche Bibliothek
    25. 25. gofmt gotest prof make godoc Hilfreiche Werkzeuge
    26. 26. Fazit und Ausblick
    27. 27. Einfache Erlernbarkeit Nahe an d ynamischen htige Sprachen Mäc enläu figkeit Neb r t Umd enken e r forde Sehr hohe Produktivität Erfahrungen
    28. 28. Performanz / Spaß / Technologie

    ×