Transcript: PP01 - Die erste Sendung

· Back to episode

Full episode transcript. Timestamps refer to the audio playback.

Dominik

Ja, hallo liebe Hörerinnen und Hörer, willkommen beim Python Podcast, allererste Folge, allererste Episode.

Dominik

Wir wollen euch heute ein bisschen fügen und folgende Fragen beantworten.

Dominik

Was machen wir eigentlich und warum?

Dominik

Wie finde ich einen Einstieg in Python?

Dominik

Also, wenn ich Anfänger bin, wie kann ich damit anfangen?

Dominik

Und geben ein paar Anfängertipps.

Dominik

Und dann wollen wir noch ein bisschen erklären, wie Python funktioniert, ein paar Mythen über Python klären und so weiter.

Dominik

Wenn ihr Fragen, Anmerkungen zu dem Podcast habt, Kommentare, alles was gut ist, was schlecht ist, dann sendet doch einfach eine E-Mail an hallo-at-python-podcast.de.

Dominik

Und ja, Links und zusätzliche Shownotes zur Sendung findet ihr natürlich in den Shownotes.

Dominik

Ja, was machen wir eigentlich? Kleine Einführung?

Jochen

Ja genau, vielleicht können wir uns einfach kurz vorstellen oder so.

Dominik

Ja, also wir sind auf jeden Fall aus Düsseldorf, aus dem wunderschönen Wintergarten von Jochen, den ihr gerade kurz gehört habt.

Dominik

Ja.

Dominik

Wer sind wir denn? Hallo Jochen.

Jochen

Hallo Dominik, genau, also ja, mein Name ist Jochen,

Jochen

die wirklich wunderschöne Anmoderation gerade kam von Dominik.

Jochen

Und genau, ja, wir benutzen beide Python und ich höre auch sehr viele Podcasts

Jochen

und im englischsprachigen Raum gibt es halt durchaus einige ganz gute Podcasts,

Jochen

die man da hören kann, aber ja, zur deutschsprachigen gab es immer mal wieder Versuche,

Jochen

Aber letztlich momentan, soweit ich weiß, jedenfalls kein, der kontinuierlich aktualisiert wird.

Jochen

Und ja, da dachte ich, na gut, wenn es niemand macht, dann kann man das ja vielleicht einfach selbst mal probieren.

Jochen

Und ja, dann habe ich mich so ein bisschen herumgefragt, ob es Leute gibt, die das vielleicht auch gerne machen würden.

Jochen

Und ja, so sind wir dann zusammengekommen.

Jochen

Wie kamst du zu Python, Junge?

Jochen

Ja, das ist jetzt auch schon eine Weile her.

Jochen

irgendwann so 2000, Anfang der Nullerjahre sozusagen.

Jochen

Ich war ursprünglich da eher so auf der Perl-Seite

Jochen

und dann war aber die, ich habe damals bei Web.de gearbeitet

Jochen

und die Firmensprache da war dann halt aber Python

Jochen

und dann wurde mir nahegelegt,

Jochen

auch ein paar der Dinge, die ich da gemacht habe,

Jochen

irgendwie doch eher in Python zu machen als in Perl

Jochen

und dann habe ich das erst so ein bisschen gedacht,

Jochen

na gut, ob ich das wirklich toll finde,

Jochen

aber relativ schnell war ich da ziemlich begeistert von Python

Jochen

und mache seitdem eigentlich nur noch Python und kein Pal mehr.

Dominik

Du bist schon ein ziemlich alter Hase, wenn ich das so sage.

Jochen

Ja, alter Sack, ja.

Jochen

Genau, und in unterschiedlichen Bereichen

Jochen

habe ich das jetzt schon so verwendet.

Jochen

Und daher, ja, denke ich, ist es vielleicht auch ganz...

Jochen

Kann ich da auch so ein bisschen was zu erzählen,

Jochen

was da so ein Python alles machen kann.

Jochen

Ja, deswegen bist du da.

Dominik

Also ich gehe davon aus, dass du mir alles erklären kannst, was ich an tollen Fragen habe.

Dominik

Ich möchte nämlich noch jede Menge wissen.

Jochen

Genau, und wie bist du zu Falken gekommen?

Jochen

Ja, ich bin ein ziemlicher Rookie noch.

Dominik

Ich bin jetzt insgesamt anderthalb Jahre irgendwie bei Python dabei.

Dominik

Und interessiere mich vor allem für, ach, vielleicht ein paar Buzzwords, Data Science und Digitalisierung.

Dominik

Was man damit so machen kann.

Dominik

Ich habe zwar auch schon damals in der Schule angefangen mit ein bisschen Programmieren und war seit 96 in der Internet-AG.

Dominik

Das war damals ganz besonders fancy und habe Webseiten da gebastelt und so ein Krams.

Dominik

Habe dann aber einen ziemlich längeren Umweg gemacht über die Volkswirtschaftslehre,

Dominik

bis ich dann tatsächlich vor anderthalb Jahren mich dazu entschlossen habe,

Dominik

irgendwie nochmal einen ganz neuen Weg zu gehen.

Dominik

Ein Umdrehen von vorne beginnen und das zu tun, was mir wirklich am Herzen liegt.

Dominik

Eigentlich wollte ich nur ein paar Daten analysieren und bin dann über ein Python-Tutorial gestolpert.

Dominik

Nach ungefähr 20 Minuten hat es mich dann irgendwie ziemlich vom Hocker gehauen und erwischt

Dominik

und ich wusste, dass es genau das ist, was ich in Zukunft machen will.

Dominik

Und so bin ich bei Python gelandet.

Jochen

Ja, von einfach mal nur ein paar Daten analysieren

Jochen

zu, ja, neue berufliche quasi Herausforderungen.

Jochen

Oh, da klopft jemand an die Tür.

Jochen

Das hat ein Spielzeug in der Hand.

Jochen

Mhm.

Jochen

Nun gut, ich hoffe, das stört nicht so weiter.

Jochen

Ja, das ist auf jeden Fall ein schneller Einstieg gewesen,

Jochen

wenn das nach 20 Minuten schon geschnackelt hat.

Jochen

Wäre jetzt ein bisschen länger gedauert, aber

Jochen

ja, das ist auf jeden Fall

Jochen

eine gute Sache, glaube ich. Das war wirklich so. Ich kam

Dominik

da rein, hab den ersten Code geschrieben und hab gedacht,

Dominik

ja, genau, das wollte ich dann machen.

Dominik

Stimmt. Hammer. Also

Dominik

liegt bestimmt auch vielleicht an der Einfachheit der Sprache, aber

Dominik

da kommen wir vielleicht ein bisschen später zu, was für

Dominik

Features Python alle hat.

Dominik

Ja, vielleicht fangen wir noch mal an.

Dominik

Warum machen wir das eigentlich? Für wen ist denn dieser Podcast

Dominik

genau? Was glaubst du? Für eigentlich jede, die sich

Dominik

für Python interessiert?

Dominik

Ja, ich denke schon.

Dominik

Das ist halt auch so

Jochen

so ein Ding, dass Python momentan halt

Jochen

sehr viel an Popularität gewinnt.

Jochen

Also ich meine, das hat es schon immer getan, also es war

Jochen

schon immer recht populär,

Jochen

aber in letzter Zeit, gerade

Jochen

eben über Data Science

Jochen

und verwandte

Jochen

Themen, Machine Learning, Deep Learning,

Jochen

Dinge, die halt auch sonst sehr stark gehypt

Jochen

werden, ist Python halt sehr, sehr

Jochen

groß geworden und mittlerweile hat es

Jochen

halt irgendwie Ausmaße

Jochen

angenommen, die

Jochen

dazu führen,

Jochen

dass es jetzt eine ganze Menge Leute gibt, die das gerne

Jochen

lernen würden oder sich dafür interessieren

Jochen

und aber wenig

Jochen

Angebote sozusagen

Jochen

diese ganzen Leute irgendwie abzuholen

Jochen

und ich denke, da können wir auf jeden Fall

Jochen

eine Menge

Jochen

Hörer ansprechen

Jochen

sozusagen

Jochen

aber ich würde das nicht

Jochen

unbedingt auf Anfänger beschränken, sondern einfach mal

Jochen

so quer durch alle

Jochen

größeren Themen oder so, die es gibt

Jochen

wir hatten uns ja auch schon so ein bisschen Gedanken zu gemacht, was man da alles mal

Jochen

worüber man, über welche Dinge man mal

Jochen

so eine Sendung machen könnte und da haben wir

Jochen

auf jeden Fall genug Stoff zu senden und da können wir auch gerne mal so richtig fies

Jochen

ins Detail gehen.

Jochen

Ja, genau.

Dominik

Also ich glaube, bevor wir euch erzählen, was wir heute denn genau so machen, wir haben

Dominik

ja einen kleinen Einstieg schon gegeben, gibt es tatsächlich diese ganzen vielfältigen

Dominik

Themen in Python und wir wollen uns tatsächlich in mehreren Episoden euch das ganz Interessante

Dominik

mal so ein bisschen berichten über Django, über Datenbanken, über Python Performance,

Dominik

über Machine Learning und ein bisschen Data Science, MicroPython.

Dominik

Es gibt ziemlich einiges, was wir jetzt hier auf dem Zettel haben.

Dominik

Ihr könnt also auch ein bisschen gespannt sein, was wir jetzt auch so machen.

Dominik

Ja, was machen wir heute?

Dominik

Das ist der Einstieg in Python.

Jochen

Genau, einfach mal so eine Übersicht.

Dominik

Genau, und dazu haben wir vielleicht erst mal ein paar kleine Fakten über die Geschichte.

Dominik

Dann kann Jochen bestimmt noch viel mehr zu erzählen als ich.

Dominik

Aber soweit ich weiß, hat Guido van Rossum die Sprache entwickelt in den frühen 90ern.

Dominik

Und zwar aus Amsterdam das herausentwickelt.

Dominik

Ja, also das ist schon gute, wie lange?

Dominik

Fast 30 Jahre alt tatsächlich.

Dominik

Würde man gar nicht denken.

Dominik

Python 3, das wir alle nutzen, ist seit 2008.

Dominik

Und falls irgendwelche Nachfragen kommen, ja, wir finden nur noch Python 3.

Dominik

Ich glaube, das hat sich mittlerweile so eingebürgert.

Dominik

Die neueste Version ist jetzt erst im Oktober erschienen, 3.7.1.

Dominik

Und für nächsten Herbst ist, glaube ich, 3.8. geplant.

Dominik

Also wir sind im Jahr 2018 für alle Menschen, die das irgendwann sparen.

Dominik

Ja, also Jochen, im Laufe der Jahre hat sich ziemlich viel getan in der Sprache, oder?

Jochen

Ja, wobei erstaunlich viele Dinge auch recht ähnlich geblieben sind.

Jochen

Also ich meine, das ist halt auch möglicherweise einer der Unterschiede zu Sprachen wie,

Jochen

jetzt nehmen wir mal so JavaScript oder so, wo sich halt in letzter Zeit sehr viel getan hat.

Jochen

Und man dann immer, also ich mache in letzter Zeit auch irgendwie ganz schön viel JavaScript und oft muss ich dann, wenn ich jetzt irgendwas mache, so wie iteriert man denn jetzt nochmal über irgendwie quasi die Keys und die Values irgendwie in einem Hash oder so, dann, wenn man danach guckt, dann findet man halt zu jedem Jahr quasi und zu jeder neuen ECMAScript-Version eine andere Art, wie man das am besten jetzt tun sollte.

Jochen

Und da ist Python eigentlich sehr, sehr stabil geblieben.

Jochen

Das ist heute noch, ja gut, da haben sich auch an der Stelle

Jochen

hat sich auch tatsächlich was geändert, aber sehr moderat

Jochen

und mehr oder weniger so vorschleifend.

Jochen

Das ist halt von Anfang an so, wie es jetzt heute auch noch ist.

Jochen

Also es hat sich seit 30 Jahren im Grunde nicht großartig geändert,

Jochen

wobei es da auch nicht so wirklich Bedarf gibt für eine Änderung,

Jochen

weil es war einfach von Anfang an, hat es quasi gepasst.

Jochen

Aber Antupa implementiert.

Jochen

Ja, ich glaube, ja genau, 1991 ist das irgendwie gestartet und ich weiß gar nicht, ob ich da so wahnsinnig viel zu erzählen kann, weil damals war ich auch noch nicht dabei.

Jochen

Das habe ich auch alles nicht so richtig auf dem Schirm, was da passiert ist.

Jochen

Ich habe irgendwann angefangen, also die erste Python-Version, an die ich mich erinnern kann, mit der ich irgendwie Dinge gemacht habe, war so, glaube ich, 1.5.2 oder so.

Jochen

Das muss irgendwann Ende der 90er gewesen sein.

Jochen

Da habe ich aber kaum mit Python, also da habe ich nicht wirklich Python gemacht, um Python zu programmieren, sondern ich habe es halt verwendet in irgendwelchen Skripten und so.

Jochen

oder irgendwelche Skripte angepasst und dann später so wirklich angefangen,

Jochen

damit größere Dinge zu programmieren, habe ich dann mit Python 2.1 oder so.

Jochen

Das war so die Version, in der ich die erste größere Geschichte geschrieben habe.

Dominik

Was würdest du sagen, war so der größte Unterschied zu heute?

Dominik

Der Umfang der Standard-Bibliothek oder?

Jochen

Ja, natürlich, also da ist einiges dazugekommen.

Jochen

Aber das ist gar nicht so...

Jochen

Ja, so diverse Sprachfeatures, also Generatoren,

Jochen

ich glaube, die kamen irgendwie mit 2.2 oder so.

Jochen

Das ist heute doch etwas, was man viel mehr benutzt,

Jochen

als man es damals getan hat.

Jochen

Überhaupt diverse Keywords yield.

Jochen

Ja, das stimmt, aber das ist auch schon relativ lange da.

Jochen

Ich weiß nicht, wann 2.2 rauskam.

Jochen

Müsste irgendwann 2002, 2003 gewesen sein oder so.

Jochen

was heute eine große Rolle spielt.

Jochen

Und damals war das halt alles noch gar nicht da.

Jochen

Es ist alles, was irgendwie mit Async.io oder irgendwie, ja.

Dominik

Wann kam das anfangen? Version 3 erst oder schon 2?

Jochen

Nee, die Syntax dafür, also das ist jetzt erst in 3.5, glaube ich, mit dazugekommen.

Jochen

Und es hat sich auch noch was zu 3.6 geändert.

Jochen

Gab es da vorher ein externes Modul für?

Jochen

Ja, es gab schon immer irgendwie externe Module,

Jochen

mit denen man solche Dinge machen konnte.

Jochen

sowas wie Twisted oder G-Event

Jochen

habe ich auch eine ganze Zeit lang

Jochen

verwendet, ist auch toll, aber das Problem ist,

Jochen

dass man ja quasi,

Jochen

wenn man dann auf eine dieser Bibliotheken aufsetzt,

Jochen

halt in seiner eigenen Welt mehr oder weniger

Jochen

gefangen ist und wenn jetzt jemand anders

Jochen

was geschrieben hat, das auf

Jochen

Twisted, ganz viele Leute haben Twisted halt als Basisbibliothek

Jochen

für ihren Netzwerkrahmen benutzt,

Jochen

aber man kann das dann halt nicht einfach so verwenden,

Jochen

weil wenn man jetzt selber

Jochen

auf was anderem aufsetzt, dann geht

Jochen

das halt alles nicht und das war kein so

Jochen

wirklich schöner Zustand.

Jochen

Es war auch nicht total furchtbar,

Jochen

das ging alles und man konnte irgendwie mit

Jochen

Threads konnte man auch eigentlich quasi das schon

Jochen

immer machen, irgendwie so IO-Multiplexen,

Jochen

das ist halt das, was man vor allen Dingen macht, wenn man

Jochen

jetzt irgendwie quasi

Jochen

so asynchron

Jochen

Dinge tun will.

Jochen

Aber so wirklich schön war das alles nie und

Jochen

jetzt inzwischen ist es aber,

Jochen

gibt es da halt eine nette Syntax

Jochen

für und das ist eigentlich ganz toll und das machen

Jochen

ganz viele und genau,

Jochen

das war damals alles noch

Jochen

ganz weit entfernt.

Jochen

Ja, dann, ach so, auch damals, was dazugekommen ist, Newstyle-Classes, das...

Jochen

Was?

Jochen

Newstyle-Classes.

Jochen

Newstyle-Classes.

Jochen

Genau, die Klassen waren etwas anders davor und ja, genau, jetzt müsste ich noch nachlesen, was da genau die Unterschiede waren.

Jochen

Ich glaube, also eigentlich weiß ich nur, dass man halt quasi dann immer nicht Doppelpunkt,

Jochen

also Leerzeichen, Class, Name, Doppelpunkt geschrieben hat,

Jochen

sondern irgendwie die ganze Zeit lang hat man immer auf Object geschrieben,

Jochen

damit es halt von Object erbt und man New Style Classes automatisch verwendet,

Jochen

was man jetzt halt auch schon eine ganze Zeit lang nicht mehr tun muss.

Dominik

Also jede Klasse automatisch von Object dann, oder?

Jochen

Ja, genau.

Jochen

Und dann gibt es natürlich noch diverse

Jochen

Meta...

Jochen

Programmierungsgeschichten, Meta-Classes

Jochen

und so. Ich weiß gar nicht, wann die dazugekommen sind.

Jochen

Das gab es, glaube ich, am Anfang auch nicht.

Jochen

Okay.

Jochen

Ja, dann... Ach so.

Jochen

Auch eine neue Syntax, die

Jochen

sehr praktisch ist.

Jochen

Das ist halt so...

Jochen

Also es gibt List Comprehensions,

Jochen

glaube ich. Die gab es auch nicht, aber dann?

Jochen

Die gab es bei 1.5 noch nicht.

Jochen

Es gab es bei 2.1, sind die, glaube ich, dazugekommen.

Jochen

Also jedenfalls, als ich angefangen habe,

Jochen

war das so, das war so eine neue

Jochen

Geschichte, die dazugekommen ist. Dann kam, glaube ich,

Jochen

dann weiß ich ja nicht, wann

Jochen

die Generator-Expressions dazukamen, wo man

Jochen

halt nicht eine List-Comprehension hat,

Jochen

sondern dann quasi runde Klammern schreibt und dann

Jochen

das Ganze ein Generator ist. Das könnte sein,

Jochen

dass das erstmal zwei, vier war oder so.

Jochen

Und jetzt gibt's

Jochen

auch irgendwie so

Jochen

Syntax für Dict-mäßige

Jochen

Objekte. Also man kann halt auch geschweifte Klammer auf

Jochen

und dann

Jochen

V-Doppelpunkt

Jochen

K-Komma

Jochen

v in irgendein Addict.items

Jochen

sagen und dann würde sich

Jochen

Also kann man sich sein Addiction erst generieren.

Jochen

Ja, genau. Und muss dafür

Jochen

nicht extra irgendwie

Jochen

nochmal Addict aufrufen oder so.

Jochen

Ja, das ist jetzt, das ist aber dann

Jochen

relativ spät dazu gekommen. Ich glaube, das ist erst

Jochen

mit Python 2.3 oder Python 3

Jochen

dazu

Jochen

gekommen jetzt. Wofür

Jochen

nutzt man denn jetzt eigentlich Python heute?

Dominik

Ja. Insgesamt, vielleicht machen wir das

Dominik

nochmal als Frage für unsere Hörer,

Dominik

die das so genau wissen wollen. Genau,

Jochen

Also am Anfang war es vor allen Dingen eine Skriptsprache zum Verbinden von irgendwelchen Systemen.

Jochen

Man nannte die Dinge auch Glue Languages und so, weil es schön einfach ist, diverse andere in anderen Sprachen programmierte Libraries anzubinden und die dann halt irgendwie miteinander zu verbinden.

Dominik

Hast du verschiedene Server-Module mit Python-Kleister dazu geklebt?

Jochen

Ja, irgendwie sowas wie man hat Image Magic oder so eine Bibliothek, die jetzt auf Bildern irgendwas macht und hat dann halt irgendwelche Bindings, die das in Python verfügbar machen.

Jochen

Und dann hat man irgendwie eine Bibliothek, die irgendwie Mails macht oder dann kann man irgendwie E-Mails mit Bildern oder so dann irgendwie verknusteln und dann E-Mails mit Bildern drin verschicken oder sowas.

Jochen

Solche Sachen hat man halt in Python vor allen Dingen gemacht.

Jochen

Weil man hat einmal das Bild in der Hand

Dominik

und man hat einmal eine E-Mail in der Hand

