Transcript: PP04 - Python für Einsteiger

· Back to episode

Full episode transcript. Timestamps refer to the audio playback.

Ja, hallo liebe Hörerinnen und Hörer, willkommen beim Python-Podcast in der vierten Episode.

Heute geht es darum, wie man am besten Python lernen kann oder anderen Menschen Python beibringt.

Was machen wir eigentlich? Ja, wir sind diesmal tatsächlich nicht mehr in der Raumschiff-Kommandozentrale, sondern wieder bei Jochen im Wintergarten.

Ja, ich habe so ein bisschen was an meinem Equipment geupgradet und mal gucken, wie das jetzt so wird.

Wir haben jetzt zwei Headset-Richtige und auch so ein bisschen mehr Mischpult ist jetzt heute als sonst, weil wir uns dann zu diesem Thema zwei Leute noch mit dazugeholt haben,

die dort die Einsteiger-Veranstaltung für Python jetzt schon seit einiger Zeit betreuen.

Die sehr gute Einsteiger-Veranstaltung.

Oh, das ist zu viel Lob.

Ja.

Ja, und genau, mal schauen, wie es so wird damit.

Ja, Fragen, Anmerkungen, Kommentare und alles, was ja so erlos werden müsste, bitte immer gerne in unsere E-Mail schreiben, hallo at python-podcast.de.

Dabei auch jetzt direkt vielen Dank an die Kommentare, schöne, bei der letzten Folge.

Einmal Gruß nach Rostock, an den Matthias und in die Schweiz an den Dirk.

Genau, und das war sehr positiv und das ist natürlich immer sehr schön, wenn man da auch irgendwie

und das ist natürlich immer sehr schön, wenn man da auch irgendwie

mitbekommt, dass das so ein bisschen wahrgenommen wird.

Die Punkte, die da angesprochen wurden, waren einmal, dass es halt nett wäre, wenn wir jetzt irgendwie Kommentare doch auch dabei hätten.

Und dazu haben wir uns natürlich auch schon irgendwie Gedanken gemacht und haben erstmal gesagt, wir lassen die bewusst weg,

weil, naja, das ist halt irgendwie, alle Zeit, die wir da rein investieren müssen, einmal das Feature zu bauen,

aber dann auch irgendwie den Kram zu maintainen, können wir halt nicht irgendwie zum Aufnehmen von Podcasts verwenden.

Aber, ja.

Also, genau, falls unser AXE mal stumpf werden sollte, dann denken wir nochmal über die Kommentare nach.

Ja, also, ich meine, ich glaube, es ist auch nicht so schwierig, das zu implementieren und wenn man das auf User beschränkt, die sich irgendwie eingeloggt haben,

aber das ist halt die Frage, wie sinnvoll das dann noch ist, wenn man das macht, dann ist das auch nicht allzu schlimm, aber, ja, wir müssen mal gucken.

Es gibt ja eine ganze Menge Dinge, die wir da eventuell noch einbauen wollen und, ja.

Ja, das kannst du vielleicht gleich nochmal bei der Modulvorstellung von deinem neuesten DjangoCast-Fortschritt erwähnen.

Was die Leute sich auch gewünscht hatten, also unsere Hörer, war Struktur.

Ja, stimmt, das ist natürlich schon so ein gewisser Punkt.

Ja, wir versuchen das aber trotzdem heute mal umzusetzen.

Wir haben uns heute einfach auf ein Thema beschränkt, da ist die Struktur vielleicht nicht so wichtig.

Wir fangen vielleicht erstmal nochmal damit an, was in letzter Zeit denn so los war und dann erzählen wir halt darüber, was man mit Python alles lernen kann und, ja, vielleicht noch ein paar Module.

Genau, vielleicht machen wir einfach erstmal eine Vorstellungsrunde.

Genau.

Genau, gut, wir beide sind jetzt schon irgendwie bekannt, aber wer ist denn...

Ja, ich würde sagen, Alter vor Schönheit.

Ich bin der Dodo oder der zweite Dominik.

Ich mache zusammen mit dem Niklas das Python-Foo-Light im Chaosdorf.

Das ist das Python-Foo für Anfänger in Python oder Anfänger in Programmierung im Allgemeinen.

Das ist jeweils der erste und zweite Donnerstag im Monat.

Und, ja, da versuchen wir Leuten Python als Programmiersprache beizubringen.

Und das machen wir jetzt seit drei Jahren.

2015, oder?

Ja, ich glaube, mittlerweile drei Jahre.

Irgendwann im Sommer, ja.

Ja.

Ja.

Da kann man übrigens immer gerne vorbeikommen.

Ja, natürlich.

Ja.

Ich bin der Niklas, hallo.

Wir haben das damals angefangen, ich glaube, irgendwie ein halbes Jahr, nachdem es den GameDev gab.

Es gibt da gewisse personelle Überschreitungen mit Leuten, die dann halt nicht mehr die Zeit hatten, auch noch den Python-Foo viermal im Monat zu machen.

Und dann sind wir halt eingesprungen in den ersten beiden Donnerstagen.

Ja, vor allem hatten wir festgestellt, dass sich gerade Anfänger häufig erschlagen fühlen, wenn sie zum Python-Foo kommen und über viel komplexere Themen besprochen wird, als sie, die ihnen jetzt erstmal nichts sagen, weil sie gerade mit Python anfangen möchten.

Und da dachten wir, dass eine Veranstaltung, die sich eben dediziert an die Anfänger wendet, wo man dann auch die blösesten Fragen stellen kann, doch eine ganz gute Sache wäre.

Ja, da dachten wir, wenn jemand die Anfänger erschlägt, dann wir.

Genau.

Und wenn jemand blöde Fragen beantwortet, sind wir ja immer noch wie das.

Wir stellen die auch meistens.

Ja.

Ja.

Ja, das klingt doch auf jeden Fall gut.

Und ja, vielleicht können wir euch dann auch direkt mal auf dem Kalt- bzw. auf dem falschen Fuß erwischen, wenn wir euch fragen, was habt ihr denn in letzter Zeit so an Python-Neuigkeiten mitbekommen?

Weil das wäre vielleicht auch ganz interessant, was da so, wenn man sich jetzt nicht irgendwie da bewusst für entscheidet, irgendwie diese...

Den News da zu konsumieren, was dann da irgendwie hängen bleibt.

Also ich lese ab und zu die Release-Notes zu neuen Python-Versionen, aber es gab jetzt schon ein halbes Jahr keine mehr.

Eigentlich nicht so wirklich, nein.

Ich glaube, das Letzte, was ich gelesen hatte, also hin und wieder bekomme ich halt von den neuen Releases was mit.

Das Letzte, was ich mir angeschaut hatte, waren die Data-Classes, die jetzt in den neueren Python-Versionen vorkommen sollen.

Die hatte ich mir einmal angepokert.

Ja, die Python-News lese ich meistens als RSS-Feed.

Da habe ich mir von Planet Python den RSS-Feed gezogen und kriege da ganz unterschiedliche Nachrichten jeweils.

Das ist auch relativ interessant.

Ich setze mir dann meistens einfach nur eine Flagge im RSS-Feed wieder, weil meistens komme ich dann nicht dazu, die Nachrichten komplett zu lesen.

Ich habe nur die Kurzbeschreibung, aber ich finde, das ist ein sehr gutes Mittel, um News über Python zu bekommen.

Ich habe meine RSS-Reader seit irgendwie drei Jahren nicht mehr aufgemacht.

Eine Zehntausend Nachrichten.

Das Letzte neue Feature von Python, das ich verwendet habe, war NameTupels, glaube ich.

Das fand ich ganz cool, so als einfacher Klassenersatz.

Es gibt noch einen coolen Newsletter für Python, ne?

Oh, Newsletter.

Ja, da stehen auch die Show-Notes dann vielleicht mal rein.

Ja, der linkste finde ich auch interessant.

Die Newsletter vielleicht mal reinfangen.

Also es gibt ein paar.

Ich habe irgendwie einen Awesome-Python, einen Python.

Einen Python-Weekly.

Ich habe auf GitHub die Trending-Repos abonniert.

Das gibt es für familiäre Sprachen und unter anderem auch für Python.

Oh, das ist ja super.

Das kommt einmal die Woche.

Das ist halt teilweise Sachen, die halt irgendwie nur zufällig in Python sind und nicht wirklich dafür relevant sind.

Aber manchmal ist auch was Spannendes dabei.

Ja, das klingt auf jeden Fall interessant.

Ja, da können wir vielleicht einfach einen Punkt machen, wo wir so ein bisschen sammeln, wie man sich eigentlich da aktuell halten kann.

Ja, also ich bin auch ein großer Fan von RSS und ich habe eigentlich auch irgendwie, ich verwende schon ganz lange,

einen Feed-Reader.

Bin dann, da irgendwie gab es, ganz am Anfang habe ich irgendwie Aggregator verwendet unter KDE.

Und dann gab es aber den Google Reader und der war so gut.

Den fand ich total toll.

Den habe ich ganz lange verwendet.

Ich habe ganz lange dieses Sharing-Feature verwendet, was auch viele andere irgendwie gerne benutzt haben.

Und da gab es ganz tolle Sachen.

Und das war irgendwie so ein, das war das einzige Mal, dass so Social Network für mich so ein bisschen funktioniert hat.

Und dann hat Google den Reader eingestellt.

Das war ganz furchtbar.

Und jetzt habe ich zwar immer noch einen Feed-Reader, aber es ist irgendwie alles nicht mehr so das Gleiche.

Und genau, ich habe da auch Planet Python und noch so ein paar Blogs von Leuten,

die halt da an Python und Junkroom entwickeln, halt auch abonniert.

Ja, genau.

Ja, das mit den Dataclasses ist Python 3.7.

Aber es gibt ja jetzt vorletzte Woche, glaube ich.

Python 3.8 nochmal ein paar Ankündigungen.

Genau, da gab es eine neue Alphabet.

Und zwar gibt es da auch eine Syntaxänderung.

Ich weiß nicht, ob ihr von der schon gehört habt.

War das das mit dem Doppelpunkt gleich, dass man in, wie war das, in der Deklaration von einer Weil-Schleife kann ich mir die Variable setzen, oder?

Das war eine Zuweisung, die dann auch wieder direkt den Wert hat.

Genau, also man macht eine Zuweisung und gleichzeitig hat die entweder true oder false.

Es gab da auch irgendwie einen witzigen Namen für den Apparator.

Ja, da kommen wir nochmal.

Irgendwie nach einem Tier, ne?

Walrus.

Ja, genau.

Ja, weil Augen und Zähne, ja.

Das ist so ein bisschen wie dieser Turbo-Fisch, wenn du hast, ne?

Turbo-Fisch.

Das hatte ich auf Twitter, glaube ich, mitbekommen.

Das hatte mir irgendwer retweetet.

Das fand ich auch sehr interessant.

Aber, ja.

Ja, und genau, man kann sich damit halt, also man halt macht halt oft sowas, wie man holt irgendwas, einen Wert aus einem Dikt und dann muss man erstmal überprüfen.

Ob das nicht ein Name ist, weil man weiß halt nicht, ob es...

Und die Zeile kann man sich jetzt immer sparen und man schreibt dann halt direkt if irgendwie dann irgendwas Walrus Operator Dikt.getKey, dann macht man halt weiter, wenn es drin war und ansonsten...

Ansonsten wäre sowas ja auch so ein Safe Navigation Operator nett.

Es gibt ja Sprachen, da kannst du irgendwie Fragezeichen Punkt machen und die machen dann in den Zugriff nur, wenn das Objekt selber nicht null ist.

Ein Safe Navigator, das musst du bitte kurz erläutern.

Also es ist ja auch praktisch so,

dass du irgendwie ein Objekt hast und es hat ein Attribut.

Dann machst du irgendwie Objekt Punkt Attribut

Punkt irgendwas.

Und eigentlich musst du ja bei jedem dieser Schritte prüfen,

ob das Attribut selber nicht null ist.

Und dann kannst du ja nicht Punkt machen.

Es gibt halt Sprachen, die haben so ein

Syntax-Fragezeichen Punkt.

Die macht halt den Zugriff nur, wenn das Objekt

selber nicht null ist und ansonsten ist der Wert

halt auch direkt wieder null.

Das fände ich cool, kenne ich über Python nicht.

Ja, und da hatten wir tatsächlich, ich weiß nicht, kennt ihr das?

Es gibt eine

Telegram-Channel zur Python User Group

Düsseldorf, PyDDF.

Nee, kenne ich nicht.

Ah, ja.

Die User Group, die kenne ich, da war ich ein paar Mal,

aber den Telegram-Channel sagt mir nichts.

Genau, es gab auch lange,

oder es gibt immer noch eine Mailing-Liste, aber der Telegram-Channel

ist tatsächlich was, was jetzt auch

stärker genutzt wird. Und da gab es eine Diskussion

genau darüber und Chesi, den wir

als Expertengast von unserer Django-Folge

da hatten, hat da auch irgendwie

quasi, es gibt einen Python-Enhanced-Proposal,

wo genau so eine Syntax mit einem Fragezeichen

vorgeschlagen wird. Hat das dann halt auch

irgendwie da mal vorgestellt und meinte so,

das wäre doch eine tolle Idee. Und dann hat

sich das aber relativ, also es war

sehr kontrovers, sehr polarisierende

Also ich habe es auch noch nie genutzt.

Ich weiß nur, das existiert in anderen Sprachen.

Ja. Ja, ich bin mal gespannt.

Kann ja sein, dass es auch in Python irgendwann kommt.

Äh, genau.

Ja, es gibt noch mehr Neuigkeiten dann

von dem Steering-Counter.

Da wolltest du vielleicht noch was zu sagen.

Ja, genau. Ich habe das auch

nicht so im Detail verfolgt,

aber es ist halt so, dass Guido,

ja sozusagen

so einen unbegrenzten Urlaub

genommen hat von seiner

BFDL-Rolle und

Guido das Hippo,

also wo wir eben bei den Tieren waren, war ja auch das Hippo.

Weitere Gehör, ob ich gar nicht so gut bezahlt ist,

ehrlich gesagt, aber genau, der

der, äh,

ja, ähm,

und jetzt gibt es halt ein, ein, ein,

ist ein Steering-Council gewählt worden,

der halt dann in, äh, wenn

quasi eine Entscheidung benötigt wird

und das sonst niemand tun will und so und man dann halt,

äh,

wie ein letztes, äh, jemand irgendwie

das letzte Wort haben muss, dann gibt es halt

diesen Rat, der das dann halt hat

und da sind halt irgendwie fünf Mitglieder reingewählt

worden, unter anderem auch Guido

und, äh, genau, das werden wir auch verlinken,

kann man sich ja mal angucken, ist alles nette Leute

insofern, ja, sieht gut aus.

Genau, und es gab noch eine nächste Neuerung, zwar gibt es jetzt

lokale Packages in Python.

Äh, nee, das gibt es auch erst

mit, äh, Python 3.8, genau, ja,

mhm, ja, ja, ja, stimmt, das war auch in der Alpha-Release

drin, äh, Python Local, äh,

ähm, ja, Pip Local,

äh, gibt es so ein Verzeichnis

