Schlüsseltechnologie

STP033: Programmiersprachen


Listen Later

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. :)

Außerdem dabei: Linguisten, automatisierte Textilbearbeitung und unsichtbarer Programmcode.

Shownotes
  • Einordnung in das Sprachenuniversum

    • Programmiersprachen sind formale Sprachen (d.h. ein Algorithmus kann in endlicher Zeit eindeutig entscheiden, ob ein gegebener Text Teil der Sprache ist) -> Rückbezug zu STP021
    • Programmiersprachen sind kein Maschinencode (d.h. Programme in Bytefolgen, den ein Prozessor direkt ausführen kann) -> Rückbezug zu STP011
    • Abwägung zwischen Lesbarkeit für den Menschen und Lesbarkeit für den Computer
    • einfachste Form von Programmiersprachen: Maschinensprachen (stellen Maschinencode direkt lesbar dar)
    • Beispiel anhand einer frühen Anwendung von Programmierbarkeit: Weben/Stricken/Häkeln

      • Maschinensprache: so etwas wie "zwei links, zwei rechts, zwei fallen lassen"
      • Maschinencode = Lochkarten-Kette für einen Jacquard-Webstuhl
      • darstellendes Beispiel für moderne Maschinensprachen und Programmiersprachen: Fibonacci-Funktion

        • interaktiv bei Godbolt
        • reine Textform nachfolgend
        • unsigned int fibonacci(unsigned int x) {
          if (x == 0 || x == 1) {
          return x;
          }
          return fibonacci(x - 1) + fibonacci(x - 2);
          }
          fibonacci(unsigned int):
          push rbp
          mov rbp, rsp
          push rbx
          sub rsp, 24
          mov DWORD PTR [rbp-20], edi
          cmp DWORD PTR [rbp-20], 0
          je .L2
          cmp DWORD PTR [rbp-20], 1
          jne .L3
          .L2:
          mov eax, DWORD PTR [rbp-20]
          jmp .L4
          .L3:
          mov eax, DWORD PTR [rbp-20]
          sub eax, 1
          mov edi, eax
          call fibonacci(unsigned int)
          mov ebx, eax
          mov eax, DWORD PTR [rbp-20]
          sub eax, 2
          mov edi, eax
          call fibonacci(unsigned int)
          add eax, ebx
          .L4:
          mov rbx, QWORD PTR [rbp-8]
          leave
          ret
          • Was unterscheidet hier die Programmiersprache von der Maschinensprache?

            • Verwendung von benannten Variablen, um Werte zu halten
              • Maschinensprache: nur Speicheradressen und CPU-Register
              • Variablen können feste Datentypen haben
                • Maschinensprache: alles nur Nullen und Einsen :)
                • Kontrollfluss-Strukturen (Subprozeduren, Abzweigungen, Schleifen)
                  • Maschinensprache: nur lineare Ausführung und Sprungbefehle
                  • allgemein:
                    • bessere Lesbarkeit (immerhin kann Maschinensprache heutzutage auch Freitext-Kommentare)
                    • Portabilität (Unabhängigkeit von Details einer bestimmten Maschinen-Architektur)
                    • formale Strukturen, die Fehler vermeiden (z.B. Typprüfungen, Kollisionsvermeidung bei nebenläufigen Programmen)
                    • Arten von Programmiersprachen ("Paradigma")

                      • imperative Programmierung: Programme als Folgen von Befehlen
                      • strukturierte Programmierung: Programme als ineinander verschachtelte Blöcke von Befehlsfolgen
                      • modulare Programmierung: Programme als Verbund logischer Einheiten aus Prozeduren und Datenstrukturen
                      • objektorientierte Programmierung: Programme als Verbund von datenhaltenden Objekten, die miteinander interagieren
                      • logische Programmierung: Programme als Verbund von logischen Aussagen und Ableitungsregeln (Beispiele in der Sprache Prolog; Xyrill hat eine Anekdote zu Prolog)
                      • funktionale Programmierung: Programme als Verbund von mathematischen Funktionen (insbesondere von Funktionen, die andere Funktionen als Werte nehmen)
                        • Beispiel unten: Berechnung sämtlicher Primzahlen in der Sprache Haskell
                        • reaktive Programmierung: Programme als voneinander abhängige Berechnungen (Beispiel: Tabellenkalkulation, Webanwendungen mit React)
                        • module Primes where
                          isPrime :: Int -> Bool
                          isPrime x = all (\y -> mod x y /= 0) $ takeWhile (\y -> y * y <= x) primes
                          primes :: [Int]
                          primes = 2 : filter isPrime [3..]
                          • Exkurs: esoterische Programmiersprachen

                            • Brainfuck: eine der minimalsten turing-vollständigen Programmiersprache; nur 8 verschiedene Befehle
                            • Befunge: anschauliches Beispiel für das Konzept einer "virtuellen Maschine" im Kontext von Programmiersprachen
                            • Chef: viele esoterische Programmiersprachen sind vor allem clevere Textersetzung
                            • Im Gespräch erwähnt

                              • Pentaradio 2022-12 zu Komplexität
                              • ...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

                                25 Listeners

                                WRINT: Wer redet ist nicht tot by Holger Klein

                                WRINT: Wer redet ist nicht tot

                                15 Listeners

                                Methodisch inkorrekt! by Methodisch inkorrekt!

                                Methodisch inkorrekt!

                                14 Listeners

                                Apfelfunk by Malte Kirchner & Jean-Claude Frick

                                Apfelfunk

                                8 Listeners

                                Das Wissen | SWR by SWR

                                Das Wissen | SWR

                                114 Listeners

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

                                c’t uplink - der IT-Podcast aus Nerdistan

                                6 Listeners

                                Stay Forever - Retrogames & Technik by Stay Forever Team

                                Stay Forever - Retrogames & Technik

                                34 Listeners

                                Logbuch:Netzpolitik by Metaebene Personal Media - Tim Pritlove

                                Logbuch:Netzpolitik

                                5 Listeners

                                Computer und Kommunikation by Deutschlandfunk

                                Computer und Kommunikation

                                10 Listeners

                                Der KI-Podcast by ARD

                                Der KI-Podcast

                                12 Listeners

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

                                KI-Update – ein heise-Podcast

                                2 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

                                2 Listeners

                                UNFASSBAR – ein Simplicissimus Podcast by Simplicissimus

                                UNFASSBAR – ein Simplicissimus Podcast

                                25 Listeners

                                Darknet Diaries Deutsch by heise online

                                Darknet Diaries Deutsch

                                0 Listeners