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.
Länge: 97:14 Minuten
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
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?
Arten von Programmiersprachen ("Paradigma")
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
Im Gespräch erwähnt