5 ms·
It's always interesting and amusing to read these sorts of articles. This has been a recurring dream and topic of conversation since well before I wrote my firs
by markbnj 9y ago
It's always interesting and amusing to read these sorts of articles. This has been a recurring dream and topic of conversation since well before I wrote my first program in 1975. It's easy to understand why. We've built these super fast number crunchers and added thick layers of abstraction that let us do useful things like encoding videos and tweeting. These things seem magically elevated above and beyond the simple operations from which they are assembled, and it's tempting to think we can continue piling up abstractions until we get to "intelligence."
I suspect, though, that the fundamental metaphors of human intelligence, whatever they are, far transcend "processing" the way our number crunching machines work now. That's why analogies to the way we interact with others ("Why can't I just tell the machine what I want?") fall woefully short of providing any insight into how we might program computers in the future. As long as the computers we are programming are processors of the same sort we program now, they will remain far, far too simple to ever understand what we want and act on our desires. To the extent they get part of the way to that ideal it can only be by relying on deeper and deeper layers of software, which at some point has to be written in the old-fashioned way. If that remains true then it would probably be dangerous to allow ourselves to get too far removed from the way things really work. We already know how painful it can be to end up relying on stuff nobody understands any more to provide critical functions.
- blunte 9y agoThat's my favorite: "Why can't I just tell the machine what I want?" (Often preceded by "What I want is simple.") When people tell me something like that, I start asking questions about what they want. It only takes one or two questions to evoke a reply from them of, "Oh, I don't know... maybe it should do this, or maybe it should do that; it kind of depends..." And therein lies the real problem. When the end user cannot even clearly define (or even decide!) what they want when a certain situation comes up, how could a computer possibly know? Put the user next to a good developer, and I promise the bottleneck will be the user.
- deleted 9y ago[deleted]
- catnaroek 9y ago> When the end user cannot even clearly define (or even decide!) what they want when a certain situation comes up, how could a computer possibly know? Is it too hard to say “No program for you until you make up your mind about what you want” ? --- seanmcdirmid: > ”programming to think“ If the user wants to take this approach, I am more than willing to give them programming manuals and references to other learning resources. I don't want to be involved any further than that with it, though.
- notaboutdave 9y ago> No program for you until you make up your mind about what you want This is more or less the HN response to questions like this every time they come up. You can't fully automate programming because it is the very act of communication that defines the program. Without some type of brain-computer interface that could download your mind and "execute" it, you still have to communicate. Programming is the most direct and precise way to do this.
- catnaroek 9y ago> You can't automate programming Nobody is talking about automating programming. The point to my previous message is “There's no point to writing programs for users who don't know what they want.” At least not if you're acting in good faith. If you want to manipulate other people, that's a-whole-nother business, but I'm not enough of a psychopath to want to do that kind of thing. > it is the very act of communication that defines the program Programs are defined by the syntax and semantics of a programming language. > Without some type of brain-computer interface that could download your mind and "execute" it, you still have to communicate. You only need to communicate if you want to transmit an already existing program to someone or something else.
- fao_ 9y agoYou're both arguing the same point...
- 9y ago
- taneq 9y agoExactly. And this is the core "irreducible" difficulty of programming which visual languages, literate programming, etc. cannot solve. Sure, we can set up a nice set of defaults which bypass a lot of the starting-out work but as soon as you try to actually make something new, you're back to square one: What do you want to achieve? How are you going to do that?
- tincholio 9y agoActually, literate programming can help with this, as it forces you to write what you mean to do (and then you can compare that to what you're actually doing in the code). Literate programming is not "natural language" programming...