Dominik

und Python gibt dann den Kleber, dass man eine E-Mail mitbildet.

Jochen

Genau, ansonsten, wenn man jetzt, keine Ahnung,

Jochen

irgendeine Bibliothek hat, die in Zyklospos geschrieben ist oder so,

Jochen

wenn man da jetzt irgendwie E-Mail-Support einbauen will

Jochen

oder irgendwie eine andere Bibliothek,

Jochen

die mal was anderes geschrieben ist, die einbinden will,

Jochen

das ist halt sehr schwierig.

Jochen

Und mit Python kann man das alles sehr schön integrieren.

Jochen

Also für sowas hat man es vor allen Dingen verwendet,

Jochen

aber auch für Web-Entwicklung von Anfang an

Jochen

eigentlich schon, soweit ich weiß.

Jochen

Welche Frameworks haben wir da groß?

Dominik

Also ich kenne zum Beispiel Flask, habe ich in einem Tutorial

Dominik

gelernt, und natürlich Django.

Dominik

Ja, die kamen allerdings alle

Jochen

sehr viel später.

Jochen

Also, sagen wir mal so, es wurde

Jochen

halt auch als CGI verwendet.

Jochen

Als was?

Jochen

Es gab es ganz früher.

Jochen

Das ist schon fast ein bisschen

Jochen

Opa als Held vom Krieg

Jochen

Sektion. Ja, bitte, deswegen sind wir hier.

Jochen

Es gab das

Jochen

Common Gateway Interface. Das war halt eine

Jochen

Methode, wie Web-Server

Jochen

sozusagen Skripte aufrufen konnten,

Jochen

die dann irgendwie, also

Jochen

am Anfang gab es nur, am Anfang waren statische

Jochen

Seiten, wo halt ein Webserver irgendwie eine Datei ausgeliefert hat.

Jochen

HTML pur. Ja.

Jochen

Und

Jochen

das ist aber ein bisschen wenig,

Jochen

wenn man jetzt also sowas hat wie eine Webseite mit

Jochen

einem Gästebuch, sowas gibt es heute auch alles nicht mehr,

Jochen

aber damals war das halt so, da musste man das haben.

Jochen

Da musste man irgendwie einen Encounter haben.

Dominik

Da hat er sein Gästebuch rum und rein. Ich war bei dir

Dominik

im Internet. Genau. Ich habe da was

Dominik

reingeschrieben, ich habe es benutzt.

Jochen

Ja, und das geht natürlich mit statischen

Jochen

Seiten irgendwie nicht. Also wenn

Jochen

ich jetzt so ein Gästebuch habe und ich habe da ein

Jochen

Feld, wo ich irgendwas eingeben kann und dann soll das

Jochen

halt irgendwo gespeichert werden, dann muss

Jochen

sozusagen der Text, der

Jochen

in dieses Feld geschrieben wurde, irgendwie

Jochen

durch ein Skript durch und das muss das irgendwo

Jochen

hinschreiben. Und

Jochen

damit solche dynamischen Sachen gehen,

Jochen

gibt es halt dieses, damit

Jochen

quasi irgendwie der Webserver mit

Jochen

einem

Jochen

Skript kommunizieren kann,

Jochen

dass man halt irgendwie diesen Kram

Jochen

liest und wegschreibt, gibt es

Jochen

das Common-Gateway-Interface und das hat das

Jochen

dann so gemacht, es hat dann halt das Skript gestartet,

Jochen

also weggeforkt und dann irgendwie da

Jochen

per Umgebungsvariablen irgendwie die Daten

Jochen

übertragen. Das geht, aber

Jochen

es ist halt furchtbar langsam und

Jochen

alles nicht so richtig schön.

Jochen

Aber so war das damals und da

Jochen

ich erinnere mich auch, dass man

Jochen

da durchaus Python-Skripte, also meistens hat man

Jochen

Perl verwendet, aber das

Jochen

ging auch mit Python schon.

Jochen

Hatte halt so ein bisschen das Problem,

Jochen

dass die meisten Hoster irgendwie kein Python installiert

Jochen

hatten und deswegen man keine Python-Skripte

Jochen

als CGI-Skripte irgendwie da

Jochen

angeben konnte, aber

Jochen

Musste man selber

Jochen

hosten, wenn man Python-Skripte hatte. Ja, genau. Insofern war das

Jochen

halt nicht so populär.

Jochen

Ja, die ganzen

Jochen

anderen Geschichten, das kam alles viel,

Jochen

viel, viel später. Was war denn so das erste

Dominik

Framework, was so mit hochkam, wo man die ersten

Jochen

Seiten vernünftig mit... Das gab es für Python

Jochen

gab es da eigentlich fast nix.

Jochen

Also es gab

Jochen

also das ist halt auch, da gab es

Jochen

eigentlich nur PHP. Also da gab es Mod-PHP

Jochen

für den Apache.

Jochen

Es gab auch einen Mod-Python, aber das war ziemlich

Jochen

furchtbar. Das habe ich mal versucht zu verwenden.

Jochen

Ich habe es sogar eine ganze Zeit lang verwendet, aber das war alles

Jochen

ziemlich scheußlich.

Jochen

Hatte Memory Leaks, war alles irgendwie

Jochen

ätzend, dauernd so komische Sachen passiert.

Jochen

Also Memory Leak heißt

Dominik

dann, der Server stellt ab, wenn den Leute benutzen.

Jochen

Ja, man braucht immer mehr Speicher, man weiß

Jochen

nicht genau warum und dann irgendwann ist er halt weg

Jochen

und dann muss man halt nachgucken, was da schiefgelaufen ist.

Jochen

Das ist nicht so schön. Das Mod-PHP war auch

Jochen

nicht so toll, aber das hat halt so schon irgendwie ganz gut

Jochen

funktioniert und

Jochen

das war so die, auch die Anfang der Nullerjahre war so die

Jochen

große Zeit des sogenannten

Jochen

LAMP-Stacks, so Linux,

Jochen

Apache, MySQL.

Jochen

PHP?

Jochen

PHP, genau.

Jochen

Und

Jochen

das hat so halbwegs funktioniert

Jochen

und ja, Python

Jochen

haben zwar Leute auch

Jochen

quasi als Web-Anwendung verwendet, aber dann immer

Jochen

ach doch, jetzt war es das erste,

Jochen

was Leute tatsächlich da

Jochen

in Python gebaut haben, war

Jochen

Soap.

Jochen

Ja, oder Soapy, ich weiß gar nicht genau, wie man das ausspricht.

Jochen

Das gibt es bis heute

Jochen

und das ist bis heute

Jochen

irgendwie eine ganz tolle Community

Jochen

irgendwie.

Jochen

Und da gab es dann auch

Jochen

so ein Content-Management-System oder irgendwie so ein Ding, was drauf

Jochen

aufgesetzt hat, das nannte sich Plone. Also daran erinnere ich mich auch.

Jochen

Und das muss irgendwie 2004 gewesen sein, als ich es zum ersten Mal

Jochen

ausprobiert habe. Das war alles sehr nett.

Jochen

Es war nur furchtbar langsam,

Jochen

Aber ansonsten war es alles sehr schick.

Jochen

Und ich glaube, das waren so die ersten,

Jochen

die so irgendwie komplexere Web-Anwendungen

Jochen

in Python möglich gemacht haben.

Jochen

Wie gesagt, manche Leute benutzen das bis heute.

Jochen

Dieses Projekt hat ein großes Problem

Jochen

mit dem Umstieg von Python 2 auf Python 3.

Jochen

Ich glaube, da ist noch eine ganze Menge Code nicht umgestellt.

Jochen

Und ja, jetzt am 1. Januar 2020 läuft ja irgendwie

Jochen

der Support

Jochen

für Python 2.0.

Jochen

Das ist nicht mehr so wirklich viel Zeit.

Jochen

Und keine Ahnung, also vielleicht

Jochen

haben sie das auch mittlerweile geschafft, dass sie da umgestiegen

Jochen

sind, aber

Jochen

das ist ein bisschen blöd für dieses Projekt.

Jochen

Ja, aber das waren so die ersten, genau.

Jochen

Und dann kam halt

Jochen

mehr dazu,

Jochen

als es eine standardisierte,

Jochen

schöne Schnittstelle gab. Also es gab dann diverse Schnittstellen,

Jochen

die auch besser funktioniert haben als CGI.

Jochen

Es gab fast CGI.

Jochen

fast CGI? Ja, genau.

Jochen

Das war schneller. Das war schneller, da

Jochen

musste der Server das Skript nicht forken, sondern

Jochen

da waren da schon so ein paar Skripte

Jochen

gepreforkt und dann konnte man das irgendwie, dann wurde

Jochen

und die Daten da halt irgendwie

Jochen

in der Prozesskommunikation irgendwie hingeschoben

Jochen

und das war alles deutlich besser, das ging halt dann

Jochen

relativ schnell. Aber es war

Jochen

auch alles noch ziemlich hässlich und

Jochen

es gibt dann, ich weiß nicht, wann das passiert ist,

Jochen

müsste dann so Mitte der Jahre gewesen sein,

Jochen

da gibt es dann halt, seitdem gibt es irgendwie

Jochen

Mod, gibt es halt Whiskey

Jochen

sozusagen als Schnittstelle zwischen Web-Server und

Jochen

Applikation. Also

Jochen

sich das so halbwegs standardisiert hat.

Dominik

Hört sich nach etwas ziemlich Holzigen zu trinken

Dominik

an.

Jochen

Ja, also wird aber

Jochen

WSGI geschrieben.

Jochen

Es wird nur lecker ausgesprochen.

Jochen

Es ist

Jochen

nicht so lecker, wenn man es

Jochen

sich dann tatsächlich anguckt, aber

Jochen

genau. Und damit ist dann eigentlich auch schon

Jochen

die große Zeit von Apache als

Jochen

Web-Server irgendwie so ein bisschen vorbei.

Jochen

Da tauchen dann plötzlich so andere Server auf,

Jochen

die man halt als Applikationsserver häufig verwendet.

Jochen

Beziehungsweise man trennt dann eigentlich zwischen Applikationsservern

Jochen

und irgendwie den Servern, die halt statische Verhalte nach außen ausliefern

Jochen

oder die so ein bisschen Reverse-Proxy halt vor den Applikationsservern sind.

Jochen

Da nimmt man meistens auch nicht Apache, sondern dann sowas wie Nginx

Jochen

oder am Anfang gab es dann Lite, HTTPD und so.

Jochen

Und heute vielleicht, heute nimmt man dann irgendwie sowas wie,

Jochen

na, wie heißt der noch?

Jochen

Caddy. Ein Google-geschriebener

Jochen

Webserver, der sich schön

Jochen

auch mit Let's Encrypt irgendwie

Jochen

verbindet und dann hat man halt irgendwie

Jochen

ordentliches SSL nach draußen,

Jochen

irgendwie automatisch, muss da nicht irgendwie...

Jochen

Also bei Nginx, also ich habe mich

Jochen

beschäftigt, Nginx so weit zu kriegen,

Jochen

dass es halt irgendwie beim Test von

Jochen

SSL-Labs irgendwie überall grün und okay ist.

Jochen

Das hat mich irgendwie so zwei Tage gekostet

Jochen

und war irgendwie echt aufwendig.

Jochen

Und bei Caddy

Jochen

geht das einfach so, muss man

Jochen

Das ist schon super. Also den verwende ich jetzt mittlerweile auch meistens vor den Applikationsservern. Applikationsserver sind sowas wie Junicorn, den verwende ich meistens, oder Mew, wie ist GI, oder U, wie ist GI, heißt ein anderer, oder Werkzeug, oder da gibt es einige, die man halt verwenden kann.

Jochen

Und die sind sozusagen dafür zuständig quasi, dass da drin die Applikation läuft und die Requests, die halt sozusagen nur von der Applikation beantwortet werden können, die gehen halt dann an diese Server und die rufen dann halt eben quasi die Applikation mit der entsprechenden API auf.

Jochen

Also ich wollte jetzt gar nicht unterbrechen,

Jochen

ich fand es nämlich auch super interessant.

Dominik

Ich glaube, wir machen vielleicht sogar noch eine eigene Web-Folge.

Dominik

Wir sind ja heute, das wollte ich nicht vergessen,

Dominik

ich hoffe, die Anfänger sind jetzt nicht alle schon ausgestiegen,

Dominik

in der Anfänger-Folge.

Dominik

Deswegen müssen wir noch ein bisschen mehr eingehen darauf,

Dominik

welche Funktionen man mit Python vielleicht noch machen kann.

Dominik

Also wir haben jetzt vielleicht einen kleinen Einstieg

Dominik

schon mal euch gegeben, was es so an coolen Möglichkeiten

Dominik

heute so gibt mit Python und Web-Frameworks.

Dominik

Was machen wir noch?

Jochen

Genau, das ist heute auch ein wichtiger Teil,

Jochen

Glue ist auch noch immer ein wichtiger Teil.

Jochen

Ich habe jetzt letztens, also um vielleicht kurz Werbung zu machen

Jochen

für einen englischsprachigen Python-Podcast,

Jochen

das war Talk Python to Me, glaube ich.

Jochen

Doch, ja, Talk Python to Me.

Jochen

In der letzten Folge, da ging es um Python 3 bei Facebook.

Jochen

Und da erzählte jemand, der halt Python bei Facebook irgendwie macht,

Jochen

dass die ganzen Backend-Systeme, die halt irgendwelche Services machen

Jochen

oder irgendwie Sachen hoch runterfahren,

Jochen

Sachen deployen, das

Jochen

ganze quasi Facebook-Management

Jochen

Zeugs, das ist halt alles

Jochen

Python. Also Frontend ist

Jochen

zwar PHP, aber alles, was sozusagen

Jochen

Services

Jochen

miteinander verbindet oder halt

Jochen

irgendwie interne Geschichten macht, das ist halt bei

Jochen

Facebook alles in Python.

Dominik

Also auch YouTube ist in Python.

Dominik

Ja, genau, YouTube ist so ein bekannter

Dominik

NASA, macht viele Sachen mit Python.

Jochen

Ja, bei Disney zum Filme

Jochen

produzieren und

Jochen

Ja, Pinterest auch. Ich weiß nicht genau, die waren sogar Django irgendwie. Aber auch Python hauptsächlich. Instagram ist komplett Python eigentlich von der Web-Applikation her. Also ja, es gibt auch durchaus im Frontend einige, die da Python verwenden. Aber es ist halt im Grunde überall.

Jochen

Ja, also dieses Glue-Ding ist auch immer noch eine sehr, sehr wichtige Geschichte. Aber dann gibt es halt einen neuen Bereich seit einigen Jahren, der halt auch sehr, sehr populär geworden ist. Das ist halt so ganze Data Science, Machine Learning-Gebiet.

Dominik

Diese Sensor-Daten-Erfassung.

Jochen

Ja, Scientific Computing, dieser ganze Bereich.

Jochen

Also das, was man früher in so einem Matlab gemacht hat, würde ich sagen.

Jochen

Ja, oder Mathematiker auch.

Jochen

Mathematiker hat ja dieses schöne Konzept entwickelt von diesen Notebooks.

Jochen

Also das kennt man vielleicht, wenn man jetzt im wissenschaftlichen Bereich ein bisschen unterwegs war.

Jochen

Es gibt so Labortagebücher oder so, wo man aufschreibt, was man irgendwie tut und so.

Dominik

Python, die Jupyter-Notebooks, die es jetzt gibt.

Jochen

Genau, die gibt es in Python und

Jochen

bei

Jochen

Mathematik hatte das tatsächlich zuerst

Jochen

sozusagen dieses Feature, dass man halt

Jochen

solche Notebooks halt dann

Jochen

ausführen kann und dann halt nachvollziehen kann, was da

Jochen

passiert ist oder wie man zu einem bestimmten Ergebnis gekommen ist.

Jochen

Sehr, sehr gute Idee halt.

Jochen

Hat sich nie so richtig

Jochen

durchgesetzt, weil Mathematik ist halt proprietär

Jochen

und teuer und

Jochen

ist auch eine sehr exklusive

Jochen

Community irgendwie und

Jochen

hat irgendwie nie so richtig abgehoben, obwohl es

Jochen

eigentlich schon eine sehr schicke Idee war. Und dann wurde

Jochen

die halt aufgegriffen von

Jochen

den Leuten, die irgendwie so einen

Jochen

Interpreter oder man nennt das

Jochen

irgendwie so Ripple, weiß gar nicht

Jochen

wofür diese Abkürzung, also diese

Jochen

Shell, die man bekommt,

Jochen

wenn man jetzt Python eingibt.

Dominik

Was sie IPython jetzt in dem

Jochen

Falle tatsächlich. Ja, die haben

Jochen

die haben halt sozusagen das damit

Jochen

reingebaut und das nannte sich dann IPython Notebook.

Jochen

Also IPython hatte schon den ganzen Teil der Funktion, die man dafür braucht, wenn man sowas implementieren will.

Jochen

Und IPython-Notebook hat dann halt quasi sozusagen die Ideen von diesen Mathematica-Notebooks irgendwie aufgegriffen.

Jochen

Und ja, das war ein toller Erfolg.

Jochen

Man hat das dann auch für andere Sprachen gemacht, für R und für Julia.

Jochen

Und dann war irgendwie klar, dass IPython-Notebook ein blöder Name dafür ist,

Jochen

weil wenn es halt nicht mehr Python ist, sondern auch andere sehen,

Jochen

Dann wurde das halt umbenannt in Jupiter, wobei das halt nicht

Jochen

Jupiter wie der Planet geschrieben wird, sondern mit

Jochen

P-Y, halt wie für Python, weil

Jochen

es dann Julia, Python, R

Jochen

quasi, also die

Jochen

drei Sprachen, die da halt hauptsächlich irgendwie

Jochen

verwendet werden. Das sieht ja ganz schick aus,

Dominik

habe ich tatsächlich auch schon ein paar Mal gesehen, das kann man

Dominik

tolle Sachen mitmachen und auch live den Code direkt testen,

Dominik

ausführen, was man damit macht. Genau, genau, das ist

Jochen

halt super praktisch, das ist natürlich jetzt schwer, so

Jochen

das zu umschreiben, jemanden,

Jochen

der das nicht kennt, quasi

Jochen

warum das toll ist,

Jochen

ist es halt nur so,

Jochen

gerade bei so... Naja, stellt euch vor, ihr könnt

Dominik

ein Buch lesen und habt ja irgendeine statistische

Dominik

Tabelle, die ihr anguckt und ihr könnt

Dominik

live da die Daten eintragen, ändern und auch

Dominik

im Schaubild verändert sich direkt mit

Dominik

den neuen Datensätzen das, was ihr da

Dominik

braucht, was ihr programmiert habt, der Algorithmus,

Dominik

um das darzustellen, könnt ihr direkt live sehen,

Jochen

was da passiert. Ja, das ist

Jochen

eine der schönen Geschichten, aber was für mich vor allen Dingen,

Jochen

also ich mache auch viel

Jochen

Data Science-Geschichten,

Jochen

dass das für mich sozusagen das

Jochen

Top

Jochen

Feature ist, ist halt

Jochen

Und viele der Schritte brauchen eine Menge Zeit.

Jochen

Also wenn man große Datenmengen hat oder so,

Jochen

kann es sein, dass manchmal, wenn man irgendwas macht,

Jochen

dauert das halt eine Stunde.

Jochen

Und dann hat man das Ergebnis.

Jochen

Irgendeine Berechnung, genau, die man macht.

Jochen

Irgendwann trainiert man irgendein Modell oder so.

Jochen

Und das rechnet dann halt irgendwie so eine Stunde vor sich hin.

Jochen

Und wenn man das jetzt alles in einem Skript hat,

Jochen

so wie man das normalerweise hat,

Jochen

dann erzeugt man dieses Modell,

Jochen

dann macht man da irgendwelche Evaluationen drauf,

Jochen

dann visualisiert man das Ganze,

Jochen

dann macht man da irgendwelche Tests.

Dominik

Da muss man erstmal die ganze Arbeitsschrittkette durchgehen,

Dominik

bis man wieder an dem Punkt ist, den man gerade geändert hat.

Jochen

Genau. Man kann das natürlich dann irgendwie schlau cachen.

Jochen

Das habe ich früher dann so gemacht.

Jochen

Da habe ich dann irgendwie Dekoratoren benutzt,

Jochen

die dann halt den Kram immer irgendwo hingeschrieben haben

Jochen

in ein Verzeichnis.

Jochen

Und dann sozusagen immer wieder nur

Jochen

die Arrays, die dabei entstehen,

Jochen

