7 ms·
The 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 lan
by kyllo 12y ago
The 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.