8 ms·
E.W.Dijkstra: On the foolishness of "natural language programming"
- cracki 16y agoA moment isn't such a long time anymore, not for compute clusters anyway. If we don't keep trying to make AI, we're never gonna get there. I'm not saying data mining is AI. I'm saying human brains do data mining too, but differently, and figuring out how is what might come of all this. Wolfram-Alpha-style natural language programming actually isn't that bad because it's a dialogue. The thing tells you its assumptions, so you're back to formal representations you can deal with. Natural language is mostly statistics, also known as guesswork. A machine can guess better than humans. Google proves that by suggesting "torrent" every time you search for a movie title. Dijkstra fears a world where the lack of formalisms prevents progress. That's why he likes formalisms. I do too, maybe not for these exact reasons. Anyway, I take formalisms as a given because they've always been there my whole life. Formalisms can be impractically formal. The level of precision required by machines is beyond even what most mathematicians are used to casually (i.e., pen and paper, or at a blackboard). If you had to do math like you write code, mathematicians would go bonkers. Include this, type-cast that, ... nah, everyone knows what this and that is supposed to mean, right? A little NLP could make it easier to command computers. A little more NLP could turn machines into really useful slaves. AI would be opening a can of worms few in this world are prepared to deal with.
- zv 16y agoThis man knows about programming languages way more than most of us. Listen to him. I bet it isn't the first time he has this discussion. See: Algol, Ada and others.
- jimmyjim 16y agoIt's often the foolhardy and the ignorant that tackle problems that are supposedly impossible. And sometimes end up succeeding. Wisdom is certainly something to take from, but embodying the limits imposed by someone as a roadblock to onself isn't the way to innovation.
- xtho 16y ago> It's often the foolhardy and the ignorant that [...] sometimes end up succeeding. Please name some examples. How often is sometimes? What is their probability of success compared to that of domain experts?
- weego 16y agoWill get pointed up but just smacks of passive-agressive argumental. History, specifically in science and math is full of examples where people who actively sought to question the knowledge of more senior experts have made discoveries that advanced the knowledge of human-kind and have then been overlooked or ignored because they did not have the correct background. Institutions such as The Royal Society and The Geological Society where created exactly on this principle. The idea that "you cannot question X because X is a learned man above your station" is what IMO destroys general interest in fields such as physics. You have to spend a career following the party line in the hope that one day you will be given enough rope to actually challenge anything. How on earth would you put probability on something like that?
- xtho 16y agoThe existence of a black swan doesn't imply that swans are usually black. A. "There are examples where newcomers to a field found a novel solution that senior experts have missed." B. "It is often the ignorant who succeeds." B does not follow from A. Not even in mathematics where people use to say that you have to prove yourself worthwhile by the age of 25 or it won't happen. > You have to spend a career following the party line in the hope that ... This is a slightly different discussion but IMHO in many fields (e.g. medicine) contemporary science has little to do with genious or insight but rather is an industrial effort ... and that _often_ isn't fun.
- danio 16y agoA lesson on logic from somebody who equates "It's often the foolhardy and the ignorant that tackle problems that are supposedly impossible. And sometimes end up succeeding" to "It is often the ignorant who succeeds" seems ironic to put it mildly.
- hxa7241 16y ago> Formalisms can be impractically formal. The level of precision required by machines is beyond even what most mathematicians are used to casually (i.e., pen and paper, or at a blackboard). If you had to do math like you write code, mathematicians would go bonkers. Include this, type-cast that, ... nah, everyone knows what this and that is supposed to mean, right? Mathematics only looks formal: compared to software it is really another natural language -- because its purpose is to communicate between humans, whereas software is ultimately not about communication but design of artifacts. The point about practicality still holds though, but since the purposes are different it must be something of a different kind of practicality to aim at.
- edwtjo 16y agoI was thinking about lojban (http://lojban.org http://lojban.org) when I read this. I mean we do have programming languages, which are unambiguous. Why should we not alter our "natural", i.e. legacy based, communication when dealing with computers?
- Deestan 16y ago> Why should we not alter our "natural", i.e. legacy based, communication when dealing with computers? Or when dealing with each other, for that matter. In Lojban, it is grammatically incorrect for someone to give me vague directions like "we are at the pub to the left of the central plaza". They would instead have to say something like "we-not-you are now at the only pub to the left (when seen from the cinema) of the only plaza". Imagine political debates where imprecise language and double meaning are much harder to express. Mmm... .i mi batci le mlatu
- hasenj 16y ago> of the only plaza Which plaza? Just because you said "the only plaza" doesn't make it unambiguous. There certainly exist more than one plaza in any given city.
- dagw 16y ago"The only plaza" is either unambiguous (in cities with one plaza) or incorrect (in cities with multiple plazas). Just because a language makes it impossible to be unambiguous doesn't mean it makes it impossible to be wrong.
- kanny96 16y agoNLP 1 : Natural Language Programming : ability to instruct a machine using your natural language NLP 2 : Natural Language Processing : modeling and processing of the natural language phenomenon NLP 1 requires advancement in NLP 2 to a significant level of accuracy which in turn requires the accuracy and care of the formal symbolism of lower level programming automaton. Having said that, the progress has been slow which often times leads to denouncement of pursuit of research in the NLP field. The article is 6 years old and a lot has happened in terms of both processing power capabilities that an individual has access to now (cloud computing) and amount of data available (online information explosion, particularly social media streams) which used to be a bottleneck earlier. This opens up a huge opportunity for breakthrough in NLPs by mathematicians as mentioned by Yuri yesterday at Web 2.0 Summit. AT&T's voice activated remote ( http://www.research.att.com/projects/WATSONASR/index.html http://www.research.att.com/projects/WATSONASR/index.html ) is an example of natural language programming that is achievable today.
- fmw 16y agoDijkstra died in 2002, so this is probably older than the 2004 date listed as the transcription date below the article. Looking at the date of other EWD notes in the same number range it was probably written in 1978.
- noglorp 16y agoFunny, I just read this — http://blog.stephenwolfram.com/2010/11/programming-with-natural-language-is-actually-going-to-work/ http://blog.stephenwolfram.com/2010/11/programming-with-natu...
- lkozma 16y agoAnd an analysis of Wolfram Alpha from a viewpoint similar to Dijkstra's: http://unqualified-reservations.blogspot.com/2009/07/wolfram-alpha-and-hubristic-user.html http://unqualified-reservations.blogspot.com/2009/07/wolfram...
- timelinex 16y agoI think alot of people have the paradigm wrong. I think people conceive Natural Language Programming as a simply change in syntax, which in it self would complicate stuff. But if you take the stance that we as humans are Natural Language Programmers, the concept becomes easier to understand. You can think of your boss at your software development firm as your programmer. He wants some job done and you program some approximation of what he wants done, then you modify based on his inputs. It is a similar thing with Natural Language Programming, your boss didn't use complex symbols to get what he wants done and didn't have to sit with you all the way through to get something done. For me, it is not a question of whether this makes programming simply but whether we can build a machine with the same capacity as a human.
- tankenmate 16y agoThe problem here is that there is 20+ years of acquired "state" that allows this to happen. Also, think of the hiring process, weeding out potential programmers with "bad" "state"; i.e. they are crap programmers. If you want a machine with the same capacity as a human you had better have something that can learn at the same rate as a human, and then add 20 years of "life experiences" and education. Then.. _maybe_ you might have a good programmer. Sorry to rain on your parade, but us meat sacks are better at doing that, evolution has stumbled upon some pretty cool hacks that make it cheap enough (think of a 20 year computer maintenance and energy bill!) to have a "sentient" being.
- timelinex 16y agoI don't want to get into the how. The how should be a very open question. Like there is a million and one ways to program something, so there are a million and one ways to create AI. Some implementations are more efficient than others. What you should be asking yourself is how do I make this more efficient than taking 20 years?
- eru 16y agoIt would be good enough to make one issue, even if it took 40 years. As long as you could copy it afterwards.
- lemming 16y agosome people found error messages they couldn't ignore more annoying than wrong results, and, when judging the relative merits of programming languages, some still seem to equate "the ease of programming" with the ease of making undetected mistakes This is interesting, I think - this is really one of the core parts of the argument between static and dynamic typing. I prefer bondage and discipline to free love when it comes to types - I find programming in dynamic languages mushy, ill defined and error prone. And yet, lots of people love them and manage to do amazing things with them. Although in general I agree with Dijkstra's essay, maybe there is more wiggle room for a "more natural" language than I'd thought.
- edanm 16y agoThat quote also stuck in my mind. I'm more of a dynamic-language type for most things, and his argument seems to go heavily against dynamic languages. By the way, I'd quote the sentence before as well since it adds important context. It was a significant improvement that now many a silly mistake did result in an error message instead of in an erroneous answer. (And even this improvement wasn't universally appreciated: some people found error messages they couldn't ignore more annoying than wrong results, and, when judging the relative merits of programming languages, some still seem to equate "the ease of programming" with the ease of making undetected mistakes.)
- ozataman 16y agoActually, I don't think this has to do with dynamic vs static typing. It is more about strong vs weak typing, i.e. implicit type casting. In many dynamically but strongly typed languages (like Ruby), you would still get a type mismatch when you try to add a string to a number at runtime. It's just that with static typing, you would have realized your error much earlier at compile time.
- DougBTX 16y agoWhile I think you're right, my guess is that he had strong static typing in mind when he wrote the article. Ultimately they lie on a scale. With a dynamic, strongly typed language, you still leave plenty of opportunity to make undetected mistakes. The obvious example is changing the expected type of a method argument, while only updating a subset of the call sites.
- wzdd 16y agoDoes a specification count as native-tongue programming (using this term as NLP seems overloaded)? If it doesn't, why doesn't it? Would it be better if everybody on a project expressed their ideas in a computer programming language? This seems like an eloquent diatribe against AppleScript, but Applescript is not what I imagine native-tongue programming to be.
- acangiano 16y ago"When a distinguished but elderly scientist states that something is possible, he is almost certainly right. When he states that something is impossible, he is very probably wrong." — Arthur C. Clarke's First Law
- lemming 16y agoTo be fair, he doesn't so much say it's impossible as say it's a bad idea.
- bh42 16y agoExactly. The grandparent's comment is anything but relevant. While I do agree with it, it is clear it has nothing do with this.
- jdp23 16y agoDijkstra said this in 1978, so he was only 48 at the time.
- joshes 16y agoOne could argue that he was an elder with respect to his field at that time.
- lkozma 16y agoThis holds for everyone, not just elderly scientists. Impossibility proofs are by their nature more difficult than existence proofs.
- gryan 16y agoArthur C. Clarke: Science fiction writer. E.W. Dijkstra: Actual computer scientist.
- jmaygarden 16y agoClarke was no technical slouch! http://lakdiva.org/clarke/1945ww/ http://lakdiva.org/clarke/1945ww/
- yoyar 16y agoIf there is a significant enough demand, it will eventually be produced.
- huadie 16y ago╭⌒╮WELCOME http://www.onseeking.com/ http://www.onseeking.com/ ----- ~ ¤ ╭⌒╮ ╭⌒╮ ╭⌒╭⌒╮╭⌒╮~╭⌒╮ HANDBAG 35$ ,)))),'')~~ ,''~) ╱◥█◣ ╱◥█◣ SHOES 35$ |田|田||田|田| CLOTH 15$ ╬╬╬╬╬╬╬╬╬╬╬╬╬╬ 2010 NEW Your fashion! Your season! Michael bag fashion tidalcurrent.the fashionable element "bag" you - glamour infinite. Mass commodity, low discount, the buy cheaper. { www. onseeking .com } mall price can buy eligible products and services. Select all kinds of women, men's shoes, etc, { onseeking .com } shopping navigation! In addition, the company has a good reputation, quality standard, At a reasonable price. In the past few years, have been deeply overseas My friends for their support. Therefore, please rest assured purchase. ====== Free transport====== !!!!!!!!!!!!!! (http://www.onseeking.com/ http://www.onseeking.com/) !!!!!!!!!!!! input this URL: (http://onseeking.com/ http://onseeking.com/) you can find many cheap and fashion stuff (jor dan s-h-o-e-s) (NBA NFL NHL MLB j-e-r-s-e-y) ( lv h-a-n-d-b-a-g) (cha nel w-a-l-l-e-t) (D&G s-u-n-g-l-a-s-s-e-s) (ed har dy j-a-c-k-e-t) (UG G b-o-o-t) WE ACCEPT PYAPAL PAYMENT YOU MUST NOT MISS IT!! ----------------------
- hxa7241 16y agoWhat makes 'natural language' 'natural' is not really the appearance, it is what it is used for. A natural language is one used for communicating between humans. It only works the way it does because of what is on the other end of it -- another person. And that is why software must be different. Software must always be an 'un-natural language' because its (ultimate, essential) purpose is different: it is not communication but design. It works the way it does because it is for constructing an artifact. If you want to build complex things, that is equivalent to saying you will have complex requirements. The complexity cannot be squeezed out, substantially, by changing language -- as Brooks said in 'No Silver Bullet', there is a hard core of essential complexity. That purpose of design seems to mean an essential dichotomy of simplicity vs. control. If you want more simplicity you have to give up some control, and if you want more control you have to give up some simplicity. One opportunity is that it seems likely true that we over-specify much of our software: we are using more control -- hence complexity -- than really needed. But the solution is not in changing language -- that would be the result. It is in figuring out what to do behind that -- AI figuring out what you want without you saying so. Maybe one day, in particular limited areas . . .
- beefman 16y agoI think we'll see human and machine languages get more alike in the future. We're already seeing a huge increase in the amount of nonfiction written and the level of literacy of the public. English spelling has become more standardized over the past couple centuries. We could say, humans must always communicate by grunting, because they are dumb animals. Or that speech recognition is impossible because machines lack a soul. Dykstra is brilliant, but he's also a curmudgeon who never likes anything.
- Waywocket 16y agoWhich boils down to: There's a reason that architects and engineers use schematics, rather than just writing instructions in prose.
- abecedarius 16y agohttp://inform7.com/ http://inform7.com/ is a successful counterexample, to some degree: it gets used, and it's much closer to the vision than older attempts like Applescript and COBOL. On the other hand, it's bad at the kind of programs Dijkstra liked to think and write about. I'd say Dijkstra expressed a basically sound but overly narrow viewpoint.
- andolanra 16y agoI like Inform, but it boils down to a kind of Prolog augmented with procedure-like sections, and I'm not sure that I'd prefer it to something more terse. I started to write a non-trivial game in it, and it was actually a lot of fun, but I had to look up the syntax a lot because it wasn't always obvious how to do something that was otherwise conceptually simple. For example, you could write something like The Lobby is a room. The oak table is in the lobby. The cake is on the table. The cake is edible. Instead of taking the cake say, "Best wait until the party starts before digging in." But even though it's "natural language," it still _feels like_ I'm writing is_room(the_lobby). contains(the_lobby, the_table). is_on(the_cake, the_table). on_taking(the_cake, { print "You can't get ye cake!"; }). That said, Inform _does_ manage to make programming non-scary to non-programmers, which is a very good thing. It's probably the fact that I expect programming languages to be unlike natural languages that I felt it was awkward. (I personally ended up rewriting the game in Scheme. Never finished it. Maybe I should go back and work on it at some point.)