
Sign up to save your podcasts
Or


Nach der Episode über die Fehler, spechen wir heute darüber, wie man sie vermeidet. Wie nicht anders zu erwarten, ist auch dies ein Thema, bei dem reichhaltige Meinungsdiskurse geführt werden.
ShownotesWarum testen? -> siehe STP037
Anforderungen an Tests
manuelle Tests
automatisierte Tests am Beispiel der Testpyramide
alternative Teilung: Blackbox-Tests vs. Whitebox-Tests
die reine Lehre: Test Driven Development (Testgetriebene Entwicklung)
Kann man die Qualität eines Tests bewerten? -> Idee: Code Coverage
Tests muss man trotzdem noch schreiben. Kann man das wegautomatisieren?
Machen Tests die Sache immer besser?
im Gespräch erwähnt:
Wir alle machen Fehler. So gut, so trivial. Wenn allerdings Elektronenrechner im Spiel sind, kann das durchaus kritisch werden. In manchen Fällen sogar tödlich.
ShownotesErrata zu STP034 von Thomas aus Berlin:Am Ende der Folge wundert sich ttimeless darüber, warum sin(pi) auf dem Taschenrechner immer ein Ergebnis von 0,0548... produziert. Du versuchst, das dann mit möglichen Ungenauigkeiten der Abbildung von pi zu erklären.
Ich glaube, die Antwort ist viel einfacher: In der normalen Einstellung DEG erwartet der Taschenrechner die Eingabe in Grad und sin(pi°) = 0,0548... ist damit auch korrekt. Stellt man den Taschenrechner auf RAD (Radiant), dann rechnet der Taschenrechner auch korrekt sin(pi) = 0.
"Off by One" ("um eins daneben")
mechanische Fehler: "First actual case of bug being found."
Überlauf: Ariane-Flug V88 (1996)
Überlauf: Y2K Bug -> siehe STP016
Überlauf: Heartbleed (2014)
Drift: Dhahran Missile Incident (1991), siehe auch
Spezifikation falsch gelesen (oder Kommunikationsproblem): Mars Climate Orbiter (1999)
Clusterfuck: Therac-25 (1985-1987), unter anderem:
überfordert von Komplexität: Corrupted Blood (2005)
analog zu Copy-Paste-Fehler: Mariner 1 (1962)
Copy-Paste-Fehler: Pentium-FDIV-Bug
Diesmal ist für ttimeless ein echtes Herzensthema an der Reihe. Dafür tritt man auch mal zum zweiten Aufnahmeversuch an. All das, um euch ein Textsatzpogramm nahezubringen, das im Kern 37 Jahre alt ist.
ShownotesZu dieser Sendung liegt ein Begleitdokument mit zugehörigen Quelldateien vor.Ein Mann, der nicht den Regeln folgt: Donald Knuth
Textsatz: "in einer Druckerei, einem Verlag o. Ä. der Arbeitsschritt, der durch ein technisches Verfahren aus einer Vorlage (einem Text, Grafiken, Bildern usw.) eine drucktaugliche Form herstellt"
TeX und LaTeX
im Gespräch erwähnt:
April, April! Ha, erwischt. Hier eine Sonderfolge mit vergnüglichen RFCs, die einen niederschwelligen Einblick in technische Spezifikationen bieten.
vollständige Liste siehe Wikipedia
RFC 1097 (von 1989): TELNET-Option "Unterschwellige Botschaft"
RFC 1149 (von 1990): IP-Übertragungen via Brieftaube
RFC 2100 (von 1997): "The naming of hosts"
RFC 2324 (von 1998): Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0)
RFC 3514 (von 2003): "The Security Flag in the IPv4 Header"
RFC 5514 (von 2009): "IPv6 over Social Networks"
RFC 6919 (von 2013): Neue definierte Schlüsselwörter für Standard-Texte
RFC 7168 (von 2014): Update für RFC2324 zur Zubereitung von Tee
RFC 7511 (von 2015): Malerische Routen für IP-Pakete
RFC 8140 (von 2017): Eine Galerie mit ASCII Art
RFC 9225 (von 2022): "Software Defects Considered Harmful"
Im Gespäch erwähnt:
In dieser Episode soll es detaillierter um Compiler gehen. Jene Programmme, die dafür zuständig sind, andere Programme zu erzeugen. Um es mit C3PO zu sagen: "... Wie pervers." :)
ShownotesCompiler: wandelt eine Programmiersprache (siehe STP033) in eine andere Programmiersprache oder Maschinensprache (siehe STP011)
Unterbegriffe zu "Compiler"
Frontend: Umformen der Texteingabe in eine Datenstruktur, Prüfung dieser Struktur auf inhaltliche Korrektheit (maschinenunabhängig, aber sprachabhängig)
Fortsetzung des Beispiels aus Wikipedia (aber mit einer Eingabevariable y und Ausgabevariable x): mögliche IR für den Ausdruck x = y + (2 + 2) - sin(pi)
Middleend: Optimierungsläufe auf IR (Auswahl)
Beispiel: optimierte Variante der IR von oben
In dieser Episode wird die Antwort auf die Frage geliefert, warum wir Dinge wie Programmiersprachen brauchen, und vor allem, warum so viele. Es werden mal wieder starke Meinungen geäußert und es gibt einen zweiten Prolog in der Mitte der Episode. :)
Einordnung in das Sprachenuniversum
Beispiel anhand einer frühen Anwendung von Programmierbarkeit: Weben/Stricken/Häkeln
darstellendes Beispiel für moderne Maschinensprachen und Programmiersprachen: Fibonacci-Funktion
Was unterscheidet hier die Programmiersprache von der Maschinensprache?
Arten von Programmiersprachen ("Paradigma")
Exkurs: esoterische Programmiersprachen
Im Gespräch erwähnt
Die heutige Episode beschäftigt sich neben dem offensichtlichen Hauptthema auch mit Prozenten, deren Bedeutung bedacht sein sollte, und dem Verhalten guter Manager.
Schlagwort: Site Reliability Engineering (SRE)
Grundkonzept: Service Level
Problem: die Unbekannten in der Gleichung
strukturierter Einblick in Applikationen mittels Instrumentierung
strukturierte Herangehensweisen beim Durchführen von Änderungen
strukturierter Umgang mit Alarmen/Fehlern
im Gespräch erwähnt (im Kontext des Gesetzesvorhabens zur Chatkontrolle):
Mit dieser Episode kehrt STP zum Ursprung zurück, denn das initiale Ereignis hatte ebenfalls mit Dateisystemen zu tun.
blockbasierter Speicher ("Block Storage")
kurzer Überblick zur physikalischen Anbindungen blockbasierter Speicher
Rückbezug zu STP012: "Dateisysteme sind eine besondere Form von Key-Value-Datenbank"; keine Datenbank im engeren Sinne:
alternative Perspektive als Vergleich zum blockbasierten Speicher
Dateisystem-Struktur unter unixoiden Betriebssystemen: mittels Inodes
"aktuelle" Entwicklungen in Dateisystemen
antiintuitive Schlussfolgerungen aus dieser Struktur
Exkurs 1: virtuelles Dateisystem
Exkurs 2: Festplattenverschlüsselung
In dieser etwas länger geratenen Episode sricht Xyrill über seinen Alltag und den seiner Kollegen, Unterstellten und Vorgesetzten.
Ausgangsfrage: "Ist Programmieren eigentlich ein Handwerk, eine Kunst oder eine Wissenschaft?"
grundsätzliche Gewerke in der IT
"Gesetze" der Softwareentwicklung
Lesetipp: "Everything Easy is Hard Again"
In dieser Episode möchte Xyrill gern eine Vorlesung halten über ein Thema, das in der Informatik zu den Grundlagen für das erste Semester gehört.
Komplexität: Ressourcenbedarf eines Algorithmus (Zeitkomplexität, Platzkomplexität; vielleicht auch Kostenkomplexität etc.)
einfaches Beispielproblem: "Gegeben ist eine sortierte Liste von Wörtern (Schlagwörter im Wörterbuch). Finde ein bestimmtes Wort."
Beschreibung von Komplexität: Landau-Symbole
etwas komplexeres Beispiel: Sortieralgorithmen ("Gegeben ist eine Liste von Zahlen/Wörtern/etc. Sortiere diese Liste.")
Schauempfehlung (mit Epilepsie-Warnung): Visualisierung verschiedener Sortieralgorithmen
im Gespräch erwähnt:
From the publisher's feed

9 Listeners

219 Listeners

5 Listeners