Informationen zur Technologie

Go/Golang ist eine plattformunabhängige Systemsprache, die direct auf dem SystemOS bzw. dem machine code der CPU aufsetzt. Go/Golang kann auf Hardware mit x386, amd 32/64, darwin, arm, arm64 und vielen anderen Hardware/OS Kombinationen aufgesetzt, programmiert und kompiliert werden.


Go/Golang - Einführung in die nebenläufige Systemprogrammiersprache von Google - für erfahrene Entwickler - Schulung (3 Tage)

Go/Golang - Introduction to the programming language by Google - for experienced developers

Kurzbeschreibung

Entwickler lernen die Entwicklungsumgebung für Go auf dem eigenen Rechner/Laptop einzurichten (Sprachpaket/ Dokumentation/ Editoren) und werden einen einfachen HTML-Server mit ersten Erweiterungen schreiben und einrichten. Sie lernen dabei Go’s Syntax kennen, bekommen einen groben Überblick über die Standardbibliotheken und üben die Standardroutine zur Erstellung einer application binary ein.

Das Seminar erlaubt erfahrenen Programmierern den Einstieg in neue Projekte (Prototyping) mit Go/Golang. Die noch junge, plattformübergreifende Programmiersprache überflügelt vor allem bei Server-Anwendungen in den letzten zwei Jahren etablierte Prorammierlösungen. SoundCloud, Docker, Disqus, Amazon und natürlich Google sind nur einige der Konzerne, die Go nutzen. Vor allem aufgrund des eleganten Programmierstils und der eindrucksvollen Kompiliergeschwindigkeit können auf aktuellen MultiCore CPUs mit Go vergleichsweise schnell ressourcensparende Anwendungen für die Command Line, Realtime-Analyse-Tools aber auch als Stand-Alone-Anwendungen mit HTML-GUI entwickelt werden, die in Sachen Geschwindigkeit C/C++ nahekommen aber ungleich leichter weiterzuentwickeln und zu pflegen sind.

Die Einführung ist praxisorientiert und die Eigenarten und Syntax von Go werden anhand der Entwicklung einer HTMLServerlösung eingeübt, d. h. die Teilnehmer arbeiten aktiv mit der Entwicklungsumgebung und haben Gelegenheit praxisbezogen intensiv nachzufragen.

Außerdem erhalten die Teilnehmer eine Linkliste mit Informationen und Show Cases aus dem „Gopher“-Land.


Voraussetzungen

• langjährige Programmiererfahrung mit prozeduralen oder objektorientierten Softwareprojekten einschl. der Script-Sprachen NodeJS/IOJS JS, Python, Rails
• Dieser Kurs ist ausdrücklich nicht für Programmieranfänger gedacht. Bei Bedarf kann eine Variation dieses Kurses für Junior Programmierer angeboten werden. Bitte nehmen Sie hierzu Kontakt auf.


    Seminarinhalt

    Tag 1:

    Einführung in Go/Golang
    • Entstehung und Ziele
    • Herkunft und Vergleich mit anderen Programmiersprachen
    • Hinweise auf Go’s zentrale Konzepte und deren Anwendung an Beispielen
    • Grundlegende Programmstruktur
    • package main
    • import
    • func main()
    • func xy()
    • Datentypen:
    • var, const
    • bools, ints, floats, arrays & slices, strings, maps
    • chan
    • Kombinierte Datentypen: type struct
    • struct members, struct methods
    • type interface
    • Deklaration und Wertzuweisungen
    • Globale und lokale Variablen
    • Kontrollstrukturen
    • Comments

    Installation von Go auf dem eigenen Rechner
    • Installation von Go
    • Einrichten der Systemvariablen (system environment)
    • Übersicht über geeignete Editoren
    • Installation einer Trialversion von SublimeText2® als Beispieleditor/PseudoIDE
    • alternativ für erfahrene Nutzer: vim/MacVim

    Zusammenfassende Wiederholung von Tag 1

    Tag 2:

    Programmierung eines HTTP Servers mit (Part 1)
    Basics in practice
    • Entwurf einer Go Programm-Grundstruktur
    • go fmt
    • go build
    • go install
    • go run

    Standardbibliothek und Erweiterungen durch Module (Packages)
    • Übersicht über die Standardbibliothek
    • Open source Erweiterungen via github repositories

    Praktische Übung am HTTP Server (Part 2)
    „import“ in practice
    • package documentation online
    • locking into the standard library source code
    • godoc
    import packages from github.com
    • go get
    • use import with path

    Funktionen in Go im Detail: First Class Member „func“, goroutines und closures in Go
    func & closures
    • func xy() {do something}
    • func(s *type) xy() {do something} vs. func(s type) xy() {do something}
    • f := func() {do something}
    • function factories
    concurrent goroutines
    • Nebenläufigkeit ist nicht grundsätzlich Parallelisierung
    • go func() {do something}()
    • data races und wie man ihnen vorbeugt
    channels
    • Besonderheiten von channels in Go
    • Deklaration, buffered und unbuffered channels
    • Einsatz zur Synchronisation des Prozessflusses

    Zusammenfassende Wiederholung von Tag 2

    Tag 3:

    Goroutines running concurrent
    • Einblicke in den net/http source code
    • Beispiele
    • Caveats

    Arbeiten am HTTP Server (Part 3)
    • Go’s HTML Templates
    • Logging
    • Erweiterung durch Funktionen

    Modularisierung des eigenen Projekts
    • Packaging: Erweiterungen und Programme
    • Ein zweiter Blick auf das Go environment

    Fertigstellen des HTTP Servers (Part 3)

    Zusammenfassung und Ausblick auf das Seminar für Fortgeschrittene


    Zielgruppen

    • erfahrene Entwickler


    Preise und Termine

    offene Schulung
    Eine offene Schulung findet in einem unserer Schulungszentren statt.
    Dauer:3 Tage
    Preis:1.995,00 € zzgl. USt. pro Teilnehmer (2.374,05€ inkl. USt.)
    Seminarstandorte:
    Starttermine:
    (ortsabhängig)


    Unterlagen:zzgl.
    Verpflegung:zzgl.
    Prüfung/Zertifizierung:zzgl.
    Firmenschulung
    Eine Firmenschlung kann sowohl bei Ihnen vor Ort als auch in einem unserer Schulungszentren stattfinden.
    Dauer:3 Tage
    Preis ab:1.390,00 € zzgl. USt. pro Tag (1.654,10€ inkl. USt.)
    Schulungszentren:
    • Hamburg
    • Berlin
    • Frankfurt
    • München
    • Nürnberg
    • Düsseldorf
    • Wien
    Starttermin:individuelle Vereinbarung
    Unterlagen:zzgl.
    Verpflegung:zzgl.
    Prüfung/Zertifizierung:zzgl.

    Software

    Die Schulung kann auf folgenden Betriebssystemen durchgeführt werden:
    • Linux oder MacOSX Betriebssysteme
    • Windows Betriebssysteme nach Absprache

    Allerdings ist Go ein Kind der Open Source Community, daher werden community tools eigentlich immer zuerst für Linux und MacOSX optimiert und es gibt einige Erweiterungen zu Go, die (noch) nicht unter Windows oder unter bestimmten Windows Versionen laufen oder getestet wurden.

    Darum bitte Windowsrechner mit Angabe der Windowsversion vorher anmelden. Das Seminarprogramm kann/muss entsprechend angepasst werden.



    Seminarsprache

    die Seminarsprache ist deutsch, sofern keine andere Angabe. Englisch ist in aller Regel machbar, andere Seminarsprachen sind möglich, fragen Sie bitte an.