Artwork

محتوای ارائه شده توسط Stefan Majewsky and Xyrillian Noises. تمام محتوای پادکست شامل قسمت‌ها، گرافیک‌ها و توضیحات پادکست مستقیماً توسط Stefan Majewsky and Xyrillian Noises یا شریک پلتفرم پادکست آن‌ها آپلود و ارائه می‌شوند. اگر فکر می‌کنید شخصی بدون اجازه شما از اثر دارای حق نسخه‌برداری شما استفاده می‌کند، می‌توانید روندی که در اینجا شرح داده شده است را دنبال کنید.https://fa.player.fm/legal
Player FM - برنامه پادکست
با برنامه Player FM !

STP033: Programmiersprachen

1:37:14
 
اشتراک گذاری
 

Fetch error

Hmmm there seems to be a problem fetching this series right now. Last successful fetch was on January 02, 2025 14:02 (20d ago)

What now? This series will be checked again in the next day. If you believe it should be working, please verify the publisher's feed link below is valid and includes actual episode links. You can contact support to request the feed be immediately fetched.

Manage episode 356830290 series 2920733
محتوای ارائه شده توسط Stefan Majewsky and Xyrillian Noises. تمام محتوای پادکست شامل قسمت‌ها، گرافیک‌ها و توضیحات پادکست مستقیماً توسط Stefan Majewsky and Xyrillian Noises یا شریک پلتفرم پادکست آن‌ها آپلود و ارائه می‌شوند. اگر فکر می‌کنید شخصی بدون اجازه شما از اثر دارای حق نسخه‌برداری شما استفاده می‌کند، می‌توانید روندی که در اینجا شرح داده شده است را دنبال کنید.https://fa.player.fm/legal

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

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

  continue reading

67 قسمت

Artwork
iconاشتراک گذاری
 

Fetch error

Hmmm there seems to be a problem fetching this series right now. Last successful fetch was on January 02, 2025 14:02 (20d ago)

What now? This series will be checked again in the next day. If you believe it should be working, please verify the publisher's feed link below is valid and includes actual episode links. You can contact support to request the feed be immediately fetched.

Manage episode 356830290 series 2920733
محتوای ارائه شده توسط Stefan Majewsky and Xyrillian Noises. تمام محتوای پادکست شامل قسمت‌ها، گرافیک‌ها و توضیحات پادکست مستقیماً توسط Stefan Majewsky and Xyrillian Noises یا شریک پلتفرم پادکست آن‌ها آپلود و ارائه می‌شوند. اگر فکر می‌کنید شخصی بدون اجازه شما از اثر دارای حق نسخه‌برداری شما استفاده می‌کند، می‌توانید روندی که در اینجا شرح داده شده است را دنبال کنید.https://fa.player.fm/legal

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

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

  continue reading

67 قسمت

Minden epizód

×
 
Loading …

به Player FM خوش آمدید!

Player FM در سراسر وب را برای یافتن پادکست های با کیفیت اسکن می کند تا همین الان لذت ببرید. این بهترین برنامه ی پادکست است که در اندروید، آیفون و وب کار می کند. ثبت نام کنید تا اشتراک های شما در بین دستگاه های مختلف همگام سازی شود.

 

راهنمای مرجع سریع

در حین کاوش به این نمایش گوش دهید
پخش