dann, ui, jetzt muss ich mich wieder versuchen,

daran zu erinnern, was das eigentlich genau war,

das ist quasi dann so ähnlich wie bei, bei, bei JavaScript

und, äh, dass man halt die Pakete,

die man installiert, halt in dem Verzeichnis, in einem speziellen

Verzeichnis direkt hat und,

ähm, dann, äh,

irgendwie drumrum kommt, sich mit diesem ganzen

Virtual-Env-Kram rumschlagen zu müssen.

Ah, also quasi,

man, man konnte doch bisher auch schon bei Pip

Install irgendwie ein Target angeben

und das ist dann, ah, okay, ja.

Und das ist dann, glaube ich, einfach ein,

das dann, dann heißt dann einfach Pip Local

und dann installiert es halt in das Verzeichnis rein

und dann... Dann hast du alles in einem Ordner.

Genau, das ist eigentlich... Das ist cool.

Ja, auch gar nicht so schlecht.

Also, ich weiß nicht, ob es jetzt Virtual-Env

komplett ersetzen wird dann, aber, äh,

das ist auf jeden Fall... Also, ich meine, gut, wir haben ja jetzt

erst drei oder vier unterschiedliche Arten, wie man das machen kann.

Das würde bestimmt das Problem lösen.

Das Beste ist natürlich Pip-Env.

Ja, Pip-Env ist auch voll, das ist schon gut.

Ja, aber, genau, zu sowas,

Virtual, äh, Isolierung, äh, Isolation,

Virtual-Envs, Docker, diesen ganzen Kram,

wie kriege ich eigentlich unterschiedliche

Projekte auf einer Maschine irgendwie, äh,

so installiert, dass sie sich nicht

gegenseitig kaputt machen, dazu müssen wir auch mal...

Ja, eine Extra-Folge, okay.

Ja.

Ja, dann fangen wir doch

jetzt am besten mit unserem Thema an, oder?

Ja.

Ja, ich glaube, ähm,

das hängt

von einem selber ab. Also,

es gibt verschiedene Arten, wie man

Python lernen kann, und

ich würde sagen,

da muss man

so für sich die beste

Art und Weise rausfinden.

Die Frage ist ja auch, ähm, kann man

schon programmieren? Kennt man vielleicht andere

Programmiersprachen, die sich ähnlich verhalten,

was Objektorientierung und sowas angeht? Oder muss man

das auch noch erstmal lernen?

Ja, und, ähm, wenn man

schon eine andere Programmiersprache hat, gibt es

natürlich, sind gewisse

Einstiegshürden einfach nicht mehr da. Also,

wenn ich schon mal im Texteditor

ein Programm geschrieben habe, dann

muss mir nicht mehr erklärt werden,

wie ich mit dem Texteditor arbeite.

Oder wenn ich schon mal eine IDE bedient habe,

weiß ich, was eine IDE ist. Oder Schleifen.

Genau.

Das geht natürlich weiter

mit den, ähm, Kommandostrukturen.

Wenn ich, äh, eine IF-Bedingung

kenne ich dann, wenn ich schon mal programmiert

habe, eine Schleife, etc.

Wenn ich schon mal mit einer, ähm,

stark objektorientierten Programmierung

in der Programmiersprache gearbeitet habe, muss man mir

Objektorientierung nicht mehr erklären.

Also, da kommt es,

gibt es dann Einstiegshürden, je nachdem,

ob ich mich schon mal mit einer

Programmiersprache beschäftigt habe,

eventuell sogar mit einer, die

Python sehr ähnlich ist.

Ansonsten sind halt so Sachen wie, wie irgendwie, äh,

Namespaces oder dynamische

Typisierung vielleicht eventuell sogar einfacher zu lernen,

wenn man das aus einer anderen Sprache noch nicht kennt.

Ja, das heißt, wenn du

nicht gewohnt bist, dass du

deine Variable in festen Typen

hat, äh, ja, dann

könnte es sogar einfacher sein.

Ähm, an der Stelle bietet

Python natürlich einen einfachen Einstieg,

weil, ähm,

es eben eine dynamische, strenge

Typisierung bietet.

Ähm, ja.

Ja, ich hab so die, die hab ich gemacht, so auf, auf

Hackathons oder so, wo ich dann irgendwie,

äh, Leute hatte, die dann

halt sehr, aus sehr unterschiedlichen Bereichen

kamen, aus sehr unterschiedlichem Wissensstand hatten

und dann hat man versucht, irgendwie so ein Projekt zu machen

mit denen und dann, äh,

ähm, äh, äh, ja, genau,

versucht man halt einfach nur, irgendwie das

Projekt zu bootstrappen, das heißt,

irgendwie, die müssen irgendwie Python installieren, dann

irgendwie, äh, irgendwas aus Git ziehen,

dann Virtual Env erzeugen, dann irgendwie

die Abhängigkeiten installieren. Und dann sind zwei Tage rum.

Und, genau, und das, ja,

das ist teilweise, weil, was mir dann immer passiert,

oder die schlimmsten Fälle sind immer so, ja, okay,

Python installiert, ja, aber das ist mein Firmenrechner,

da, da ist ein Windows drauf und ich, äh,

ich kann da auch eigentlich nichts installieren, so, dann ist schon mal so,

okay, dann ist man halt vielleicht nach einer Stunde

irgendwie so, dass man eine Python-Stelle hat, aber,

äh,

ähm, wie, wie geht ihr damit um?

Oder macht ihr irgendwie, äh,

Ansagen, was, was schon vorausgesetzt

wird, wenn man überhaupt da hinkommt, oder? Also, um

den ganzen Kram drücken wir uns ein bisschen, ähm,

andererseits, wir verwenden

zumindest am Anfang nichts, was irgendwie

extra Module braucht, also man braucht einfach

nur einen Python-Interpreter und

viele Systeme, irgendwie, weil die OSX

oder die meisten Linux-Distros haben ja einen schon dabei.

Ja. Ähm,

und wenn jemand einen Windows-Rechner mitbringt,

haben wir so die Hoffnung, dass die Person weiß,

wie man da auch Programme installiert.

Weiß ich nicht.

Bei den meisten Leuten, die ins Chaos aufkommen, hat das dann

vielleicht auch funktioniert? Ansonsten kann man sowas

ja im Notfall auch, auch irgendwie online machen.

Es gibt ja irgendwie Zeiten Anywhere oder sowas.

Das geht ja irgendwie.

Außerdem haben wir, glaube ich,

in Wiki die Ansage stehen, dass man,

wenn man zum Python-Vo kommt,

einen Rechner mitbringt und, äh,

auf diesem Rechner, genau.

Ja. Ähm.

Können wir vielleicht ein Raspberry ausleihen oder sowas?

Ja. Oder, ähm,

auch auf vielen Android-Smartphones.

Und wenn du ein Handy neuer als

N105 hast, kannst du da Python drauf installieren. Problemlos.

Gut, das Tippen ist ein bisschen ekelhaft,

das Smartphone.

Ja gut, Bluetooth-Tastatur. Oder sowas, ja.

Ähm, ja.

Meistens haben wir ja sogar, äh,

Linux-User, da, äh,

Windows-User sind natürlich,

wenn's um die Installation von

Paketen geht, immer ein bisschen fummelig.

Aber im Allgemeinen kriegen wir das auch hin.

Ja. Also gerade so Sachen wie,

irgendwie, installier das mal

von Pip oder so, das machen wir nicht am ersten Abend.

Genau. Das, ähm,

das ist einerseits natürlich da, um

die Einstiegshürden zu nehmen,

denn so können wir das auch

auf Windows, MacOS oder Linux

machen, weil wir dann eben nur

die Standard-Bibliothek nehmen und einfach nur

einen Texteditor und einen

Python-Interpreter brauchen.

Wir hatten witzigerweise noch niemanden, der dann irgendwie mit

React oder BSD oder sowas aufgetaucht ist.

Ich glaube, das brauchen wir auch nicht.

Ja, okay. Aber das ist ja schon mal, das ist ja schon mal interessant.

Ihr verwendet doch einfach die ganz normale, äh,

ja, Python, äh,

Python-Reppel oder was kann ich

mir das, äh, also, äh...

Also wir zeigen die Beispiele meistens entweder im

Texteditor oder irgendwie in I-Python,

B-Python, aber das braucht man ja

nicht, um das nachzuprogrammieren. Das sieht dann halt nicht so

schön aus. Aber, ähm,

ja, und

ansonsten, wir haben halt auch nicht so

viele Anforderungen. Also Beispiele laufen auf allen

Versionen, die neuer sind als 3.4 oder so.

Ja. Und das

hat ja sogar der wie ein neues Table oder sowas.

Ist ja kein Problem.

Das ist ja auch ne, ähm, Vorteil

der Python-Standard-Library, dass

die eben so umfangreich ist, dass man

die meisten Sachen gar nicht nachinstallieren muss, sondern

so viel schon dabei ist,

dass man für ein

grundlegendes Verständnis der Sprache

brauchst du eben nur die

Standard-Library. Wenn das dann ins, äh,

komplexere Sachen geht, also

wo du wirklich konkret was machen willst, da

installierst du dir dann ein, äh,

eine Library, aber...

Request ist, glaube ich, so die erste, die wir dann

mehr zeigen. Ja, genau.

Stimmt, ja. Und ein QPy.

Stimmt. Ja, aber das ist, äh,

eine Datei mit 56

Teilen, also ich glaube, die muss man nicht installieren,

die kann man in Notfall runterladen. Genau.

Mhm. Die könnte man wahrscheinlich sogar

abtippen. Äh, äh, was, was war das

mal genau? Ich hab das, glaube ich, grad nicht so richtig verstanden. Ähm, QPy,

ähm... Kenn ich gar nicht. Es ist ganz, äh,

schön, um eine klare Statusmeldung auszugeben.

Das macht dann halt irgendwie, äh, es gibt QPy

.info und dann bekommst du irgendwie so einen, so einen

blauen Kasten links und eine Welle und dann

kriegst du den Text. Ah, wow, okay. Farben im, äh,

Terminal. Mhm. Und, ähm,

es funktioniert auf allen Systemen, also Windows

ist nur neuer als 10, aber, äh,

ansonsten... Und es ist halt

eine wirklich kleine Datei. Ähm,

verzeichnet dir mal die Fletchen, die machen

ekelhafte Sachen mit, mit Dictionaries und Lambdas

und sowas, aber, ähm, das muss man

ja nicht wissen. Ja. Also,

die...

das Github-Repo da ist, äh, sehr

erhellend, weil dann auch... Das Readme ist sehr gut.

Ja, das Readme ist sehr gut, weil da,

äh, der Entwickler da

vergleicht, wie schwierig es ist,

äh, mit anderen, äh,

Bibliotheken Farbe

ins Terminal zu bringen und wie einfach das mit

UPy ist. Okay, diese Tabelle, wo nur

ich UPy die höchste Punktzahl erreicht.

Ja, ja. Ein bisschen

Eigenwerbung soll ihm ja auch gegönnt

sein. Ich verwechsel das nur

leider immer mit, äh, Python

Hui, ne? Genau.

Ja, UPy und Python Hui

sind zwei verschiedene Dinge wichtig

zu wissen. Wir installieren immer

die falschen am Anfang, ne?

Wie habt ihr beide denn Python gelernt?

Oh, ich weiß

ehrlich gesagt nicht mehr. Ich glaube, ähm,

ich hab früher mit nem Freund

zusammen PHP angefangen.

Irgendwann an Grundschule. Und dann fanden

wir irgendwann PHP nicht mehr cool.

Und dann ist er zu

Perl gewechselt und ich fand Perl auch nicht cool.

Dann hab ich mir angeschaut, was gibt's noch für Ansprachen.

Dann hab ich mit Python angefangen. Hat er festgestellt,

Python fängt auch mit P an. Ja, genau.

PHP, Perl, Python ist eh fast das gleiche.

Ja. Ähm,

ja, bei mir war das deutlich später als

die Grundschule. Ich weiß noch, ich hatte

in der achten Klasse

oder neunten Klasse, ähm,

Wahlpflicht Fach Informatik.

Ah, ja. Und, äh,

in der Schule, äh, hatten wir dann in der

achten Klasse Word und Excel und in der

neunten Klasse haben wir dann auch richtig programmiert

mit Turbo Pascal. Und, äh,

Wir hatten damals schon PHP in der Schule.

Pascal muss ich auch noch mal.

Eigentlich hat es mir Spaß gemacht mit

Turbo Pascal zu programmieren, so viel

Spaß man eben damit haben kann.

Oh, doch, das war, das war toll.

Ich weiß jetzt nicht, welche Version

ihr da verwendet habt, aber ich hatte, ich hatte

da mal, oh, ähm, ja.

Naja, alles gut. Dein Handy.

Ach ja, das ist in Ordnung, das macht ja nix.

Der P war lecker.

Ja.

Ähm, danke, Tja. Also, äh, genau.

Damals, damals war das irgendwie

Turbo Pascal 5.5 und das lief alles,

äh, sozusagen auch irgendwie

in einer Shell, äh, oder

sozusagen auf der, auf der MS-DOS-Kommandozeile.

Und das war als IDE,

eigentlich tatsächlich ziemlich, ziemlich klasse.

Wenn man irgendwie auf F9 gedrückt hat, dann hat das irgendwie sofort

kompiliert und es ausgeführt und man konnte

zum, zum Debugger durch, durchsteppen und so.

Das war, ja, aber, äh,

keine Ahnung, wie das, bei euch war das dann wahrscheinlich schon

Windows oder so, oder? Ja, ich glaube, wir hatten da

eine, ähm, Free Pascal.

Das war so ein bisschen wie

Python Idle, nur ich fand's halt

sau anstrengend mit

Turbo Pascal zu programmieren.

Und irgendwann war die 9. Klasse dann

fertig und ich glaube, so zu den

Sommerferien fing ja im Chaosdorf das

Python-Foo an, weil das bekam halt,

das Chaosdorf bekam halt neue Räume.

Ach, du hast die alten Räume noch gesehen? Äh,

jaja. Oh. Und, äh, da

fing das Python-Foo dann auch

komplett im Renovierungsmodus mit, ähm,

ähm, ja. Umzug auf Python 3.

Genau.

Man könnte sagen, es lag am Umzug

auf Python 3, aber nein, da wurde

grad das Chaosdorf umgebaut. Und

ja, da fing dann das, äh, Python-Foo

an. Und da ich halt eine

etwas modernere Programmiersprache lernen

wollte, äh, ja, hab ich dann da

angefangen. Dann

hab ich mich zwei Jahre

relativ intensiv mit Python beschäftigt.

Bin auch so ungefähr bis zur

Objektorientierung bekommen.

Die war mir dann aber zu kompliziert und, äh,

bin bei funktionaler Programmierung geblieben.

Ja, und dann... Ja, Objektorientierung

hab ich auch nie wirklich verstanden, dass ich

zum Python-Foo gekommen bin. Ja.

Später hab ich dann wieder eingesetzt und, ja,

seitdem beschäftige ich mich damit hobbymäßig.

Hm.

Und das wohl wann? Naja,

weil... Ihr Geld bekommt man dafür nicht,

