Hallo zusammen, vielen Dank für das nette Treffen gestern Abend! Dass wir nur zu viert waren ließ Raum für anregende Gespräche.
Was wir zuerst behandelt haben:
- Einlesen großer CSV (5 Millionen Zeilen) und Aufsummieren einer Zeile mit
Python
- nur mit Standardbibliothek
- mit Pandas
Dabei wurde deutlich, dass die Pandas-Lösung nur die halbe Zeit benötigt, aber
standardmäßig sehr viel Speicher (doppelte Datenmenge) und man daher für große
Dateien
die Verarbeitung in "chunks" aufteilen muss.
Außerdem haben wir uns über Fallstricke dynamischer Programmierung unterhalten
bzw.
auch gleich ausprobiert (Merke: nenne nie ein Python-Modul so wie etwas das
du importieren willst... )
Danach kamen wir dann noch kurz zum Thema Rust.
Ich habe vorgestellt, was ich daran interessant finde:
- hardwarenah
- keine Garbage Collection
-> performant, einbettbar
- Verhindern von Speicherfehlern (Überwiegender Anteil der CVEs) durch Borrow
Checker
- Hilfreiche Compiler-Meldungen!
- keine Exceptions
- Sum Types (Option), Beispiel Division liefert:
Some(Dividend / Divisor) bzw.
None, wenn Divisor 0 ist
- Mögliche Fehler müssen verarbeitet werden (match ist vollständig)
- Immutable by Default
- Safe by default, "unsafe" wo wirklich nötig (besser prüfbar)
Im Gegensatz zu Python hat Rust nur eine sehr schlanke Standardbibliothek (aber
immer noch
größer als C). Dies ist Absicht, da Teile der Standardbibliothek praktisch nie
mehr geändert
werden können ("where modules die"). Es erfordert aber einen Zugriff auf
externe Quellen
("crates"), mit dem bekannten Problem des Vertrauens auf Dritte.
Nützliche Links:
- https://www.rust-lang.org/learn - Getting started...
- https://doc.rust-lang.org/book/ - "The book", Einführung
- https://github.com/rust-lang/rustlings/ - Übungen zu Rust
- https://doc.rust-lang.org/stable/rust-by-example/ - durch Beispiele lernen
...und "Bücher" zu einzelnen Themen, z.B.:
- https://rust-cli.github.io/book/index.html - CLI
- https://doc.rust-lang.org/embedded-book - Embedded
- https://www.infoq.com/presentations/rust-tradeoffs/ - Was macht Rust aus?,
Kernmerkmale (mit Transkript)
- https://github.com/sger/RustBooks - Liste von Büchern
- https://www.manning.com/bundles/getting-started-with-rust?query=rust
Manning, Bundle "Getting started with Rust", beim Livevideo sind nach jedem
Kapitel kleine Übungen, z.B.
https://livevideo.manning.com/module/42_1_3/rust-in-motion/introduction-to-the-course-and-rust-syntax/variables?#
- https://rust-lang-nursery.github.io/rust-cookbook/ - Wie mache ich... ?
- https://github.com/rust-unofficial/awesome-rust - Was nehme ich für welches
Thema?
- https://github.com/getzola/zola - Static site generator
Demnächst mehr Praktisches dazu!
Am Schluss haben wir uns noch ganz kurz TIC-80 angesehen, eine
"Fantasy-Konsole".
Die Idee: In den 80ern gab es Homecomputer. Man schaltete sie an und konnte
loslegen.
Neben einem mehr oder weniger gelungenen Basic gab es sogar noch eine Anleitung
zum Einstieg
in die Bedienung und ins Programmieren:
10 PRINT "HALLO WELT!"
20 GOTO 10
https://archive.org/details/Personal_Computing_On_The_VIC-20_1982_Commodore
(Seite 4ff.)
(war mein erster eigener Computer)
Mit wenigen Kilobyte Speicher und niedriger Auflösung war es möglich, als
Einzelner
komplette Spiele zu entwerfen (meist musste man allerdings Assembler können...).
Moderne Ansätze versuchen die Vorteile dieser Beschränkungen mit modernen
Sprachen (und ohne
Datasette) zu kombinieren.
Es gibt mittlerweile etliche davon:
https://github.com/paladin-t/fantasy
https://tic80.com/ fand ich spannend, weil es komplett frei verfügbar ist (nur
Kompilieren
erforderlich für die Features der "PRO"-Version, ansonsten Finanzierungsansatz)
und weil es
- im Gegensatz zu den 80ern - zahlreiche Editoren direkt integriert, für
Karten, Grafik, Sound
und Code.
Ich freue mich schon aufs nächste Treffen!
Eine Idee war, ob wir zusammen Smartphones mit freieren Alternativen (Linageos,
postmarketos)
versehen können.
Liebe Grüße
Michael
signature.asc
Description: OpenPGP digital signature
_______________________________________________ FSFE-de mailing list [email protected] https://lists.fsfe.org/mailman/listinfo/fsfe-de Diese Mailingliste wird durch den Verhaltenskodex der FSFE abgedeckt. Alle Teilnehmer werden gebeten, sich gegenseitig vorbildlich zu behandeln: https://fsfe.org/about/codeofconduct