halt wieder zurück.

Jochen

Aber das ist halt alles nicht so...

Jochen

Also das kann man machen, aber diesen Aufwand treibt man auch nur dann,

Jochen

wenn man sich sicher ist, dass man das wirklich braucht

Jochen

und dann verändern will.

Jochen

Und jetzt möchte man halt am Schluss dieser Kette,

Jochen

die halt irgendwas erzeugt, irgendwie eine Funktion schreiben,

Jochen

die irgendwas mit den Daten macht.

Jochen

Und jetzt baut man da einen blöden Fehler rein oder so.

Jochen

Und das passiert einem tatsächlich,

Jochen

wenn man das jetzt so, wie ich das auch früher gemacht habe,

Jochen

passiert einem das relativ häufig,

Jochen

dass man dann halt den Fall hat, dass irgendwie es geht irgendwas schief.

Jochen

Man sieht einen Trace weg und denkt sich schon so,

Jochen

oh nein, was für ein blöder Fehler.

Jochen

Und das Ergebnis von irgendwie einer Stunde Berechnung oder so ist weg

Jochen

und man muss halt im Grunde nochmal eine Stunde warten.

Jochen

Aber selbst wenn man nur ein paar Minuten warten muss,

Jochen

ist es halt voll blöd, weil man ändert irgendwas,

Jochen

probiert es aus, Zyklus halt,

Jochen

wenn da viel Latenz

Jochen

drin ist, dann wird man sehr langsam

Jochen

und dieses Problem

Jochen

löst Jupyter eigentlich, lösen die Jupyter

Jochen

Notebooks komplett, weil da ist es halt

Jochen

so, dass man jede Zelle getrennt

Jochen

ausführen kann und wenn man jetzt eine Funktion geschrieben hat, die

Jochen

einen Fehler enthält und führt die halt aus

Jochen

auf den Daten, die man jetzt da

Jochen

irgendwie eine Stunde lang berechnet hat und es geht schief,

Jochen

dann ändert man die Funktion, führt sie nochmal

Jochen

aus und alles ist gut und das Ergebnis

Jochen

ist halt nicht weg und das ist halt super.

Dominik

Wenn man sowas arbeiten möchte, ist das glaube ich...

Jochen

Genau, und das macht einen halt viel, viel schneller.

Jochen

Und das ist halt total toll.

Dominik

Ist das auch für Anfänger sehr gut geeignet, würdest du sagen?

Dominik

Auch zum Lernen der Sprache?

Jochen

Ja, weil es halt so schön interaktiv ist.

Jochen

Man kann einfach eine ganze Menge ausprobieren,

Jochen

ohne dass man jetzt irgendwie

Jochen

Editor lernen muss und ohne dass man

Jochen

irgendwie quasi wissen muss.

Jochen

Also das, ja,

Jochen

man kann halt einfach direkt was ausprobieren. Wenn es halt schief geht,

Jochen

dann ändert man die Zelle und führt sie nochmal aus und dann ist es okay.

Dominik

Ja, das bringt uns, glaube ich, direkt zu unseren Anfängertipps.

Dominik

Ich glaube, das wäre gar nicht so schlecht.

Dominik

Also wenn ihr Fragen habt, natürlich direkt irgendwie

Dominik

an hallo.pythonpodcast.de

Dominik

einfach stellen. Dann erklären wir euch

Dominik

auch alles, was ihr gerade vielleicht noch nicht verstanden habt oder was

Dominik

euch ein bisschen zu schnell ging.

Dominik

Gleich mit ein paar Tipps anfangen.

Dominik

Ich glaube, ganz wichtig ist natürlich die offizielle

Dominik

Dokumentation. Aussage des Tools zum

Dominik

Lesen. Ich glaube, da findet man so die meisten

Dominik

Erklärungen für die Standardbibliothek, wie das alles

Dominik

so funktioniert. Außerhalb von den

Dominik

Tutorials, die es jetzt gibt. Ich habe zum Beispiel

Dominik

mit Python the Hard Way angefangen und das

Dominik

Buch von Seth Torr gelesen. War ein ganz guter

Dominik

Einstieg.

Dominik

wenn man sich da so durcharbeitet, kommt man relativ tief

Dominik

in die Materie rein. Es gibt noch

Dominik

Automated Boarding Stuff mit Python.

Dominik

Geht auch auf deutschem Buch zu. Das kostet

Dominik

leider Geld, ansonsten ist das ein kostenloses Tutorial.

Dominik

Ja, die ganzen Tutorials gibt es sonst

Dominik

nicht auf Datacamp, Udemy, Udacity,

Dominik

unzählige kostenlose.

Dominik

Ja, du hast ja gerade gesagt,

Dominik

anfangen vielleicht mit Jupyter Notebook oder

Dominik

einem einfachen Text-Titel. Also ich kann jetzt

Dominik

nicht empfehlen, direkt mit einer großen Entwicklungsumgebung

Dominik

zu starten. Das hält dann erst mal

Dominik

so ein bisschen auf. Gibt ja dann

Dominik

irgendwann später ganz viele tolle Editoren,

Dominik

PyCharm, Idle, VS Code,

Dominik

VEye, Atom, MX.

Dominik

Was benutzt du?

Dominik

VEye.

Jochen

Ich benutze aber auch PyCharm

Jochen

zum Beispiel mittlerweile, weil mich nervt, dass es halt

Jochen

doch relativ langsam ist.

Jochen

Eigentlich ist das schön, also diese ganzen

Jochen

IntelliJ-EDEs,

Jochen

das ist alles schon sehr nett gemacht,

Jochen

die können auch sehr viel, aber

Jochen

die reagieren nicht so instantan.

Jochen

Also es ist immer, wenn man irgendwo drauf drückt oder so, dann

Jochen

muss man erst mal, es ist so...

Jochen

Zu langsam. Es ist einfach zu langsam.

Jochen

Es ist nicht so,

Jochen

es fühlt sich halt nicht so

Jochen

snappy irgendwie ordentlich

Jochen

an, wie sich halt so ein Profi-Werkzeug anfühlen

Jochen

sollte, sondern es fühlt sich halt immer so an

Jochen

wie, keine Ahnung,

Jochen

wie diese, weiß ich nicht,

Jochen

also ich meine, gut, das ist ein böser Vergleich, aber wenn man

Jochen

so einen Fahrkartenautomat bei der Bahn steht und

Jochen

drückt er drauf, und dann

Jochen

passiert einfach nichts und dann drückt man nochmal

Jochen

drauf und dann macht es irgendwie so

Dominik

Kennt ihr das, wenn ihr euch gerade so einen Schokoriegel

Dominik

aus dem Automaten ziehen wollt und dann bleibt der irgendwo da oben

Jochen

hängen? Ja, und das ist halt

Jochen

schon sehr

Jochen

so ein bisschen nervtötend und deswegen benutze ich das

Jochen

eigentlich nicht so gern, obwohl manche Features halt

Jochen

durchaus so nett sind, dass ich es halt auch

Jochen

immer wieder verwende, aber

Jochen

wenn ich BI verwenden

Jochen

kann, dann verwende ich eigentlich, also

Jochen

WIM, da hat sich auch einiges getan.

Jochen

Wie hast du denn Python gelernt?

Dominik

hast du da irgendwie Tutorials

Dominik

gemacht oder warst da direkt drin? War das so

Dominik

Basics, dass man alles selber beibringen musste?

Jochen

Ja, aber es gab nicht so viele

Jochen

Bücher damals.

Jochen

Es gab ein paar, die waren

Jochen

aber auch alle nicht so wirklich hilfreich. Also doch, es gab

Jochen

ein Buch, das war hilfreich. Ich weiß aber nicht, ob

Jochen

das immer noch eine gute Empfehlung

Jochen

ist. Es war das Python Cookbook.

Jochen

Das war ganz gut.

Jochen

Ansonsten waren die meisten

Jochen

Bücher nicht so toll.

Jochen

Und ja,

Jochen

wie habe ich es gelernt?

Jochen

Ich hatte das Glück, dass ich da neben jemandem gesessen hatte,

Jochen

der das schon konnte.

Jochen

Und wenn er mir das dann gesagt hat,

Jochen

das war etwas lukriöse.

Jochen

Das war relativ praktisch.

Jochen

Das kann ich auch tatsächlich empfehlen.

Dominik

Versucht nicht nur im stillen Kämmerlein zu sitzen

Dominik

und euch selber durch den Kram zu quälen.

Dominik

Es geht bedeutend schneller und ihr kommt auch bedeutend schneller weiter,

Dominik

wenn ihr tatsächlich jemanden habt,

Dominik

der euch so ein bisschen zeigt, wie das Ganze geht.

Dominik

Danke, Jochen.

Dominik

Deswegen sitze ich ja hier und stelle dir die ganzen doofen Fragen.

Jochen

Man könnte auch zu Meetups

Jochen

durchaus gehen, sich da mit Leuten

Jochen

austauschen hilft.

Dominik

Die tägliche Arbeit muss man

Dominik

natürlich dann trotzdem machen, aber ich glaube, mittlerweile

Dominik

kommt man da ganz gut angeleitet auch

Dominik

in die ersten eigenen Projekte so rein.

Dominik

Ja, wie funktioniert

Dominik

Python eigentlich?

Dominik

Was ist das Ding? Wo kann man

Dominik

das machen? Also ich habe jetzt hier zum Beispiel auf meinem

Dominik

großen Zettel stehen, simple Prototyping

Dominik

kann man machen und recht umfangreiche

Dominik

Bibliotheken.

Jochen

Ja, also Python selbst ist halt eine...

Jochen

Einfach.

Jochen

Ja, es verbindet halt zwei Dinge,

Jochen

die eigentlich sich ein bisschen widersprechen.

Jochen

Es ist halt sehr einfach

Jochen

und es ist halt trotzdem sehr mächtig.

Jochen

Das macht es halt sehr schön.

Jochen

Auf der anderen Seite bedeutet das halt,

Jochen

dass es nicht so einfach ist,

Jochen

das irgendwie in Binärcode zu kompilieren oder so.

Jochen

Das ist halt mit einer Sprache,

Jochen

die halt wesentlich einfacher sozusagen ist,

Jochen

ist das halt simpler.

Jochen

Also wenn man C nimmt,

Jochen

so ein mehr oder weniger Makro-Assembler,

Jochen

da kann man dafür einen Compiler zuschreiben.

Dominik

Warum muss man denn überhaupt etwas in Binärcode

Dominik

kompilieren?

Jochen

Wenn es ein Computer direkt ausführen

Jochen

können soll, dann muss das irgendwie

Jochen

Maschinencode sein.

Jochen

Binärcode, Nullen und Einsen.

Jochen

Genau.

Jochen

Wenn das so etwas ist, dann kann es

Jochen

halt direkt ausgeführt werden. Also die

Jochen

meisten Programme, die man so kennt, sind das halt auch.

Dominik

So wie früher, wenn ich mir das so vorstelle,

Dominik

da hat man ja die ganzen großen Rechner gehabt,

Dominik

die Lochkarten gelesen haben für Nullen und Einsen.

Dominik

Das braucht der Computer auch heute noch, damit er versteht,

Dominik

was er da überhaupt machen muss.

Jochen

Ja, genau. Und dann läuft halt dieses Programm

Jochen

direkt irgendwie auf dem Prozessor

Jochen

und

Jochen

ja, aber das geht halt, das ist halt

Jochen

etwas, was dann nicht mehr geht mit Python, weil

Jochen

für Python Compiler zu schreiben ist halt dann

Jochen

nicht mehr so einfach.

Jochen

Oder eigentlich mal so ziemlich unmöglich, weil das ist halt alles

Jochen

dynamisch und zur Laufzeit kann sich eine Menge ändern.

Jochen

Das geht halt nicht so richtig.

Jochen

Das ist halt dann der Preis, den man zahlt,

Jochen

dass man es nicht mehr kompilieren kann.

Jochen

Es wird dann halt interpretiert, also es wird schon so ein bisschen

Jochen

verändert. Es wird

Jochen

in Bytecode verwandelt

Jochen

und der Whitecode wird dann interpretiert von einer virtuellen Maschine.

Dominik

Das sind dann die PyC-Dateien, die man findet, nachdem man irgendwas gelaufen hat.

Dominik

Genau, genau.

Dominik

Also C ist das, was dann das Ganze benutzt, um das dann für die Maschine schreiblesbar zu machen?

Jochen

Ja, aber für die Maschine ist das nicht lesbar.

Jochen

Man braucht immer noch den Python-Interpreter, der das dann ausführen kann.

Jochen

Also der Python-Interpreter ist halt genau diese virtuelle Maschine

Jochen

und der kann das dann halt ausführen.

Jochen

Und das hat dann auch so einige andere Nachteile.

Jochen

das macht es halt auch schwer, Sachen zu installieren

Jochen

oder so, weil man

Jochen

kann jetzt nicht einfach irgendwo

Jochen

ein Binary runterladen

Jochen

oder verschicken. Wieso, es gibt doch PIP.

Jochen

Ja, genau, dann muss man dann eben zu

Jochen

so Paketmanagern greifen,

Jochen

mit denen man irgendwelche Dinge installieren kann,

Jochen

aber man kann halt jetzt nicht irgendwie auf dem USB-Stick

Jochen

jemandem irgendwie

Jochen

Python-Programm geben

Jochen

und der startet das dann halt.

Dominik

Also, wenn ich das richtig verstanden habe, PIP ist dann

Dominik

dieser Paketmanager, der über die Seite

Dominik

PyPy oder wie es ist, über den Server von dir

Dominik

läuft und dann da Pakete

Dominik

installiert, die andere dort bereitgestellt haben,

Dominik

die schon so mit veröffentlicht sind.

Dominik

Das heißt, wenn ihr eure eigenen Pakete baut,

Dominik

müsst ihr die entweder so veröffentlichen oder

Dominik

tatsächlich externe Bibliotheken

Dominik

nehmen, um Installer zu bauen oder sowas.

Jochen

Genau, das gibt es auch. Es gibt High-Installer,

Jochen

es gibt diverse Geschichten, die das dann halt versuchen

Jochen

irgendwie in Binary zu packen. Und das

Jochen

funktioniert auch manchmal.

Dominik

Kannst du kurz zwei, drei Installer nennen, die man

Dominik

versucht für verschiedene Systeme? Einmal vielleicht für Linux,

Dominik

für OS oder für Windows oder so?

Dominik

Ich benutze das selber nie.

Dominik

Bei Linux braucht man es, glaube ich, nicht groß.

Jochen

Nee, da gibt es, glaube ich...

Dominik

Baust du ein Paket, machst du ein Shell-Install-Setup-Py, was?

Jochen

Nee, aber da gibt es auch, also unter Linux gibt es auch so ein Ding,

Jochen

was halt quasi den Interpreter mit reinpackt in Binary.

Jochen

Pye-Installer?

Jochen

Kann sein, dass es Pye-Installer ist.

Jochen

Und wenn man da so ein bisschen aufpasst,

Jochen

dann kriegt man den Interpreter relativ klein.

Jochen

Also wenn man es einfach naiv macht, dann

Jochen

kann es sein, dass es irgendwie so 15 MB

Jochen

sind oder 10, ich weiß nicht genau.

Jochen

Aber man kriegt es auf irgendwie 2, 3 runter,

Jochen

wenn man sich da ein bisschen Mühe gibt.

Jochen

Und dann ist es eigentlich, ich meine, heutzutage ist das eigentlich

Jochen

sowieso alles nicht mehr so wild.

Jochen

Dann ist es halt so, es gibt natürlich Leute,

Jochen

die sagen würden, wenn ich

Jochen

das mit C mache und dann gut

Jochen

und nicht gegen die Lip C linke

Jochen

oder gegen die G-Lip C, sondern halt irgendwie

Jochen

so eine Diät-Lip C

Jochen

oder irgendwas anderes, keines.

Jochen

Jetzt hören wir gerade kurz wieder. Lip C, G-Lip C,

Dominik

das sind die Standardbibliotheken, die CISO bereitstellt

Dominik

für die Befehle, die dann das Ganze größer machen,

Jochen

wenn man das kompiliert, oder? Genau, da ist ein bisschen

Jochen

Standardbibliothek dabei, aber eigentlich, wofür die da sind,

Jochen

ist die Kommunikation mit dem Kernel,

Jochen

mit dem Betriebssystem, sozusagen.

Jochen

Und das kann man natürlich auch beliebig komplex

Jochen

gestalten, aber wenn man halt nur die ganz

Jochen

simpelsten Dinge haben will,

Jochen

dann muss das nicht so groß sein,

Jochen

weil das Problem ist, es muss halt irgendwie dagegen gelinkt sein,

Jochen

damit

Jochen

irgendwie der Prozess überhaupt irgendwas machen kann, wie

Jochen

Eingabe, Ausgabe und so.

Jochen

Aber wenn man das schlau macht, dann kriegt man das halt

Jochen

auf, weiß ich nicht, ein paar hundert Byte oder so runter.

Jochen

Und das ist natürlich was ganz anderes, als wenn ich

Jochen

jetzt irgendwie megabyteweise Zeugs...

Dominik

Das könnte auch ein Mikrocontroller packen. Ich glaube, man kriegt das

Dominik

sogar in so einen Bootsektor rein. Wie hat so ein Bootsektor

Dominik

512 Bytes oder sowas?

Dominik

Keine Ahnung, ja.

Jochen

Also natürlich ist es nicht so

Jochen

klein, wie es gehen könnte, wenn man das wirklich

Jochen

drauf anlegt.

Jochen

Und das wird auch nie gehen mit Python so richtig.

Jochen

Aber also

Jochen

heutzutage sind ja auch ein paar Megabyte eigentlich

Jochen

ja, nicht mehr wirklich viel.

Jochen

Luxus.

Jochen

Früher war das doch sehr schlimm, heute...

Jochen

Band zurückspulen oder sowas, ja.

Jochen

Genau, und daher ist das

Jochen

eigentlich auch alles nicht mehr so wild. Aber man muss auch sagen, dass

Jochen

dieses Thema so ein bisschen vernachlässigt wurde,

Jochen

gerade auf Windows und so,

Jochen

kann man ja auch nicht davon ausgehen, also bei den meisten

Jochen

Linux-Systemen wird halt einfach ein Python-Interpreter

Jochen

vorinstalliert sein, vielleicht ein uralter, aber immerhin.

Jochen

Aber bei Windows ist halt Python

Jochen

nicht vorinstalliert und wenn man

Jochen

irgendjemandem ein Python-Script schickt oder so, kann der halt

Jochen

nichts damit anfangen. Das ist ein bisschen

Jochen

ein Problem. Das ist halt auch ein bisschen

Jochen

Preis, den man dann halt zahlt, dafür,

Jochen

dass es halt einfach ist,

Jochen

aber trotzdem sehr mächtig.

Jochen

Und ja, also

Dominik

Die Beine ruhig, das kriegt ihr natürlich

Dominik

trotzdem auf der Python-Room-Stage direkt

Dominik

für die jeweiligen Systeme und wenn das

Jochen

Der Python-Interpreter selber ist natürlich

Jochen

wieder quasi so ein Bein.

Dominik

Einige Leute empfehlen auch Anaconda, das ist irgendwie so ein Paket,

Dominik

womit man ganz viele tolle Datensachen machen kann,

Dominik

wo es vorinstalliert ist. Also ich persönlich

Dominik

hatte da nicht so die besten Erfahrungen mit, das war immer

Dominik

sehr verwurschtelt mit den Paketen

Dominik

und dann lief immer was nicht, wenn es irgendwie ein Update gab

Dominik

von den neuesten Python-Versionen, die haben auch einen eigenen

Dominik

Paketmanager, einen Conda irgendwie

Dominik

und deswegen würde ich das für Anfänger jetzt nicht unbedingt

Dominik

sofort empfehlen, obwohl viele das machen,

Dominik

aber das könnt ihr ja selber schauen.

Jochen

Ja, ja, Anaconda ist ein bisschen verwirrend, weil

Jochen

also eben, es ist eben kein Paketmanager

Jochen

und auch nicht, also Anaconda

Jochen

ist eine Distribution sozusagen von

Jochen

Paketen, aber

Jochen

Conda ist der Paketmanager

Jochen

und es gibt auch noch ganz viele andere

Jochen

Pakete, die jetzt nicht in der Anaconda

Jochen

Distribution drin sind und

Jochen

das ist so ein bisschen alles

Jochen

Eigentlich ist das alles ein bisschen furchtbar.

Jochen

Man muss sagen, dass es schön wäre,

Jochen

in einer idealen Welt hätte man das ja gerne,

Jochen

