3 ms·
The fundamental thing we're doing when writing code is specifying computations. The difficulty of it comes from the fact that when we conceive of some computati
by westoncb 10y ago
The fundamental thing we're doing when writing code is specifying computations. The difficulty of it comes from the fact that when we conceive of some computation we'd like executed, we do so with human brains, whereas the thing that's going to execute the computation is a totally different kind of thing: they each have something like their own 'internal format' for representing program concepts.
Our strategy has been to write stacks of translators to bring the machine's internal format nearer to our own.
The last line of code will be written when we develop translators for languages near enough to our own internal representations that we no longer require special training to learn the machine's representation. It won't make sense to call it 'code' anymore.
This kindred language/representation may be natural language (and maybe not), but if it were I'd imagine there'd have to be a tight feedback loop in the machine's attempts to sort out ambiguities in a developer's specification. So, programming would turn into a conversation with a computer: you ask for something, it proposes a solution ("Thanks John! How's this?"—it'll probably be like that. Ugh.), you express your modifications, it proposes another solution etc.
That's my guess anyway.
- foota 10y agoThat kind of reminds me of the computer in The Moon is a Harsh Mistress
- Jtsummers 10y agoUsing loglan[0] as the primary language of interaction. Addressing the issue (in theory) of ambiguity in other human-oriented languages. [0] https://en.wikipedia.org/wiki/Loglan https://en.wikipedia.org/wiki/Loglan
- emilecantin 10y agoI think of it at a higher level: My job is not writing code, it's clarifying ideas. Even though my boss / client talks to me in their natural language, I still need to have a conversation with them to clarify what they mean, what do we do in such and such corner case, etc. Also, people usually don't know what they want until they see it, which gave rise to the whole field of Agile development. I don't think that higher and higher levels of translations between human language and machine language will free us from clarifying our ideas.