Great question!
It offers an opportunity to relate specification languages and implementation languages, and hence to relate both to computational law.
Let me explain…
It's not actually turtles all the way down.
program ––> compiler ––> bytecode ––> machine code ––> CPU ––> ⚡️
But what if the customers actually (kinda) do know what they want?
If our instinct is to solve requirements specification, we find a history of smart people thinking hard for 50 years.
First, a detour: about implementation vs specification languages.
Between imperative and declarative programming paradigms.
And have you ever responded with, "just give me the address, I'll figure it out"?
That's the difference between imperative and declarative.
"Alexa, it looks like we're out of detergent".
A box shows up at your door three hours later.
Remember knights and knaves? Knights tell the truth; knaves lie.
All you have to do is set up the puzzle; Prolog will solve it for you.
?- sat(A =:= (~A * ~B * ~C)), sat(B =:= card([1],[A,B,C])).
A = C, C = 0,
B = 1.
Boom.
metalevel.at/prolog/puzzles
Have you seen Ready Player One? [spoiler]
Everybody else drives forward. They crash and burn.
You hit reverse and find the secret short-cut to the prize.
Life is too short to write assembly language. So let's write programs in C.
But life is too short to write C. So let's write in Javascript and Python.
Guess what? Life is too short to write Javascript and Python!
So we should … write in … what?
To get the joke, you need to know that C is the classic implementation language. Millions have suffered it. Most of the world's running programs were written in C; if they weren't, their compilers were.
What is B? B comes before C!
Go left!
Galois would have approved. His life was definitely too short. Galois before his 21st birthday, in a duel.
clearsy.com/en/systems-and…
Until recently, the standard approach in AI was for a domain expert to buddy up with a techie to do "knowledge transfer". We call it "interpretive implementation."
Or we could write rules-as-code, "born digital", from scratch.
That's the REDEFINE step.
Natural language generation offers backward-compatibility with lawmaking.
Static analysis offers unit testing, model checking, and more. cse.chalmers.se/~gersch/slides…
Tnx for coming to my TEDtalk