-------------------------------------------------------------------------------- Diese Shownotes wurden automatisiert aus extrahiert, siehe . -------------------------------------------------------------------------------- ## Juni 2015 Ankündigung: Das 21. Jahrhundert liefert neue Herausforderungen für Programmierer: Multicore-Prozessoren, immer komplexer werdende Software, verteilte Systeme. Die Entwickler der Programmiersprache Go verfolgen den Ansatz, es einfach zu machen, sichere und effiziente Software zu schreiben. In dieser Sendung wollen wir euch die Programmiersprache näher vorstellen. Shownotes: Drogenkartell benutzt 39 Straßenkameras Avast gibt Nutzungsdaten an Analysefimren UN-Beauftragter wirbt für Verschlüsselung SSH-Keys auf Github ausgewertet Trojaner-Angriff auf den Bundestag Edward Snowden Platz in Dresden 200. Datenbankstammtisch: Bibliotheken in Go: Gopher Team bei Google Go-Race Detector: Go 1.5: Go in Go geschrieben Projekte in Go: News (BSI) sei zu dem Ergebnis gekommen, dass das Netz nicht mehr gegen den Angriff verteidigt werden könne und aufgegeben werden müsse. 2015-06-30T23:59:60 \* am 17.06. war 200. Datenbankstammtisch, vorgestellt wurden Datenbankerweiterungen in ad-hoc vernetzter Hardware. Künftig werden Datenbank also nicht nur schon im Hauptspeicher residieren, sondern auch schneller rechnen \* Edward Snowden Platz in Dresden, auch mit Freifunk ### Go - 2007 by Robert Griesemer (V8 Code generation, Java Hotspot), Rob Pike (UTF-8, Unix, Plan 9, Limbo), and Ken Thompson (B, Regular Expression, ed, UTF-8 encoding, Plan 9) in Google -\> generft von C++ (Systemsprache bei Google) - Kompilierte, Statisch typisierte Programmiersprache -\> statisch gelinkt, keine Libc-Abhängigkeit, nur Syscalls - Garbage Collection (parallel/stop the world, mark-and-sweep) - Typinterference -\> foo := "string"; - Objektorientierung durch Interfaces (virtual inheritance) und Types - Typen können Methoden haben: type ip4addr uint32 func (ip4addr a) String() { .... } - Mixins -\> Objektorientierung? - Interface conversions and type assertions (Reflexion) type Stringer interface { String() string } var value interface{} // Value provided by caller. switch str := value.(type) { case string: return str case Stringer: return str.String() } - Lambdas - Error as Value -\> Methoden mit mehreren Rückgabewerten - Slices, Maps - string === UTF-8 Strings (Rob Pike hat UTF-8 mit geprägt) - binary data? -\> \[\]byte - explizite Typenkonvertierung (int32 -\> int) - Goroutinen (Greenthreads) - Channels -\> Warteschlange kanal := make(chan string) go func{ fmt.Print(\<-kanal) } kanal \<- "Hallo" - Share by communicating - Defer - Modulekonzept -\> package main Methoden/Variablen mit beginnt Großbuchstaben -\> nach außen sichtbare Methode - Eingebauter C-Compiler -\> Einbinden in C-Header Files + Linker Flags in Go-Kommentar // \#include \ ... C.printf - Plattformabhängiger Code in eignen Dateien -\> (keine \#ifdef Hölle) // +build linux,386 darwin,!cgo \\[\_GOOS\]\[\_GOARCH\].go -\> taskbar_windows.go #### Packetmanagement export GOPATH=\~/go \~/go ├── bin │ ├── gore ├── pkg │ └── linux_amd64 │ └── github.com │ ├── Mic92 │ │ └── lock │ │ ├── filter.a │ │ └── flag.a └── src ├── github.com │ ├── Mic92 │ │ ├── lock go get github.com/\/\ import "github.com.\.\ ### Coole Bibliotheken - Batteries included: -\> Webserver, json, xml, template engine, ssl, kompression, http/smtp/json rpc -\> testing, syscalls, bildformate - Standartbibliothek gut lesbar (kurze Methoden, wenige Verschachtelungen, verlinkt von der Dokumentation) \<-\> glibc - häufig reine Go-Biblioteken (keine C-Wrapper) -\> tls - Seit 1.5: Go in Go ( -\> C verbannt - webanwendungen? -\> Ähnlich Express.js/sinatra/Flask, kleine Modulare Frameworks #### Triva - Gopher Team bei Google - Subject von \#go auf freenode.net: Go, the game (not the silly language) -\> \#go-nuts - golang als Stichwort in Suchmaschinen - keine Stackoverflows -\> continous/resizeable stack Tooling: AST-Parser in stdlib + einfache Syntax -\> eingebaut: - gofmt -\> Codeformatierung - pprof -\> profiler mit Webansicht (CPU, Speicher, Goroutinen Locks (- gofix -\> Apirefactoring) - gdb -\> debugger - godoc -\> Dokumentationsserver, Dokumentation in Kommentaren - go test - go generate: //go:generate stringer -type=Pill - go race detector: (Speicherzugriffe) - gocode -\> Codevervollständigung - go oracle - vet/lint -\> Statische Codeanalyse - gorename -\> Refactoring - goxc -\> Cross-Compiler + statische gelinkte Standartbibliothek -\> einfaches Deployen auf mehreren Plattformen - vim-go Projekte in Go: - play.golang.org - Ausführbare Codesnippets - - - - CloudFlare built their distributed DNS service entirely with Go - gern für Kommandozeilenprogramme (heroku, hub, direnv) -\> schneller Start/wenig Laufzeitabhängigkeiten - für Serveranwendungen (Backend) -\> einfach zu Deployen - SoundCloud is an audio distribution service that has "dozens of systems in Go - docker - The raft package provides an implementation of the Raft distributed consensus protocol. It is the basis of Go projects like etcd and SkyDNS. - Packer is a tool for automating the creation of machine images for deployment to virtual machines or cloud services. - Bitly's NSQ is a realtime distributed messaging platform designed for fault-tolerance and high-availability, and is used in production at bitly and a bunch of other companies. - Canonical's JuJu infrastructure automation system was rewritten in Go. unterstützte Plattformen: Linux, Mac OS X, FreeBSD, NetBSD, OpenBSD, Plan 9, and Microsoft Windows Architekturen: i386, amd64, ARM and IBM POWER (android und ios) ### Termine Krypto-Gewinnspiel mit PGP für Anfänger MORGEN - Kryptoparty an der TU Dresden, in der Fakultät für Informatik - mehr auf ifsr.de -\> - Orga-Meeting Datenspuren 26-28. Jardin Entropique in Rennes 03.07. Lange Nacht der Wissenschaften 10.07. Staat 2.0 an der TU Leipzig: Interdisziplinäres Gespräch: Der Staat und seine Bürger im digitalen Zeitalter