12 ms·
On the foolishness of “natural language programming”
- kyllo 12y agoThe hardest part about software always has been, and probably always be, getting humans to first know and then express exactly what they want. Natural human language allows for vague, abstract, and ambiguous expression (not to mention the euphemisms, exaggerations, half-truths and outright lies). Most people who have never written a computer program, have probably never even been through the experience of having to express exactly what they want someone or something else to do for them, in a specific and non-ambiguous manner. It really is a different way of thinking.
- Kenji 12y agoIndeed. Not only that, but the power of a precise language is not to be underestimated. I noticed that I had (and probably still have) a lot of errorneous concepts in my head and the only way to find out the mistake is by expressing them in a rigorous, formal language that forces you to think about every detail, no matter how 'obvious' it appeared at first.
- kyllo 12y agoExactly, a formal specification language (including any programming language) requires you to make all your the implicit, underlying assumptions explicit. Nothing can be taken for granted and there is no "you know what I mean." But once you really do know exactly what you mean, it's usually not so hard to specify it. Figuring out what you want is the hardest part.
- Tyr42 12y agoWell, sometimes we get things like C++11's `auto`, which do let you trade formality for brevity. It's helpful sometimes, but can cause misunderstandings, just like natural language pronouns.
- JabavuAdams 12y agoWhy should you have to specify assumptions that don't matter? I.e. it can be very productive to do the reasonable thing, until it's proven unreasonable.
- evilduck 12y agoSeems like software developers and lawyers share some common pains.
- michas 12y agoSoftware developers have slight advantage: compilers, unlike judges usually have consistent interpretations of all the rules and laws.
- danbruc 12y agoI always marvel how our legal systems manage not to collapse given the imprecise language they use. So while they have similar problems it seems to me that they are just ignoring them for the moment and let somebody else figure out what the precise meaning is if the necessity arises.
- scromar 12y agoThis is true.
- deleted 12y ago[deleted]
- chillingeffect 12y agoYes, in programming, the goal is to communicate clearly to an indifferent interpreter. In legal worlds, the goal is to express the intention while excluding the maximum number of outsiders. Why else does every coding language provide plain-language comments, but legal documents do not? In technology, the machine is a stand-in for a human relationship - the cell phone app keeps track of restaurant ratings so people don't have to keep asking one another. The code is a part of the system of distributing the power in the form of information. In the legal world, the intently obscure language is the means of hoarding and securing the power. W/r/t to legal systems collapsing, they're protected by guns and myths. The baillifs and police believe Columbus was a hero and they kill to uphold his dream. The incentive to power is enough to entice enough new scholars each year to sustain the illusion. So to respond to the poster above, the pains of the programmer and legal system are no more similar than the programmer and the chef. Each attempts to communicate a procedure, but the legal system has an entirely different and less noble set of requirements.
- tel 12y agoI agree with this but want to stress something else. A really great formal language actually frees you from "every detail, no matter how obvious". That's the heart of abstraction. Good mathematics is heavily abstracted because it forms a superhighway between mathematical concepts that allows you to lift and transport intuition from one context to another without forsaking formality. To some degree these abstractions must always be built from nitty gritty details. In mathematics it's a matter of didactics to find the most efficient bootstrapping process. In computer science it's a matter of library and language design.
- JoeAltmaier 12y agoAbstraction works only with strong context. A few symbols in an equation are a miracle of conciseness, but meaningful only after the symbols, operators and formal system are defined.
- tel 12y agoI never claimed otherwise. I think in fact that there are two forms of context—didactic and mandatory. Didactic context is personal, the context required for or used by a particular person in order to conceptualize and build confidence with a set of concepts (and their associated syntax, though it's close to meaningless so long as it doesn't get in your way too much). Mandatory context is more like a compact notion of why and how some mechanism is applied. For instance, you might bootstrap homology using point-set topology (educational context) and then enhance it using algebraic topology. Eventually, perhaps, the mandatory context is that homology is a measure of non-exactness of chain complexes and this concept can be lifted from its base context and presented wherever exactness is an interesting measure. Point being—language hardly exists in a vacuum. Good language invokes powerful concepts in an efficient manner and allows you to construct arguments using them. Good arguments can link seemingly disparate concepts with ease.
- netcan 12y agoOTOH, If you can communicate to me in a certain way with euphemisms and idioms, then all the information that I get can be gotten from that communication. It's not an impossible task, just a difficult one.
- MarkPNeyer 12y agoThis is not true. The information you get depends upon your unpacking and translation of those idioms and euphemisms, and is therefore dependent upon the totality of your life experiences up to that point. One benefit of formal languages is that a shared culture beyond the symbols used is unnecessary.
- libria 12y agoThis is the chief reason I'd support the "Anyone can learn to code" programs suddenly en vogue. We need our business owners - ideally customers - to be able to consider what exactly they want and don't want. We never need a line of code from them, but as long as they have the ability to consider their domain accurately, a good developer should be able to extract it from them.
- dyeje 12y agoThis is why exercises such as writing the steps to make a PB&J sandwich are instructive. They show how ambiguous natural language really is.
- nawitus 12y agoIt's possible* to build a software which understands natural human language and allows for vague, abstract expressions. Sometimes communication fails, which is why different "commands" should have different risk levels and different degrees of formality. For example, if I order pizza, I can be pretty vague, but when I order clothes online, I need to specify the size, color etc. more formally. * It's possible since you can always simulate a human brain with software, but there are of course more practical artifical general intelligence systems like the AIXI-mc.
- SilasX 12y agoNot surprisingly, when you try to go the other direction -- add disambiguating features to natural language, for cases where you don't want the other party to have to make a contextual guess -- people try to remove the precision Case in point: the debasement of the term "literally".
- baddox 12y agoAnd one consequence of that, which is often overlooked when evaluating any AI application, is that humans can be really "bad" (or at least inconsistent and indecisive) at these types of problems. People miscommunicate and mishear each other all the time. We disagree about whether things are grammatical, the definitions of words, the implications of someone's tone, whether two people look alike, what a hastily handwritten note says, etc. When evaluating an AI application, people always assume that, even if the problems themselves are hard, the responses are obvious and trivial to verify. But that's not the case even for everyday human interaction.
- JabavuAdams 12y agoThe AI needs to be able to ask for clarification.
- mcguire 12y agoFor some reason, Dijkstra quoting A.E. Houseman brightens my day. And then there's this: "Therefore, although changing to communication between machine and man conducted in the latter's native tongue would greatly increase the machine's burden, we have to challenge the assumption that this would simplify man's life."
- why-el 12y agoDijkstra is right, and this has been a standard problem in philosophy and logic. Only when one considers programming to be some new endeavor divorced from its logical roots that this problem seems new and puzzling. For more, check Russell's Theory of Definite Descriptions.
- scoofy 12y agoI'm not sure i follow. The problem of definite descriptions has more to do with reference in the external world. I'm not sure i see how it would be a problem with the limited scope of a formal framework in a programming language. When you're dealing with variables, "morning star" "evening star" problems are essentially irrelevant because you are defining things, rather than merely naming them.
- pessimizer 12y agoYou're still naming things, they're just things in a computer that you have to carefully specify so that they behave like their real-world referents within your model (also in a computer.) 'Morning'/'Evening' star won't matter until it does - and if it were something that wouldn't ever matter, you probably wouldn't have input it.
- scoofy 12y agoBut the framework is completely different. In nature, we must have an inductive framework. We will observe phenomena, and name. With computers, we are doing something very different. The framework is deductive, thus we do not name, we define. With naming, we can be wrong, because of the inherent negative knowledge of our framework. That is, in science, we can only prove with certainty that things aren't the case, not that things are. This is Karl Popper thesis. With defining, we cannot be wrong about things, we have the ability to have perfect knowledge, so the things we are referring to are defined to be such, we simply cannot be wrong about their identity and structure.
- falcolas 12y agoAll I can picture coming from this is reams of EULAs. Legal documents contain the most precise language we humans can create that can still be considered to be "natural", and they're still all but unreadable without the proper degree and legal context. Not precisely what I would call a "win" for the ease of programming
- josephschmoe 12y agoConsider that programming doesn't have to be linear - while legal documents need to be printed on a piece of paper. Granted, they have limited non-linearity (references to prior pages, pointers, etc.) but it generally has to be readable on physical paper. For natural language programming to work, computers simply need to be capable of making prudent guesses - so long as we show the information clearly, we can always fix those guesses. We can allow for limited instances of constructed languages, rewiring connections between words, etc.
- michas 12y agoThat would require us to first create "Strong AI" and it is still not proven whether that is at all possible.
- falcolas 12y agoLegal documents are just as referential as programs are - their function calls are simply defined in a natural way, i.e. "Except for S6.6, S8.2, and S10.2, the test samples are stabilized at test room temperature prior to testing.", or "The following terms of service and end user license agreement (“EULA”) constitute an agreement between you and Rovio Entertainment Ltd, and its affiliates (“Rovio”). ". You mention that such references are limited in nature, but laws are rarely as limited in their references as EULAs are. Plus, there's a whole layer of context which exists outside the written document - the exact legal definition of words. I just don't think that a "prudent" guess will be enough, especially as you start distributing such programs to machines or situations where the context is different.
- shubb 12y agoThis guy made an attempt - http://en.wikipedia.org/wiki/Ithkuil http://en.wikipedia.org/wiki/Ithkuil Reading 'round trip' translations via Ithkuil is interesting. Our father in heaven hallowed be your name May the [metaphorical] environment which fosters/sustains your rule eventually [metaphorically] permeate us As for your aspirations, may they be made real on Earth, not just in heaven please be one who enables us to eat and drink our critical sustenance And forgive us in regard to our moral transgressions in the way we grant and receive forgiveness amongst each other may we successfully avoid having desires [that are] against our better judgement) and be one who enables us to successfully avoid ideas associated with the Devil). Without poetry, things are more clearly weird.
- davesque 12y agoThis reminds me of when I first learned to program. By far the hardest part was learning how to think clearly and discretely. It changed the way I looked at the world completely. Really, we should want people to overcome this challenge, not avoid it.
- Grue3 12y agoThe counterpoint would be Inform 7 [1], a natural language-based programming language for interactive fiction. [1] http://inform7.com/ http://inform7.com/
- the_af 12y agoInform is a formal language with precise disambiguation mechanisms that natural language doesn't have. The goal is not simply to replace curly braces and other symbols with English words; unlike what COBOL would have us think, that road doesn't lead to natural language at all.
- nebstrebor 12y agoThe same could be said of "natural language contracts" and "natural language laws and regulations". Lawyers get hounded for "legalese" but its just a form of code--based on but deviated from natural language--to try to overcome the inherent inefficiencies of natural language.
- bsenftner 12y agoI've been working with a natural language conversational agent for the last few months, creating a simulated personality from a novel, as a promotion for the novel. Natural language opens up a huge host of unreasonable expectations from the user, but more interesting is the utter gibberish people enter thinking they are conversing. When I say utter gibberish, that is exactly what people enter: sentence fragments with no subject, no verb and no correct spellings outside of "a", even "the" is most often spelled "teh". I suspect "natural language" makes people relax, but even when we hook in ASR (automated speech recognition) to get away from the gibberish spellings, the "sentences" people enter do not make sense. To some degree, I believe people are testing the limits of the natural language and knowledge base backing it, but too many of the "conversations" reveal an expectation of unreal super knowledge, like "you should know what I'm hinting, even though I can't spell or describe it"
- TheLoneWolfling 12y agoSounds a lot like SMS conversations. It might as well be a different language in a lot of ways.
- canjobear 12y agoIt's sad to see him buying into this silliness: > Remark. As a result of the educational trend away from intellectual discipline, the last decades have shown in the Western world a sharp decline of people's mastery of their own language: many people that by the standards of a previous generation should know better, are no longer able to use their native tongue effectively, even for purposes for which it is pretty adequate.
- shubb 12y agoWhen people gain a certain authority by being very smart in a narrow field, they often use it to talk about the problems of society in general. Because though they are an expert in their small field, but no more informed or unbiased than your friend at the pub, they end up sounding dumb. In this and some of other writings, he would do well to think and gather data about social issues, or talk mostly about algorithms.
- jodrellblank 12y agoAll sorts of people talk about all sorts of things. When someone who is famous talks about all sorts of things, it's fashionable to diss and mock them for "speaking outside their authority", yet everyone else is free to ramble about whatever they like. You're doing an inverse arugment by authority here; "whatever Dijkstra says about [not-programming] is wrong and should not be listened to, because of who the speaker is".
- shubb 12y agoYeah, but he seems to be predicting the decline and fall of western civilisation because of unspecific use of language by young people these days. As there is no single definition of western civilisation, this is ironic as well as dumb. The man in the pub may have a good point. If you read Djikstra's other essays where he wanders off subject, you'll motice he rarely does. He sounds like an angry old man, lost in dreams of a better past that never was.
- pnathan 12y ago
- tree_of_item 12y agoDijkstra is wrong on this one. Siri and Cortana have already achieved this for trivial classes of programs, and they will only improve. People comparing natural language programming to EULAs are missing the point entirely: natural language input guides a search process for formal programs, it isn't literally "the program" itself.
- tel 12y agoI think Djikstra would not be bothered by this. His arguments tend to be that even with such a search process it's the very providence of formal language to give someone the power to guide that search. In other words, you'd need formal language to be able to specify what you truly want, then would "translate" it to natural language to execute the search, the processor would search for the proper formal language expression, and then you would verify. Or you could just skip all the intermediate steps.
- tree_of_item 12y agoIt's the developers of agents like Siri and Cortana, not the users, who need formal language. Anyway I don't think we're disagreeing with each other: there is always going to be a place for formal languages, they won't ever go away and be "replaced" with natural language interfaces, it's just that Jane Random will be more than happy to speak some gibberish to her computer and let the machine figure things out.
- tel 12y agoOh but we are: I don't think Jane Random will ever reach so far into that direction until her desires become vastly simplified. So in a Wall-e style future then yes, but in one where people still do things creatively there will always be need for formality.
- mamcx 12y agoSo, they are not programming. The ones that build the backend do it, and put a natural input interface as a frontend.
- sp332 12y agoThis reminds me of Inform 7. The source code for the language is pretty much plain English. I like this because programs are read more often than they are written, and it's usually very easy to read a program and see what's going on. But the syntax is still pretty limited, and it only understands certain ways of expressing things. So you still have to learn the syntax and very specific semantics, even though the language looks like English.
- todd8 12y agoI've noticed the limitation of natural language frequently. Sometimes, its just the inability of natural language to deal with levels of abstraction precisely. Sometimes, its the large assumed domain context that accompanies the use of natural language when describing procedures. I had clients once where both of these limitations prevented us from being able to produce a product for them. They where incredibly successful Wall Street types. They wanted a software system written that would automate some of what they did. They were traders, but not interested in high velocity trading. After a weeks of meetings about high level goals, we had a meeting to finally get down to specifics about the procedures and functionality that they wanted. They simply couldn't describe in precise language what they did! They had been doing it for years and years very successfully, but we couldn't help them because they couldn't describe what they did. It was very odd. They worked with sophisticated mathematical models and strange rules of thumb, the morning news, and the perceived level of activity on the exchange floor. Some of them used fancy interactive graphs while others relied on a simple printout of a spreadsheet full of numbers. The universe they worked in was very complex and involved decision making that, apparently, was hard to describe in words. Imaging a world class boxer trying to put into words the algorithm that he used to win a match. It was a bit like that.
- deleted 12y ago[deleted]
- thisjepisje 12y agoMeanwhile we have things like Wolfram Alpha and Google search trying to process natural language in the place of more code-like input.
- jdmichal 12y agoThere is a joke that perfectly illustrates this entire article: A programmers wife asks him, "Please go to the store and buy a carton of milk, and if they have eggs, buy a dozen." The programmer returns home, and his wife is very angry with him. "Why did you buy twelve cartons of milk?!" English SE question detailing the linguistic mechanisms: http://english.stackexchange.com/questions/40234/bring-6-eggs-if-there-are-potatoes-bring-9 http://english.stackexchange.com/questions/40234/bring-6-egg...
- jiggy2011 12y agoWouldn't this imply that the "buy" instruction is stateful?
- cousin_it 12y agoAlso, >> At some point I hope to have computer systems I can program by voice in English, as in "House? Could you wake me up at 7?" > Yeah, well, I fear the answer will be yes (it could), but it won't do so since you haven't asked it to wake you up, only if it could. From an exchange on python-list, https://mail.python.org/pipermail/python-list/2003-October/175717.html https://mail.python.org/pipermail/python-list/2003-October/1...
- schoen 12y agoWow, the examples in the SE discussion are awesome. I was aware of some of these linguistic issues, but the examples really underscore how subtle pragmatics can be. (The examples give completely syntactically parallel sentences that are pragmatically resolved in opposite ways.)
- josephschmoe 12y agoThis article is an Appeal to Novelty fallacy. He never gives a reason why explicit language is better - just that it occurred later in civilization. Beyond this, natural language programming doesn't preclude explicitness. You could still have portions of limited explicit language or even portions of actual code if that is insufficient. Natural language programming gets us two advantages: 1. Easy entry (presumably what the author cares about) 2. A language which is composed of an infinite number of DSLs - but without the pains of limited language scope and in which DSLs are actually easy to write. This actually fixes the problem author was taking about - using a language for a purpose it clearly wasn't meant to. And if you think natural language programming is going to get rid of symbolism in language, I've got a U+1F309 to sell you.
- scoofy 12y agoGraduate of analytic philosophy here (concentrating in philosophy of language), and my take away is a sloppy: "It's not a bug, it's a feature." Sorry, but this is a completely shocking article to me. First in it's immediate dismissal of any formalism inherent in natural language, but also with the ease at which he dismisses the proposition without any real consideration. If we learned anything from Chomsky, it's that the underlying grammar we are born with is both instinctual, and follows formal rules. To say differently is literally, demonstrably false. Irregular verbs, for example, aren't learned in the traditional sense, one must actually unlearn the formal rules. Any child that tells you she "swimmed" all afternoon is using a more formal version of English than you do. The idea of a natural language programming language is flawed, but not by formalism. It's flawed by the evolutionary nature of natural languages. That is, the very people that he states "are no longer able to use their native tongue effectively," are probably using a new dialect that shares a common ancestor with his more "traditional" usage. Many people in this thread are talking about the inability of plebes to express what they actually want. This is a fair point, but not a problem with language specifically. Communication tools would need to be employed by a computer in the same way as humans use them. E.g., a simple ambiguity checker could work wonders here, as it does between humans when someone you are talking to simply says, "What did you mean when you said you 'realized you forgot your phone at the train station'? Did you forget at the train station, or realize at the train station?". What IS a problem, however, is Quine's indeterminacy of translation. That could pose serious hurdles that may be insurmountable, however, we still have effective communication between humans, so it's simple to see how this may only be a theoretical problem, rather than a formal one. This subject should be under the purview of analytic philosophy and linguistics, not mathematics or computer science.
- leephillips 12y ago"If we learned anything from Chomsky, it's that the underlying grammar we are born with is both instinctual, and follows formal rules. To say differently is literally, demonstrably false." The rejection of this idea is not only not "demonstrably false", it's actually pretty commonplace among linguists. It would be more accurate to say that Chomsky's theory of a universal grammar is demonstrably false. "the evolutionary nature of natural languages" One of Chomsky's more widely criticized ideas (and a pretty bizarre one), is that the language instinct could not have arisen by evolution through natural selection.
- pjungwir 12y agoI saw the title and thought, "Oh good, someone else who thinks like Dijkstra!" Oh well. :-) I feel like the halting problem and Godel's theorem imply programmers will never be out of a job, and the best we can do is build out more and more solutions for specific use-cases, like Wordpress and Shopify. I don't think there will ever be a general-purpose AI that can write computer programs. At least not in my lifetime or my children's. And btw, has anyone else felt that the Halting Problem and Godel's theorem are two sides of the same coin? Is there any formal connection between them? I feel like they are not "independent" (in the sense that Euclid's 5th postulate is independent).
- ruggeri 12y agoHaha, the first thing I thought was that this was Dijkstra. UTexas + "Foolishness" => Dijkstra.
- arketyp 12y ago>And btw, has anyone else felt that the Halting Problem and Godel's theorem are two sides of the same coin? Is there any formal connection between them? I feel like they are not "independent" (in the sense that Euclid's 5th postulate is independent). The theorem of the unsolvability of the halting problem is used in modern proofs of Gödels incompletness teorem(s) [1]. Hofstadter writes about this relation in Gödel Escher Bach as well. [1] http://www.amazon.com/Lectures-Logic-Set-Theory-Mathematical/dp/0521168465 http://www.amazon.com/Lectures-Logic-Set-Theory-Mathematical...
- quinnchr 12y agohttp://en.wikipedia.org/wiki/Halting_problem#Relationship_with_G.C3.B6del.27s_incompleteness_theorems http://en.wikipedia.org/wiki/Halting_problem#Relationship_wi...
- Uncompetative 12y agoAnything open to ambiguity can be resolved through dialogue.
- ar7hur 12y agoNatural language is ambiguous: one phrase often has multiple meanings. That’s the result of many thousands of years of evolution, and it’s actually very efficient. If we had to be always explicit, our phrases and sentences would be much, much longer — and boring. When A says something to B, A makes assumptions on B’s context, common sense,beliefs and knowledge. The verbal message itself just contains the minimum information needed, on top of this pre existing information, in order for B to get it. Natural Language can be seen as a very efficient compression algorithm. The phrase the speaker chooses is the shortest message, given the context of the receiver. Programming a computer with Natural Language is incredibly difficult, because Natural Language alone, without the context it is built upon, really lacks much of the information the computer needs to operate the program.
- avens19 12y agoThis is my favorite part of software engineering. The fact that there are so few instructions you can actually give the machine and that you have to map your abstract ideas onto those instructions
- malisper 12y agoDijkstra clearly points out that it would be impossible to program in a natural language. The thing is there are constructed languages such as Lojban[0]. Lojban, while semantically ambiguous, is grammatically unambiguous. This means a computer can understand something said in Lojban, but a computer cannot perfectly understand what is meant. While I'm no expert, I'm pretty sure it would not be very hard to create a computer interface using Lojban. I'm curious as to if anyone can explain why this is or isn't feasible. [0] http://www.lojban.org/tiki/Lojban http://www.lojban.org/tiki/Lojban
- rwallace 12y agoThat wouldn't help significantly, because the hard part of getting a computer to understand instructions in English isn't understanding English, it's understanding the universe. Suppose you want a robot you can give instructions like "clean the kitchen". Programming the robot to understand this as performing the action 'clean' on the object 'kitchen' is something we can already do. The problem is that the robot doesn't know how to perform that task. It doesn't even know what what state of affairs constitutes the desirable end result of a clean kitchen (as opposed to e.g. an empty kitchen because it threw out all your food and cutlery along with the trash). That knowledge is the meat of the problem, and it's just as hard in any language.
- LeicaLatte 12y agoI like that Dijkstra used the word foolish. As someone who has interacted with Google, Microsoft and Apple's natural language systems I am glad this was ignored. Happy someone stayed hungry.
- barrkel 12y agoIn another comment, I compared the process of making computers do our will to manipulating a lever, the lever being made out of abstractions. What Google, MS and Apple's NLP systems are doing is mapping your words to a selection of pre-prepared levers. It's simplistic in the extreme compared to the real problem of being able to create new levers. IMO, in dismissing Dijkstra, you completely missed his point.
- LeicaLatte 12y agoDon't see any levers in the article lol I have no clue of what u saying sorry I definitely think the aspiration for natural language programming has only made things better and something we all look forward to
- cramerica 12y agoThe problem is of course the vagueness in natural languages caused by the complexity of its grammar and the unstated contextual nature of it all. "The black truck driver ran through the red light." Is the truck black or is the truck driver black? Is the driver driving, or is he running on foot? Is the red light a traffic indicator, or is it a just a beam of red light? Teaching a computer to figure out the intended interpretation here is a monumental task, and teaching the people to understand how their use of language is actually very easy to misunderstand is even harder.
- Qantourisc 12y agoIndeed, but figuring this out is trick In Western countries you'd assume it's a black driver. In a country where almost everyone is black you'd assume a black truck. So the code could have bugs depending on the location/culture (and thus context).
- hayksaakian 12y agoMaybe we need some contextual analysis capabilities and new class of errors based on overly ambiguous code. (Along with a user defined value that let's the computer take its best guess)
- michaelvkpdx 12y agoIf you use the same language to solve a problem as you use to describe the problem and to define success, then your ability to accurately solve the problem will be constrained by the level of precision that is available in the language being used. Given this- natural language programming can hope to achieve reasonable levels of precision in very few languages. English, for example, has over a million words, while French and Italian are both under 100K. That 10x discrepancy in words means that there is necessarily far more imprecision in romance languages than English. Graamatical constructs can add precision and clarity but cannot make up for the inherent gap in vocabulary precision. Someone with more knowledge can comment on the feasibility of precise NLP in non-English, non-romance languages. If, however, acceptance testing is defined through the precision of a low-level programming language, but the problem is defined in a less-precise natural language, there will always be a precision mismatch between the languages used to define the problem. A solution may be implemented that addresses the natural language issue but cannot meet the constraints of the programming language.
- tim333 12y agoI kind of disagree with the article and would like to be able to use natural language. The fact that computers are currently too dumb to understand English is an issue but not the one the author seems to be going on about. One of the reasons I like Python is it reads rather like English making code easy to understand and one of the main reasons for Lisp not really taking off is its reading so unlike natural languages makes it hard to understand. The comparison with maths seems false to me - many mathematical concepts express very badly in English and elegantly in mathematical symbolism - complex numbers, path integrals and all that. There seems little with that kind of complexity in computer science it's all add this, write this to the database, draw this on the screen etc.
- markbnj 12y agoI think you missed Dijkstra's point. Why don't we use "natural language" to reason about mathematics, physics, logic, or even the structure of language itself?
- tim333 12y agoPossibly. We do in fact use natural language to reason about mathematics and physics - if you look at any text book it's about 90% english words and 10% equations. But I'll give you the equations are important and powerful in math and physics but I'd argue less so in computer programming.
- the_af 12y ago@tim333 Dijstra was arguing that mathematics was actually held back until mathematicians decided to embrace a formal system to describe it.
- JabavuAdams 12y agoActually, we do all of these things. Why do proofs have commentary, and why do we have physics text books?
- the_af 12y agoBut people are too dumb to understand English as well. In fact, I may have missed your point entirely! (which, oddly, would also favor my position). Why do you want computer programs to improve at something people are notoriously bad doing? Python is nothing like English. It is an extremely precise formalism, and thank god for that.
- skywhopper 12y agoThat was a good article, and I agree with his take about the value of using natural language to program computers. However, the last, and unnecessary, "remark" undermines the entire essay by revealing a profound misunderstanding of the nature of human language, thereby placing himself firmly into the irrelevant crank category in the minds of many potential readers.
- JabavuAdams 12y agoWhat this misses is that it can be useful to structure design as a conversation, rather than a monologue. We often make this mistake with computer systems. I.e. the need to specify everything up front. Imagine a workflow where the process of design is a conversation with the system. To some extent, REPLs capture this, but they're still driven wholly by the programmers.
- hyp0 12y agosee also natural language maths and natural language law. though, to be fair, eliminating useless jargon is helpful, but you've got to keep the useful jargon.
- mwfunk 12y agoSometimes I wish that the term 'language' had never been used to describe the blobs of text we use to create formal specifications for programs. This invites all sorts of comparisons/analogies/metaphors to spoken and written languages that may not necessarily be meaningful or constructive. I think of source code as being more analogous to architectural blueprints or formal logic than someone's verbal description of an object. It's just a coincidence that source code is governed by structures and concepts that exist in human languages. Usually when people say they want to be able to create software with natural language, what they want are better tools that allow them to more efficiently create something, with less time spent worrying about syntax or technical minutiae. This outcome doesn't require natural language, it just requires better tools.