> All that one has to do is write the specifications for the software
...and we call that specification a computer program.
...and we call that specification a computer program.
Just imagine a world when we have these programming languages to help us encode the specifications for our software. Wild! :)
r such that r * r = x
That’s a specification that gives you no knowledge how to solve the problem. You can definitely have precise specifications that do not directly correlate to machine instructions. print "Hello, World!"
gives no knowledge how to put text on the screen. Conversely, there's no reason a standard library couldn't include: fn (*) :: Num -> Num -> Num
fn (a * b) = [machine code goes here]
un (_ * d) n = n/d
un (d * _) n = n/d
un (_ * _) n = sqrt(n)
or similar.Also "anyway" a specification is always incomplete. It's part of the programmers' job to fill the gaps with something sensible, and when they have no idea what to do, to point out that some corner case was overlooked.
This is where programmers sometimes start to feel like Lieutenant Columbo: at first everyone is nice, but people become more and more irritated as the pesky cop asks more and more embarrassing questions.
You just summed up about 20% of my job