dass man einen Paketmanager für alles verwendet.

Jochen

Es gibt auch so ein bisschen die Utopie,

Jochen

wird so ein bisschen gelebt bei NixOS.

Jochen

Da versuchen Leute, das tatsächlich noch umzusetzen.

Jochen

Oder eigentlich waren auch die Linux-Distributionen

Jochen

mal so quasi gedacht,

Jochen

dass man halt einen Paketmanager hat,

Jochen

mit dem installiert man halt irgendwie alles,

Jochen

was man irgendwie haben möchte.

Jochen

es geht ja auch jetzt noch, wenn man jetzt ein Debian hat

Jochen

beispielsweise, dann kann man auch ein NumPy

Jochen

oder so, was ja

Jochen

quasi ein Modul ist für

Jochen

Scientific Computing, ein Modul für Python,

Jochen

kann man durchaus per Debian-Paket

Jochen

installieren, also über die Distribution.

Jochen

Es ist halt nur so, dass man das nicht tun sollte,

Jochen

weil dann bekommt man eine Version, die nicht optimiert ist,

Jochen

wo der Maintainer, also ich meine, vielleicht ist es auch gut,

Jochen

ich weiß keine Ahnung, aber

Jochen

die Wahrscheinlichkeit ist hoch, dass es eben

Jochen

dann nicht schnell ist, weil

Jochen

es ist halt nicht gegen MKL, diese

Jochen

Mathe-Bibliothek von Intel gelingt

Jochen

beim Kompilieren. Also man muss,

Jochen

es ist halt tricky, das zu kompilieren, da ist viel

Jochen

Core-Transworks dabei. Das ist alles nicht so

Jochen

einfach und

Jochen

ja, überfordert möglicherweise halt

Jochen

ein Debian-Meter auch so ein bisschen.

Dominik

Also du würdest auch immer alle Pakete

Dominik

über PIP installieren, oder?

Jochen

Naja, nee, ich würde sagen, es kommt drauf an. Also leider

Jochen

haben wir nicht, also am schönsten wäre es,

Jochen

wir hätten einen Paketmanager für alles.

Dominik

Also zum Beispiel PIP oder deinen Distributionsmanager?

Jochen

Nee, sowas wie ABT oder genau, oder

Jochen

weiß nicht was dabei,

Jochen

Yam für Red Hat gibt.

Jochen

DNF ist mittlerweile, glaube ich,

Jochen

auch bei Red Hat, zumindest bei Fedora.

Jochen

Ja, ich bin

Jochen

da auch gar nicht mehr so am Laufen, aber

Jochen

genau. Wenn man einen

Jochen

Paketmanager hätte, mit dem man alles installiert

Jochen

und dann sich relativ sicher sein könnte,

Jochen

dass das halt irgendwie funktioniert, das wäre schön.

Jochen

Aber es hat sich

Jochen

jetzt aber eher so entwickelt, dass

Jochen

jede Programmiersprache so ein bisschen ihren

Jochen

eigenen Paketmanager mitbringt.

Jochen

Bei Python ist es halt

Jochen

erst mal pip, so wie bei

Jochen

Ruby sind das diese Ruby Games,

Jochen

bei Perl ist es

Jochen

Sepan, beziehungsweise, ich weiß gar nicht,

Jochen

was jetzt das Ding ist, mit dem man die Dinger installiert.

Jochen

Dann bei,

Jochen

weiß ich nicht, JavaScript ist es halt

Jochen

npm oder yarn oder was auch immer man da gerade

Jochen

verwendet.

Jochen

Und

Jochen

das ist dann natürlich nicht mehr so toll,

Jochen

weil das Problem ist, dass, wenn man

Jochen

die jetzt benutzt, die Sachen,

Jochen

wenn man die jetzt quasi einfach

Jochen

so ins Routefile-System installiert,

Jochen

dann überschreiben die natürlich Sachen, die die Disposition

Jochen

da reingeschrieben hat.

Jochen

Überschreiben sich gegenseitig.

Jochen

Alles nicht so schön.

Jochen

Niemand hat darauf aufgepasst, dass die Sachen auch alle miteinander

Jochen

klarkommen.

Jochen

Das heißt, es können die komischsten Dinge passieren.

Jochen

Das ist halt nicht so toll.

Jochen

Was macht man denn da?

Jochen

Dafür versucht man das dann irgendwie

Jochen

zu isolieren und installiert

Jochen

Dinge nur in Environments.

Dominik

Also in virtuellen Entwicklungen.

Jochen

Virtuelle Umgebungen, genau.

Dominik

Oder für seinen einen User. Also zum Beispiel pip install

Dominik

Paketname minus minus User.

Dominik

Wird halt das für den aktuellen Nutzer nur installieren?

Dominik

Genau, das kann man auch machen.

Jochen

Und das sind halt so ein bisschen krückige Lösungen für dieses Problem.

Jochen

Aber leider ist es sogar noch schlimmer.

Jochen

Es ist jetzt nicht nur so, dass jeder Programmiersprache einen eigenen Paketmanager hat,

Jochen

sondern es sieht so ein bisschen, also jedenfalls bei Python ist es leider so,

Jochen

dass auch jede Community ihren eigenen Paketmanager nochmal hat.

Jochen

Also die ganze Web-Community verwendet eigentlich überwiegend PIP,

Jochen

während die ganze Data-Science-Community überwiegend Conda verwendet.

Jochen

Und man sagen muss, Conda ist ein bisschen mächtiger als PIP.

Jochen

Man kann damit nicht nur Python-Pakete installieren,

Jochen

sondern halt auch diverse andere Binär-Pakete.

Jochen

Und manchmal muss man das halt dummerweise auch,

Jochen

weil viele der Sachen, die man da verwendet,

Jochen

sind halt Fortran-Bibliotheken oder irgendwelche C-Bibliotheken.

Dominik

Warum verwendet man denn Fortran- oder C- oder C++-Bibliotheken in Python?

Dominik

Ja, genau.

Jochen

Das ist halt auch, weil, wenn man jetzt zum Beispiel Matrizen miteinander multiplizieren will oder so,

Jochen

dann könnte man das natürlich auch in Python machen, indem man einfach For-Loops ineinander schachtelt.

Jochen

Also man speichert die Dinger einfach quasi als zweiendimensionale Listen oder so.

Jochen

Einfach eine Liste von Listen und dann quasi eine Liste von Spalten oder Zeilen.

Jochen

Moment, NumPy, glaube ich.

Jochen

Ja, ja, genau, aber man könnte es direkt in Python machen, dann macht man halt irgendwie so eine dreifach verschachtelte For-Loop und iteriert über die Dinger und rechnet das dann halt aus.

Jochen

Das kann man machen, ist halt dann sehr, sehr langsam.

Jochen

Wenn man jetzt so eine Bibliothek benutzt wie NumPy oder so, die haben dann halt einen speziellen Array-Type sozusagen.

Jochen

Und wenn man da jetzt sagt, multiplizieren wir mal A und B,

Jochen

dann nutzt NumPy unten drunter halt quasi,

Jochen

weiß ich jetzt gar nicht, was man da mal spritzen möchte.

Dominik

Ich muss mir jetzt gerade so auszumalen, wie das dann so aussieht in einem Schaubild,

Dominik

um mir das irgendwie so ein bisschen vorzustellen, warum das jetzt schneller geht.

Dominik

Also die benutzen drunter einen neuen Motor.

Jochen

Benutzen drunter optimierte Fortran-Bibliotheken.

Jochen

Oder ist es, ich weiß gar nicht mal, ob es Fortran ist unbedingt.

Jochen

Also es ist halt irgendwie, die haben halt damals angefangen

Jochen

mit Blas, Lapak, Atlas.

Jochen

Das sind so die Dinger, die da unten drunter liegen.

Jochen

Und es gibt, glaube ich, irgendwie so eine

Jochen

definierte Schnittstelle für solche

Jochen

für diese ganzen

Jochen

Operationen. Und dann

Jochen

sind das irgendwie Implementationen davon.

Jochen

Und ja.

Jochen

Nennen wir es Magic.

Jochen

Genau, Magie.

Jochen

Fortran ist halt irgendwie, als Sprache ist es immer noch

Jochen

deswegen so wichtig, weil da Sachen sich quasi mehr oder weniger

Jochen

automatisch vektorisieren lassen. Das bedeutet,

Jochen

dass man nicht loopt über Sachen,

Jochen

sondern dass

Jochen

der Prozessor das

Jochen

quasi übernimmt.

Jochen

Also wenn man das einfach an C kommt,

Jochen

kann man natürlich auch eine Loop hinschreiben. Wäre schon viel schneller als ein Python.

Jochen

Wahrscheinlich so tausendmal schneller oder so.

Jochen

Aber

Jochen

selbst das wäre deutlich langsamer als das, was

Jochen

quasi die Bibliotheken, die

Jochen

unter dem Nampal liegen, halt machen.

Jochen

Genau. Hat so ein bisschen

Jochen

den Nachteil, dass man halt den Code anders

Jochen

strukturieren muss. Man kann eben dann keine Vorschleife mehr

Jochen

verwenden, sondern man macht eher solche Sachen

Jochen

wie man

Jochen

auf den Objekten, die man erzeugt hat, wie zum Beispiel

Jochen

irgendwelche Arrays oder so, ruft man dann halt

Jochen

irgendwie eine Funktion auf und übergibt dir einen Callback

Jochen

oder so. Weil vor Schleifen gehen halt nicht mehr.

Jochen

Das ist ein bisschen komisch,

Jochen

aber ist halt dafür schnell.

Jochen

Mir ist das so ein Trade-off.

Dominik

Kann man sich überlegen, ob man sich das angewöhnt hat, dass man

Dominik

das gerne macht oder ob man sagt, hey, wir nehmen jetzt das

Dominik

ein bisschen kaufen. Python ist ja immer

Dominik

als langsam verschrien, aber wenn wir den auch schnell bekommen,

Dominik

ja okay, dann machen wir vielleicht mal einen kleinen Umweg.

Dominik

Genau, genau. Ja, kommen wir vielleicht

Jochen

gleich noch zu, wenn es um die Mythen geht.

Jochen

also das ist, man kann damit

Jochen

auch sehr schnell Dinge tun und

Jochen

dafür muss es halt auf Bibliotheken

Jochen

basieren, die das halt auch schnell machen können und

Jochen

für Scientific Computing und Zeugs ist

Jochen

es halt vortragend oft.

Jochen

Ja, genau.

Dominik

Ja, vielleicht nochmal genau zu diesen ganzen Bibliotheken,

Dominik

die man machen kann. Du hast gesagt, glaube ich, Data Science

Dominik

kann man ganz viel machen und Web kann man ganz viel machen

Dominik

und für diesen Glue,

Dominik

also den Klebstoff zwischen einzelnen Modulen, kann man

Dominik

ganz viel machen und so zum Skripten.

Dominik

Fällt dir noch irgendwas ein?

Jochen

Ja, was ich ein bisschen vernachlässige,

Jochen

Genau, auch ein Bereich, der momentan sehr interessant

Jochen

wird, ist so

Jochen

Home-Automation-Zeug,

Dominik

Smart Home. Ich glaube, der Raspberry Pi, der macht

Jochen

ja ganz, ganz viel. Ja, genau, Raspberry Pi wird da

Jochen

oft verwendet und überhaupt Raspberry Pi

Jochen

und Python haben viel,

Jochen

viele schöne Anwendungen,

Jochen

da kann man viel drauf machen.

Jochen

Home-Automation, du hast ja, glaube ich, ganz viele

Jochen

schöne Sachen mit. Ja, ich habe auch einen Raspberry Pi

Jochen

irgendwo im Schrank stehen, der zum Beispiel

Jochen

Temperaturen ausliest, indem man,

Jochen

ich habe so ein DVB-T-Modul da

Jochen

reingesteckt, die gibt es jetzt irgendwie günstig, weil es gibt kein

Jochen

DVB-Thema. Ich wollte gerade sagen, also das ist doch gerade abgeschaltet worden.

Jochen

Richtig, jetzt kann man die Dongle

Jochen

kriegt man relativ willig

Jochen

und da ist so eine Antenne dran und dann

Jochen

habe ich hier irgendwie so Sensoren und die funken

Jochen

halt auf den Frequenzen, ihre Werte

Jochen

halt so alle paar Sekunden oder so

Jochen

und dann muss man die eigentlich dann nur

Jochen

einsammeln und dann an

Jochen

es gibt ein Software, das nennt sich Home Assistant

Jochen

schicken, also das ist ein bisschen komplizierter.

Jochen

Ja, da machen wir auch noch eine eigene Folge. Genau.

Jochen

Aber solche Sachen, also wenn man

Dominik

zum Beispiel... Also ich sehe jetzt aber zum Beispiel keine

Dominik

Schläuche in den Pflanzen, die du hier in deinem schönen

Dominik

Wintergarten stehen hast. Das heißt, das musst du noch selber gießen.

Dominik

Genau, ja, furchtbar.

Jochen

Da musst du unbedingt automatisiert

Jochen

werden. Ich weiß nur nicht, wie ich den Wassertransport

Jochen

automatisieren soll. Das ist ein bisschen gefährlich.

Dominik

Eine Pumpe irgendwie und dann einmal einfach

Dominik

unabsprichtversichert.

Dominik

Ja, wäre eine Idee

Dominik

tatsächlich vielleicht.

Dominik

Genau.

Jochen

Ja, aber in dem Bereich ist Python halt auch,

Jochen

glaube ich, sehr stark unterwegs.

Jochen

Und da, gerade wenn man jetzt

Jochen

also einmal auf der Serverseite sozusagen

Jochen

Also das Ding, was diese ganzen smarten, mehr oder weniger smarten Geräte halt sozusagen managt und mit denen da irgendwas macht, irgendwelche Sensordaten ausliest. Die Seite ist Python, aber halt auch die Sensoren selber. Also man kann zum Beispiel, es gibt da so kleine Boards, kosten ein paar Dollar und da ist ein Chip drauf mit ein wenig, ist nicht so schnell und hat auch wenig Speicher, aber da läuft MicroPython zum Beispiel drauf, sodass man da halt...

Jochen

Nächste Folge. Ja, genau.

Jochen

Das heißt, man kann auch da Python

Jochen

drauf laufen lassen und dann

Jochen

irgendwie Sensordaten damit schon irgendwas machen.

Dominik

Da muss man aber wieder aufpassen, dass wir die Module

Dominik

so nehmen, dass sie möglichst klein werden. Genau, da

Jochen

muss man wieder ein bisschen aufpassen und so, aber

Jochen

ja, also in dem Bereich ist Python

Jochen

halt auch sehr, sehr stark

Jochen

vertreten.

Dominik

Ja, ich glaube, also was noch dazu kommt, vielleicht so Rapid

Dominik

Prototyping erstmal nochmal als Basis wird

Dominik

reingeschmissen. Man kann relativ schnell irgendwelche

Dominik

Prototypen bauen von Dingen, die

Dominik

man benutzt, sei es jetzt im Web oder bei Daten, die dann auch

Dominik

funktionieren, die kurz sind.

Dominik

Wenn man jetzt zum Beispiel die Sprache vergleicht, ist ja auch sehr

Dominik

einfach, deswegen eignet sich das besonders gut.

Dominik

Ist vielleicht am nächsten am

Dominik

Pseudocode dran, so von dem, was ich so gesehen habe.

Dominik

Das heißt, man kann relativ einfach

Dominik

die Syntax formulieren und hat direkt

Dominik

ein lauffähiges Programm,

Dominik

was wenigstens so grob das tut,

Dominik

was es sollte später.

Dominik

Dazu würdest du sagen,

Dominik

ist noch so einer der großen Vorteile

Dominik

der Sprache, wo man jetzt von außen drauf guckt.

Dominik

Wir sind jetzt nicht so für den Anfängern oder so.

Jochen

Ja, vielleicht wäre es ganz interessant, das mal so ein bisschen zu differenzieren

Jochen

gegenüber den anderen Sprachen, die es halt in den ganzen Bereichen

Jochen

auch gibt, mit denen man auch diese ganzen

Jochen

Dinge tun kann.

Jochen

Also Python ist halt,

Jochen

würde ich sagen, gehört so zur

Jochen

Familie der

Jochen

Script-Sprachen irgendwie. Also man könnte sagen, es ist sowas

Jochen

ähnliches wie Ruby oder wie Perl oder

Jochen

auch ein bisschen wie JavaScript.

Jochen

Aber

Jochen

unterscheidet sich halt, oder PHP,

Jochen

unterscheidet sich von denen aber. Also wie zum Beispiel

Jochen

JavaScript und PHP, die sind halt

Jochen

dynamisch getypt

Jochen

sozusagen und schwach

Jochen

getypt.

Jochen

Sozusagen

Jochen

Dinge können ihren Typ

Jochen

ändern oder man weiß nicht, was sie sind

Jochen

sozusagen von Anfang an.

Jochen

Das ist in Python auch so.

Jochen

Aber in Python ist halt

Jochen

streng getypt.

Jochen

Auch dynamisch und streng.

Jochen

Das heißt, wenn ich jetzt sage,

Jochen

irgendwie eine Zahl plus

Jochen

irgendwie ein String oder so,

Jochen

dann kriege ich bei Python

Jochen

dann halt ein Type Error, also

Jochen

ein Fehler.

Jochen

Also ein Fehler.

Jochen

Da haut mir Python halt auf die Finger,

Jochen

während in PHP oder in JavaScript

Jochen

passiert dann halt irgendwas.

Jochen

Was passiert denn da?

Jochen

Oder ist das dunkle Magie wahrscheinlich?

Jochen

Es ist eher dunkel und

Jochen

man weiß nicht so genau, was dann passiert.

Jochen

Es kommen die komischsten Sachen, aber es gibt einen schönen

Jochen

Vortrag

Jochen

für JavaScript,

Jochen

das mal jemand, es ist ein bisschen veraltet,

Jochen

aber hat das mal jemand

Jochen

aufgeschrieben. Ich glaube, wenn man danach sucht

Jochen

JavaScript Talk und dann

Jochen

Watt, W-A-T, dann

Jochen

findet man das. Und dann, wo er dann so

Jochen

eben solche Dinge macht, wie

Jochen

irgendeine Zahl plus Leer-String

Jochen

und dann kommen halt die seltsamsten Dinge dabei raus.

Jochen

Oder der Server hüpft und blinkt und

Jochen

am Schluss kommen irgendwelche Zeichenkenten dabei raus und

Jochen

Batman erscheint. Also es ist wirklich,

Jochen

man muss aufpassen, was man da tut, ansonsten passieren

Jochen

ganz, ganz furchtbare Dinge. Klingt so, als könnte

Jochen

man das gut ausnutzen.

Jochen

Ja, und es passieren halt auch regelmäßig wirklich schlimme Sachen.

Jochen

Die Welt geht unter.

Jochen

Ja, ja, so ungefähr.

Jochen

Und das kann bei einem Python halt nicht so leicht passieren.

Jochen

Das ist schon mal ganz schön.

Jochen

Also insofern ist es halt in der Welt,

Jochen

also ich finde, was man über Python sagen kann,

Jochen

es macht halt die richtigen Trade-offs.

Jochen

Also es ist halt immer, es ist halt so eine Sache.

Jochen

möchte man

Jochen

jetzt, das hat ja natürlich auch Vorteile,

Jochen

man kann Dinge

Jochen

vielleicht abkürzen oder so, wenn man das

Jochen

schwach getypt, wenn man das nicht so streng überprüft,

Jochen

man kann das teilweise ausnutzen, um Sachen

Jochen

eleganter zu machen, aber man zahlt halt

Jochen

einen Preis dafür und

Jochen

Python hat so die Tendenz, immer diese

Jochen

richtigen Trade-Offs zu machen.

Dominik

In der neuen Version, ich weiß jetzt gar nicht, ob das bei 3.7 kam

Dominik

oder bei irgendeiner 3.6 Version, dann kann man diese Typen

Dominik

jetzt so schön annotieren noch,

Dominik

für Funktionen oder für Variablen direkt und

Dominik

sieht dann, dass direkt das beispielsweise

Dominik

in seinem Linter oder sowas. Also das, was

Dominik

den Code unterstreicht, wenn ein Fehler

Dominik

da ist, dass der Typ falsch ist. Also wenn man jetzt

Dominik

Standardtypen eher haben möchte

Dominik

oder feste Typen und keine dynamischen,

Dominik

dass man zumindest weiß, was da

Dominik

stehen sollte, obwohl das Python immer noch versucht

Jochen

zu sprechen. Ja, also aber

Jochen

das Schöne ist halt, das ist halt optional.

