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
                                  Chaosradio by Chaos Computer Club Berlin

                                  Chaosradio

                                  7 Listeners

                                  Freak Show by Metaebene Personal Media - Tim Pritlove

                                  Freak Show

                                  10 Listeners

                                  Logbuch:Netzpolitik by Metaebene Personal Media - Tim Pritlove

                                  Logbuch:Netzpolitik

                                  7 Listeners

                                  Methodisch inkorrekt! by Methodisch inkorrekt!

                                  Methodisch inkorrekt!

                                  17 Listeners

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

                                  c’t uplink - der IT-Podcast aus Nerdistan

                                  5 Listeners

                                  Jung & Naiv by Tilo Jung

                                  Jung & Naiv

                                  39 Listeners

                                  heiseshow by heise online

                                  heiseshow

                                  2 Listeners

                                  Übermedien by Übermedien

                                  Übermedien

                                  3 Listeners

                                  Lage der Nation - der Politik-Podcast aus Berlin by Philip Banse & Ulf Buermeyer

                                  Lage der Nation - der Politik-Podcast aus Berlin

                                  242 Listeners

                                  Die Wochendämmerung - Der stabile Wochenrückblick by Katrin Rönicke und Holger Klein (hauseins)

                                  Die Wochendämmerung - Der stabile Wochenrückblick

                                  14 Listeners

                                  Sicherheitshalber by Der Podcast zur sicherheitspolitischen Lage in Deutschland, Europa und der Welt.

                                  Sicherheitshalber

                                  45 Listeners

                                  Bit-Rauschen: Der Prozessor-Podcast von c’t by c't Magazin

                                  Bit-Rauschen: Der Prozessor-Podcast von c’t

                                  1 Listeners

                                  Legion by rbb | NDR | Undone

                                  Legion

                                  5 Listeners

                                  Haken dran – das Social-Media-Update der c't by Gavin Karlmeier

                                  Haken dran – das Social-Media-Update der c't

                                  2 Listeners

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

                                  Passwort - der Podcast von heise security

                                  3 Listeners