hehehe.

Ja.

Naja, aber, äh,

ich, ich mein, habt, ihr habt ja dann wahrscheinlich

auch schon ne, ne Menge Leute, äh,

sozusagen kommen und gehen sehen. Gibt's denn irgendwie

welche, die dann irgendwann mal, äh,

dazugestoßen sind und dann halt länger dabei geblieben sind?

Ihr verfolgt ja wahrscheinlich auch, was dann so ein bisschen

mit den Leuten passiert. Äh, ist das,

ist das eher ne Sache, die einen dann motiviert, oder

ist es deprimierend, dass alle Leute dann doch wieder irgendwann

aufhören und verschwinden, oder?

Der Schweiner davon sitzt ja hier.

Ja. Ups.

Ich muss jetzt überlegen, wer.

Ähm. Wie, wie, wie sind

meistens da? Ja, ja, ähm,

ja, ich glaub,

ein paar Leute sind

tatsächlich zum

Python-Foo hinzugekommen.

Hm. Aber meistens hatten die

schon ein bisschen, äh, Background

Python-technisch. Hm. Es gibt halt Leute,

die kommen einmal, es gibt Leute, die kommen zweimal.

Und es gibt Leute, die kommen immer

wieder. Genau.

Ja. Ähm, das ist, glaub ich, auch so ne

Schwierigkeit von dem Termin, dass wir eh

Die ersten beiden Donnerstage.

im Monat haben und dann ist nach dem zweiten Donnerstag wieder ein Monat dazwischen.

Da haben sie wieder vergessen, da kommen sie nicht mehr.

Da haben sie wieder vergessen.

Da wäre, glaube ich, tatsächlich wöchentlich, oder wie zwei wöchentlich oder so was, alle

zwei Wochen jedenfalls ein regelmäßigeres Treffen, glaube ich, sinnvoller.

Wie oft habt ihr denn schon die erste Lektion Leuten geteilt?

Die erste können wir am besten, weil wir es am häufigsten getan haben.

Also das ist natürlich bei uns auch ein, ja, das wollte ich progress sagen.

Es war mal eine sehr schöne E-Mail geschrieben, warum wir alles zu schnell machen.

Auf die wir auch nicht geantwortet haben, weil wir sind super.

Ich fand die nicht so schnell.

Ja, also die erste Lektion, ich glaube, 20 Mal haben wir die bestimmt schon gemacht.

Mehr.

Ich habe jetzt grob im Kopf überschlagen, aber tatsächlich ist das bei uns natürlich

auch ein steter Vorgang, dass wir uns immer wieder verbessern.

Ich finde das ganz schön.

Wir haben die Beispiele und auch die Hinweise ja auch so ins Getriebe.

Und da kann man sehen, was wir geändert haben.

Könnt ihr einmal kurz die Adresse noch mal?

Wir diktieren, könnt ihr die nicht einfach?

Ja, ja, doch, doch, doch, klar.

Die fangen wir in die Show Notes.

Python for Light.

Ihr findet das Repo in den Show Notes.

Ja, ich glaube, das ist auch schon in der ersten Folge oder?

Aber das ist ja schon, wenn man das ein paar Mal gemacht wird, dann ist das dann immer polierter.

Habt ihr mal darüber nachgedacht, das irgendwie, keine Ahnung, irgendwie davon Screencast zu machen

oder das irgendwie mal mitzuschneiden und zu veröffentlichen oder so?

Weil das ist ja ein Gefühl.

Wir sind ja nicht geldgetrieben.

Ja, wir sind nicht.

Nee, darum geht es aber, ich meine, darum geht es ja gar nicht.

Aber einfach, weil so viele Leute, die das so oft gemacht haben, gibt es ja wahrscheinlich gar nicht,

die in so einer Einführungsveranstaltung irgendwie tatsächlich...

Wir haben uns halt überlegt, dass wir das Gitarre-Repo möglichst ausformulieren,

dass halt auch Leute, die nicht zu der Veranstaltung kommen, sich das angucken können.

Screencast haben wir bisher nicht gemacht.

Nee.

Da müssten wir uns ja auch hinsetzen und das schneiden und so.

Ja, stimmt.

Wir verbringen halt meistens wirklich nur Zeit, wenn wir da sind.

Der Vorteil ist halt, wenn wir dann mal Abend haben,

wo niemand kommt, können wir an den Beispielen arbeiten, was ja auch schon mal vorkommt.

Ja, prinzipiell ist das natürlich auch eine schwierige Sache,

weil, wie gesagt, es gibt verschiedene Arten davon, wie man das am besten lernt, so für einen selber.

Und klar gibt es die Leute, die einfach nur Code lesen und den abarbeiten können,

aber es gibt natürlich auch die Leute, die möchten, dass man denen das erklärt und mit denen macht.

Und deshalb fände ich es schwierig.

Um quasi den Code so zu halten, dass der für alle passt.

Deshalb sind wir da ja auch relativ anpassungsfähig, je nachdem, wer zu uns kommt.

Jetzt auffällt es, dass Leute tatsächlich relativ selten Fragen stellen.

Da sollten wir vielleicht auch noch häufiger gucken, dass das passiert.

Ja, dass wir das interaktiver gestalten, meinst du?

Ja.

Ja, was...

Da fragte ich aber letztens ein paar Ideen.

Und diese E-Mail.

Eine interessante Strategie, die ich schon ein paar Mal gesehen habe, die ganz gut funktioniert,

ist, wenn die Leute sich nicht trauen, Fragen zu stellen,

dass man dann einfach...

Als derjenige, der eine Schulung macht oder einen Vortrag hält oder so,

dann einfach, vor allen Dingen, wenn es nicht so viele Leute sind, geht das gut,

dann die Leute fragt.

Oh nein.

Das ist ein bisschen übergriffig.

Das habe ich früher in der Schule schon gehört.

Ich meine, das Gute ist ja, dass wir ja meistens zu zweit sind

und uns dann auch selber an dem Ball so ein bisschen zuspielen können.

Ja.

Unsere Überleitungen sind immer grandios.

Oh ja.

Wir sind berühmt.

Ich hoffe, positiv.

Ja.

Ich glaube, wir haben da durchaus noch Verbesserungspotenzial,

gerade was den Beispielcode angeht.

Ulrich, das sind keine gesehen.

Gerne, genau.

Ja.

Ich glaube aber, dass wir das schon relativ gut hinkriegen.

Bis zu welchem Level geht denn der Python-Fool light?

So lange, bis Leute bleiben.

Wir haben das ja in Level aufgeteilt,

in die er gerade schon erwähnt hat,

damit man das quasi...

Ja, damit jemand, der zu uns kommt,

den können wir dann sagen,

guck mal, wir haben hier 10 Level.

Lies die mal durch und sag mir, wo du dich einordnest.

Nenne eine Zahl zwischen 1 und 10.

Nenne eine Zahl zwischen 1 und 10

und dann machen wir von da an.

Einerseits dient das natürlich der Strukturierung,

weil dann kann man sagen so,

okay, Level bla bla bla macht das und das,

Level bla bla bla macht das und das.

Dann lese ich mir jetzt das Level durch

und kann mich mit dem Thema beschäftigen.

Das ist auch wichtig für Leute, die wiederkommen,

weil wir uns dann nicht merken müssen,

wohin haben wir gemacht.

Das ist natürlich unsere Bequemlichkeit.

Ich glaube, das Repo hat offiziell 10 Level.

Angefangen bei,

wie führe ich Code in Python aus?

Was ist eine Variable?

Was ist eine Variable?

Wie weise ich eine Variable zu?

Was sind Zahlen?

Wobei, das geht, glaube ich,

in die Zahlentheorie rein.

Das wollen wir, glaube ich, nicht.

Das sind ganz einfach Zahlen.

Das sind Mengen.

Das sind leistmäßige Mengen.

Genau, bitte.

Ja, das geht dann über

If-Bedingungen, Flicen,

Funktionen, Rekursionen.

Konsolenanwendungen.

Konsolenanwendungen.

Das ist ein neues Kapitel,

das wir eingeschoben haben,

weil wir dachten,

wenn wir direkt mit der Objektorientierung ankommen,

dann sind die meisten Leute ein bisschen überrascht

und uns wäre es lieber,

wenn man Sachen dann zu dem Zeitpunkt

mal praktisch anwenden könnte.

Ja.

Das ist ja auch eine Stärke von Python,

dass die Objektorientierung zwar,

da ist und auch

alles in Python ein Objekt ist,

aber du musst sie eben nicht verwenden.

Also, du kannst in Python auch komplett

ohne Klassen arbeiten.

Und das hatte der Shisi tatsächlich

einmal erzählt,

dass er, wenn er mit Klassen arbeitet,

eben nur objektorientiert,

weil die anderen Arten von Klassen,

die es da gibt,

braucht man ja nicht.

Und fragen halt immer Leute,

wofür brauche ich denn jetzt

diese Objektorientierung?

Wir können das nicht beantworten,

weil das geht meistens auch,

ohne.

Ja.

Ja gut, also nach Objektorientierung

machen wir dann noch Generatoren

und sowas.

Assert, Yield.

Wir haben dann ein Beispiel

für eine grafische Anwendung

mit QT, glaube ich.

Ja.

Und irgendwie so eine

Whisky-Sache mit Werkzeug.

Die haben wir noch niemandem gezeigt,

weil Leute sind nicht lange noch gekommen.

Ist natürlich auch...

Ich kenne es ja auch noch nicht,

die Whisky mit Werkzeug.

Ja, musst du mal wieder kommen.

Ist geplant.

Ich bewundere übrigens auch,

wie du die Markdown-Seite

im Kopf ausländisch kannst.

Naja, es sind jetzt drei Jahre.

Das hat sich nicht so gut

an die Enderzeit geändert.

Aber du hast die Witze entfernt.

Wir hatten...

Es gibt da so eine Geschichte.

Wir saßen mal in einem Zug

nach Hamburg

und es war ein bisschen langweilig.

Und dann haben wir

zu Kapitel 5,5

einen Text geschrieben,

den man nur noch

in der Wiki History findet.

Ich glaube, das reicht jetzt.

Erzählen wir es?

Okay.

Level 5,5 ging damals um Themen,

die in den bisherigen Leveln

keinen Platz gefunden haben.

Ist Kapitel 5,5 sowas wie Gleis 9,5?

Ja, ein bisschen.

Wir wollten halt noch Themen unterbringen,

über die wir bisher nicht gesprochen haben,

weil entweder passten die nicht,

die wären zu weit gegangen

oder sie hätten den Fortschritt

so ein bisschen...

Sie hätten den Fortschritt

so ein bisschen aufgehalten

und das war dann hauptsächlich,

Meta-Themen,

die jetzt nicht zwingend

direkt was mit Python zu tun haben,

sondern mehr,

da ging es dann darum,

welchen Text-Editor benutze ich?

Wie mache ich das mit Git?

Wie schreibe ich am besten Doku?

Wie schreibe ich Doku?

Mir fällt übrigens ein,

wir sollten noch ein Kapitel

zu Tests einführen.

Ja, wir sollten nicht nur erwähnen,

dass sie wichtig sind,

sondern uns trotzdem mal selber angucken,

wie das überhaupt geht.

Also ich habe das meiste,

was ich über Python weiß,

tatsächlich da betrachtet.

Und dann habe ich gelernt,

dass ich es anderen Leuten beibringe,

weil man dann immer noch so Sachen merkt,

sieht, wo man merkt,

oh, das weiß ich doch eigentlich gar nicht so wirklich,

wie das im Detail funktioniert.

Das fällt mir immer wieder auf,

dass wir dann auch,

da wir gegenseitig uns den Ball zuspielen

und doofe Fragen stellen

und auch Grenzen austesten,

dass ich jeden Abend,

wo ich anderen was beibringe,

auch selber sehr viel mitnehme.

Dann halt das Problem haben,

dass wir vielleicht dann auch

ein bisschen zu tief einsteigen,

dass den Leuten, die da sitzen,

dann doch nicht so viel

nicht so wichtig ist.

Ja, das stimmt.

Ja, weil es gibt halt auch Leute,

die Interesse an diesen ganzen Details haben.

Und ihr habt auf jeden Fall vollkommen recht,

dass dieses Lernen einfach großartig ist,

irgendwie um tiefer einzusteigen in das Thema.

Habe ich übrigens auch gemacht,

also ganz am Anfang,

obwohl ich noch nicht so viel selber konnte.

Aber das, was ich konnte,

konnte man schon kleinen Kindern beibringen

und die haben sich sehr darüber gefreut

und haben tatsächlich dann auch

ihre ersten Programme schreiben können.

Das ist echt super.

Und dadurch sind halt die Basics

dann irgendwann wirklich feste.

Das ist vielleicht nicht so unwichtig.

Ich glaube auch,

dass Python eine sehr gute Programmiersprache ist,

um quasi,

als kompletter Anfänger,

als erste Programmiersprache Python zu lernen.

Einerseits, weil es relativ wenig Einstiegshürden hat,

die anderen Programmiersprachen bieten.

Es gibt ja diesen schönen Spruch,

irgendwie Python ist wie Pseudocode,

aber man kann ihn ausführen.

Ja, das und,

ihr hattet das, glaube ich,

in eurer ersten Folge erwähnt,

dass Python einfach ist

und dadurch sehr gut für Anfänger geeignet ist.

Und ich finde,

das ist auch so weit korrekt,

ja, Pseudocode, den man ausführen kann,

passt schon sehr gut.

Womit fangt ihr denn an,

wenn ihr Leuten jetzt quasi sozusagen

das so Python nahe bringen wollt?

Was wäre denn sozusagen euer erstes Beispiel oder sowas?

Hello World natürlich.

Hello World natürlich, genau.

Das ist natürlich viel einfacher, ja.

Ja, normalerweise fangen wir,

zeigen wir einfach auf dem großen Fernseher

einen Interpreter und fangen an,

Code zu schreiben.

Danke, Herr Plant.

Danke, Herr Plant, vielen Dank.

Ja,

wir sitzen dann da am langen Tischreihe

und einer sitzt meistens nah am Fernseher

und zeigt dann auf B-Python meistens Code.

Gerade für kürzere Sachen

haben wir festgestellt,

dass der Interpreter geeigneter ist,

als wenn wir das in der Datei schreiben würden

und ausführen würden.

Natürlich könnte man das auch

als Jupyter-Notebook machen.

Das wäre,

vielleicht sogar noch einen Schritt weiter.

Ich benutze manchmal in den höheren Leveln

Hydrogen.

Das ist ein Atomplugin,

das so wie Jupyter funktioniert,

zahlenweise.

Aber das macht halt erst ab größeren Dateien

auch irgendwie Sinn.

Am Anfang kann man das halt einfach neu eintippen.

Gerade auch, weil B-Python so einen Modus hat,

wo du die gesamte Historie

im Texteditor bearbeiten kannst

und dann wieder ausführen kannst.

Und dann musst du es halt eigentlich

nicht unbedingt speichern.

Und B-Python kommt uns natürlich da

sehr entgegen.

So mit Autovervollständigung,

Syntax-Haltern,

das ist schon echt cool.

Also, ja.