Jochen

Man kann das da ranschreiben. Also klar,

Jochen

natürlich, das ist auch einer der Vorteile, die in so einer

Jochen

Sprache wie Java oder so, die ist halt statisch getypt.

Jochen

Also nicht dynamisch. Da kann man

Jochen

hinterher, wenn ich einen Variabler habe,

Jochen

die ändert sich nicht einfach so,

Jochen

was einen anderen Typ. Das geht da halt gar nicht.

Jochen

Und das kann auch nicht sein, dass

Jochen

hinterher der Typ erst festgelegt wird zur Laufzeit,

Jochen

sondern das muss halt zur

Jochen

Compile-Zeit sozusagen, wo der

Jochen

Source-Code in Bytecode verwandelt wird, muss das halt

Jochen

feststehen.

Jochen

Eine schöne Geschichte, die man dann halt

Jochen

bauen kann, ist halt Unterstützung in den IDEs

Jochen

dafür. Also wenn ich halt weiß,

Jochen

sozusagen, dass diese Variable halt den

Jochen

Typ hat, dann kann die IDE mir schon auf die Finger

Jochen

hauen, wenn ich versuche, damit etwas zu machen, was halt nicht geht.

Jochen

Also das bringt auf jeden Fall

Dominik

einen interessanten Trade-Off, weil als Anfänger würde ich

Dominik

mir jetzt erstmal so denken, dynamisch

Dominik

klingt ja voll cool, da kann das immer was Verschiedenes sein

Dominik

und da kann ich ganz tolle Sachen mitmachen und

Dominik

du sagst jetzt gerade, der Start ist natürlich auch voll toll, weil man kann

Dominik

das irgendwie nicht verwechseln und man bekommt keine

Jochen

Fehler. Naja, der Nachteil dabei ist halt,

Jochen

da muss man viel mehr schreiben. Was auch nicht

Jochen

so ein Problem ist, wenn man eine IDE verwendet, weil die

Jochen

schreibt das dann für einen so ein bisschen.

Jochen

Aber man braucht

Jochen

dann halt eine komplizierte IDE, die irgendwie

Jochen

Dinge tut und dann auch nicht mehr so schnell sein kann.

Jochen

Also ja, das

Jochen

ja, also

Jochen

man kann damit auch programmieren, so schlimm ist es nicht,

Jochen

aber es ist halt so ein bisschen, ich mag

Jochen

es nicht so, ich mag lieber, man schreibt

Jochen

wenig und schreibt es dann halt aber selber

Jochen

und das

Jochen

Tool, was man dafür verwendet, ist halt schnell, als

Jochen

die IDE schreibt das, aber die ist so ein bisschen

Jochen

laggy und man muss ein bisschen auf die warten.

Jochen

Ja gut, aber das geht

Jochen

auch, in Python hat man das jetzt

Jochen

halt so nicht, das ist alles dynamisch, man kann aber auch

Jochen

Typ-Annotationen jetzt, das ist

Jochen

auch eine sehr neue Geschichte, kann man halt halt dazuschreiben

Jochen

und dann könnte einem die IDE oder

Jochen

PyCharm und so können das möglicherweise auch schon.

Jochen

Die kann einem dann dabei helfen und dann auch

Jochen

sagen, wenn irgendwas nicht geht.

Jochen

Ich glaube also zum Beispiel

Dominik

in Listen kann man auch verschiedene Datentypen

Dominik

benutzen, es sei denn, man benutzt erst NumPyArrays, wo das

Dominik

dann auch wieder fest ist. Aber ja, das glaube ich

Dominik

auch ganz interessant, weil es halt sein kann,

Dominik

wenn man durch so eine Liste iteriert und man macht

Dominik

irgendeine Multiplikation oder sowas,

Dominik

dann fliegt einem das um die Ohren, weil das der falsche

Dominik

Datentyp ist. Das ist genau

Jochen

einer dieser Geschichten, wo

Jochen

statisch getypte Sprachen

Jochen

große Schwierigkeiten mit haben oder

Jochen

als Programmierer das Leben halt schwer machen.

Jochen

So diese ganzen Containerdatentypen,

Jochen

die sind da halt knifflig

Jochen

oder man kann halt im Grunde immer nur

Jochen

Container haben, die halt dann

Jochen

irgendwie Dinge von einem Typ enthalten,

Jochen

weil man muss ja

Jochen

irgendwie sagen, welchen Typ die Variable

Jochen

hat, die man da reintut und das ist halt, also gut,

Jochen

geht mittlerweile auch, es gibt Generics und

Jochen

ist inzwischen auch in Java angekommen

Jochen

und man kann da auch so Sachen machen,

Jochen

aber das ist alles dann nicht mehr so richtig

Jochen

einfach und ein

Jochen

Dingen, was man dann halt oft sieht,

Jochen

was Leute dann machen, ist, sie haben

Jochen

halt, naja, also um diese

Jochen

Unzulänglichkeiten, sag ich mal, so könnte man

Jochen

das sehen in der Sprache, zu kompensieren,

Jochen

überlegen sie sich dann halt irgendwie Patterns,

Jochen

wie man bestimmte Probleme, auf die man dann stößt,

Jochen

wenn man nicht mehr einfach

Jochen

quasi beliebige Dinge irgendwie

Jochen

in ein Ding, was halt über Sachen iteriert, packen kann.

Jochen

Ja, weil so ein Python-Iterator ist halt,

Jochen

der iteriert halt über Sachen und da kann halt beliebiges

Jochen

Zeug drin sein.

Jochen

Wenn das halt nicht geht, dann

Jochen

dann muss man sich halt so Patterns

Jochen

überlegen, wie man Dinge tun kann.

Jochen

Für viele Situationen kann man

Jochen

das dann halt nicht einfach so hinschreiben, was man machen möchte,

Jochen

sondern dann muss man halt, dann gibt es

Jochen

ein ganzes Gang-of-Four-Buch

Jochen

irgendwie.

Jochen

Bitte was? Das ist ein ganz bekanntes Buch

Jochen

von, naja, wer ist das?

Jochen

Das wird immer Gang-of-Four-Buch

Jochen

genannt.

Dominik

Ja, das musst du unbedingt auch in die Shownotes packen.

Jochen

Ja, ich glaube, das Ding heißt auch immer Design Patterns

Jochen

oder so. Und da sind halt

Jochen

ich weiß nicht, wie viele

Jochen

das sind, hundert oder irgendwas in den Dreh.

Jochen

Typische

Jochen

Design-Patterns, die man halt jetzt in so statisch getübten

Jochen

Programmi-Sprachen vor allen Dingen verwenden kann,

Jochen

wenn einem solche Probleme halt plagen,

Jochen

wie man damit umgeht. Und die das dann halt

Jochen

hübsch lösen, sozusagen.

Jochen

Und wenn

Jochen

man dieses Buch durchgeht

Jochen

und sich dann überlegt, wie würde ich das in Python machen, dann stellt man halt

Jochen

oft fest, ich brauche da gar keinen Pattern.

Jochen

In Python kann ich das einfach so hinschreiben.

Jochen

Da muss ich mir kein kompliziertes

Jochen

das Ding ausdenken, mit dem ich halt irgendwie da jetzt

Jochen

Architektur-Ding, mit dem ich da mit diesem Problem fertig werde,

Jochen

weil ich habe das Problem gar nicht.

Jochen

Und das ist halt schon sehr nett, dass man halt

Jochen

quasi eine große Klasse von Problemen,

Jochen

die halt, ja, also auch

Jochen

dieses Buch wurde halt gefeiert als

Jochen

das kann man irgendwie so programmieren, in die Hand geben

Jochen

und dann kriegen sie das halt alles hin, wo sie

Jochen

sich vorher einen abgebrochen haben.

Jochen

So in Python hat man einen Großteil dieser

Jochen

Probleme hat man einfach nicht. So loslegen, machen.

Jochen

Ja. Ja. Und das ist halt

Jochen

schon sehr schön. Das ist ein großer Vorteil.

Jochen

Ja, also

Jochen

Also da würde ich sagen, ist halt auch eine der Stärken von Python,

Jochen

dass man halt quasi irgendwie einen Großteil der komplizierteren Programmier-Patterns nicht braucht,

Jochen

weil man kann es einfach so hinschreiben.

Jochen

Ich meine, klar, natürlich auch in Python gibt es Sachen, die kompliziert sind

Jochen

und nicht alle Patterns sind überflüssig.

Jochen

Deswegen, also es gibt durchaus Sachen, die man da auch brauchen kann.

Jochen

Aber es macht das Leben schon irgendwie leichter.

Jochen

Ja, das wäre so der Unterschied statisch getypt, dynamisch getypt.

Jochen

Genau, den strengen Sprach hatten wir jetzt auch schon im Vergleich zu den anderen Programmiersprachen.

Jochen

Was wir auch noch haben, ist quasi binär kompiliert.

Jochen

Das hatten wir aber auch eben schon ein bisschen abgehandelt.

Jochen

Dann gibt es natürlich Sprachen, in denen man das Memory Management selber macht.

Jochen

So C zum Beispiel.

Dominik

Da muss man immer so einen Zeiger durch den Speicher schicken, der genau sagt, wo man gerade ist.

Dominik

Ja, also

Jochen

genau, also

Jochen

man alluziert halt irgendwie Speicher und dann kriegt man

Jochen

einen Zeiger drauf zurück und dann macht man damit irgendwas

Jochen

und muss halt hinterher dran denken, dass man diese Strukturen

Jochen

wieder freigibt, wenn man sie nicht mehr braucht.

Jochen

Oder ja,

Jochen

wenn man Dinge freigibt, die man

Jochen

die eigentlich immer noch brauchen,

Jochen

dann passieren schreckliche Dinge.

Jochen

Und wie löst man das in Python?

Jochen

In Python hat man damit nichts zu tun.

Jochen

Das ist sozusagen

Jochen

das macht Python

Jochen

für einen selbst.

Jochen

Es sei denn, man schreibt wieder so Low-Level-C-Module

Jochen

oder so, die irgendwelche Dinge tun, dann muss man das auch wieder selber

Jochen

machen. Aber

Jochen

wenn man einfach sich in Python

Jochen

bewegt, dann hat man damit eigentlich nichts zu tun,

Jochen

weil das passiert dann automatisch.

Jochen

Python verwendet da ein System, das nennt sich

Jochen

Reference-Counting.

Jochen

Also es gibt da auch wieder einen Unterschied.

Jochen

Also in einer Sprache wie Java

Jochen

ist es ja auch so, da muss man sich auch eigentlich nicht drum kümmern.

Jochen

Das macht halt auch der Interpreter.

Jochen

Und dann gibt es halt noch Sprachen,

Jochen

die machen Garbage

Jochen

haben einen Garbage-Collector.

Jochen

Wie Python?

Jochen

Ja, also Python hat auch einen Garbage-Collector,

Jochen

aber ja,

Jochen

es ist ein bisschen kompliziert leider.

Jochen

Aber hauptsächlich ist es ein Python

Jochen

Reference-Counting, sozusagen.

Jochen

Das heißt, es zählt, wie oft ist irgendwas

Dominik

irgendwo da und wenn es nicht mehr da ist, dann zahlt es weg.

Jochen

Genau, wenn irgendwo eine neue Reference entsteht,

Jochen

dann wird der Reference-Counter hochgezählt

Jochen

und irgendwie ansonsten,

Jochen

wenn eine Reference verschwindet, gelöscht wird,

Jochen

dann wird es runtergezählt und wenn es bei 0 ankommen wird,

Jochen

wird das Objekt abgeräumt.

Jochen

Und

Jochen

das hat

Jochen

den großen Vorteil,

Jochen

es ist ziemlich schnell zur Laufzeit

Jochen

und

Jochen

es ist

Jochen

sozusagen auch

Jochen

sehr einfach, also kann nicht viel schief gehen.

Jochen

Es sorgt für

Jochen

vorhersagbare Latenzen.

Jochen

Es hat aber auch einen großen Nachteil.

Jochen

Okay.

Jochen

Der große Nachteil ist,

Jochen

ja, man kann

Jochen

dann nicht mehr Paralleldinge machen.

Jochen

Oh Gott, oh Gott, oh Gott. Also auf unterschiedlichen Prozessoren.

Jochen

Das geht im Grunde nicht mehr.

Jochen

Also das könnte man tun, da muss man halt

Jochen

wenn man es naiv

Jochen

machen wollte, müsste man dann für jede Operation,

Jochen

die jetzt irgendwie so ein Reference-Counter

Jochen

hoch oder runter zählt, da müsste man irgendwie

Jochen

so einen Lock drauf machen und sagen, so,

Jochen

jetzt mal alle stopp, wir erhöhen

Jochen

jetzt diesen Reference-Counter

Jochen

und dann können alle wieder weitermachen. Wenn man das

Jochen

tut, wird alles ungefähr 40 Mal so langsam.

Jochen

Und das geht alles einfach nicht mehr.

Jochen

Ich glaube, Leute haben irgendwie lange daran gefeilt,

Jochen

sind jetzt auf Faktor 20 oder so runter,

Jochen

wo man gar nicht gedacht hätte, dass es überhaupt möglich wäre.

Dominik

Das heißt, du brauchst 20 Kerne, damit du dann den einen Kern...

Dominik

Die Performance von einem Kern hinfickst, genau.

Jochen

Das ist natürlich irgendwie nicht so richtig effizient.

Jochen

Also das ist natürlich ein großer Nachteil.

Jochen

Und dafür gibt es halt bei Python auch den Global Interpreter Log.

Jochen

Den bitte was?

Jochen

Ja, GIL oder Global Interpreter Log.

Jochen

Das ist sozusagen ein Ding, was dafür sorgt,

Jochen

dass quasi ein Python-Prozess nur auf einer CPU läuft

Jochen

und nicht ein Python-Prozess auf mehreren CPUs laufen kann.

Jochen

Das ist halt so.

Jochen

Also das ist auch der Grund, warum Java das nicht macht.

Jochen

Java hat einen Garbage-Collector und hat dann dieses Problem nicht.

Jochen

Das kann dann halt auf mehreren Prozessoren laufen, problemlos.

Jochen

Oder, naja, problemlos, aber geht.

Jochen

Und sozusagen muss dann halt ab und zu mal aufräumen.

Jochen

Dafür ist dieser Garbage-Collector.

Jochen

Das heißt, auf einmal gibt es eine Pause.

Jochen

Nee, der Müllteil ist voll.

Dominik

Jetzt muss der Müll aus, muss erstmal alles einsammeln und wegfahren.

Jochen

Genau, das Problem ist, man weiß halt nie genau, wann der zuschlägt.

Jochen

Und das bedeutet halt, wenn man einen Server laufen hat,

Jochen

dann kann es halt sein, dass man irgendwie plötzlich,

Jochen

alle Requests sind super schnell und dann plötzlich einer dauert so lange.

Dominik

Also jetzt, um bei dem Müllauto Beispiel zu bleiben,

Dominik

kann man nicht einfach messen, wie voll der Müllcontainer ist

Dominik

und dann irgendwie den Müllwagen so gut fahren lassen,

Dominik

dass der ein Routenmanagement macht und da richtig vorbeifährt

Dominik

und die Sachen rechtzeitig lädt, bevor die vollgelaufen sind?

Jochen

Ja, aber das Problem ist halt, du musst irgendwann...

Jochen

Weiß nicht, wie viele Leute die Müll essen

Dominik

und wie viel Müll die wegschmeißen immer, oder?

Jochen

Ja, ja, ja, also da wird auch eine ganze Menge gemacht

Jochen

und es funktioniert auch alles irgendwie so ganz okay,

Jochen

aber das Problem wirst du im Grunde nicht los.

Jochen

Du hast immer das Problem, dass wenn der Müll weggebracht werden muss,

Jochen

musst du allen sagen, so, jetzt mal stopp,

Jochen

jetzt muss erst mal der Müll weggebracht werden.

Jochen

Aber die schmeißen alles in dieselbe Mülltonne.

Jochen

Ja, und

Jochen

dann, ja, selbst wenn

Jochen

das sehr schnell ist, kann es halt sein, dass es, weiß ich nicht,

Jochen

200 Millisekunden dauert oder sowas.

Dominik

Könnte man nicht einfach eine kleinere Mülltonne machen? Hatte für jeden so eine kleinere

Dominik

Mülltonne, als wenn man so eine große hat?

Jochen

Ja, ich weiß es nicht.

Jochen

Aber dieses Problem ist nach wie vor

Jochen

da, also nach wie vor

Jochen

kämpfen da Leute mit. Sagen wir mal, das ist halt

Jochen

einer der Trade-offs. Wenn du halt einen Garbage-Collector

Jochen

hast, dann kannst du halt

Jochen

irgendwie Sachen auf mehrere Prozessoren verteilen, aber du hast halt den

Jochen

Nachteil, dass deine Latenz so ein bisschen

Jochen

unvorhersagbar wird.

Jochen

Ja, das ist halt blöd.

Jochen

Und ja, das

Jochen

sind halt,

Jochen

man kann sich halt überlegen, was man irgendwie

Jochen

lieber mag, sozusagen. Und auch

Jochen

da finde ich, dass Python dann eine ganz

Jochen

gute

Jochen

Wahl getroffen hat mit dem Reference-Counting.

Jochen

Und auch da gibt es halt den Garbage-Collector, den gibt es halt

Jochen

vor allen Dingen dafür, dass, wenn jetzt so zirkuläre

Jochen

Referenzen irgendwie, also wenn das

Jochen

eine Objekt hat, das auf ein anderes

Jochen

verweist, das auf ein anderes verweist, das eine Referenz auf ein

Jochen

drittes hat und das wieder auf das erste oder so, dann

Jochen

die Katze beißt sich in den Schwanz.

Jochen

dann werden die durch Reference-Counting nicht weggeräumt

Jochen

und dann muss auch Python ab und zu mal

Jochen

einen Garbage-Collector anschmeißen, um solche Sachen zu finden und dann

Jochen

rauszuwerfen. Aber den Garbage-Collector kriegt man

Dominik

bei Python mit so etwas wie Import-GC dann?

Dominik

Ja, genau.

Dominik

Und der macht manchmal auch blöde

Jochen

Sachen und auch da hat man dann halt manchmal so die Probleme,

Jochen

die man von anderen Programmiersprachen kennt. Also wenn man zum Beispiel

Jochen

ich weiß nicht, ob das heute noch so ist, aber

Jochen

früher war das immer so, wenn man größere

Jochen

Datenmengen irgendwie importiert hat per CSV

Jochen

oder weiß ich nicht. Also ich habe früher

Jochen

irgendwie viel so Import-Export-Skripte

Jochen

auch geschrieben und

Jochen

da war halt so einer der Tricks halt, dass man

Jochen

quasi, bevor man halt

Jochen

so ein paar Millionen Zeilen irgendwie gelesen hat

Jochen

und die irgendwo reingeschrieben hat in irgendeine Hauptspeicher-Datenstruktur,

Jochen

dass man halt einmal den

Jochen

Garbage-Collector ausgeschaltet hat,

Jochen

dann hat man den ganzen Scheiß importiert und dann hat man

Jochen

ihn wieder angeschaltet.

Jochen

Weil ansonsten schlägt

Jochen

er halt alle paar tausend Zeilen oder so zu

Jochen

und blockiert alles

Jochen

und das macht es halt dann irgendwie direkt

Jochen

ein paar Faktoren schneller oder so.

Jochen

Heute kann sein, dass heute alles nicht mehr nötig ist

Jochen

und es besser geworden ist.

Jochen

Da wäre ich jetzt neugierig,

Dominik

müssen wir vielleicht auch mal rausfinden,

Dominik

ob das wirklich noch so ist.

Dominik

Wenn man das wirklich immer machen muss,

Dominik

dass man dem Müllwagen sagen muss,

Dominik

nee, heute nicht.

Dominik

Ja, genau.

Dominik

Also wenn man weiß, was passiert,

Jochen

wenn man sagt, ich haue jetzt die ganze Zeit zurück

Jochen

in den Hauptspeicher, ich weiß, dass es so ist

Jochen

und es ist richtig so, da muss nicht geguckt werden,

Jochen

ob davon was weg kann, weil davon kann noch nichts weg,

Jochen

weil ich habe noch nichts anderes gemacht,

Jochen

dann kann ich halt sagen, okay,

Jochen

da muss der Müllwagen nicht rumfahren.

Jochen

Das ist der Nachrede.

Jochen

Aber ist natürlich schon hässlich.

Jochen

Mit solchen Dingen will man sich eigentlich als Entwickler

Jochen

ja gar nicht so beschäftigen müssen,

Jochen

