PyCologne Treffen November 2014

Datum: 12.11.2014, 19:00 Uhr Ort: Chaos Computer Club Cologne (C4), Köln

Fünf neue Gesichter bei diesem Treffen: Jan, Minh, Bita, Slavo und Maxime. Christopher Arndt setzte seinen Lua-Workshop fort, dazu kam ein Lightning Talk über die Programmierplattform Hackerrank. Der geplante Vortrag über Testdaten mit Factory Boy musste auf Dezember verschoben werden.

Anwesend: 24 Personen Moderation: Christopher Arndt

Agenda

  • Ankündigungen, Vermischtes
  • Planung Dezember-Treffen
  • Workshop (45 min): Praktische Einführung in Lua für Python-Programmierer (Teil II) (Christopher Arndt)
  • Testdaten für Unit-Tests mit Factory Boy (Rebecca Breu) (verschoben)

Vorstellungsrunde

5 Personen sind zum ersten Mal dabei: Jan, Minh, Bita, Slavo und Maxime. Jeder sagt drei Sätze zu sich und seiner "Beziehung" zu Python. Johannes begrüßt wie immer im Namen des C4. Als Anerkennung für die "fortwährende Gastfreundschaft" des gemeinnützigen C4 wurde von allen Anwesenden gespendet.

Organisatorisches

  • Mailingliste erster Anlaufpunkt für Kommunikation
  • Protokoll im Etherpad, bitte alle mithelfen
  • Nächste Sitzung am 10.12., ein Organisator für dieses Treffen wird gesucht
  • Es werden Ideen für die "Weihnachtssitzung" gesucht: Jeder bringt etwas mit, Henning setzt einen Doodle auf, wer was mitbringt: http://doodle.com/vvhv4i8a3k3izwu5

Vermischtes

Ankündigungen

Präsentationen

Lua für Python-Programmierer - Christopher Arndt

  • Lua ist hauptsächlich eine C-Bibliothek, die die Lua-VM bereitstellt, vor allem für Embedding. ANSI-C, kompiliert nur ca. 200 kB groß. Standalone-Interpreter bietet nur Minimalumgebung.
  • Findet häufig Anwendung als einfache Skriptsprache in Low-Level-Sprachen wie C: Spiele, Editoren, Grafikprogramme etc.
  • LuaJIT teilweise schon genauso schnell wie optimierter Cython-Code
  • Auffällige Unterschiede zu Python:
    • Ende von Blöcken werden mit "end" gekennzeichnet
    • Variablen müssen explizit als "local" definiert werden, um sie auf den aktuellen Namensraum zu beschränken. Schleifenvariablen und Funktionsargumente sind automatisch lokal
    • Es gibt nur drei wesentliche Datentypen: Nummern, Strings und Tables. Tables können hier als Array oder als Dict verwendet werden
    • Indizes bei Tables sind 1(!)-basiert
    • Nicht zugewiesene Variablen haben den Wert "nil" (kennzeichnet Abwesenheit eines Wertes, ungleich None)
    • Default-Argumente existieren nicht, optionale Argumente sind per Default "nil"
    • Alle Werte außer nil und false sind wahr (wird zur Verwendung von Default-Werten genutzt)
    • Der "#"-Operator gibt die Länge einer Table zurück (also den Index bis zum ersten nicht mehr numerisch gesetzten Index)
    • Module werden via "require" ausgeführt (vgl. mit Python: execfile), die definierten Funktionen landen jedoch im globalen Namensraum, wenn nicht anders im Modul definiert
    • Module werden am besten als Table (Dict) aufgebaut, die dann importiert werden
    • Die Anzahl der Variablen, die den Rückgabewerten einer Funktion zugewiesen werden, muss nicht exakt der Anzahl der Rückgabewerte entsprechen: Überflüssige entsprechen "nil", bei zu wenigen Variablen werden die verbleibenden Rückgabewerte verworfen
    • Exceptions: Schlägt eine Funktion fehl, werden "nil" und der Fehler zurückgegeben
    • Klassen/Vererbung werden via Tables simuliert (Metatables)

Beispielskripte, Linksammlung zu Lua (PDF)

svn checkout svn://svn.chrisarndt.de/projects/lua-exercises

Lightning Talk

Hackerrank.com - David

  • Hackerrank ist eine Plattform für kleine Programmierwettbewerbe (inklusive Lösungen) in verschiedenen Sprachen
  • Die selbst eingereichten Programme werden online getestet
  • Aufgaben von niedrigem bis sehr hohem Niveau vertreten
  • Beispiel des Xoring Ninja gezeigt, Beweis auf Anfrage per Mail beim Vortragenden
  • Vergleichbares Projekt: https://projecteuler.net/ (sehr starker Fokus auf Zahlentheorie)

Kneipe

Der Abend wurde mit gemeinsamem Essen, Trinken und regem Gespräch im Herbrands beendet.

Nächster Termin: 10.12.2014.


Protokoll des Treffens, gemeinsam im Etherpad mitgeschrieben und aus dem Archiv der Jahre 2013 bis 2020 übernommen.