Es ist bunt.

Geht das B für bunt?

Ja, das steht für bunt-Python.

Weil, das ist auch deutsche Sprache.

Das muss man so.

Ja, und meistens

in, ich glaube,

spät höheren Leveln zeigen wir dann auch

einfach die Code-Beispiele, die wir geschrieben haben.

Aber gerade am Anfang,

weil man im Interpreter auch deutlich besser

auf Fragen eingehen kann, da kann ich dann

einfach den, wenn mir

mich, wenn ich gefragt werde,

was ist denn, wenn ich das und das mache,

kann ich das einfach direkt zeigen, als wenn ich das

in eine Datei schreibe und dann den Commit,

das wieder committen muss.

Also, wir wechseln dann meistens so bei

if und schleifen.

Ja, weil da ist es dann irgendwann...

Dann hast du auch Verschachtelungen und sowas

und dann wird es schwieriger, einfach nach oben zu drücken.

Ja.

Da wird es dann anstrengend irgendwie mit B-Python.

Das könnte man tatsächlich wahrscheinlich eben

im Jupyter Notebook

machen.

Ja.

Aber dann hat man halt

tatsächlich auch wieder erstmal so einen Webbrowser dazwischen

und dann muss man, wenn die Leute das nachvollziehen...

Wenn die Leute das nachvollziehen

wollen, wird es wieder schwerer.

Ja, es ist nicht so...

Jupyter habe ich immer gerne mal versucht, so zwischendurch anzutesten.

Das ist natürlich super nett, gerade wenn man so Grafen noch

einbaut, weil man direkt die Auswirkungen

von dem Datensatz in diesen Grafen sehen kann.

Aber ansonsten fand ich das eher so ein bisschen anstrengend.

Aber vielleicht bin ich jetzt auch nicht

wirklich drüber gestolpert.

Ja, also ich glaube, man hat

erst so richtig den... Also oder für

mich hat es halt dann richtig funktioniert,

als ich

gemerkt habe, dass ich mir damit

eine Menge Zeit sparen kann, wenn

man Schritte hat, also die irgendwie Daten

laden oder Sachen, die lange

laufen und wenn man dann irgendwie

Fehler macht und dann nicht alles

weg ist, sondern man

den Fehler korrigieren kann und das dann nochmal

die Zelle ausführt und es dann einfach weitergeht.

Das war dann so, wo ich mir dachte, wow.

Das ist der beste Debuggen dann quasi.

Ja, das ist halt so das, wofür ich das dann

brauche. Aber wenn ich jetzt

zum Beispiel Webentwicklung mache, dann

benutze ich das zwar auch, aber deutlich

seltener. Also eigentlich eher nur dann, wenn ich halt so

viel Jobs

habe, die eine Menge Zeugs berechnen.

Ja.

Aber nee, das ist schon...

Ja.

Jetzt sind wir ja gerade wieder bei der Umgebung.

Welche nutzt ihr denn so privat dann?

Inwiefern

Umgebung?

Benutzt ihr überhaupt eine oder bleibt alles in der Shell?

Ich schreibe meinen Code

bis der Nadel auf der Platte.

Ach so.

Ich persönlich bin ein großer Fan von Atom,

weil ich halt nicht nur Python

benutze, sondern auch irgendwie für

die Software, die wir im Dorf haben, die existiert

oder ob ich auch für die Uni

diverse Programmiersprachen nutzen muss.

In Atom kann ich halt Plugins für irgendwie alle Sprachen

installieren und dann funktioniert das halt ähnlich.

Ich muss mir das nicht immer einzeln anschauen.

Ja.

Ja, ich glaube, ich habe jetzt einmal

alles ausprobiert.

Am Anfang war es tatsächlich

G-Edit, der

vorinstallierte Texteditor von Gnome.

Das hat auch gut

funktioniert, weil es hat halt Syntax-Highlighting

und mehr brauchte ich da nicht.

Dann war so ein bisschen meine

Sublime-Text-Site.

Das hat jetzt auch nur ein bisschen

mehr gemacht als G-Edit. Also ich konnte

den Code auch im

Editor direkt ausführen.

Sublime hat dann eine Python-Konsole

aufgemacht. Das hat auch gut

funktioniert. Dann habe ich

auch Atom benutzt, auch mit Plugins.

Die mir dann zum Beispiel

den Linter

gemacht haben oder eine Python-Konsole.

Mittlerweile bin ich bei

VS-Code angelangt mit

ich glaube, ich weiß nicht, ob es da

Plugins oder Add-ons heißt.

Jedenfalls ein Flake-8-Add-on,

dass er mir direkt die

Type-Annotations

Oh ja, MyPile.

Ich glaube, das ist

ich habe, glaube ich, nur das Flake-8

oder auch MyPile.

Großartig, habe ich auch für mich entdeckt.

Da kann man ja auch die

Kit-Verwaltung direkt einbauen und

man hat so eine tolle Live-Share-Funktion.

Da kann man kollaborativ direkt arbeiten.

Da ist man vor dem gleichen Rechner.

Geht in Atom auch alles.

Aktuell mein Workflow ist

Das gibt man im BI auch.

Screen-X

Das ist schon so ein bisschen

angestaubt.

Letztendlich sind wahrscheinlich alle Texteditoren irgendwie.

Aber wir scheinen alle nicht wirklich so eine Idee

zu nutzen, sondern eher ein Texteditor mit

zig Plugins.

PyCharm habe ich installiert. Ich starte es irgendwie

jedes halbe Jahr mal und mache es dann direkt wieder zu.

Ich verwende es tatsächlich

auch manchmal länger.

Wobei, ehrlich gesagt,

eher WebStorm als PyCharm.

Also die

gleiche Idee, aber für JavaScript.

Oder halt TypeScript

in meinem Fall jetzt.

Ja, aber ich finde PyCharm

auch schwer zu bedienen.

Es kann schon auch coole Sachen,

aber es fühlt sich

nicht so gut an wie ein richtiger

Editor irgendwie.

Und ich

meine, ja, selbst

Atom, das ja im Grunde auch mehr so

ein

Browser mit irgendwie JavaScript und dann

im Editor in JavaScript in dem Browser ist,

fühlt sich halt viel

irgendwie so agiler an

als PyCharm.

Was man da sagen muss, ist, dass die bei Atom in den letzten

zwei Jahren wirklich stark an der Performance gearbeitet

haben. Also wahrscheinlich auch dadurch bedingt, dass viele

Leute auf VSCode umgestiegen sind, weil es halt

schneller war. Atom ist

wesentlich schneller geworden tatsächlich.

Ah, okay. Muss ich vielleicht auch nochmal ausprobieren.

Ich finde, der Niklas hat auch eben

einen guten Punkt gebracht, dass

eben, klar, wenn ich mit Python arbeite,

gibt es wahrscheinlich nichts Besseres als

PyCharm, also keine umfassendere

Lösung, gerade weil

die Professional-Version

auch noch sehr gute

Interaktion

mit anderen Sachen, zum Beispiel

Git oder Django liefert. Nur

gerade wenn ich

in meinem Git-Repo nicht nur

Python-Dateien, sondern eventuell noch eine

Markdown-Datei oder ein Bild habe,

oder ganz andere Sachen,

dann hilft mir

PyCharm nicht, weil

dann habe ich VSCode und dann kann ich da

die Code-Dateien öffnen, dann kann

ich die CSV-Datei

ändern, da kann ich die

readme.nd ändern, da kann

ich mir das Bild angucken,

alles in einem Programm, statt dass ich

die Python-Datei in PyCharm

bearbeite, die Markdown-Datei

in meinen Markdown-Viewer,

das Bild in meinen Bildbetrachter

und die CSV-Datei in

meinen Tabellen-Kalkulation.

Also so am krassesten

habe ich mich gefühlt tatsächlich, als ich mit

Platt, wo wir irgendwie so ein Diagramm gemacht

habe, das dann halt in Atom

auch direkt schreiben und dann live gerendert habe und das

dann in readme eingebunden und

das war halt schon

recht cool. Gerade für so Sachen, wo

man eben nicht nur Code-Dateien

im

Repo hat, ist glaube ich so ein Text-Editor

mit Atoms

die bessere Option, weil dann kann ich

mir VSCode

und dann habe ich eben

Autocompletion für Python

und meinen Linter und

meinen MyPy und

vielleicht dann noch ein Preview

für Markdown-Dateien und

der Bildbetrachter ist eingebaut.

Da habe ich dann alles in einem Programm,

habe an der Seite die

Ordner-Übersicht

und dann kann ich da durchgehen,

habe das in einem Programm

zweites Fenster noch, das

Terminal und bin damit voll zufrieden.

Und die Einstiegshöhe ist auch geringer,

ich kann mir irgendwie Subclime installieren, die Datei

öffnen und da kann ich direkt anfangen zu

programmieren. Ich muss mir nicht mehr

erstmal durch den Einstellungsdialog klicken,

um auch zu finden, wie ich jetzt zoome oder so.

Das funktioniert halt alles so, wie man es erwarten würde.

Das finde ich schon praktisch.

VSCode habe ich jetzt

erst seit neuerdings, also vielleicht

drei Monate

und

da habe ich mich positiv überrascht.

Ich habe VSCode geöffnet und wollte dann

einfach meine Python-Datei ändern

und da hat er direkt mir

vorgeschlagen, hier möchtest du nicht

dieses Add-on installieren,

das dir die Autocompletion macht

und ich so, ja, gerne.

Hier wähle dein Linter aus.

Ja, gerne.

Brace yourself, Linter.

Das ist ja sehr user-centric.

Natürlich.

In meinem RSS-Feed lese

ich dann auch hin und wieder, welche Neuerungen

in VSCode jetzt bezüglich

Python kommen und das sieht schon

sehr gut aus.

Das einzige große Problem, was ich mal mit

Atom hatte, ist, Atom konnte

sehr spät so Type Notations.

Das hat bis irgendwie 1.25

oder so, wenn

ein Feil in der Methodensignatur war,

ist das ganze Highlighting kaputt gegangen.

Das war sehr witzig, weil das ja eigentlich

schon seit Python 3 im Sprachstandard

enthalten ist und dann, ja,

aber gut, ja.

Ich muss auch sagen, seitdem ich VSCode mit

einem direkt eingebauten Linter

benutze,

nicht nur, sondern

da benutze ich auch

richtig gut die Type Notations

und selbst, wenn es irgendwie ein Skript von

50 Zeilen ist,

dadurch, dass der mir

darauf hinweist, wenn ich was falsch mache,

benutze ich es häufiger

und das finde ich, das ist schon ein positiver

Nebeneffekt, dass ich schöneren

dokumentierten Code schreibe.

Ja, aber so Type Notations machen wir uns am Anfang

auch nicht sicher, wie wir das jetzt

tatsächlich, sollen wir das zeigen,

sollen wir das nicht zeigen?

Wir haben es am Anfang so gemacht, dass wir

die alte Syntax genommen haben, wo die Typen

nicht bei den Variablen standen, sondern

in den Kommentaren dahinter, weil wir uns

überlegt haben, wir wollen eigentlich, dass unsere

Beispiele mit allen Python-Versionen laufen.

Zumindest mit allen Python-3-Versionen.

Also auch mit 3.4.

Mit allen aktuellen

verschützten

Python-3-Versionen. Aber wenn dann jetzt

3.4 irgendwann stirbt, dann können wir uns

überlegen, ob wir das nicht vielleicht auf die neue

Syntax ändern.

Ja.

Das ist natürlich auch so, gerade wenn

man den Code für Einsteiger

schreibt und nur

sagt Python 3,

dann muss man natürlich auch darauf achten,

dass der Code kompatibel bleibt.

Wir hatten für ein Glück noch niemanden, der damit

3.2 oder 3.3 aufgetastet hat.

Das ist einfach zu schwer zu installieren.

Das schafft sowieso kein Anfänger.

Gibt es wirklich noch zwei Sachen irgendwo?

Docker, Python, Doppelpunkt 3.2.

Ja, also ich

habe durchaus schon noch,

zum Beispiel, was mich irgendwie auch

genervt hat beim Roster eines Kunden,

dessen aktuellste Version war,

war Python 3.3.

Das war auch bei Debian

eine Zeit lang das, was

dabei war.

Das ist halt schon schlimm.

3.4 wäre echt gut gewesen.

Wir sagen uns halt, wenn die Version

im Moment noch supported ist,

dann versuchen wir auch die zu verwenden.

Es ist ja nur 3.4 im Moment noch.

Insofern ist 3.4 eigentlich

für mich war so 3.4 die erste

richtig gute Dreier-Version,

die man

ja,

wo einem nicht mehr so dauernd

Sachen auf den Fuß gepresst wird.

Wann hast du mal Python 2 über den Weg gelaufen,

so im aktiven Betrieb?

Mir ehrlich gesagt

schon ganz lange nicht mehr.

Ich würde sagen, das müsste dann schon

so wahrscheinlich 2000,

na okay, so lange ist das jetzt auch nicht her,

2014,

2015 gewesen.

Letzte Woche hatte ich ein Startup getroffen,

die so einen Sensor betrieben haben auf

Python 2 API-Base.

Ich habe ein bisschen...

Haben sie noch ein Jahr,

zwei Jahre Zeit.

Ich habe aber auch

mittlerweile das Gefühl, dass Python 3

doch mittlerweile weit

genug verbreitet ist. Also,

dass Python 2 doch langsam stirbt.

Ja.

Endlich das Problem gelöst. Keine zwei Sprachen mehr,

sondern Progress.

Weil Python 3 ist dann irgendwann

nicht mehr Zukunft, sondern Gegenwart.

Wann kommt dann endlich Python 4?

Sollte es ja eigentlich gar nicht geben,

wenn ich die Leute...

Ich habe einen Blogpost von 2015 gefunden,

wo es 2020 drin stand, aber...

Aber da ist dann Python 3 42 oder so.

Ich glaube es auch nicht.

Da stellt sich dann natürlich die Frage,

ob man bei Python

überhaupt eine 4 oder 3,1

4,1

Wobei, es gab doch,

ich meine, in den

2.3.7 oder so, gibt es irgendein

Feature, dass Type Annotations

als String betrachtet werden,

wo steht, dass das im Moment Opt-in ist,

irgendwie mit From-Future-Import, aber Python 4

macht das dann als Standard. Und dann habe ich mir gedacht,

okay.

Das mit dem Annähern

an so eine Zahl,

das ist leider schon ein bisschen vergeblich.

Ich glaube, Lattech macht E und Tech macht

Pi oder so, oder?

Die nähern sich mit ihren Versionen schon irgendwie.

Wenn sie bei Sempfer

bleiben würden, wäre ich davor.

Ja, das wäre auch ganz gut.

Wenn die Versionen

nichts bedeuten, ist das auch so ein bisschen schlecht.

Ich kann doch jedes Jahr wieder

hochzählen, dass wir irgendwann 2020

angekommen sind.

Wenn sich da nichts großartig ändert, warum nicht?

Das verwirrt mich ja immer noch bei den

Ubuntu-Versionen, die sich nach

Buchstaben benennen

und dann nach Z wieder bei A

angefangen haben.