weil das ist natürlich irgendwie

Jochen

für die meisten Leute alles...

Dominik

Ja, ich glaube auch. Unsere Anfänger haben wir gerade vielleicht wieder ein bisschen

Dominik

abgehängt. Ich hoffe, wir holen die noch wieder ein bisschen ein. Ich hoffe,

Dominik

ihr findet das alles so interessant wie ich.

Dominik

Vielleicht kommen wir dann noch ein bisschen

Dominik

wieder zurück zu dem, was wir

Dominik

jetzt durch hatten. Ich glaube, wir haben jetzt

Dominik

so ein bisschen erklärt, wie Python jetzt funktioniert.

Dominik

Ich weiß nicht, ob wir dazu noch ein bisschen

Dominik

was sagen möchten. Lass mich mal gerade überlegen.

Dominik

Ja, nee, ich glaube,

Jochen

im Grunde sind das so die wesentlichen

Jochen

Unterschiede zu anderen Programmiersprachen.

Jochen

Ja, ja, okay.

Jochen

Das heißt, die Unterschiede haben wir jetzt so ein bisschen erklärt,

Jochen

was man damit alles so machen kann.

Jochen

Vielleicht wollen wir ein bisschen noch drauf eingehen,

Jochen

was so die Mythen dieser Sprache sind.

Jochen

Das ist total einfach.

Dominik

Das ist immer so einer der Sachen, fand ich jetzt tatsächlich

Dominik

auch, also von der Syntax her,

Dominik

dass es sich gut las, dass du nicht

Dominik

irgendwie da standst und hat es irgendwie wie

Dominik

ein C, so ein Hello World, wo es dann irgendwie über

Dominik

mehrere Zeilen geht oder wie in Java, wo dann

Dominik

erst mal gucken muss, ach, wo geht denn jetzt diese Funktion hin?

Dominik

Steht da Print Hello World fertig?

Dominik

Genau, genau. Ja, bei Java

Jochen

muss man dann erst irgendwie komische,

Jochen

erst eine Klasse definieren und dann irgendwie

Jochen

Public, Static, Void, Main oder so was

Jochen

hinschreiben.

Jochen

Das sind halt so magische Worte, damit irgendwas passiert.

Jochen

Aber Python, da schreiben wir einfach Print hin.

Jochen

Wenn man printen möchte, das ist schon sehr nett.

Jochen

Ja.

Dominik

Also bleibt Python denn so einfach?

Dominik

Ja, nein.

Dominik

Also, ja, man kann auch...

Dominik

Kommt auch an, was man damit machen will.

Dominik

Ja, ja, ja, man kann da auch...

Dominik

Man kann auch Netzwerkkram damit machen, das hatten wir noch.

Jochen

Ja, und, ja, genau, und asynchrones Dinge und überhaupt,

Jochen

ja, da kann es auch dann relativ fies werden.

Jochen

Das Dumme ist nur, dass es halt dann,

Jochen

wenn man fiese Probleme hat, dann kann man da nicht viel dran tun.

Jochen

Dann muss man leider manchmal den sauren Apfel beißen.

Jochen

Aber ich meine, es ist ja auch schön, wenn quasi schwierige Probleme möglich, schwierige Sachen möglich sind.

Dominik

Das macht einen mächtigen Tauberstab, also mehr Magie.

Jochen

Aber es gibt tatsächlich auch Situationen, wo man dann halt auch komplizierte Dinge tun kann bzw. muss.

Jochen

Und ja, wo es manchmal auch nicht so richtig offensichtlich ist, was Python da tut.

Jochen

Ja, und es gibt halt auch so Ecken, die halt einfach nicht schön sind.

Jochen

Das muss man natürlich auch sagen.

Dominik

Ich sag mal, wenn ihr jetzt einfach irgendwelche Daten von irgendwelchen Sensoren packen wollt in eine Datenbank, das ist dann relativ hands-on.

Jochen

Genau, ja, also Mythos ist einfach so, es ist, würde ich sagen, tatsächlich sehr, sehr einfach.

Jochen

Es ist schön, wenn man irgendwie auf Stack Overflow schaut oder einfach googelt nach irgendwelchen, wie mache ich denn jetzt dies oder jenes, dann ist es toll, weil das funktioniert halt meistens immer noch, selbst wenn die Antwort, die irgendjemand gegeben hat, 15 Jahre alt ist oder so.

Dominik

Es gibt tatsächlich auch relativ viele Antworten mittlerweile für Python, das ist auch sehr angenehm.

Dominik

weil fast für jedes einzelne Problem, das man irgendwo hat,

Dominik

irgendjemand das schon mal hatte und irgendwie so eine Musterlösung findet

Dominik

oder auch das Problem dann von mehreren Seiten angucken kann.

Dominik

Ja, aber ja, genau.

Jochen

Also das ist das Python-Einfaches, würde ich sagen.

Jochen

Das ist ein Mythos, der durchaus irgendwie mehr Wahrheit als ein Mythos ist.

Jochen

Ja, eine andere Geschichte wäre halt irgendwie,

Jochen

oh, dieses Significant White Space, das ist ja total furchtbar.

Jochen

Ich kann so nicht arbeiten.

Dominik

Für alle Leute, die uns jetzt gerade zum ersten Mal in der Sprache zuhören, bedeutet das tatsächlich, man darauf achten muss, wo was in dem Code steht von Python.

Jochen

Ja, dass man halt nicht quasi den Code beliebig formatieren kann, sondern dass halt Widespace halt auch zur Syntax gehört.

Jochen

Also wenn ich eine Zeile, die im gleichen Block ist, anders einrücke als die andere, dann geht das halt schief.

Dominik

Also das, was ein guter Programmierer

Dominik

von vornherein formatieren sollte in seinem Code,

Dominik

das sagt Python, wenn du es nicht machst, dann

Dominik

stützt es ab und sagt, nee, nee, nee, du, aber nicht.

Dominik

Ja, genau.

Dominik

Ja.

Dominik

Und es ist natürlich doof, wenn man sich so ein anderes Schema

Dominik

angewohnt hat irgendwann mal. Genau.

Jochen

Und man kann das halt nicht beliebig einstellen.

Jochen

Oder wenn man jetzt Tabs und Spaces mixt oder so.

Jochen

Überhaupt, man kann Tabs

Jochen

auch verwenden zum Einrücken, aber das sollte man

Jochen

nicht tun, das ist böse. Immer schön

Jochen

Spaces verwenden. Vier Leerzeichen pro Ebene.

Jochen

Und die meisten IDEs,

Dominik

bauen die das auch irgendwann um. Das heißt, ihr könnt das so

Dominik

bauen, dass ihr dann vier

Dominik

Spaces pro Tab bekommt. Da könnt ihr wieder im Tab arbeiten, aber

Dominik

es wird umgewandelt. Und ansonsten habt ihr tatsächlich

Dominik

manchmal Probleme, wenn ihr irgendwelchen Code

Dominik

Freunden schickt oder Code von Freunden bekommt.

Dominik

Die haben Tabs benutzt und ihr Leerzeichen, dann funktioniert das

Dominik

nicht mehr und ihr seht nicht genau, warum. Weil

Dominik

irgendwo irgendwelche Leerzeichen dazu

Dominik

führen, dass da unterschiedlich

Dominik

interpretiert wird und dann stürzt das ganze Programm ab.

Dominik

Hässlich. Gerade für Anfänger manchmal.

Dominik

Stehen davor und denken, was?

Dominik

Warum? Geht nicht.

Jochen

Also, ich würde sagen, so ein bisschen was ist ja da ja drin.

Jochen

Also, ich dachte auch am Anfang,

Jochen

also ich kam ja dann zu der Zeit,

Jochen

wo ich mich angefangen habe zu beschäftigen,

Jochen

auch von Perl her, wo man das halt nicht hat,

Jochen

wo man das kommentieren kann, wie man will und so.

Jochen

Und ich dachte auch so, oh, das ist aber blöd,

Jochen

dass man da jetzt irgendwie darauf achten muss.

Jochen

Aber das waren halt ein paar Tage und danach war es super

Jochen

und ich fand das nie wieder problematisch.

Jochen

Aber ich kann so ein bisschen verstehen,

Jochen

dass es blöd ist, wenn man das selber dafür sorgen muss,

Jochen

dass die Formatierung so ist, dass die Syntax stimmt.

Jochen

Ich würde aber auch sagen,

Jochen

dass man das heute eigentlich nicht mehr macht.

Dominik

Andere Sprachen machen ganz viele Klammern oder Semikolon.

Jochen

Das ist halt der Preis, den man dann zahlen muss,

Jochen

wenn man eben nicht die Formatierung als Teil der Syntax hat,

Jochen

sondern sagt, okay, du kannst formatieren, wie du willst.

Jochen

Dann muss man halt irgendwie anders signalisieren,

Jochen

wo ein Block anfängt und aufhört.

Jochen

Und dafür benutzt man halt typischerweise Klammern.

Jochen

Und das heißt, man hat halt sehr viele Klammern.

Jochen

Kannst ja mal zählen. Fünf Klammern auf, sechs Klammern zu.

Jochen

Genau, genau. Und das ist halt auch

Jochen

nicht so richtig schön. So ein Python ist

Jochen

diese Frage halt nie so, muss ich da jetzt noch eine Klammer

Jochen

zu... Doch, man hat sie auch an anderer

Jochen

Stelle, aber jedenfalls nicht beim

Jochen

Schließen von Blöcken. So, muss ich da jetzt noch eine Klammer zu

Jochen

machen oder nicht? Sondern, nee, wenn ich den jetzt

Jochen

eingerückt habe und aufhöre, dann ist dieser Block vorbei.

Jochen

Das ist halt viel einfacher.

Jochen

Ja.

Jochen

Und genau, heutzutage

Jochen

auch schon gar nicht mehr so ein

Jochen

Problem, weil heute würde ich sagen,

Jochen

sollte man Code eigentlich gar nicht mehr unbedingt

Jochen

selber formatieren, sondern man schreibt es halt

Jochen

irgendwie hin, dass man denkt, dass es halbwegs passt

Jochen

und dann nimmt man

Jochen

halt sowas wie Black, das ist jetzt

Jochen

ein Ding, was halt... Black?

Jochen

Ja. Schwarz? Genau.

Jochen

Das ist so ein

Jochen

Kommandozeilen-Utility,

Jochen

das gibt es aber auch als WIM-Plugin für den

Jochen

Editor oder so und dem sagt man einfach nur

Jochen

okay, reformatiere alles so, dass

Jochen

es irgendwie dem Standard

Jochen

entspricht und dann formatiert das den Code halt um.

Jochen

Aha. Und dann muss man

Jochen

da selber nichts mehr machen. Muss man das importieren oder

Jochen

ist das ein Kommando-Teilen-Tool? Das ist ein

Jochen

Kommando-Teilen-Tool, aber wie gesagt, es gibt für

Jochen

die meisten Editoren Plugins, die das dann halt aufmarschen.

Jochen

Diesen muss ich mir direkt mal aufschreiben hier. Wieder was

Jochen

gelernt. Genau.

Jochen

Ja, also ich würde sagen,

Jochen

heutzutage sollte man eigentlich nicht mehr von Hand

Jochen

formatieren müssen. Das macht man einfach nicht mehr.

Jochen

Genau, damit ist das

Jochen

im Grunde alles kein Problem mehr,

Jochen

weil

Jochen

man hat ja als Mensch gar nicht mehr damit zu tun,

Jochen

und man muss sich keine Gedanken mehr drum machen.

Dominik

Du kannst den Code in eine Zeile schreiben und es funktioniert weiterhin wunderbar.

Jochen

Ja, man kann tatsächlich relativ viel in eine Zeile

Jochen

schreiben, aber dann, Python muss man das dann auch

Jochen

signalisieren, dann schreibt man ein Semicolon, wenn man Statements

Jochen

voneinander schreiben möchte. Ja, das Semicolon

Jochen

gibt es auch in Python. Man muss es normalerweise nicht

Jochen

hinschreiben, weil der Zeilenumbruch, das ist halt

Jochen

quasi gleiche... Aber wenn man es hinschreibt, tut es nichts.

Jochen

Aber wenn man es hinschreibt, da kann man auch alles in eine Zeile schreiben.

Jochen

Ja, das geht. Nicht, dass man

Jochen

das wirklich tun sollte, aber... Das sieht ziemlich arglich aus.

Jochen

Aber für so einen Teleprompter oder so.

Jochen

Ja, genau.

Jochen

Ja, also das ist

Jochen

eine Geschichte, die halt immer wieder als

Jochen

oh, das ist ja total schrecklich

Jochen

angebracht wird, aber ich würde sagen, einmal

Jochen

sie ist nicht so schrecklich und zum Zweiten

Jochen

heutzutage kein Problem mehr eigentlich.

Dominik

Hier ist gerade der Piep, muss man eine Pflanze gießen jetzt?

Dominik

Nee, ich habe vergessen,

Jochen

meiner Uhr zu sagen,

Jochen

dass sie nicht stören, dass sie nicht rumnerven

Jochen

soll, deswegen piepst

Jochen

es bei mir. Ich mache das gerade noch hier

Jochen

auf lautlos.

Jochen

Und

Jochen

eine andere Geschichte ist,

Jochen

ja genau, Python ist langsam.

Jochen

Das ist auch immer etwas, was man halt hört.

Jochen

Oh mein Gott, nein!

Jochen

Was tue ich jetzt?

Dominik

Ich bin viel schneller mit...

Jochen

Man muss das in Go neu schreiben

Jochen

oder in C oder

Jochen

C++, viel besser, aber viel schneller.

Jochen

Und, ist es langsam?

Jochen

Ja und nein.

Jochen

Also es kommt halt tatsächlich...

Jochen

Solche pauschalen

Jochen

Urteile sind halt

Jochen

immer falsch eigentlich.

Jochen

Deswegen, weil man das...

Jochen

Man muss halt immer

Jochen

quasi konkret sagen, was man damit meint,

Jochen

wenn man jetzt sagt, das ist schnell oder langsam

Jochen

und halt in einem bestimmten Kontext

Jochen

geben und dann kann man das halt sagen.

Jochen

Also ich könnte zum Beispiel sagen,

Jochen

also wenn ich Methoden

Jochen

aufrufe in Python,

Jochen

dann ist das halt deutlich langsamer

Jochen

als jetzt in C++ zum Beispiel.

Jochen

Das ist tatsächlich so. Oder wenn ich eine Funktion aufrufe in C,

Jochen

ist es viel schneller als in Python.

Jochen

Also wenn ich halt eine Vorschleife mache

Jochen

und dann tausendmal eine Methode aufrufe auf einer Klasse

Jochen

oder so, dann ist das in Python viel, viel langsamer als in C

Jochen

oder in C++.

Jochen

Also, insofern, in diesem Kontext wäre Python tatsächlich sehr langsam.

Jochen

Aber die Frage ist halt, was ein Programm so tut.

Jochen

Und wenn ich jetzt zum Beispiel große Matrizen mit dem Alter multipliziere

Jochen

und ich mache das halt irgendwie mit zwei NumPy-Arrays in Python,

Jochen

wo die Syntax sehr schick ist und ich das in einer Zeile tue

Jochen

und jemand anders überlegt sich, hat gehört, Python ist langsam

Jochen

und macht das halt in C mit so einer dreifach verschachtelten For-Loop

Jochen

über halt irgendwelche Datenstrukturen,

Jochen

weiß ich nicht, irgendwie so ein Type-Memory-View oder

Jochen

warum immer das ein C, wie man das ein C hält.

Dominik

Das wird ganz schön ziemlich für die Zeilen lang, ja.

Dominik

Dann

Jochen

wird die C-Implementation

Jochen

deutlich lang, wird halt deutlich langsamer

Jochen

sein als die Matrizen-Multiplikation

Jochen

in Python, die halt

Jochen

man in eine Zeile schreiben kann, wo man einfach nur schreibt

Jochen

A mal B.

Jochen

Also C gleich A mal B, ja.

Jochen

Und das könnte jetzt für

Jochen

manche Leute überraschend sein, weil

Jochen

wenn quasi sich jemand

Jochen

die Mühe gemacht hat, irgendein Problem,

Jochen

also wirklich das letzte

Jochen

Kränzchen-Performance rauszuoptimieren, und

Jochen

es eine Bibliothek gibt, die halt

Jochen

dieses Verfahren dann benutzt,

Jochen

sozusagen in Python, und man das in Python

Jochen

benutzen kann, dann ist das halt auch in Python sehr schnell.

Jochen

Und gerade diese ganzen Berechnungsgeschichten,

Jochen

Certificate Computing

Jochen

Zeugs, das ist halt alles sehr schnell

Jochen

in Python.

Jochen

Wie heißt das, C-Types?

Jochen

Nein, C-Types ist nochmal

Jochen

eine andere...

Dominik

Entschuldigt, bitte.

Jochen

Es ist auch so, dass man quasi

Jochen

relativ einfach

Jochen

eine Geschichte, mit der man

Jochen

dann halt gut optimieren kann,

Jochen

ist auch sowas wie Sighten zum Beispiel.

Jochen

Also C-Types ist eher zum Anbieten von

Jochen

irgendwelchen C-Bibliotheken, aber

Jochen

es gibt

Jochen

sowas wie, das haben wir

Jochen

vergessen, das müssen wir vielleicht gleich nochmal,

Jochen

es gibt nicht nur den

Jochen

C-Python-Interpreter,

Jochen

es gibt auch andere Python-Interpreter

Jochen

und es gibt halt auch so Dinge wie Sighten, die

Jochen

Python, beziehungsweise

Jochen

Python-ähnlichen Code nehmen und

Jochen

den in C verwandeln.

Jochen

Ja, also das haben wir ja gar nicht

Dominik

vergessen, dann erklären wir das doch einfach jetzt. Genau, genau.

Dominik

Wenn ich jetzt irgendwas schnell

Jochen

machen möchte, dann gibt es halt die Möglichkeit, okay, ich

Jochen

schreibe das jetzt einfach in C und

Jochen

muss mich da ein paar Konventionen

Jochen

halten, dann kompiliere ich das und dann

Jochen

quasi importiere ich, kann ich

Jochen

das halt in Python auch wieder importieren

Jochen

als wäre es ein Python-Modul oder so und dann halt verwenden.

Jochen

Aber ich schreibe einfach C-Code

Dominik

und dann wird das in Python geladen, ich benutze die Python-Syntax

Dominik

und bin schnell dabei, oder? Ja, ja,

Jochen

Ja, so ungefähr. Das ist halt ein bisschen Arbeit.

Jochen

Aber das geht.

Jochen

Und das ist vor allen Dingen halt auch so ein bisschen,

Jochen

man muss sich da einlesen, wie man so ein

Jochen

C-Modul schreibt und so.

Jochen

Aber was man auch

Jochen

machen kann, ist, man schreibt halt

Jochen

das, was man auch immer mal machen möchte,

Jochen

in einem Python-ähnlichen

Jochen

Dialekt.

Jochen

Wo man halt auch,

Jochen

man kann einfach so Python hinschreiben.

Dominik

Python-ähnlicher Dialekt, das haben wir ja schon ganz viel

Dominik

Programmiersprache, jetzt gibt es ja nur noch Dialekte.

Jochen

Also der wesentliche Unterschied ist, dass man

Jochen

dazuschreiben kann, was die Typen sind, dass man zum Beispiel

Jochen

schreibt, also dies ist jetzt ein Integer

Jochen

oder das hier ist ein Float und so.

Jochen

Also man schreibt halt quasi noch

Jochen

Typen mit zu den Variablen.

Dominik

Wie wir das eben schon hatten, also das mit der

Dominik

neuen Version jetzt schon so drin ist.

Jochen

Es gibt Type-Annotationen, aber die sind halt leider noch mal was anderes.

Jochen

Das funktioniert nicht mit Type-Annotationen.

Jochen

Okay, das heißt nochmal ein bisschen umdrehen.

Jochen

Ja, könnte man vielleicht irgendwann auch machen,

Jochen

das gibt es aber noch nicht.

Jochen

Jedenfalls, wenn man das jetzt

Jochen

so hingeschrieben hat, in diesem Dialekt,

Jochen

sehr einfach ist und aussieht wie Python quasi, mit Typen dran, dann kann man das in C kompilieren

Jochen

und zwar in C, dass man dann hinterher wieder so kompilieren kann, dass es ein C-Modul ist,

Jochen

dass man dann wieder importieren kann. So dass man halt das eigentliche C nie so

Dominik

Man muss eigentlich nur Python, kleiner Dialekt

Dominik

schreiben und schon ist es C und dann

Dominik

