Schlüsseltechnologie

STP006: Kommandozeilen und Unix-Philosophie


Listen Later

Computer haben heute unglaublich leistungsfähige Grafik. Warum verwenden so viele Computer-Experten dann immer noch textbasierte Terminals?

Shownotes
  • Begriffsklärung

    • Kommandozeile: allgemein jede textbasierte Steueroberfläche
    • Terminal ("Endpunkt"): ursprünglich ein einfacher Computerarbeitsplatz, der an einen Großrechner angeschlossen ist und eine Kommandozeile zur Steuerung desselben bereitstellt; heutzutage synonym mit Terminal-Emulator (ein Programm, das denselben Zweck erfüllt)
    • Shell (auch "Befehlszeile" genannt): ein Programm, das die Grundstruktur der Befehlsinteraktion im Terminal bereitstellt und das Ausführen und Kombinieren konkreter Befehle ermöglicht
    • Befehl: ein Programm, das in der Shell ausgeführt wird und eine konkrete Aktion bewirkt
    • Warum werden Terminals oft gegenüber grafischen Oberflächen (GUI) bevorzugt?

      • Weil es viel cooler ist.
      • bessere Handhabbarkeit eines großen Funktionsumfangs, nach entsprechender Einarbeitung (vgl. GUI mit 1000 Knöpfen vs. Kommandozeile mit 1000 Befehlen)
      • Programmierbarkeit: Textmakros sind einfacher und robuster als GUI-Makros
      • Kombinierbarkeit: Textbausteine sind auf offensichtliche Art und Weise kombinierbar, grafische Bearbeitungsschritte nur begrenzt
      • Fernwartung: Übertragung von Text braucht weniger Bandbreite als Übertragung einer GUI
      • Zugriff bei Problemen oder bei Neuinstallation: wenn GUI nicht mehr oder noch nicht geht, geht oft noch das Terminal
      • Nachteile von Terminals

        • schlechtere Auffindbarkeit von Funktionen ("Discoverability")
        • steile Lernkurve
        • Befehlszeilen gibt es überall, aber besonders prägend ist die von Unix

          • Unix: Familie von Betriebssystemen
          • ursprünglich Anfang der 1970er bei Bell Laboratories entwickelt von
            • Dennis Ritchie
            • Douglas McIlroy
            • Ken Thompson
            • Brian W. Kernighan wurde im Gespräch auch erwähnt. Er schrieb viele Programme für Unix und half, awk zu entwickeln.
            • wichtige aktuelle Vertreter: Linux (und damit Android), macOS, BSD-Familie
            • Gründe für den fortwährenden Einfluss des originalen Unix:
              • Quellcode war für universitäre Nutzung frei zugänglich
              • vergleichsweise einfacher und modularer Aufbau
              • dadurch einfach auf neue Systeme übertragbar
              • Unix-Philosophie

                • Formulierung von Douglas McIlroy: "Mache nur eine Sache und mache sie gut."
                • Formulierung von Richard P. Gabriel: "Schlechter ist besser." (Einfachheit ist wichtiger als alle anderen Eigenschaften eines Programmes wie Fehlerfreiheit, Konsistenz oder Vollständigkeit, da die Weiterentwicklung vereinfacht wird.)
                • weitere Formulierungen siehe verlinkter Wikipedia-Artikel
                • Unix-Philosophie im Kontext des Terminals

                  • meist nicht ein Befehl, der die ganze Aufgabe erledigt; sondern viele kleine Befehle, die kombiniert werden können
                  • gemeinsames Datenmodell: Ströme von Textdaten, die außerdem zumeist zeilenweise verarbeitet werden
                  • Kombinieren der einzelnen Befehle erfolgt interaktiv (direkt in der Shell) und dadurch iterativ (schrittweise durch wiederholtes Probieren und Anpassen der Befehlszeile)
                  • Beispiel: Wir wollen aus einem gegebenen Text die häufigsten Wörter bestimmen.

                    • Eingabedatei: BGB als Markdown-Datei aus der inoffiziellen Quelle https://github.com/bundestag/gesetze
                    • Schritt 1: Einlesen der Datei
                      • cat index.md
                      • Schritt 2: jedes Wort auf eine eigene Zeile
                        • cat index.md | tr ' ' '\n'
                        • passt nicht ganz, aber ist für unsere Zwecke gut genug ("Schlechter ist besser")
                        • Schritt 3: Wörter sortieren, dann identische Wörter zusammengruppieren und zählen
                          • cat index.md | tr ' ' '\n' | sort | uniq -c
                          • Schritt 4: Wörter nach ihrer Häufigkeit sortieren
                            • cat index.md | tr ' ' '\n' | sort | uniq -c | sort -k1 -n
                            • Schritt 5: nur die letzten 20 Zeilen, die die häufigsten Wörter enthalten
                              • cat index.md | tr ' ' '\n' | sort | uniq -c | sort -k1 -n | tail -n 20
                              • siehe unten: Auszüge aus den Ausgaben jedes einzelnen Schrittes
                              • Abendgedanken: Eine Lernkurve ist nicht unbedingt ein Nachteil. Es ist durchaus wertvoll, wenn ein Programm seinem Nutzer richtig kommuniziert, wie viel Einarbeitung und Wissen erforderlich ist. Siehe LaTeX vs. Word.

                              • Im Gespräch erwähnt wurden auch:

                                • Noam Chomsky
                                • Alan Turing
                                • Steve Jobs
                                • Errata: Der Begriff "Mem" wurde nicht von Douglas Hofstadter eingeführt, sondern von Richard Dawkins (in seinem Buch "Das egoistische Gen").

                                  Auszüge aus den einzelnen Schritten des Beispiels

                                  Jeweils mit | head, um nur die ersten 10 Zeilen zu zeigen.

                                  Schritt 1
                                  $ cat index.md | head
                                  ---
                                  Title: Bürgerliches Gesetzbuch
                                  jurabk: BGB
                                  layout: default
                                  origslug: bgb
                                  slug: bgb
                                  ---
                                  # Bürgerliches Gesetzbuch (BGB)
                                  Schritt 2
                                  $ cat index.md | tr ' ' '\n' | head
                                  ---
                                  Title:
                                  Bürgerliches
                                  Gesetzbuch
                                  jurabk:
                                  BGB
                                  layout:
                                  default
                                  origslug:
                                  bgb
                                  Schritt 3

                                  Hier sieht man keine Wörter im engeren Sinne, sondern Folgen von Sonderzeichen, deren Zeichen aus technischen Gründen vor den eigentlichen Buchstaben einsortiert werden. In der ganz ersten Zeile taucht die Anzahl von Zeilen auf, die nach Schritt 2 komplett leer waren (zum Beispiel Leerzeilen, die im Ursprungsdokument Absätze voneinander trennen).

                                  $ cat index.md | tr ' ' '\n' | sort | uniq -c | head
                                  18490
                                  1 #
                                  5 ##
                                  35 ###
                                  376 ####
                                  1216 #####
                                  1015 ######
                                  24 (§
                                  6 (§§
                                  1 *
                                  Schritt 4

                                  Aufgrund der Sortierreihenfolge sehen wir hier besonders seltene Ergebnisse mit je einem Treffer.

                                  $ cat index.md | tr ' ' '\n' | sort | uniq -c | sort -k1 -n | head
                                  1 #
                                  1 *
                                  1 ,
                                  1 0,75
                                  1 1).
                                  1 1\.
                                  1 1005
                                  1 1006
                                  1 1007
                                  1 1008
                                  Schritt 5

                                  Das Endergebnis.

                                  $ cat index.md | tr ' ' '\n' | sort | uniq -c | sort -k1 -n | tail -n 20
                                  1374 auf
                                  1383 nach
                                  1391 für
                                  1448 ist
                                  1523 von
                                  1568 so
                                  1574 das
                                  1630 wenn
                                  1692 in
                                  1850 zu
                                  1953 nicht
                                  2127 und
                                  2628 den
                                  2737 dem
                                  2909 oder
                                  3584 §
                                  4718 des
                                  5980 die
                                  8602 der
                                  18490
                                  ...more
                                  View all episodesView all episodes
                                  Download on the App Store

                                  SchlüsseltechnologieBy Xyrillian Noises


                                  More shows like Schlüsseltechnologie

                                  View all
                                  Bits und so by Undsoversum GmbH

                                  Bits und so

                                  26 Listeners

                                  wrint: gespräche zum runterladen by Holger Klein

                                  wrint: gespräche zum runterladen

                                  13 Listeners

                                  Methodisch inkorrekt! by Methodisch inkorrekt!

                                  Methodisch inkorrekt!

                                  14 Listeners

                                  Apfelfunk by Malte Kirchner & Jean-Claude Frick

                                  Apfelfunk

                                  7 Listeners

                                  Das Wissen | SWR by SWR

                                  Das Wissen | SWR

                                  119 Listeners

                                  c’t uplink - der IT-Podcast aus Nerdistan by c’t Magazin

                                  c’t uplink - der IT-Podcast aus Nerdistan

                                  8 Listeners

                                  Stay Forever - Retrogames & Technik by Stay Forever Team

                                  Stay Forever - Retrogames & Technik

                                  35 Listeners

                                  Logbuch:Netzpolitik by Metaebene Personal Media - Tim Pritlove

                                  Logbuch:Netzpolitik

                                  7 Listeners

                                  Computer und Kommunikation by Deutschlandfunk

                                  Computer und Kommunikation

                                  9 Listeners

                                  Der KI-Podcast by ARD

                                  Der KI-Podcast

                                  24 Listeners

                                  KI-Update – ein heise-Podcast by Isabel Grünewald, heise online

                                  KI-Update – ein heise-Podcast

                                  3 Listeners

                                  Passwort - der Podcast von heise security by Dr. Christopher Kunz, Sylvester Tremmel

                                  Passwort - der Podcast von heise security

                                  3 Listeners

                                  Geschichten aus der Mathematik by detektor.fm – Das Podcast-Radio

                                  Geschichten aus der Mathematik

                                  1 Listeners

                                  UNFASSBAR – ein Simplicissimus Podcast by Simplicissimus

                                  UNFASSBAR – ein Simplicissimus Podcast

                                  26 Listeners

                                  Darknet Diaries Deutsch by heise online

                                  Darknet Diaries Deutsch

                                  0 Listeners