Was hättest du erwartet, dass die irgendwie auf Emojis springen, oder was?

Anderes Alphabet, Brille.

Ich hätte Witz nicht gefunden.

Naja.

Ja.

Was mich jetzt noch

interessieren würde,

nicht in Gründen. Was wäre denn mit dem nächsten Level?

Also wenn ich jetzt so die ganzen Basics irgendwie so

ein bisschen verstanden habe,

was würde ich denn als nächstes machen?

Also wir müssen uns ja nicht immer

da sklavisch an

unser Rahmenprogramm halten. Das haben wir ja nur

vorbereitet, damit wir notfalls was haben.

Also wenn Leute

Fragen zu Themen haben, dann gehen wir da auch

drauf ein oder wenn die irgendwie Projekte haben

oder sowas. Projekte ist vielleicht ein gutes Stichwort.

Das heißt, wenn man bei euch durch ist mit Tutorial,

dann sollte man mit Projekten anfangen oder

was würdet ihr empfehlen, um die Sprache so

ein bisschen besser zu verstehen oder irgendwie so Konzepte

zu gestalten? Ja, ich glaube, es ist

tatsächlich ein sehr guter

Ansatz, dass man,

wenn man mit dem Programmieren anfängt

und dann das Tutorial bei uns

absolviert hat, das muss

noch nicht mal alle 10 Level sein, sondern das

kann halt auch, ich glaube

mit Level 6 haben wir

Funktionen abgearbeitet. Ich glaube, es sind mehr als

10 Level.

Ich glaube, mit Level 6

haben wir Funktionen abgearbeitet,

und dann, wenn man dann quasi

ein Projekt hat, wenn man

sich überlegt, ich möchte

irgendwas mit Bildern machen,

ich möchte irgendwas mit Zufall

machen, ich möchte... Oder mit Netzwerk.

Oder mit Netzwerk, dass man dann

quasi anfängt,

normalerweise fange

ich immer so an, erstmal

wie macht man den

Brandham-Algorithmus

in Python, dann google ich das und dann gehe

ich auf Stack Overflow und gucke ich mir an.

Jetzt musst du ganz kurz für unsere Akteuren,

was der Bandham-Algorithmus ist.

Würde ich auch gerne wissen.

Das war ein Beispiel.

Damit habe ich mich irgendwann mal beschäftigt,

ich weiß es selber nicht mehr.

In die Shownotes kommt das dann.

Ich kann es rausrufen.

Also wie gesagt,

meistens hilft es, wenn man

ein Projekt hat, das möchte man machen,

und dann

beschäftigt man sich

daher mit Python, weil dann hat man

ein Ziel, und dann

kann man gezielter Fragen

stellen.

Ansonsten haben wir ja auch

diese Situation,

dass wenn Leute

beim ersten Donnerstag im Monat zu uns kommen

und beim zweiten Donnerstag im Monat zu uns kommen,

dass die Personen dann ja doch

irgendwie was mitgenommen haben, hoffentlich.

Und dann kann man auch zum dritten Donnerstag

im Monat kommen, und dann sind wir nicht mehr da,

und dann können wir sicherlich was anderes tun.

Ja, aber

genau, wenn ihr sagt, ihr macht dann

Funktionen, wie tief geht denn das eigentlich

sozusagen?

Jetzt haben wir Rekursionslimit.

Haha, okay.

Aber macht ihr auch so Dekoratoren

dann noch an Funktionen, oder?

Ja, aber nicht in dem Level, das kommt später.

Erklärt ihr sowas, was Kloschers

sind und solche Dinge?

Also das machen wir irgendwann,

wenn ich meine, dann haben wir Level 8, 9 oder so,

aber nicht dann.

Ja, ich glaube 8.

Ja, das ist immer eine schwierige Abwägung,

weil man kann in die

Themen viel tiefer reingehen.

Wir haben zum Beispiel am Anfang auch

nur positionale

Parameter gemacht, und das dreht dann auch hier weiter

auf GeoWord und sowas.

Weil

man möchte natürlich auch nichts erwähnen,

was man noch nicht erklärt hat.

Also zum Beispiel, wenn ich

ein String habe, wenn ich

ein Level 1 Strings durchgehe,

und dann sage, ja,

ich kann feststellen, ob

ein String

Uppercase oder Lowercase ist, wenn ich

String.isLower schreibe.

Dann müsste ich

eigentlich erklären, ja, das ist jetzt eine Methode

von String, die rufe ich auf den String auf.

Und dann kommt es halt als ersten Parameter selbst.

Ja, aber

ich persönlich finde es auch irgendwie doof zu sagen,

das müsst ihr jetzt wissen, aber das machen wir

später.

Was zu erwähnen ist einfach gar nicht.

Ja, aber ganz witzig da auch, weil

ihr beide habt so ein bisschen andere Arten und Weise,

diese einfacheren Dinge zu erklären, und weil

auch neue Leute dabei waren, hatte ich zum Beispiel so, dass ich

einige Lektionen von jedem von euch einmal gehört habe.

Und das war sehr cool, weil ich dann bestimmte Sachen noch

neu gelernt habe, die ich vorher noch nicht kannte.

Ja, das erinnert sich auch.

Ich war auch bei der gleichen Person jeden Monat.

Wir lernen ja auch dazu.

Das hoffentlich.

Ich behaupte, wir haben

beide schon sehr viel daraus mitgenommen.

Ich finde es halt immer doof, wenn man

Sachen nach hinten verschiebt und sagen muss,

ja, also Print, das ist

eine Funktion, und was eine Funktion ist,

das sagen wir später. Oder auch

in Programmierung in der Uni

in Java, ne? Erstmal, das ist

eine Klasse, das ist eine Funktion, das erklären wir

später. Ich finde das immer,

wenn man was erwähnt, dann soll man es

erklären.

Und klar, man kann

die Print-Funktion,

man kann auch einfach hinnehmen, dass, wenn

ich da einen String reintue, dann wird er ausgedruckt.

Wir können ja Funktionsaufrufe

auch machen, bevor wir selber Funktionen definieren.

Das ist ja kein Problem.

Man kann sagen, das ist eine Funktion,

die

bietet die Möglichkeit, einen Code

abzuspeichern und wieder auszuführen.

Und wie man das selber definiert,

machen wir später.

Aber gerade bei diesem

String-Beispiel, dass man eben Funktionen

hatte, die auf einen String aufgerufen

werden und nicht mit einem String,

das hat

bisher auch zum Glück niemand gefragt, warum da ein Punkt

steht.

Das ist so eine Schwierigkeit,

die es mit sich bringt,

wenn man eben

am Anfang Sachen erklären will, aber noch

nicht zu sehr darauf eingehen möchte, warum das

jetzt so ist.

Und wenn man dann

weitergekommen ist, dass man halt viele von diesen

Konzepten verstanden hat und sein eigenes Projekt angefangen

hat, dann ist halt die Frage,

möchte man jedes Projekt dann komplett abschließen oder hat man

in dem Projekt so schnell was gelernt, dass man direkt nächstes

macht? Wie viele von euren Projekten habt ihr nicht

fertig gemacht? Alle werde ich

irgendwann nochmal fertig machen, glaube ich.

Also das

erste Projekt, mit dem ich angefangen habe,

war

irgendwie eine Verwaltung

für einen Videorekorder. Ich habe zu Hause

so einen Festplattenrekorder, mit dem

konnte ich irgendwie Dinge aus dem Fernsehen aufnehmen.

Und dann habe ich mir gedacht, das wäre ja total

cool, wenn ich die dann irgendwie so sortieren

könnte, irgendwie nach einer Staffel,

Episode und sowas. Es gibt da ja auch

so Online-Datenbanken. Und das war

mein erstes Projekt und

ich mache da alle zwei Jahre nochmal irgendwie so

einen Commit. Und bitte guckt euch nicht auf Github

an, das ist schrecklich.

Ja, ich glaube, ich habe auch noch auf

meinem Github-Repo, in meinem

Github-Account, Karteileichen

von Projekten, die ich mal angefangen

habe, halbherzig

irgendwann dann liegen

lassen. Da müsste ich, glaube ich, auch mal

auskehren. Noch diesen einen

YouTube-Client, der irgendwann einfach

das Stack-Limit erreicht bei jeder

Menüpunkt neuer Regressionswissen.

Ja, das

Programm gibt es noch. Ich glaube, das funktioniert

sogar noch. Aber

da habe ich halt seit Jahren nichts mehr gemacht.

Und ich nehme mir vor,

das irgendwann zu tun, aber

ja.

Man kann die Repos

ja auf Github mittlerweile auch aktivieren. Aber ich hatte

bisher noch nie diese

harte Entscheidung getroffen, dass man doch nicht mehr

verwandelt.

Nee, das, genau. Es gibt da

mehrere, also bei mir gibt es auch, ich habe ganz,

ich weiß nicht genau, ich habe vielleicht so

60 Github-Repos

oder sowas.

Ich sammle die nicht, aber

im Verlauf der Zeit

passiert das irgendwie. Und dann gibt es halt unterschiedliche Stadien,

von denen sich

Projekte befinden können.

Also tatsächlich, ich habe auch noch nie

ein Github-Repo gelöscht oder ein Projekt wirklich komplett wieder

verschwinden lassen. Aber es gibt dann

halt welche, wenn ich dann schon mal

eine Domain registriere, dann ist es schon ernster.

Oh ja.

Ich habe

Projekte, die ziemlich gut funktionieren, zu denen

ich aber keine Doku habe. Und ich habe

welche, wo ich eigentlich nur das Konzept habe

und auch keine Software. Es gibt so eines,

da habe ich eine Domain, da zahle ich jedes Jahr Geld

für und da habe ich keine Software für.

Sehr gut.

Bei

einem Projekt, das hatte ich,

das ist mittlerweile jetzt auch

drei Jahre alt, da ging es um Gruppen,

Optimierung und ich hatte das angefangen

und da hatte ich

erst unglaublich viel Zeit

investiert, mir

viel zu viele Gedanken zu machen, okay,

wie mache ich das jetzt? Das war doch dein erstes

grafisches Programm, oder? Ja,

das war für mich aus

vielerlei Hinsicht interessant, weil ich da

einerseits einmal so richtig

mit Objektorientierung gearbeitet habe,

also so einmal

komplett Objektorientierung und Grafik

und... Weil es geht. Weil es geht.

Weil ich quasi daran auch selber

...

Dinge lernen wollte. Daran habe ich

dann auch Git viel besser

kennengelernt.

Konflikte mit sich selbst ist auch etwas, was man

vergabt haben sollte. Das muss man

einfach mal gemacht haben und

ich glaube, nach

ein paar Monaten, wo ich da wirklich hochkonzentriert

dabei geblieben bin, bin ich

dann in so eine Sackgasse gelaufen,

dass es einfach nicht mehr funktionierte. Dann habe ich

das liegen gelassen, dann habe ich irgendwann wieder angefangen,

die Codebasis

überarbeitet und dann lief es wieder

und dann habe ich das wieder ein bisschen

liegen gelassen und dann habe ich da irgendwann

mit weitergemacht und mittlerweile bin ich

da sogar auf einem relativ guten Weg.

Aber

mittlerweile ist

bei mir im Allgemeinen die

der Workflow

auch so, dass ich zwar Projekte lokal

anlege, auch als Git-Repo,

aber dann erst

auf meinen GitHub-Account

hochlade, wenn das quasi

so weit ist, dass ich der Öffentlichkeit

zeigen möchte.

Ja, also ich habe das vor, dass ich

alle, also dass ich eigentlich nur noch ein

oder ein Projekt habe, an dem ich

aktuell arbeite und das halt irgendwie so mal

entweder, weil mir das

eine irgendwann langweilig wird oder durch

so andere Faktoren, wie wenn ich

Zeit oder sowas, oder Leute

sprechen mich mal an mit, hey, was ist denn eigentlich

geworden aus, dass ich das dann so

einmal im Monat wechsle, was ich gerade

aktuell mache. Ja, ich glaube, bei mir

ist das relativ sprunghaft.

Also ich habe dieses große

Projekt mit der Gruppenoptimierung,

wo ich halt immer, wenn ich mal wieder

Zeit und Lust dran habe,

weiterarbeite. Da habe ich es jetzt

mittlerweile auch ganz gut mit der Doku hinbekommen,

dass ich auch vier Monate

später noch weiß, wo ich

war und was mein letzter Stand ist.

Hast du auch Tests?

Tatsächlich habe ich teilweise

Tests. 100% Coverage.

Naja, die werde ich niemals

erreichen, aber für die

Objektiorientierung, die da

zugrunde liegt, sind Tests

sogar schon fertig.

Die führe ich auch hin und wieder aus.

Aber meistens

ist es bei meinen Projekten eher

sprunghaft, dass ich halt

kleinere Projekte habe. Das sind dann

meistens auch nur so ein paar hundert Zeilen Code,

wo ich entweder

spontan die Idee dazu hatte

oder da hatte

mich wer gefragt und ich habe das einfach mal

ausgetestet oder wir hatten da

Donnerstag darüber gesprochen und ich wollte da

quasi noch weitergehen. Das hatte ich jetzt

letztens, da habe ich was mit Bildern

gemacht. Also aber du hast

die Sachen auch vorher mal direkt bei GitHub direkt hochgezogen.

Das ist ja interessant. Also ich habe jetzt auch so ein paar

Sachen entdeckt. Bitbucket kennt ihr ja bestimmt alle

und Azure. Da gibt es ja jetzt auch die Möglichkeit,

private Repositories unbegrenzt anzulegen.

Ja, dafür habe ich mir einen

extra GitLab-Account gemacht, damit ich

ein privates Repo anlegen kann.

Ja, aber das gibt es jetzt bei GitHub auch.

Das war früher, aber das ist

kostenpflichtig.

Also das ist jetzt neu, das ist nicht mehr kostenpflichtig?

Nee. Achso.

Da wollte ich dann auch überlegen, ob ich mein

Gruppenoptimierungs-Repo einmal

auf GitHub hochlade und eventuell

dann sogar ein öffentliches

Repo, weil es mittlerweile doch

ganz schön ansehnlich ist. Aber es gibt

bei diesen kostenlosen

privaten Repos auf GitHub

irgendwie Einschränkungen. Aber du kannst glaube ich

irgendwie dann keine Leute hinzufügen

oder sowas, die damit arbeiten können. Das kostet weiterhin

Geld. Ah, okay. Ja gut,

irgendwie soll GitHub ja auch nicht verdienen.

Also finde ich schon okay.

Aber Gruppenoptimierung,

das... Ich glaube,

nicht mathematische.

Nein, nein, nicht mathematische Gruppen.

Ja, so Teamzuteilung.

Ja, Teamzuteilung.

Hatte ich mir dann

in der Mitte der Entwicklung dann auch überlegt,

hm, weise ich

hier Menschenwerten zu, ob das noch

moralisch vertretbar ist.

Man muss wissen, Dodo macht Jugendarbeit.

Ja, ich mache das mit der Jugendarbeit

und da ist es immer schwierig, die Teams

fair zu gestalten.

Und irgendwelche Sensoren

die Arbeit übernehmen lassen für die Bewertung.

Ja,