wird es schnell. Genau, genau. So schnell wie

Jochen

C. Und ist dann so schnell wie C.

Jochen

Problem gelöst, würde ich sagen.

Jochen

Genau, und das ist halt schon sehr cool. Das kann man sogar

Jochen

in Jupyter-Notebooks, kann man das

Jochen

als Cell-Magic, kann man das schreibt man einfach

Jochen

Prozent-Prozent-Zeiten, schreibt dann halt

Jochen

irgendwie die Funktion rein mit

Jochen

Annotationen der Typen und dann hat man etwas,

Jochen

was halt so schnell wie C ist, halt direkt

Jochen

so ohne, dass man das irgendwie neu starten muss

Jochen

oder so. Wusch. Einfach so da.

Jochen

Das ist halt schon sehr...

Jochen

Das sind, ja, also ich meine,

Jochen

wenn man solche Sachen Leuten zeigt,

Jochen

die sagen, Python ist langsam, dann

Jochen

oh, genau.

Jochen

Also man kann,

Jochen

wenn man es darauf anlegt, kann man sehr schnell werden.

Jochen

Auch in diesen Geschichten kann man halt auch

Jochen

diesen Global Interpreter-Log deaktivieren.

Jochen

Und dann kann man halt sagen so, okay,

Jochen

ich weiß ja genau, was ich tue, ich deaktiviere das Ding.

Jochen

Also

Jochen

da ist das alles nicht mehr so relevant.

Jochen

Also da kann ich

Dominik

dann auch mit mehreren Kernen rechnen? Genau.

Jochen

Da kann ich dann auch quasi das, was ich tun möchte,

Jochen

mehrere Prozessoren verteilen.

Jochen

Passiert auch. Also wenn ich jetzt irgendwie, keine Ahnung,

Jochen

eben eine Matrizenmultiplikation, jetzt weiß ich gar nicht,

Jochen

ob das meine, wenn ich irgendwelche Dinge auf

Jochen

NumPy-Arrays mache oder in Pandas mache,

Jochen

manchmal, ja, nicht immer,

Jochen

verteilt es dann halt den Kram automatisch

Jochen

halt auf alle Prozessoren,

Jochen

die ich da habe.

Jochen

Ja, ansonsten gibt es auch jede Menge schöne Bibliotheken,

Jochen

die man da benutzen kann für Data-Science-

Jochen

Geschichten, ist da halt zum Beispiel

Jochen

Dask sehr zu empfehlen, kann man...

Jochen

Dask? Ja.

Jochen

Heißt so...

Jochen

CTAsk. Dask. Ich weiß gar nicht

Jochen

genau, wofür das steht. Oder Task.

Jochen

Statt Dask. Task, nur D.

Jochen

Ja. Da ist ein Dask.

Jochen

Ja, okay, lassen wir das.

Jochen

Ja, genau.

Jochen

Und

Jochen

ja, es gibt auch so, da gibt es noch diverse andere

Jochen

Geschichten. Es gibt zum Beispiel Number.

Jochen

Das ist halt ein Dekorator, den schreibt man

Jochen

drüber und dann macht das halt so Just-in-Time

Jochen

Kompilierung, wie man das halt auch

Jochen

von Java vielleicht kennt.

Jochen

Das kann Dinge auch total

Jochen

beschneidigen. Da muss man gar nichts ändern. Also auch

Jochen

da kann man dann wieder Typen dazuschreiben oder so.

Jochen

Aber auch da oft ist es so, man schreibt

Jochen

es einfach drüber und die Funktion wird viel, viel schneller.

Jochen

Und...

Jochen

PyPy oder sowas habe ich noch. PyPy, genau, das ist dann

Jochen

ein anderer Interpreter, den man verwenden kann.

Jochen

Der hat dann diverse Probleme nicht.

Jochen

Der macht auch so

Jochen

Just-in-Time-Kompilierungsgeschichten

Jochen

und so. Und ist dadurch

Jochen

viel schneller. PyPy ist ein bisschen problematisch.

Jochen

Das hat irgendwie...

Jochen

Ist nicht mehr so auf der aktuellsten Version

Jochen

von Python und

Jochen

es so ein bisschen leidet darunter, dass da nicht so

Jochen

genug Leute dabei sind.

Jochen

War es mal aktiv an diesem Projekt?

Jochen

Es gibt auch Stackless

Jochen

Python. Also es gibt noch diverse

Jochen

andere Interpreter. Es gibt nicht nur den C-Python-Interpreter.

Jochen

Aber man muss schon

Jochen

sagen, der C-Python-Interpreter ist natürlich eigentlich derjenige,

Jochen

den die Leute so verwenden und den man

Jochen

halt kennt. Und halt auch die Referenz

Jochen

Implementation. Aber wenn man jetzt

Jochen

in einem bestimmten Szenario mehr Performance braucht,

Jochen

dann kann es durchaus sinnvoll sein, da halt sowas wie

Jochen

PyPy zu verwenden oder so. Also trau niemals den Benchmark,

Jochen

den du nicht selbst gefälscht hast.

Jochen

Ja, genau.

Jochen

Ja, das ist auch so einer der Mythen.

Jochen

Irgendwie Python ist langsam.

Jochen

Was haben wir denn noch so?

Jochen

Ja.

Dominik

Also wir wissen, dass Python jetzt einfach ist.

Dominik

Wir wissen, dass Python nicht langsam ist.

Dominik

Oder nicht langsam sein muss.

Dominik

Nicht langsam sein muss.

Dominik

Wir wissen, dass man für Python

Dominik

ja trotzdem ganz viele mächtige Werkzeuge benutzen kann,

Dominik

wenn man dann irgendwann mal gelernt hat, wie.

Dominik

Ja.

Dominik

Ähm...

Dominik

Fällt dir noch was ein?

Dominik

Ähm...

Dominik

Warum hat Python so lange

Dominik

gebraucht, bis es sich so durchsetzte?

Dominik

Was glaubst du? Das ist eine gute Frage.

Jochen

Ich hätte damit auch gar nicht gerechnet, dass es jetzt

Jochen

passiert, dass mich jemand quasi

Jochen

am Anfang meiner Python-Begeisterung

Jochen

gefragt hätte, ob ich glaube, dass sich das mal so

Jochen

durchsetzt. Dann hätte ich gesagt, ja, auf jeden Fall.

Jochen

Und ich hätte wahrscheinlich geschätzt, dass es

Jochen

viel weniger lang dauert.

Jochen

Aha.

Jochen

Und jetzt da angekommen ist, sagst du,

Dominik

es gibt auch gar keine Alternative, also auch Go, sagst du,

Dominik

das war ganz fancy stuff, aber...

Jochen

Nein, das ist auch alles schön, also ich meine, ich finde Go auch toll,

Jochen

ich finde auch Rust toll,

Jochen

das hat alles schon so, das sind halt

Jochen

vor allen Dingen andere Trade-offs und ich meine, gut,

Jochen

das sind auch alles manchmal so sehr viel modernere,

Jochen

also ich würde sagen, Go ist stark,

Jochen

die Go-Syntax ist sehr stark inspiriert von Python,

Jochen

die also, ja,

Jochen

sind teilweise sehr, sehr viel,

Jochen

also es sind sowohl Go wie auch Rust

Jochen

sind halt sehr viel jünger als Python, insofern

Jochen

ist es halt

Jochen

auch vielleicht nicht unbedingt direkt miteinander

Jochen

vergleichbar, aber

Jochen

Go ist halt ein schmaleren

Jochen

Einsatzzweck, würde ich jetzt mal so

Jochen

denken.

Jochen

Vielleicht ändert sich das auch noch irgendwann. Und zwar, also wofür würdest du

Jochen

jetzt Go benutzen? Naja, Systemprogrammierung

Jochen

und halt Sachen, wo man

Jochen

quasi

Jochen

viel I.O. hat und viel

Jochen

CPU braucht.

Jochen

Das ist

Jochen

also wenn man jetzt zum Beispiel

Jochen

sowas wie einen Datenbank-Server schreiben will oder so.

Jochen

Wobei ich nicht weiß, ob Go da wirklich, also ich weiß

Jochen

auch nicht, ob das jemand schon mal gemacht hat, aber das könnte man eventuell

Jochen

tun.

Dominik

Also viel Sachen machen muss,

Dominik

heißt tatsächlich Input, Output die ganze Zeit.

Dominik

Input, Output plus

Jochen

viel CPU braucht. Also wenn man nur Input, Output

Jochen

machen muss und IOMultiplexen, das geht

Jochen

mit Python auch total super. Dann nimmt man

Jochen

ASIC.io oder die neuen

Jochen

Frameworks, die es da gibt, weiß ich nicht,

Jochen

Trio da oder

Jochen

was auch immer.

Jochen

Frito von David Beasley,

Dominik

Das war auch sehr toll. Aber ich glaube, das ist nur ein

Dominik

Dialekt von R-Sync.io.

Dominik

Ja, genau.

Jochen

Die sind auch relativ kompatibel zueinander.

Jochen

Das ist

Jochen

genau. Damit geht das auch alles

Jochen

total super. Dafür brauche ich jetzt nicht

Jochen

da

Jochen

ist der

Jochen

GIL nicht unbedingt ein Problem.

Jochen

Der Global Interpreter Log.

Jochen

Genau. Ich kann auch mehrere Prozesse

Jochen

starten oder so. Aber wenn ich jetzt so etwas

Jochen

habe wie eine Datenbank oder so, dann ist das mit

Jochen

mehreren Prozessen unter Umständen blöd, wenn ich jetzt

Jochen

also da könnte es sein, dass es sinnvoll ist

Jochen

ja, also, dass ich halt

Jochen

einen Prozess habe, der halt auf vielen

Jochen

Prozessoren läuft und dann auch

Jochen

IOMäßig irgendwie ganz viel nach draußen macht

Jochen

und da wäre Go wahrscheinlich super

Jochen

ja, oder Rust

Jochen

hat halt auch schöne Eigenschaften, dass halt da irgendwie

Jochen

diverse Sachen garantiert

Jochen

sind zur Compile-Zeit, das ist halt toll

Jochen

ja, aber

Jochen

Moment, jetzt musst du noch mal kurz

Dominik

erklären, es sind bestimmte Sachen garantiert zur

Dominik

Compile-Zeit, da die bei Python nicht sind

Dominik

Da musst du jetzt ganz kurz nochmal versuchen,

Dominik

das so zusammenzufassen. Das habe ich jetzt nämlich noch

Dominik

nicht so ganz durchblickt. Ach, ich weiß nicht.

Jochen

Vielleicht führt das auch ein bisschen zu weit.

Jochen

Bei Rust ist es halt so, dass

Jochen

man quasi garantieren kann, dass es keine Speicher-Lags

Jochen

gibt und so.

Jochen

Bei Python sollte das jetzt auch nicht

Jochen

passieren. Wenn man das schafft,

Jochen

irgendwie, außer dadurch

Jochen

den Speicher wirklich zu verbrauchen, also wenn man einfach nur

Jochen

irgendwas macht und also irgendwas

Jochen

erzeugt, irgendwas wieder wegschmeißt und

Jochen

trotzdem quasi der

Jochen

Prozess, der Speicher des Prozesses, den man

Jochen

da halt gestartet hat und immer größer wird,

Jochen

dann hat man halt einen Bug gefunden.

Jochen

So gibt es natürlich auch immer wieder.

Jochen

Sollte aber auch nicht passieren in Python.

Jochen

Aber es gibt da nicht so

Jochen

harte Garantien.

Jochen

Und man kann es auch kaputt machen, wenn man

Jochen

es drauf anlegt. Irgendwelchen Unsinn anstellen.

Dominik

Einen Gabel-Kollektor importieren, dann drauf referenzieren,

Dominik

auf die Objekte, die man da findet.

Jochen

Ja, man kann da beliebig kaputte

Jochen

Sachen natürlich machen.

Jochen

Genau.

Jochen

Ja, aber

Jochen

in diesem Anwendungsfall, dass man viel

Jochen

I.O. und viel Prozessor gleichzeitig braucht,

Jochen

den haben glaube ich gar nicht so viele Leute.

Jochen

Insofern ist es halt auch so, dass

Jochen

ich finde, das ist der richtige Schritt sozusagen

Jochen

oder ich finde, das ist ein sehr

Jochen

netter Punkt quasi.

Jochen

Wenn man jetzt Reference Counting in Python

Jochen

hat, man hat halt

Jochen

gute Single Thread Performance,

Jochen

man hat sehr gutartiges Latenzverhalten,

Jochen

das alles, verhält sich alles sehr

Jochen

schön.

Dominik

Gut skalierbar damit dann auch.

Jochen

Genau, opfert damit halt sozusagen,

Jochen

dass es auf mehreren Prozessoren laufen

Jochen

kann. Aber den Fall, dass man

Jochen

jetzt Software hat, die tatsächlich auf vielen

Jochen

Prozessoren laufen muss,

Jochen

den haben die meisten Programmierer gar nicht.

Jochen

Dieser Anwendungsfall trifft ja nur

Jochen

einen kleinen Teil. Spieleprogrammierer.

Jochen

Spieleprogrammierer und unter Umständen

Jochen

Leute, die einen Datenbank-Server schreiben

Jochen

oder einen Web-Server, nicht mal.

Jochen

Ich weiß es gar nicht.

Jochen

Mir fällt es sogar tatsächlich schwer, mir da

Jochen

Anwendungsfälle zu bauen,

Jochen

die das irgendwie erfordern.

Jochen

insofern ist halt diese Beschränkung

Jochen

nicht so schlimm, wie sie aussieht.

Jochen

Und in Java, das sieht total toll aus

Jochen

auf dem Papier. Irgendwie kann auf vielen Prozessoren

Jochen

laufen.

Jochen

In der Praxis ist es aber blöd. Single-Thread-Performance

Jochen

ist nicht gut.

Jochen

Also das, was halt die meisten Leute interessiert,

Jochen

wenn sie jetzt irgendwas starten, ein Programm starten

Jochen

und das tut dann irgendwas,

Jochen

das ist halt langsamer.

Jochen

Das ist halt genau der Grund, warum, wenn ich jetzt

Jochen

in so einer IntelliJ IDE auf den Kopf drücke,

Jochen

dann sich das halt irgendwie alles so zäh anfühlt,

Jochen

weil Single-Thread-Performance nicht so toll.

Jochen

Und Latenz nicht

Jochen

vorhersagbar, klingt nicht so schlimm, ist aber in der Praxis

Jochen

doof, weil manchmal

Jochen

zur falschen Zeit

Jochen

irgendwie, wenn man mehr Latenz braucht, kann halt

Jochen

sein, dass es halt unter Umständen sehr teuer wird.

Jochen

Je nachdem, was man da für Services

Jochen

betreibt.

Jochen

Das sind Dinge, die

Jochen

hören sich harmlos an, sind aber ziemlich schlimm.

Jochen

Während in Python das hört sich ziemlich schlimm an, ist

Jochen

aber gar nicht so furchtbar. Und wenn man dann tatsächlich

Jochen

so eins von diesen Problemen hat, dann kann man halt da

Jochen

drum herum arbeiten, oft indem man dann halt

Jochen

viele Prozesse startet. Gut,

Jochen

dann muss man irgendwie dazwischen kommunizieren,

Jochen

muss irgendwie vielleicht Chat-Memory haben

Jochen

oder solche Sachen, aber

Jochen

es geht. Selbst wenn man

Jochen

jetzt in einer Sprache ist, wo es theoretisch möglich ist, das alles

Jochen

in einem Prozess zu machen, ist es auch oft nicht so eine

Jochen

gute Idee, weil

Jochen

das dann oft sehr kompliziert wird

Jochen

und man halt auch

Jochen

ordentlich locken muss und

Jochen

ja, wirklich sich vorzustellen,

Jochen

was passiert, wenn

Jochen

ein Prozess auf mehreren CPU-

Jochen

parallel unterschiedliche Dinge tut,

Jochen

das ist

Jochen

einfach für die

Jochen

allermeisten Programmierer überfordert.

Jochen

Mich überfordert das total.

Jochen

Du kannst nicht einfach multidimensionale Matrizen

Jochen

in deinem Kopf schungieren.

Jochen

Ja, also

Jochen

das ist so. Und wenn man jetzt

Jochen

sozusagen etwas, was

Jochen

zu schwierig für die meisten Leute ist und selten

Jochen

gebraucht wird, sagt,

Jochen

das ist etwas, auf das optimieren wir hin,

Jochen

dann ist das irgendwie einfach, naja, ich weiß nicht,

Jochen

ob das so sinnvoll ist.

Jochen

Wenn ihr anderer Meinung seid,

Jochen

schreibt eine E-Mail an

Jochen

handels-pipeline-podcast.de

Jochen

Ich bin schon gespannt.

Jochen

Das ist jetzt nicht die reine Wahrheit,

Jochen

sondern es ist natürlich sehr gefärbt.

Jochen

Ich mag halt Python, aber

Jochen

ja.

Jochen

Ich finde, die haben da einfach einen sehr schönen

Jochen

Sweet Spot, quasi.

Jochen

Klingt, als ist das eine Sprache,

Jochen

die auch zukunftsträchtig durchläuft ist.

Jochen

Achso, hatten wir eigentlich das

Jochen

Zen auf Python schon?

Dominik

Nein, das haben wir noch nicht gemacht.

Dominik

Das wäre jetzt tatsächlich am Ende der Mythen noch der Punkt.

Jochen

Vielleicht sollten wir das noch mal kurz...

Dominik

Denn auf Python, das hört sich ja sehr philosophisch an,

Dominik

so ein bisschen nach fernöstlicher

Dominik

Philosophie.

Dominik

Wir rufen es gerade auf und

Dominik

möchtest du es tatsächlich zitieren?

Jochen

Ich denke schon, tatsächlich.

Jochen

Man kann sich das auch selber angucken, wenn man einfach

Jochen

so Python startet, einfach Python eingibt

Jochen

und dann sagt import this,

Jochen

dann

Jochen

erscheint das und das

Jochen

bringt halt so ein bisschen zum Ausdruck, was

Jochen

so Python

Jochen

besonders macht oder

Jochen

wie man Dinge in Python tut und wie sie vielleicht

Jochen

ein bisschen anders sind, als man das normalerweise vielleicht gewohnt ist.

Jochen

Und

Jochen

ja, da sind halt eben

Jochen

solche Dinge

Jochen

drin, ich weiß nicht, stimmt, die alle durchgehen,

Jochen

muss man vielleicht nicht, das ist halt

Jochen

besser als...

Jochen

Das steht auch am Anfang von der

Jochen

Pep-Version,

Dominik

kann das auch sein? Also von dem Style-Guide,

Dominik

den es für Python auf der offiziellen Seite gibt.

Jochen

Ja, weiß ich nicht so genau, aber kann gut sein.

Jochen

Ja, dann halt solche Sachen wie explizit ist besser als implizit.

Jochen

Man merkt auch dem Ding an, dass es so ein bisschen sich halt in viele Punkte

Jochen

sind so Abgrenzungen Richtung Perl, glaube ich.

Jochen

Also, ja, einfach ist besser als komplex.

Jochen

Komplex ist besser als kompliziert.

Jochen

Ja, flach ist besser als

Jochen

verschachtelt.

Jochen

Ja,

Jochen

Spars, weiß ich jetzt gar nicht, wie ich das im Kontext

Jochen

übersetzen soll, aber es ist halt

Jochen

sozusagen

Jochen

ja, Spars is better than

Jochen

dense, sozusagen

Jochen

lieber übersichtlich als

Jochen

Also nicht alles in eine Teile packen. Genau, genau, sozusagen.

Jochen

Ja,

Jochen

Lesbarkeit zählt.

Jochen

Zwischendurch mal leerzeilen lassen,

Jochen

Lesbarkeit ungemein. Ja, das ist überhaupt eines

Jochen

der Designziele bei Python gewesen, dass man das halt

Jochen

weil Code einfach viel

Jochen

öfter gelesen als geschrieben wird,

Jochen

es vielleicht Sinn macht, das darauf zu optimieren, dass man das gut lesen

Dominik

kann. Also wenn euer Nachbar den Abend aus dem Bett klingelt

Dominik

und dann noch lesen kann, was er da für einen Tag geschrieben hat,

Dominik

dann seid ihr vielleicht bei Python besser aufgehoben als

Dominik

bei anderen Sprachen.

Jochen

Ja, genau.

Jochen

Spezialfälle sind nicht speziell genug,

Jochen

um die Regeln zu brechen,

Jochen

aber Pragmatismus

Jochen

besser oder Practicality ist besser

Jochen