da musste ich mir dann auch,

zum Glück funktioniert das Programm

auch mit beliebigen Attributen.

Also die sind nicht so tief

eingebaut, dass ich die nicht jederzeit ändern könnte.

Da musste ich mir dann

erstmal Gedanken machen, welche Attribute ich nehmen kann.

Aber da

habe ich dann auch gesehen, dass ich

das gar nicht kann, dass ich quasi

ein Projekt von vornherein aus plane

und dann irgendwann anfange. Das war

da am Anfang mein Fehler, dass ich mir viel zu

viele Gedanken gemacht habe, wie ich das

dokumentiere, wie ich das strukturiere.

Und es hat deutlich besser geklappt,

als ich dann irgendwann einmal die Codebasis

komplett umgeworfen habe und direkt

angefangen habe, Code zu schreiben

und danach zu dokumentieren,

was ich da gemacht habe,

als erst zu schreiben,

okay, ich habe hier ein Player-Objekt

und dann habe ich ein Team-Objekt

und dann müssen die so und so

miteinander interagieren.

Da hat es mir tatsächlich besser getan, einfach

anzufangen, Code zu schreiben,

dann ein bisschen zu dokumentieren, dann weiter

zu schreiben.

So ein bisschen Agile Hands-On, das kannst du auch

bestätigen.

Mir fällt das auch deutlich leichter, wenn ich

das so mache. Also ich meine, es gibt wahrscheinlich auch

einfach unterschiedliche Arten von

Leuten, denen

unterschiedliche Dinge leicht oder schwer

fallen. Aber das, was man ja sozusagen

erzählt bekommt, ist, dass

der Weg, wie es eigentlich

sein sollte, irgendwie top-down.

Man macht irgendwie Architektur und überlegt sich,

wie Dinge so funktionieren sollen.

Das ist aber schon sehr klassisch.

Und dann füllt man das sozusagen nur noch aus

bis zu, keine Ahnung, wenn

ein Konzern, das habe ich mal irgendwann von Siemens

gehört, wo es dann irgendwie, dann gibt es dann

irgendwie die Informatiker, die dann halt

sich die Architektur überlegen oder die UML-Diagramme

malen. Dann gibt es halt Programmierer, die dann halt

die Funktionssignaturen ausfüllen.

Es gibt ja auch so Tools, die dir aus UML-Diagrammen

dann automatisch Code erzeugen.

Ja.

Das finde ich auch ein bisschen ekelig.

Also aufgrund meiner eigenen Erfahrung

kann ich mir sehr schwer vorstellen, dass das irgendwie

zu einem guten Ergebnis führt.

Das ist das Problem der Digitalisierung, oder?

Dass halt alles völlig überplant ist und dann,

ändert sich die Umwelt viel schneller,

als der Plan noch aktuell ist.

Und dann ist der ganze Aufwand, den man

für das Plan betrieben hat, erstens dahin

und man ist dem Projekt noch nicht so weit. Man hat noch keine

Traction, wie man das so schön sagt,

bekommen irgendwo. Aber andererseits

sollte man durchaus schon so ein Konzept

haben, was man eigentlich machen möchte.

Ja, gut.

Aber das muss ja nicht komplett ausformuliert werden.

Nee, nee, nee.

Es reicht ja auch, wenn du weißt, was du vorhast.

Aber wenn du das da ausformulierst,

ist die...

der Wille,

sich an genau dieses Konzept zu

halten, größer, als wenn du einfach

nur ein Konzept im Kopf hast und dann...

Oder das kann auch

grob ausformuliert sein, aber ich hatte halt

versucht, das relativ

stark und streng

auszuformulieren und dann habe ich festgestellt, dass ich

beim tatsächlichen Schreiben des

Codes an Probleme stoße,

die ich vorher einfach nicht bedacht habe, die dann...

wo ich mein Konzept ändern müsste

und da habe ich dann nicht versucht, das Konzept

zu ändern, sondern den Code und das hat halt

nicht geklappt, bis ich dann irgendwann eben

das mit dem Konzept

gelassen habe und direkt angefangen habe, Code

zu schreiben, das klappte dann deutlich besser.

Ja, also mir geht das

oft tatsächlich so, dass man die Abstraktionen,

die man braucht, um das Ganze zu strukturieren,

weil Struktur sollte es dann am Schluss ja

vielleicht schon haben, erst einfallen,

wenn man das implementiert, weil viele Dinge,

die wichtig sind

und man gar nicht weiß,

bevor man es nicht gemacht hat und dann erst,

wenn man es hinschreibt, merkt man also,

oh, das ist mal ganz wichtig, das und...

dieses und dieses Ding, die vorher, wo ich vorher gedacht hätte,

die wären gar nicht gleich, die sind aber eigentlich fast das Gleiche,

dann kann ich die dann hier zusammenfassen und dann

kann es sein, dass da irgendwie

auch ein

elegantes Konzept oder so draus entsteht,

aber eher so im Nachhinein, wenn man

das Problem wirklich verstanden hat, aber um

das Problem wirklich zu verstehen, muss man irgendwie das

schon programmiert haben, sonst...

Ja. Aber gerade so,

wenn man mit großen

zeitlichen Abständen an einem Projekt arbeitet,

finde ich es persönlich wichtig, auch sich so Sachen aufzuschreiben,

weil ich es ansonsten einfach vergesse

und ansonsten,

was ich nicht, also gerade auch

bei Software, die dann auch tatsächlich Leute nutzen,

also die ich nicht nur für mich selbst schreibe,

finde ich das auch irgendwie wichtig, das

ein bisschen zu dokumentieren, weil

auch wegen dem Busfaktor und sowas,

also es wäre halt gut, wenn ich

das nicht nur in meinem Kopf habe, sondern es im Notfall auch

andere Leute machen könnten.

Kleine To-Do-Liste vielleicht, ich weiß nicht, wird das dann

schon viel sagen?

Wie macht

ihr Dokumentationen

sozusagen in euren Projekten?

Zu wenig?

Zu wenig, ja.

Das Gruppenoptimierungsprojekt

war jetzt das erste, wo ich wirklich

Dokumentation

gut angelegt habe.

Da habe ich halt eine

Readme-Datei, die so das Grobe umfasst

und dann zu bestimmten Themen.

Ich glaube, ich habe eine

GUI.md, die eben beschreibt, wie man die

GUI benutzen soll und wie die

so aufgebaut ist mit Mockup-Bildern und so.

Dann habe ich eine

Klassen.md, die beschreibt,

welche Klasse welches Objekt liefert

und was die tun

sollen, was die darstellen,

wie die miteinander interagieren

und ich glaube, ich habe noch eine

Backend.md, die beschreibt,

welche Funktionen in der Backend.py

tatsächlich die

Berechnung durchführen.

Und in der Main.py werden einfach

GUI und Backend zusammengeführt.

Ich habe gerade so ein ganz wichtiges

irgendwie Sphinx oder sowas,

dokumentiert.

Also ich benutze ja auch tatsächlich

Sphinx. Also Markdown,

wird das dann irgendwie

noch in was anderes verwandelt?

Nö, ich nehme rohe Markdown-Dateien.

Genau, weil

was ich normalerweise mache, aber

ich habe auch schon überlegt, nicht vielleicht

komplett Markdown verwenden das Richtige wäre, aber

was ich momentan verwende ist halt

Restructured Text als sozusagen

Format für Dokumentation

und dann Sphinx

als sozusagen Renderer,

der dann halt hinterher

entweder eine Webseite ausspuckt oder

ein PDF oder sonst irgendwas.

Und da nehme ich dann immer noch

dieses

Read the Docs

Theme dazu.

Es gibt so eine Seite,

das ist eigentlich ganz hübsch und dann,

wenn man dieses Theme mit installiert,

dann sieht die generierte Dokumentation

halt hinterher genauso aus und

man kann sie auch automatisch irgendwie direkt

auf Read the Docs hochladen, wenn man

jetzt da in GitHub

so einen Hook aktiviert.

Ja, ich glaube, ich habe bei Sphinx

aus seiner Dokumentation an den einzelnen

Funktionen und Methoden dran, also

aus den Docstrings, die erstellen lassen.

Kann man auch, genau. Man kann dann halt

Sachen, so API-Dokumentationen

und das kann man automatisch

erstellen lassen. Das ist aber die Frage,

wie hilfreich das ist, weil, naja gut,

das steht ja auch schon im Code irgendwie und

ja,

kann man

machen, aber weiß ich jetzt nicht, fand ich

bisher nie so wirklich hilfreich.

Ich meine, wenn man jetzt natürlich wahnsinnig viel,

äh, Dokumentationen in die, äh,

in Kommentare reingeschrieben hat, dann

macht das vielleicht schon Sinn, aber...

Gerade auch bei so Live-Voices muss ich dann unter Leute überlegen, wie rufe ich

jetzt die Funktion tatsächlich auf?

Ja, das ist tatsächlich gerade so

die Hürde, vor der ich jetzt so ein bisschen noch stehe, wenn ich jetzt

an meine Projekte denke. Ich habe dann irgendwie

eine fremde Bibliothek, die ich benutze, sei es jetzt

irgendwie Qt oder irgendwie sowas

und ich verstehe jetzt nicht, wie ich was Neues da

machen kann, wenn ich eine Idee habe, die jetzt nicht direkt

in den Klassen vorhanden ist und ich muss das irgendwie

selber generieren, dann habe ich dann

eine Dokumentation in C-Code mit,

äh, den Funktionen aufrufen, die da möglich sind

und wenn ich mir jetzt irgendwie

abstrakt überlegen soll, wie ich jetzt den Schritt weiterkomme,

das fällt mir so ein bisschen schwer, also,

ne, so, was, wie kann ich jetzt ein abstraktes

Modell in meinem Kopf erzeugen, das ich noch nie kenne?

Whiteboard. Ja.

Ja.

Also auch malen, sagst du,

und dann in kleine Teile zu legen. Ja, also

malen hilft doch

ziemlich stark, finde ich, dass ich dann so Sachen

auch besser vorstellen kann. Okay.

Kann ich nur bestätigen, ich habe zwar auch ein Whiteboard,

aber einerseits, ich habe zu Hause leider kein

eins, aber wir haben ja genug davon im Dorf.

Ja, mein Whiteboard hängt leider zu weit

vom Schrank weg, äh,

vom Schreibtisch weg, ähm, was ich dann

mache, ich nehme dann, äh, noch ganz altmodisch

Zettel und Papier und... Ich habe leider auch nichts

zu...

Also Schmierzettel,

meistens die Rückseite von irgendeinem

Fehldruck und nehme dann Bleistift und

mal das auf, weil

ich habe tatsächlich festgestellt, dass ich so

deutlich besser mir Sachen visualisieren

kann, wahrscheinlich

würde das auch mit einem Grafik-Tablet

gehen, aber dafür müsste man ja Geld

aufnehmen. Grafik-Tablets fände ich cool, aber ich, äh,

habe bisher noch keins gekauft.

Tatsächlich für das Gruppenoptimierungsprogramm,

wenn ich einmal, da hatte,

da ging es um den Algorithmus, der

tatsächlich die Optimierung macht, der

teilt die Teams nochmal auf

und ist

an einer Stelle ein bisschen rekursiv und so

und dann, ähm, habe ich tatsächlich

ganz viel Papier genommen

und Schnipsel erstellt, auf die ich, ähm,

die Sachen draufgeschrieben habe,

so, hier ist mein, äh,

Player-Schnipsel und hier ist mein Team-Schnipsel

und dann habe ich ein weiteres Schnipsel

genommen, die wie Pfeile aussahen,

dann habe ich den Teppich zur Seite gerollt,

das alles auf dem Boden aufgelegt, ein Foto von

mir gemacht und seitdem

habe ich im, äh, Repo ein

Foto von Schnipseln auf dem Boden,

da bräuchte man halt auch Platz auf dem Boden, ne?

Ja, da,

da der positive

Nebeneffekt war, der Boden ist jetzt

auch gesaugt, ähm,

aber seitdem habe ich im Repo

ein Bild von, ähm,

Zetteln auf dem Boden und

tatsächlich ist das gar nicht so doof,

ich hätte es natürlich auch mit einem Grafik-Tablet

schneller hingekriegt,

aber, ähm, ja.

Ja, ne, ich mache auch oft

dann tatsächlich Fotos von, von irgendwelchen Dingen,

die ich auf dem Zettel gemalt habe, weil das halt

irgendwie schneller geht, äh, als, ähm,

wenn man das bei dir per Machine Learning automatisch

getaggt und in den richtigen Ordner...

Nee, das ist alles, alles

Handarbeit, aber was ich auch faszinierend

finde, ist, dass ich, äh, ich weiß nicht genau

warum, ich, ich wollte eigentlich das Papier immer loswerden,

aber, ähm, irgendwie,

äh, das kann ja auch sein, dass das

irgendwie so eine, äh,

ja, so historisch, äh,

irgendwie noch so ist, dass irgendwie, wenn ich,

wenn ich Sachen aufschreibe, es, es kommt, ich hab,

also meiner Ansicht nach ist es gar nicht so wichtig,

was man sich aufschreibt, sondern allein das

vom Papier sitzen und mit dem Stift da irgendwie was

drauf rummachen, das hilft einem schon

irgendwie, oder meinem Gehirn irgendwie offenbar

dabei, äh, irgendwie im richtigen

Modus zu operieren und, äh,

wenn ich das auf nem, auf nem Tablet

mache, was ich halt auch habe, dann funktioniert das

irgendwie nicht, oder wenn ich auf einer Tastatur sitze, also wenn ich

irgendwie tippe, ist es was anderes, als wenn ich das auf

nem Zettel irgendwie aufschreibe, ich hab keine Ahnung, woran das

liegt, das ist irgendwie komisch. Also bei mir funktioniert das tatsächlich

auch ganz gut mit, mit Textdateien,

vielleicht ist es halt nur, dass ich dann sonst nichts habe, also

ich mach halt dann, dann wirklich auch, auch

den, den Bildschirm frei und guck halt,

dass ich wirklich nur das habe, was ich schreibe.

Der Sehen-Modus. Und dann geht das eigentlich

auch relativ gut, finde ich.

Vielleicht ist es aber witzig mit den Zeichnen,

also ich hab auch ein bisschen das Gefühl, dass das wirklich hilft,

vielleicht benutzt man andere Gehirnteile oder sowas

und wird dann neu, kreativ, oder?

Oder auch, wenn ich gerade nicht

im Rechner bin, kann ich nicht Twitter aufmachen auf dem

Whiteboard oder so.

Ich kann mir vorstellen, dass es so eine Kombination

daraus ist, dass man einerseits weniger abgelenkt

ist, dass andererseits,

was weiß ich, vielleicht hängt es auch damit

zusammen, dass wir aus der Schule,

die wir noch gewohnt sind, wenn wir

was auf Papier schreiben, dann konzentrieren

wir uns darauf. Ich hasse Papier und Papier

hasse ich nicht. Und wenn wir vorm Rechner

sitzen, haben wir da ganz andere Reize,

die auf uns zukommen. Also ich kann das auch

vollkommen,

vollkommen nachvollziehen, was ihr sagt.

Meistens brauche ich da auch

Stift und Papier,

weil Textdateien habe ich versucht,

aber meistens

kann ich in

Textdateien das nicht so

gut ausformulieren,

wie wenn ich mir ein Schaubild aufs

Papier male. Ja, gerade so

Pfeile und so was und Kästen

sind schwierig in Textdateien, ja.

Meistens brauche ich es dann ein bisschen grafisch, weil ich mir, was weiß ich, wenn ich mir, ja, jetzt fehlt mir ein Beispiel, meistens nehme ich dann kleine Grafiken, die ich mir dann aufs Papier zeichne, um mir das zu visualisieren und ich finde, das klappt deutlich besser, als wenn ich das versuche auszuformulieren.

Was würdet ihr denn machen, wenn ihr gar nicht mehr weiterkommt? Also ich habe das auch schon ein paar Mal gehabt, dann, keine Ahnung, weiß nicht, wie es geht, also mit einem Drohverlauf, dann ist da so eine Wand, da kommt man nicht einfach drüber und was würdet ihr empfehlen, wie sollte man da dann rangehen?

Schlafen oder irgendwas völlig anderes machen, also teilweise kommen mir die Ideen dann irgendwie auf den Klo oder hinter der Dusche, abends im Bett, drüber schlafen, davon ablenken, was anderes machen, generell häufig führt das zu was, weil

ich weiß nicht wieso, aber wie gesagt, mir fielen Sachen auch unter der Dusche ein, auf dem Weg ins Bett und dann dachte ich, ah ne, jetzt nochmal aufstehen.

Was mir auch geholfen hat, dass ich mich von dem Gedanken gelöst habe, dass es jetzt schlecht ist, wenn ich was lösche, also ich habe eine Versionsverwaltung, das heißt, ich kann auch einfach mal die letzten fünf Commits rückgängig machen und neu anfangen, also dass man...

Ich muss die Funktionen nicht schrittweise neu schreiben?

Ich kann jetzt löschen und neu schreiben, ich habe die alte Version noch.

Man darf auch ruhig mal 100 Zeilen Code auf einmal löschen und neu schreiben.

Nicht jeden Tag.

Nicht jeden Tag, weil irgendwo einen Fortschritt muss es auch geben, aber dann kann man beruhigt auch mal größere Mengen Code löschen und neu schreiben.

Meistens hilft das einem schneller, als wenn man versucht, alte Strukturen noch irgendwie zu laufen zu kriegen, weil man dann viel eher noch Sachen hinterfragt, die man vorher einfach akzeptiert.

Ja.

Und noch mal das Konzept mit dem Gelernten.

Ja.

Ansonsten, Wabadacking ist natürlich auch sinnvoll, wenn ich nicht alleine vor meinem Code sitze und frage, warum der die ganze Zeit einen Fehler wirft oder warum er nicht das tut, was er machen soll.

Gerade semantische Fehler sind halt da schwieriger, wenn ich dann einfach jemand anderen erkläre.

Also das Programm macht das und das und dann stellt der mir Fragen und wenn ich die Fragen nicht beantworten kann, dann lerne ich daraus.

Oder auch...

Oder Doku schreiben. Das ist ein bisschen quasi Wabadacking mit sich selbst.

Ja.

Und da fällt mir das dann auch teilweise auf.

So.

Ja.

Allein schon, weil man dadurch auch eine andere Blickweise auf das Problem bekommt.

Mhm.

Und das hilft einem meistens.

Wabadacking, Gummienten?

Ja.

Ja, das...

Stell dir vor, du erzählst es einer Gummientin.

Genau. Ich kenne das als Wabadack-Debugging sozusagen.

Ja, genau.

Man debugt dadurch, dass man einer Gummienten...

Erzählt, was da eigentlich passieren sollte.

Und dann, wenn man das 10 Minuten...

Also, es kommt aus der Erfahrung, dass man normalerweise anfängt, das irgendwelchen Leuten zu erzählen.

Und die dann irgendwie alle 30 Sekunden sagen so, ja, aber ich habe keine Ahnung.

Und das muss man dann ignorieren.

Und dann nach irgendwie 10 Minuten sagt man sich, ah, okay, ich weiß, warum es schief geht.

Ach, Mist.

Kommt halt immer auf die Leute an.

Also, wenn du genug Leute hast, die sich für ähnliche Dinge interessieren oder Zeit haben, das wirklich spannend finden,

dann geht das auch mit echten Menschen und nicht nur mit Gummienten.

Ja, vielleicht geht es auch sogar schneller.

Aber es geht halt...

Auch mit Gummienten.

Ja, genau.

Das ist halt das Faszinierende.

So eine Art von Gummienten bin ich irgendwo bei mir über die Jahre.

Es gibt tatsächlich Firmen, die so Gummienten als Werbegeschenke genau dafür verteilen.

Meistens ist es ja so, dass man tatsächlich nicht zu doof ist, sondern irgendetwas nicht bedacht hat.

Man steht irgendwie gerade auf einer Verleitung oder sowas.

Die Fehler sind meistens döver als man selber.

Ja, was weiß ich.

Da hast du dann irgendwie eine Klammer vergessen und auf einmal ist das kein Tuppel, sondern...

Sonst noch was?

Oh ja, ich habe mir ziemlich viel Zeit damit verschwendet, weil ich einen Tuppel haben wollte mit einem Element,

dann eine runde Klammer drum gemacht habe und es war dann kein Tuppel.

Nee, es fehlte eine Klammer.

Ja, ja.

Ja, wie gesagt, meistens sind es eben die doofen Fehler, die man am längsten sucht.

Weil es dann ja auch in Ordnung aussieht, wenn du drauf guckst.

Genau.

Ja.

Naja, da gibt es schon...

Aber das finde ich auch interessant.

Das ist auch vielleicht etwas, das halt irgendwie so den...

Wenn man...

Ja, die Tätigkeit beim Programmieren unterscheidet von anderen Geschichten.

Man ist ja als...

Ich glaube, das ist tatsächlich irgendwie ein bisschen was Besonderes, dass man, wenn man programmiert ist,

dass man halt irgendwie die ganze Zeit frustriert darüber, dass irgendwie Dinge nicht gehen.

Weil alles, was geht, das geht ja super schnell und ist super schnell automatisiert.

Und man ist immer eigentlich an dem Punkt, wo was nicht geht.

Und das ist, glaube ich, bei anderen Leuten nicht so.

Also ich meine, wenn ich jetzt irgendwie, keine Ahnung, irgendeinen Garten umgrabe oder wenn ich irgendwie so Dinge...

Dann habe ich immer wieder Phasen, wo ich weiß, naja gut, das geht jetzt so eine halbe Stunde,

weil ich muss das aber...

Ich weiß, wie das geht.

Ich mache das jetzt einfach mal eine halbe Stunde lang.

Zum Beispiel beim Kochen oder so, dann schnibbel ich irgendwas.

Man hat nicht die ganze Zeit das Problem, da wirklich von einem harten Ding, was man nicht versteht, zu stehen.

Sondern man hat immer wieder so...

Man hat natürlich auch diese Momente, aber oft weiß man eigentlich, was zu tun ist und muss das halt nur eine Zeit lang machen.

Und beim Programmieren ist es oft so...

Also ja, man muss sich erst daran gewöhnen, sozusagen überwiegenden Teil der Zeit halt irgendwie mit dem Kopf vor der Wand zu stehen.

Aber das ist ja auch irgendwie so wie Wadding, weil du halt da stehst und du hast...

Ja.

Ein Rätsel und du knackst es dann irgendwann halt hoffentlich, aber...

Ja, aber das kann auch ziemlich frustrierend sein.

Ich finde es aber dann als Abwechslung auch ziemlich entspannt, irgendwie, weiß ich nicht, irgendwas einzurichten oder irgendwie Dokus zu schreiben oder so,

weil du weißt, du kannst dann halt irgendwie die Zeit einschalten und du machst das dann halt und hast so ein Ergebnis nach der Zeit.

Das ist halt schon auch nett.

Ja, so zur Abwechslung, die Kommentare zu dem Code zu schreiben, ist auch schon ganz gut.

Ja.

Aber ich verstehe dann, was du meinst, dass du quasi Programmieren keinen Anteil an Fleißarbeit hast.

Sondern du bist halt immer bei den 80 Prozent, machst du in 20 Prozent der Zeit und danach hängst du bei diesen 20 Prozent fest.

Du musst einfach wissen, wie es geht.

Ja.

Und...

Sehr schön dichter, ne?

Wenn man tatsächlich messen würde, wie viel Zeit man so beim Programm braucht.

Ich meine, der Großteil ist ja schnell runtergeschrieben, nur die Fehler, die brauchen dann viel mehr.

Und im Grunde weiß man ja auch, was...

Man schreibt eine Zeile und weiß, in der nächsten Zeit...

In der nächsten Zeile muss das und das stehen und dann kommt die Vorschleife und dann packe ich da rein das und so weiter und so fort.

Wenn ihr so einen Fehler habt, wie geht ihr denn daran?

Also versucht ihr den zu debuggen, indem ihr guckt, warum das ist?

Oder versucht ihr dann auszuprobieren, wie man den lösen kann?

Ich habe noch nie wirklich einen Debugger verwendet, sondern immer nur Print.

Ja, ich auch nicht.

Also, wenn ich einen Hintag-Fehler habe, gut, dann sehe ich im Traceback, aha, Zeile das und das.

Was sagt denn der Fehler? Aha, okay.

Schwieriger ist es natürlich bei semantischen Fehlern.

Wo das Programm keinen Fehler wirft, sondern du mit der Ausgabe nicht zufrieden bist, da ist dann die Anwendung ja okay.

Ich packe da jetzt ganz viele Prints rein und gucke, da ist es noch richtig, da auch, da auch, da falsch.

Okay, der Fehler muss ungefähr da sein.

Oh ja.

Und dann, okay, das ist jetzt ein Ausdruck der drei ineinander verschachtelte Funktionsaufrufe.

Dann verschachtele ich die jetzt mal in drei Zeilen und dann jeweils Print vorher, Print nachher.

Und meistens mache ich es dann so.

Also, wie ist CodeTroll auch einen sehr guten Debugger an der Stelle haben für so Zeugs, dass man halt die Variablen testen kann, immer genau da und diesen Print sich dann immer einem, den man nicht extra in Code schreiben muss, sondern irgendwie einen Debugger und so.

Ja, aber meistens nehme ich dafür dann auch einfach einen Print und gut.

Und wenn euch nicht einfällt diese Lösung, guckt ihr dann in die Dokumentation oder werdet ihr dann einfach angezeigen in die Modulreihen oder sowas?

Also, es mag unglaublich doof klingen, aber wenn mir ein Fehler angezeigt wird, eventuell aus einem Modul, das ich importiert habe, den ich nicht kenne, der mir nichts sagt, dann kann ich den googeln und da wird garantiert schon wer anders auf Stack Overflow dieselbe Frage gehabt haben.

Und da hilft es meistens auch, zumindestens um schon mal zu verstehen, um was für einen Fehler es sich handelt.

Klar, bei den Normalen.

Bei den Normalen Facebacks ist das relativ simpel.

Wenn da Zero Division Ever steht, dann habe ich durch Null geteilt irgendwo.

Das kriegt man relativ gut gefixt, aber wenn man die Fehlermeldung nicht kennt, dann einfach mal googeln.

Ja, aber auch vielleicht nochmal, was interessant wäre, was seht ihr denn, wenn ihr jetzt da viel Anfänger dabei beobachtet, das zu lernen, was fällt denen denn besonders schwer?

Ist das immer das Gleiche oder ist es ganz je nachdem, wer das ist?

Ganz unterschiedliche Sachen.

Cool.

Bei Anfängern hat man teilweise noch tatsächlich Flüchtigkeitsfehler, so was weiß ich, Klammer nicht zugemacht, Gänsefühlchen offengelassen.

Das sind natürlich ja gut.

Ist man eventuell noch nicht gewohnt, ein klassischer Flüchtigkeitsfehler einfach vergessen.

Das kommt natürlich vor.

Dann gibt es Fehler, die quasi wir schon wissen, dass die aufhören.

Die auftauchen werden, weil, ja.

Welche zum Beispiel?

Jetzt wäre ein Beispiel gut.

Wenn man zum Beispiel die falsche Variable benutzt.

Wenn du in der Vorschleife statt die Durchlaufvariable dein Interact, statt die Variable, die du als Durchlaufvariable hast, die Variable nimmst, die du durchläufst.

Das passiert schon mal, aber das ist dann...

Das ist dann ja auch eher ein semantischer Fehler, weil es wirft nicht zwingend einen Fehler, aber es tut halt nicht das, was es soll.

Und auch Leute, die eine Funktion nicht aufrufen, sondern nur die Funktion dahin schreiben.

Ja.

Das passiert schon mal.

Vergessene Klammern beim Funktionsaufruf.

Ja.

Ich glaube, Anfänger machen jetzt nicht groß andere Fehler als Fortgeschrittene.

Wenn du mehr weißt, kannst du auch mehr Fehler machen.

Ja, das stimmt.

Tatsächlich, ich glaube, Anfänger machen einfach nur mehr Flüchtigkeitsfehler.

Die sind das ja auch nicht so gewohnt.

Wie sieht ein String aus?

Ich erkenne viele Fehler, der hat das letztlich auch optisch.

Ja.

Wenn mir der Editor anzeigt, guck mal, da geht ein String nicht zu.

Ja gut, dann mache ich den zu.

Aber wenn ich gerade damit anfange und jeder Buchstabe für mich quasi einen Einblick in eine neue Welt gibt, dann ist das eventuell schwieriger.

Das ist auch so, dass das...

Syntaxverleitung irgendwie in der falschen Farbe, das fällt mir zunächst mal auf.

Ja.

Weil man da auch ein gewisses, ich weiß nicht, Gefühl...

Oh.

Irgendwann hat man dann auch so einen Modus Operandi.

Zum Beispiel, wenn ich Gänsefüßchen nehme, dann macht mir der Editor automatisch zwei, wenn ich eins tippe.

Dann gehe ich einmal nach links, um in dem Gänsefüßchen zu sein und dann tippe ich da rein.

Und was weiß ich, ein Anfänger...

Ein Anfänger würde dann wahrscheinlich Gänsefüßchen, den String und dann nochmal ein Gänsefüßchen und dann vergisst es dir einen zweiten.

Oder der Text-Editor fügt da nochmal zwei ein.

Ja.

Dann hast du drei und dann klappt das auf einmal nicht mehr.

Dann laufe ich ja immer noch regelmäßig rein, tatsächlich.

Ja.

Also ich würde behaupten, Anfänger machen dieselben Fehler.

Vielleicht nur häufiger.

Aber ich glaube gar nicht so häufiger.

Ja.

Gibt es denn auch...

Gibt es denn auch Dinge, die Anfänger besonders toll finden?

Etwas, wo man irgendwie zuverlässig so einen Wow-Effekt mit erzielen kann?

Oder was sie überrascht, wie einfach das geht?

Gerade so grafische Sachen sind immer ziemlich überraschend.

Wir haben mal irgendwann Tirtel gezeigt.