als die reine Lehre, als Purity.

Dominik

Wie lange schreibst du deine Zeilen?

Dominik

Ich habe das

Jochen

letztens erst geändert, glaube ich, auf

Jochen

130 Zeilen.

Dominik

Ich glaube, er hat 79, 130, 150

Jochen

irgendwie so. Ich hatte das ganz lange, also bis

Jochen

vor kurzem habe ich tatsächlich auch

Jochen

79 verwendet. Also das für die

Dominik

Leute, die alte Monitore verwenden, die konnten noch nicht mehr

Dominik

lesen oder die halt gesharete Terminals verwenden mit

Dominik

mehreren Seiten, das ist dann 79. Ja, Terminals sind

Dominik

vor allen Dingen, genau.

Dominik

Dann ist halt bei

Jochen

80 Zeichen Schluss und

Jochen

genau, das wäre natürlich, deswegen habe ich das auch

Jochen

ganz lange gemacht, aber tatsächlich ist es so, dass

Jochen

heutzutage hat man diese

Jochen

Anwendungsfälle fast nicht mehr und

Jochen

die Monitore...

Dominik

Die Zeichen kann man meistens besser coden, oder? Also es sieht besser aus

Dominik

auf seinem eigenen Monitor, oder?

Jochen

Naja, es ist vor allen Dingen auch, es gibt halt

Jochen

viele Fälle, wo es halt schwierig wird, wenn man dann immer

Jochen

quasi nach der Anzahl Zeilen

Jochen

umbrechen, Zeichen umbrechen

Jochen

muss, dann muss man halt komisch rumformatieren.

Jochen

Und dann

Jochen

lieber schön. Und dann lieber schön.

Jochen

Und das bricht halt dann diese

Jochen

Begrenzung. So gerade bei Tests, finde ich, ist es

Jochen

sehr schwer, das einzuhalten, weil oft

Jochen

muss man halt lange Testnamen

Jochen

haben und auch, wenn das

Jochen

irgendwie sprechend sein soll und gut lesbar sein soll, dann

Dominik

Im gleichen Namen noch umgebrochen.

Dominik

Uh, ja. Ja, genau.

Jochen

Dann kann man eigentlich nicht mehr umrechnen

Jochen

und dann wird es halt einfach lang.

Jochen

Daher bin ich jetzt, ich weiß nicht,

Jochen

130, ich weiß nicht,

Jochen

wie die konkrete Zahl ist,

Jochen

vielleicht rede ich auch Unsinn. Ich benutze das halt,

Jochen

ich formatiere meinen Code auch mit Black, also ich nehme das,

Jochen

was Black sagt und kümmere mich

Jochen

nicht mehr drum. Ich hoffe, die haben das sich irgendwie gut überlegt

Jochen

Und ja, genau, was haben wir noch? Ja, genau, Fehler sollten nicht einfach so still weggeworfen werden, sondern sollten immer sichtbar sein.

Dominik

Also wir haben ja auch ein patent assertion oder sowas, ich weiß nicht, ist das ein besonderes Feature oder gibt es das bei Ansprachen auch alles?

Jochen

Achso, das ist ein Keyword der Sprache, mit dem man halt überprüfen kann, ob eine Bedingung oder irgendwas wahr ist, was sein sollte.

Jochen

Und wenn es halt nicht so ist, dann wirft das halt einen Fehler.

Jochen

Das heißt, man kann einen guten Test konzipieren.

Jochen

Kann man einen guten Test schreiben, ja.

Jochen

Genau, ja, Fehler sollten irgendwie nie schnell weggeworfen werden, außer man bringt sie zum Schweigen irgendwie explizit.

Jochen

ja, wenn man irgendwie

Jochen

mehrere Dinge zur Auswahl hat,

Jochen

ja, sollte man

Jochen

irgendwie der Versuchung widerstehen, irgendwie einfach

Jochen

zu raten. Es sollte nur

Jochen

einen und

Jochen

möglichst nur einen, einen einzigen

Jochen

offensichtlichen

Jochen

Weg geben, wie man Dinge

Jochen

tun sollte. Und das ist

Jochen

natürlich ganz klar irgendwie ein Ding gegen

Jochen

Perl, weil Perl ist halt das Gegenteil davon.

Jochen

Es gibt irgendwie, Perl ist auch, ich weiß nicht,

Jochen

da gibt es auch einen, du kannst es halt irgendwie

Jochen

so machen, es gibt viele Wege

Jochen

zum Ziel. Du kannst es halt so machen, wie es dir am besten

Jochen

gefällt, was halt dann in der Praxis dummerweise

Jochen

dazu führt, dass es jeder irgendwie anders macht.

Jochen

Und die Lesbarkeit

Jochen

natürlich extrem, weil jeder

Jochen

schreibt dann halt sozusagen sein Perl-Idiom

Jochen

und man kann halt nicht

Jochen

mehr so gut, also bei manchen Leuten

Jochen

war es so, wenn man das nicht angeguckt hat, dann

Jochen

Was ist das überhaupt?

Jochen

Ich meine, teilweise ist es sehr schön. Ich habe auch mal

Jochen

ein Buch gelesen

Jochen

von Damien

Jochen

Conway, ich weiß nicht genau, Higher Order Pearl

Jochen

oder sowas, auch ganz viele verrückte Sachen

Jochen

gemacht und sowas habe ich dann mit Begeisterung verwendet

Jochen

und fand das total toll, was man alles für komplexe

Jochen

Geschichten irgendwie da in wenig

Jochen

Zeichen irgendwie unterbringen kann.

Jochen

Aber ich glaube, ich würde das heute wahrscheinlich nicht mehr

Jochen

lesen können und meine Kollegen damals oder

Jochen

kurz danach konnten das wahrscheinlich auch nicht mehr lesen.

Dominik

Oder du selber, etwa so zwei Stunden später.

Jochen

Ja, zwei Stunden später ist es halt dann vorbei und das ist

Jochen

nicht ganz so gut, also es ist nicht optimal.

Jochen

Das ist irgendwie das, da kann man noch was verbessern.

Dominik

Zu lange danach gearbeitet, dann steht man morgens wieder auf

Dominik

Oh, was habe ich gestern da gemacht?

Jochen

Ja, also das, ja, heutzutage.

Jochen

Also dokumentiert immer schön euren Code.

Dominik

In Python könnt ihr damit sogar Dock-Tests machen.

Dominik

Das heißt, ihr testet dann selber auch das, was ihr dokumentiert.

Dominik

Ja, weiß ich aber nicht, ob das so ein schlauer,

Jochen

also ob das so eine gute Idee ist.

Jochen

Kann man machen, aber ich würde eher explizite Tests schreiben.

Jochen

Und ich würde auch PyTests nehmen.

Jochen

Es gibt halt auch das eingebaute Test-Framework von Python,

Jochen

das sich stark an JUnit,

Jochen

glaube ich, an dem Unit-Testing

Jochen

von Java irgendwie orientiert hat.

Jochen

Ich weiß gar nicht, wie das heißt.

Jochen

Und das ist komisch,

Jochen

weil es ist halt nicht so richtig Pythonisch,

Jochen

weil es

Jochen

halt so die Dinge wie

Jochen

per Konvention sind halt die

Jochen

Methodennamen CamelCase und

Jochen

nicht mit Underscore. Normalerweise

Jochen

Underscore und da ist aber CamelCase

Jochen

mit Java und das ist halt, sieht komisch aus.

Jochen

Und diverse

Jochen

andere Dinge sind auch eigenartig.

Jochen

Das fühlt sich oft eher an, als würde man

Jochen

Java schreiben als Python und das ist halt eigentlich nicht schön.

Jochen

Und deswegen würde ich eben nicht das eingebaute

Jochen

Ding nehmen, nicht das eingebaute Unit-Test-Framework,

Jochen

sondern, wobei von den Features her,

Jochen

die können quasi das Gleiche.

Dominik

Aber du Dock-Testest ja jetzt nicht, oder?

Dominik

Dock-Test weiß ich gar nicht.

Dominik

Weil die Dock-Test ja einfach in den Dokumentationen

Dominik

dann irgendwie die Funktionen testen.

Jochen

Ich weiß gar nicht, ob das

Jochen

wie die ausgeführt werden

Jochen

oder welche Testrunner die dann halt

Jochen

ausführt. Wenn man den einstellen

Jochen

kann oder so. Das kann auch alles gut.

Jochen

Aber

Jochen

ich würde halt eher als Testrunner

Jochen

eigentlich immer eher PyTest verwenden.

Dominik

Ja, ich glaube, PyTest nimmt auch die Dock-Tester mit an

Dominik

oder so. Das kann gut sein.

Jochen

Ich habe noch nie Dock-Tests. Aber das ist auch alles

Jochen

nur geraten. Keine Ahnung, muss man sich mal

Jochen

angucken. Vielleicht ist auch alles gut.

Jochen

Aber ich würde auf jeden Fall,

Jochen

das ist halt auch so eine unoffensichtliche Geschichte,

Jochen

wenn man vielleicht anfängt, dann denkt man sich so,

Jochen

ach, ich nehme das eingebaute Unit-Test-Framework.

Jochen

Die Implementation ist

Dominik

hard to explain, it's a bad idea.

Dominik

Also ihr seht schon,

Dominik

wenn wir jetzt irgendwie anfangen rumzustammeln, dann ist das

Dominik

alles totale Grütze, was sie da gebaut haben natürlich.

Dominik

Ja.

Jochen

Ja, now is better

Jochen

than never.

Dominik

Ja, also das Do-It, so ein bisschen das Nike-Prinzip,

Dominik

also einfach anfangen, machen, Prototyping.

Jochen

Ob schon, niemals,

Jochen

vielleicht oft besser

Jochen

sein könnte als genau jetzt.

Jochen

Man weiß es aber nicht so genau.

Jochen

Wenn die Implementation

Jochen

schlecht zu erklären ist,

Jochen

ist eine schlechte Idee. Wenn die Implementation

Jochen

leicht zu erklären ist, könnte es

Jochen

sein, dass es eine gute Idee ist.

Jochen

Namespace ist eine total tolle Idee.

Jochen

Sollte man irgendwie mehr von machen.

Jochen

Was ist ein Namespace?

Jochen

Vielleicht musst du das nochmal kurz sagen.

Jochen

Sozusagen ein,

Jochen

ja, wie kann man das generell?

Dominik

Also die korrekte Übersetzung wäre

Dominik

der Namensraum. Also wenn man

Dominik

Variable genauso nennt wie die Nachbarvariable,

Dominik

dann ist es relativ schwierig, die dann irgendwann

Dominik

auseinanderzuhalten, weil wenn man das eine Kind rufkommt,

Dominik

entweder beide oder nur eins von beiden oder gar nichts mehr.

Dominik

Und dann kann man das mit einem Namensraum

Jochen

prefixen, in dem dann halt ein Name

Jochen

eindeutig ist. Was so ein bisschen, ich weiß

Jochen

nicht, ob da ist eine leichte Ironie, fürchte ich, drin,

Jochen

weil bei beiden ist das halt nicht so schön getrennt.

Jochen

Und wenn man jetzt zum Beispiel

Jochen

irgendein Modul-Import-Stern sagt,

Jochen

dann überschreitet einem das gnadenlos halt

Jochen

irgendwie Dinge,

Jochen

die man selber definiert hat vielleicht

Jochen

oder aus anderen Modulen oder so.

Dominik

Man kann auch übrigens die ganze Standardbibliothek

Dominik

überschreiben, wenn man einfach den Namen verwendet.

Jochen

Ja, kann man alles machen. Es gibt auch Leute,

Jochen

die dann, um das zu umgehen, sagen, die dann irgendwie

Jochen

import dieses vom das

Jochen

als irgendwie was ganz

Jochen

anderes, damit sie auf keinen Fall

Jochen

irgendwie sich Dinge überschreiben und so.

Jochen

Ja, das ist alles

Jochen

so ein bisschen

Jochen

aber im Grunde

Jochen

gibt es natürlich schon Namensräume

Jochen

in Python und

Jochen

ja, das funktioniert eigentlich auch ganz

Jochen

ganz gut.

Jochen

Ja.

Jochen

Sehnen auf Python haben wir jetzt so ein bisschen

Dominik

den Zuhörern auch noch näher gebracht.

Dominik

Also was man darunter so ein bisschen versteht.

Dominik

Wie man, ich sag mal, einen ganz besonders

Dominik

entspannenden Python-Code schreibt und wie man

Dominik

da richtig rangeht. Also tatsächlich müsst ihr es

Dominik

nicht zu komplex machen. Ich glaube, die einfache Lösung

Dominik

ist besser. Keep it short and simple.

Dominik

Ja. Das ist, glaube ich, immer eine gute

Dominik

Idee. Auch unabhängig von Python.

Dominik

Aber dadurch wird es

Dominik

halt sehr lesbar und sehr korrigierbar.

Dominik

er könnte auch sehr gut damit kooperativ arbeiten

Dominik

mit anderen, weil er, glaube ich, relativ schnell

Dominik

verstehen wird, was die da denn so getan haben.

Dominik

Ich meine, auch da gibt es Ausnahmen, aber...

Jochen

Das kann auch sein, dass das die...

Jochen

Das weiß ich nicht, ob es immer gut ist, wenn man schnell

Jochen

versteht, was andere da getan haben. Das könnte auch zu...

Jochen

Ja...

Jochen

Wie das bei Douglas Adams

Jochen

oder so irgendwie

Jochen

als der Babelfisch eingeführt wurde und alle sich plötzlich

Jochen

verstanden haben, dass es den schlimmsten

Jochen

Krieg ever oder keine Ahnung...

Dominik

Ja, das MRT hat da so ein paar lustige Sachen eingeführt,

Dominik

die ich letztens gesehen habe, irgendwie mit

Dominik

Lesen von Gesichtsmuskulatur

Dominik

und sowas, dann die Worte deines inneren

Dominik

Gedankens aufschreiben kann und so, das ist, ja.

Dominik

Hm, naja.

Dominik

Ja,

Dominik

Alter Ego

Dominik

heißt das Ding. Ach, okay.

Dominik

Da wird auch noch eine Menge

Jochen

interessante Dinge passieren,

Jochen

glaube ich.

Jochen

Aber ansonsten, ich weiß nicht genau, sind wir

Jochen

so ein bisschen durch mit der Einführung, glaube ich.

Dominik

Ja, ich würde tatsächlich sagen, wir sind langsam am Ende der ersten Folge

Dominik

angekommen. Wir haben es quasi fast

Dominik

geschafft. Also, was haben wir jetzt gerade schon gemacht?

Dominik

mal Zen auf Python kennengelernt,

Dominik

ein kleines bisschen an die Einführungstools gegeben,

Dominik

so ein bisschen die Features der Sprache uns

Dominik

angeschaut, irgendwie.

Dominik

Ja, wie kann man

Jochen

einen Einstieg finden, wofür wird das eingesetzt?

Jochen

Also falls ihr Fragen habt, wie gesagt,

Dominik

schreibt uns gerne an unsere E-Mail-Adresse.

Dominik

Da kriegt ihr alles nochmal

Dominik

erklärt. Ihr findet mit Sicherheit auch ganz viel im Internet,

Dominik

in Tutorials, es gibt ja unzählige

Dominik

schöne, spannende Seiten.

Dominik

Die Suchbegriffe werdet ihr bestimmt schon finden dafür.

Dominik

Ja, genau, dann

Dominik

würde ich sagen,

Jochen

In den nächsten Episoden gehen wir dann halt mal so

Jochen

oder da machen wir halt so irgendwie ein Thema

Jochen

pro Episode und gucken einfach mal, dass wir das

Dominik

ein bisschen näher beleuchten. Genau, nicht so der ganz allgemeine

Dominik

Schwank, sondern vielleicht tatsächlich irgendwie

Dominik

was Spezielles, irgendwie eine Modulibritik oder

Dominik

eine Technik oder irgendwie

Dominik

eins der Topics, die noch spannend sind.

Dominik

Wenn ihr Vorschläge habt, wenn ihr irgendwas Besonderes hören wollt,

Dominik

kommt gerne, sagt da von Voss.

Dominik

Jochen wird bestimmt

Dominik

was dazu erzählen können.

Dominik

Und ich stelle ihn blöde Fragen.

Dominik

Vielleicht schließen wir noch ein bisschen

Dominik

mit Veranstaltungshinweisen.

Dominik

Wir sind jetzt in Düsseldorf, also wenn ihr

Dominik

selber Veranstaltungshinweise habt, dann

Dominik

sagt doch bitte einer gerne Bescheid, dann

Dominik

können wir auch eure Veranstaltung jetzt im deutschsprachigen Raum

Dominik

gerne promoten und hier vorstehen.

Dominik

Bei uns ist nächstes Wochenende

Dominik

jetzt hier Python Sprint.

Dominik

Das ist immer eine tolle Gelegenheit, so ein bisschen Leute kennenzulernen.

Dominik

Ich glaube, der ist diesmal schon voll und auch die Warteliste ist schon

Dominik

voll, aber er ist, glaube ich, zweimal im Jahr.

Dominik

Die gibt es bei Meetup oder bei

Dominik

pi.ddf, also die Düsseldorfer

Dominik

super tolle Leute, immer ganz viele

Dominik

spannende Vorträge.

Dominik

Schaut euch das auch einfach mal an und

Dominik

ja, tatsächlich

Dominik

zweimal im Jahr. Also schaut einfach mal

Dominik

vorbei. Ja, also wenn ihr

Dominik

die Events in eurer Nähe promotet, schickt ihr auch

Dominik

eine E-Mail einfach an hallo-at-python-podcast.de

Dominik

Ja.

Jochen

Ansonsten genau, was faszinierend ist, es gibt einmal

Jochen

die Python User Group

Jochen

Düsseldorf-PyTDF, die halt auch diese

Jochen

Sprints organisiert. Es gibt

Jochen

einen Python-Foo, das ist

Jochen

im lokalen Düsseldorf

Jochen

Microspace im Chaosdorf. Das ist einmal

Jochen

wöchentlich, ist deutlich kleiner.

Jochen

sind mehr so

Jochen

immer die gleichen Leute, die da hingehen.

Jochen

Die ersten zwei Mal im Monat ist glaube ich

Dominik

für Anfänger und die dritte Mal ist...

Jochen

Ja, aber

Jochen

finde ich, ist auch ganz toll.

Jochen

Sollte man

Jochen

sich nicht von abschränken lassen. Das ist halt so ein bisschen,

Jochen

dass man so reinkommt und denkt so,

Jochen

ist die Veranstaltung jetzt

Jochen

wie... oder ist es

Jochen

gerade irgendwas anderes?

Jochen

Naja, das sind alles sehr nette Leute.

Jochen

Dann...

Jochen

Aber genau, vielleicht wenn man gerade mit Leuten

Jochen

mal persönlich irgendwie ein bisschen mehr reden will,

Jochen

das ist vielleicht ein bisschen besser,

Jochen

weil so PyDDF ist eher vortragsorientiert

Jochen

und immer ein bisschen etwas größerer Rahmen.

Jochen

Dann gibt es das Data Science Meetup in Düsseldorf,

Jochen

das ist auch immer sehr gut besucht,

Jochen

wo es häufig um Python-Themen auch geht.

Jochen

QuantFinance bei Jesu Statistik,

Jochen

das sind fortgeschrittene Themen auch.

Jochen

Genau, und dann gibt es die Python User Group Köln,

Jochen

Paikolonen.

Jochen

Einmal im Monat gibt es da ein Treffen.

Jochen

Das ist auch immer

Jochen

meistens so 20, 30 Leute.

Jochen

Und es gibt immer interessante Vorträge.

Jochen

Danach geht man irgendwo essen.

Jochen

Ja, bei Pai.d.D.F. ist das auch so.

Jochen

Hm.

Jochen

Ja, es ist also mehr im Umfeld.

Dominik

Wie gesagt, wenn ihr irgendwo aus, weiß ich nicht,

Dominik

Schießmichtod, Wien, München,

Dominik

von der Ostsee in der Uckermark irgendwas findet,

Dominik

dann sagt Bescheid.

Dominik

Stehen wir hier gerne auch vor.

Dominik

Ja.

Dominik

Ich kann nur sagen, Jochen, vielen Dank.

Dominik

Ja, danke Dominik.

Dominik

Ein bisschen schlauer geworden.

Dominik

Tja, so schnell kann es gehen.

Dominik

Ich hoffe, die Hörer haben auch ein bisschen Spaß gehabt.

Dominik

Ja.

Dominik

Dann bis zur nächsten Folge.

Dominik

Bis zum nächsten Mal.

Dominik

Tschüss.