Und dass man einfach so schnell irgendwie...

Also gerade so grafische Ergebnisse, weil sie nicht Rechtecke oder so was oder irgendwie Flächen überraschen Leute doch.

Ja.

Es ist natürlich immer gut, wenn man direkt was zeigen kann, was auch so ein bisschen über eine Kommando...

Also klar ist es noch eine Kommandozeilenanwendung, aber wenn dann plötzlich ein Fenster aufgeht und da ist ein Bild drin.

Oder wenn ein Fenster aufgeht und auf einmal ist dann ein Graf drin.

Was ich persönlich finde, finde bunten Text im Terminal ja spannender, aber...

Ich finde das auch schon sehr spannend.

Irgendwie sehen das andere Leute nicht so.

Die Leidenschaft hat nicht so ausgeprägt.

Wir haben, glaube ich, mal einen Abend heute ziemlich stark gelangen.

Wir haben einen Abend heute, in dem wir sehr viel zu Terminals erzählt haben.

Ja.

Ich glaube, du warst dabei, ne?

Ich fand's gut.

Das hatten wir ja letzten Abend.

Da haben wir was mit Bildern gemacht.

Das hat natürlich den Vorteil, dass man direkt was Buntes sieht und auch die Erinnerungen direkt sieht.

Was für die Augen.

Ja.

Ein bisschen was für die Augen.

Voll die krassen Sachen gesehen, wenn man Blender machen kann.

Man kann halt diese ganzen interaktiven Grafiken generieren lassen mit, weiß ich nicht, 20 Zeilen oder so.

Ja, aber dafür müssen wir eine Ahnung von Blender haben.

Ähm, tja.

Das sah auf jeden Fall cool aus.

Ich hab mir das tatsächlich, als wir am letzten Donnerstag was mit Pillow und Bildern gemacht haben,

hab ich mir das direkt als, ähm...

Hab ich da richtig was verpasst?

Ja.

Hab ich das direkt als Anfang dafür genommen, mich ein bisschen mehr mit Pillow zu beschäftigen

und, ähm, ja, hab da jetzt ein kleines Projekt, das sich mit Steganografie beschäftigt.

Oh.

Ja, gerade so zu den höheren Leveln fehlen uns doch sinnvolle Beispiele.

Ja, das stimmt.

Ja.

Aber da kommen wir gerade ja dazu, Pillow.

Was sind eure Lieblingsmodule?

Puh.

B-Python, ganz klar.

Ähm, ja, B-Python ist ja ein Interpreter.

Ja, gut gesagt.

Aber ich stimme ja zu, B-Python ist schon ziemlich cool.

Ähm, boah, mein Lieblingsmodul.

Jetzt hat er B-Python gesagt, jetzt will ich ihn nicht einfach auch B-Python sagen.

Ähm...

Jetzt kannst du C-Python sagen.

Oh, oh, oh.

B-Python.

Ähm...

Ja.

Ähm, ähm, Weekfest finde ich ziemlich cool, weil man damit sehr einfach, äh, halt Netzwerk

machen kann.

Gerade auch so, wenn Leute irgendwie, es gab Leute, die hatten irgendwie so eine, so eine

Comic-Seite oder so, und da wollten die irgendwie eine Benachrichtigung haben, wenn es einen

neuen gibt oder sowas.

Also gerade so, so Projekte, die eigentlich einfach sind, aber dann doch irgendwie überraschend

sind, gehen aber ziemlich schnell.

Ähm...

Ich glaube, ich, ähm, Waypy, das wäre schon, ähm, das finde ich cool.

Weil es bringt Farbe ins Terminal und besteht nur aus 56 Zeilen Code oder so.

Also, hm, das ist für mich ein schönes Beispiel, wie man sehr einfach ein, klar, das ist jetzt

auch nicht so das große Werkzeug, aber es bringt doch einen großen, ein großes Plus

an Usability und, ähm, dafür 56 Zeilen finde ich echt gut.

Vor allem, der Großteil davon ist einfach nur ein Dictionary.

Ähm, dann, was ich noch gut finde, ist Parflip.

Oh, ja.

Einfach, weil, wenn ich sehe, wie man vorher mit OS.par...

Ja, ja, damals nicht.

...Dateien, äh, mit Dateien gearbeitet hat und wie einfacher, wie viel einfacher das

jetzt mit Parflip geht, ähm, aber das ist ja kein, kein, also, ich meine, das ist ja

Teil...

Das ist Standard, Standard-Bibliothek, ja.

Aber, ja, ich meine, auch da gibt es ja viel zu viele Dinge, die eigentlich cool sind,

die zu wenig bekannt sind und so.

Ja, ja.

Ja.

Aber das finde ich, äh, ja.

Jochen, was ist dein, äh, dein Lieblingsmodul?

Huh, mein Lieblingsmodul?

Oh je, äh, ich weiß nicht.

Hm, äh, ich glaube, Lieblings, na ja, was, was könnte, äh, äh, ich hätte jetzt auch

gar nicht, gar nicht wirklich drüber nachgedacht.

Also, ähm, was ich letztens gesehen habe, was ich ganz cool fand, äh, was ich noch

nicht kannte, war SQL-Path.

Was so?

Äh, womit man, also, äh, SQL-Statements, die man ja, also, wenn man jetzt zum Beispiel

so, äh, ORM verwendet und dann fällt da so ein Statement bei raus und man guckt sich

ja dann manchmal an, weil irgendwie ein Statement ist langsam oder irgendwas, was man mit dem

ORM macht, ist langsam und dann, äh, äh, bei Django kann man halt einfach sagen, irgendwie

man das Query-Set hat, Query-Set.query und dann spuckt das Ding das SQL-Statement aus,

allerdings dann halt so als langen String, was, äh, äh, relativ unleserlich ist und,

äh, mit SQL-Path kann man halt einfach sagen, okay, formatier mir das mal neu, äh, indentiere

das alles und dann sieht das halt nach einem hübsch, äh, formatierten SQL-Statement

aus und dann sieht man halt auch, was passiert und, ähm, genau, dafür, äh, hab ich das

letztens verwendet und fand das sehr praktisch, dass es sowas gibt, ja, ähm, hm, tja, weiß

nicht, was, äh, was hättest du denn so an, an Python-Modulen oder so?

So viel hab ich jetzt doch gar nicht durch, aber ich finde Kiwi ganz witzig irgendwie.

Kiwi, ah.

Weil das auch direkt irgendwie so Touch bietet für so kleinen Unsinn und, ich meine, wenn

man jetzt nicht total die aufwendigen GUIs bauen will, da relativ einfach ganz witzige

Lösungen hinbekommen.

Ähm, ja, was mir da, ah, was mir noch einfällt, genau, ähm, ich weiß nicht, ob wir das schon

mal hatten, Pythonista ist ziemlich, ziemlich cool, äh, das ist so eine, ähm, das ist

tatsächlich ein Python-Interpreter auf, äh, iOS, äh, keine Ahnung, wie das Ding durch

den App-Store gekommen ist, das, äh, das kann eigentlich nicht mit rechten Dingen

zugegangen sein irgendwie, aber, äh, das ist tatsächlich, äh, irgendwie vollständiges

Python 3.6, äh, und, ähm, tatsächlich, wenn also jemand mit einem, äh, gut, das kostet

Geld, das kostet Geld.

Das kostet irgendwie ein paar Euro, aber, ähm, das ist wirklich, wirklich ganz toll,

hat auch eine schöne IDE dabei, äh, also wenn man jetzt irgendwie ein, ein iPhone hat

oder ein iPad und eine Bluetooth-Tastatur, dann könnte man auch tatsächlich, äh, wahrscheinlich

irgendwie Python-Fu, äh, mit, äh, damit teilnehmen, was man jetzt gar nicht so erwarten würde,

weil eigentlich ja iOS, äh, irgendwie auf, auf Objective-C, äh, äh, C++ und C und, äh,

das gibt's dann auch, Swift, äh, irgendwie beschränkt ist.

Aber, äh, genau, und was halt auch sehr schön, äh, ist, ist, dass man da viel Zugriff

hat auf, äh, die APIs, also man kann halt, äh, also wenn man, man kann auf die Fotos

zugreifen, Location-API, man kann Grafisch-Geschichten machen und, äh, das Ding nutzt halt auch

die nativen Widgets, ähm, von, von, äh, iOS, sodass das halt auch alles, äh, so jedenfalls

von den Animationen her und so schnell ist und, ähm, ich hab's halt mal benutzt, um

so ein, so ein Sharing-Dings, äh, äh, so ein, so ein, so ein Dings in ein Share-Sheet

reinzubauen, sodass man, wenn man im Browser sagt, äh, äh,

ein, ein URL teilen, dass ich das halt dann in meinen Bookmark, äh, Service, äh, irgendwie

reinpipen kann, äh, genau, und dann die ganze Bearbeitung, also das Sprechen mit der

REST-API oder so, das macht dann halt alles irgendwie Pythonista oder ein Skript, das

halt dann von Pythonista ausgeführt wird.

Joa, das ist auch ziemlich cool, wenn man das nicht kennt und iOS irgendwie pipen machen

möchte, dann ist das, glaub ich, ganz hilfreich.

Ja, sowas ähnliches gibt's auch für Android, ähm, Thermos, das ist...

Sogar mit Paketmanagement, allem drohen dran.

Genau, also es bietet halt sehr viele Möglichkeiten, auch mit Android selber zu interagieren, also

irgendwie, äh, weiß ich nicht, äh, Kontakte, SMS senden oder sowas, ähm, und es läuft

halt auch beidendrauf, also es kommt halt mit einem Paket-Repo von sehr vieler Software

und es ist halt eigentlich alles so in Sprachen dabei, die man haben wollen würde, also

irgendwie ein C-Compiler, Go-Compiler, Rust-Compiler, äh, was nicht so wirklich gut läuft, ist

leider Java, was bei Android ein bisschen komisch ist eigentlich, ähm, aber ansonsten,

ja, unter anderem auch Python.

Also, was ich auch noch tatsächlich cool finde, ist das GPIO, also auch dem Respy oder

sowas, das ist natürlich ein Zufall, weil man da ganz viele coole, einfache Sachen machen

kann, die man auch super schön zeigen kann, also einfach jetzt ein paar Pinne ansteuern

und so Lämpchen zum Leuchten bringen, das kriegt auch jedes Kind hin und man hat da

direkt was, was man sehen kann, das ist irgendwie immer schön.

Generell kann man auch sagen, dass die Python-Standard-Library sehr viele, sehr coole Module enthält.

DISS finde ich extrem cool, weil ich mich immer dafür interessiere, wie funktioniert

sowas eigentlich und mit DISS kann ich mir halt den Python-Byte-Code für eine Funktion

anzeigen lassen und es ist halt nicht nur einfach die Byte, sondern es hat auch wirklich

die Namen, die Instruktionen, die Parameter daneben und so und das ist schon ziemlich

cool.

Also generell ist die Standard-Library ja so umfangreich, dass wir bei den Anfängern

größtenteils nur die Standard-Library benutzen müssen.

Das sind halt auch so Sachen dabei, wo man sich denkt, warum ist das jetzt eigentlich

in der Standard-Library?

Und andere Sachen nicht.

Ja, das ist manchmal ein bisschen komisch.

Zum Beispiel IMG-HDR, das kann dir ja von einer Bilddatei sagen, welches Dateiformat

das ist.

Mhm.

Quasi so ein Pfeil-ähnliches Ding, das muss in der Python-Standard-Library eingebaut

werden, habe ich mir gedacht.

Warum?

Aber naja, das ist ganz praktisch manchmal.

Ja, ja.

Oder WAV ist es auch als Codec da drin.

Ja.

Ja, da gibt es andere Bereiche, in denen gibt es dann irgendwie drei Module, die irgendwie

das Gleiche nur auf unterschiedliche Art tun.

Urlib, Urlib 2 oder 3.

Einfach Request nehmen.

Und Request gibt es nicht in der Standard-Bibliothek und so.

Und das ist schon so ein bisschen...

Also Request ist auch so das eine Ding, wo ich mir wünschen würde, dass es in der

Standard-Bibliothek wäre.

Schreibt uns auf jeden Fall eure Lieblingsmodule.

Ja, wobei, was mich an Request halt noch so ein bisschen...

Also ich meine, das ist von der Benutzung her...

Ich meine, das ist ja auch der Anspruch irgendwie.

Das ist ja halt HTTP for Humans.

Wenn man das jetzt als Entwickler-Anwender benutzt, ist das halt sehr praktisch.

Aber wenn man jetzt zum Beispiel viele HTTP-Requests...

machen möchte oder so, dann ist das halt auch schon nicht mehr so toll, weil das ist

halt nicht asynchron.

Also man hat Multiplex halt sozusagen I.O. nicht wirklich.

Kann das dann eventuell machen, indem man halt Threads verwendet oder so.

Aber so von sich aus kann das das halt nicht.

Und dann gibt es halt vielleicht auch, wenn man das halt noch nicht kennt,

A.I.O.

HTTP ist, glaube ich, die Bibliothek oder das Projekt.

Ich weiß nicht so genau.

A.I.O. HTTP.

A.I.O. HTTP.

Und da gibt es einen Server drin und es gibt halt auch einen Client.

Und der basiert halt auf Async.io und das ist halt richtig schnell.

Und da kann man halt auch mal...

Da gibt es auch ein schönes Beispiel.

Das hat...

Da gibt es einen Artikel von...

Ich habe jetzt den einen Namen vergessen, aber Guido von Rassum ist der andere Autor.

Und die beschreiben halt so, wie kann man mal so eine Million Webseiten,

Millionen Requests machen irgendwie schnell.

Und das ist ein sehr nettes Ding.

Und...

So.

Ja.

Also ich würde sagen, viel gehört dazu, was wir...

Ja, wie man anfangen kann, wie man vielleicht weitermachen kann,

welche Probleme so am Anfang auftauchen, wie man die so ein bisschen umschifft.

Also wenn ihr in Düsseldorf unter den Regierungen seid, dann kommt doch einfach vorbei, ne?

Genau.

Ja, einfach so.

Ich glaube, nicht nur donnerstags sind da ein paar Jungs immer da.

Ja.

Ich sage, es ist halt jede Woche.

Ja.

Also nicht unbedingt mit uns, aber ja.

Da gibt es auch andere coole Menschen.

Ja.

Sehr gut.

Ja, wenn ihr irgendwas antragen wollt, nochmal event, wieder euer Feedback, Kommentare an hallo-podcast.de.

Ja, schön, dass wir wieder eingeschaltet haben.

Genau.

Und dann versuchen wir mal irgendwie die nächste Sendung etwas zeitnah hinzukriegen, aber das...

Ja, wir hatten eigentlich schon etwas vorbereitet, aber das hat nicht so gut geklappt.

Ja, dann müssen wir nochmal dran.

Datenbanken, wir können ja schon mal das Thema verraten.

Ja.

Haben wir uns eigentlich auch die Frage da geschrieben.

Wer hat eigentlich...

Wie hat man die Model-View-Controller erfunden?

You have to.

Okay.

Bis zum nächsten Mal.

Alles klar.

Tschüss.

Tschüss.