March 21, 2015
On 2015-03-21 at 20:13, Joakim wrote:
>> "Find me the best deal on a S6"
> [...]
> Just tried it on google's voice search, it thought I said "Find me the best deal on a last sex" the first time I tried.

Obviously Google tries to converge the query with what is usually searched for. OTOH that's one of the areas you probably wouldn't want to browse through using a voice interface. :)


>> "There was this famous quote QUOTE to be or not to be END QUOTE on page six END PARAGRAPH..."
> Just read that out normally and it'll be smart enough to know that the upper-case terms you highlighted are punctuation marks and not part of the sentence, by using various grammar and word frequency heuristics.  In the rare occurrence of real ambiguity, you'll be able to step down to a lower-level editing mode and correct it.

Yeah, I've exaggerated the problem. The deciding factor will be the required amount of stepping down to do low-level editing, even with a system supported by good machine learning, considering all the homonyms and words having many meanings. But let's assume that this was solved. I think the remaining "END PARAGRAPH", "OPEN BRACE" or "COMMA" problem will go away with a compromise: people will just tell stories like they normally do, and let the punctuation be added automatically using AST, interval and intonation analyses. And the dying breed of writers who care about punctuation very much will continue using keyboards.


>> Therefore I just cannot imagine voice being used anywhere where exact representation is required, especially in programming:
>>
>> "Define M1 as a function that takes in two arguments. The state of the machine labelled ES and an integer number in range between two and six inclusive labelled X. The result of M1 is a boolean. M1 shall return true if and only if the ES member labelled squat THATS SQUAT WITH A T AT THE END is equal to zero modulo B. OH SHIT IT WAS NOT B BUT X. SCRATCH EVERYTHING."
>
> As Paulo alludes to, the current textual representation of programming languages is optimized for keyboard entry. Programming languages themselves will change to allow fluid speech input.

That's true, programming languages will have to change. For example the distinction between lower and upper case is artificial and it was the biggest stumbling block in that video as well. That will have to go away along with other stuff. But if you look at my function definition, it doesn't have that, nor does it use parentheses, semicolons, etc., so it's "voice-ready". My question is: at which point would that be considered an efficient method to define a program's component that we would choose to use instead of the current succinct symbolic notation?


> We still have some work to do to get these speech recognition engines there, but once we do, the entire visual interface to your computer will have to be redone to best suit voice input and *nobody* will use touch, mice, _or_ keyboards after that.

Yeah, right, people will create drawings with voice commands. :)  Every interface has its rightful domain and voice ain't best for everything. Or do you mean that touch will go away but instead people will be waving their hands around?
March 21, 2015
On Sat, Mar 21, 2015 at 07:13:10PM +0000, Joakim via Digitalmars-d wrote: [...]
> On Saturday, 21 March 2015 at 15:47:14 UTC, H. S. Teoh wrote:
> >It's about the ability to abstract, that's currently missing from today's ubiquitous GUIs. I would willingly leave my text-based interfaces behind if you could show me a GUI that gives me the same (or better) abstraction power as the expressiveness of a CLI script, for example. Contemporary GUIs fail me on the following counts:
> >
> >1) Expressiveness: there is no simple way of conveying complex
> --snip--
> >5) Precision: Even when working with graphical data, I prefer text-based interfaces where practical, not because text is the best way to work with them -- it's quite inefficient, in fact -- but because I can specify the exact coordinates of object X and the exact displacement(s) I desire, rather than fight with the inherently imprecise mouse movement and getting myself a wrist aneurysm trying to position object X precisely in a GUI. I have yet to see a GUI that allows you to specify things in a precise way without essentially dropping back to a text-based interface (e.g., an input field that requires you to type in numbers... which is actually not a bad solution; many GUIs don't even provide that, but instead give you the dreaded slider control which is inherently imprecise and extremely cumbersome to use. Or worse, the text box with the inconveniently-small 5-pixel up/down arrows that changes the value by 0.1 per mouse click, thereby requiring an impractical number of clicks to get you to the right value -- if you're really unlucky, you can't even type in an explicit number but can only use those microscopic arrows to change it).
> 
> A lot of this is simply that you are a different kind of computer user than the vast majority of computer users.  You want to drive a Mustang with a manual transmission and a beast of an engine, whereas most computer users are perfectly happy with their Taurus with automatic transmission.  A touch screen or WIMP GUI suits their mundane tasks best, while you need more expressiveness and control so you use the CLI.

Of course. But we're talking here about interfaces for *programmers*, not for your average Joe, for whom a pretty GUI with a button or two would suffice.


> The great promise of voice interfaces is that they will _both_ be simple enough for casual users and expressive enough for power users, while being very efficient and powerful for both.

Call me a skeptic, but I'll believe this promise when I see it.


> We still have some work to do to get these speech recognition engines there, but once we do, the entire visual interface to your computer will have to be redone to best suit voice input and nobody will use touch, mice, _or_ keyboards after that.

This is the unpopular opinion, but I'm skeptical if this day will ever come. The problem with voice recognition is that it's based on natural language, and natural language is inherently ambiguous. You say that heuristics can solve this, I call BS on that. Heuristics are bug-prone and unreliable (because otherwise they'd be algorithms!), precisely because they fail to capture the essence of the problem, but are merely crutches to get us mostly there in lieu of an actual solution.

The inherent ambiguity in natural language comes not from some kind of inherent flaw as most people tend to believe, but it's actually a side-effect of the brain's ability at context-sensitive comprehension. The exact same utterance, spoken in different contexts, can mean totally different things, and the brain has no problem with that (provided it is given sufficient context, of course). The brain is also constantly optimizing itself -- if it can convey its intended meaning in fewer, simpler words, it will prefer to do that instead of going through the effort of uttering the full phrase. This is one of the main factors behind language change, which happens over time and is mostly unconscious.  Long, convoluted phrases, if spoken often enough, tend to contract into shorter, sometimes ambiguous, utterances, as long as there is sufficient context to disambiguate. This is why we have a tendency toward acronyms -- the brain is optimizing away the long utterance in preference to a short acronym, which, based on the context of a group of speakers who mutually share similar contexts (e.g., computer lingo), is unambiguous, but may very well be ambiguous in a wider context. If I talk to you about UFCS, you'd immediately understand what I was talking about, but if I said that to my wife, she would have no idea what I just said -- she may not even realize it's an acronym, because it sounds like a malformed sentence "you ...". The only way to disambiguate this kind of context-specific utterance is to *share* in that context in the first place. Talk to a Java programmer about UFCS, and he probably wouldn't know what you just said either, unless he has been reading up on D.

The only way speech recognition can acquire this level of context in order to disambiguate is to customize itself to that specific user -- in essence learn his personal lingo, pick up his (sub)culture, learn the contexts associated with his areas of interest, even adapt to his peculiarities of pronunciation. If software can get to this level, it might as well pass the Turing test, 'cos then it'd have enough context to carry out an essentially human conversation.  I'd say we're far, far from that point today, and it's not clear we'd ever get there. We haven't even mastered context-sensitive languages, except via the crutch of parsing a context-free grammar and then apply a patchwork of semantic analysis after the fact, let alone natural language, which is not only context-sensitive but may depend on context outside of the input (cultural background, implicit common shared knowledge, etc.). Before we can get there, we'd have to grapple with knowledge representation, context-sensitive semantics, and all those hard problems that today seem to have no tractable solution in sight.

P.S. Haha, it looks like my Perl script has serendipitously selected a quote that captures the inherent ambiguity of natural language -- you can't even tell, at a glance, where the verbs are! I'd like to see an algorithm parse *that* (and then see it fall flat on its face when I actually meant one of the "non-standard" interpretations of it, such as if this were in the context of a sci-fi movie where there are insects called "time flies"...).


T

-- 
Time flies like an arrow. Fruit flies like a banana.
March 21, 2015
On Saturday, 21 March 2015 at 21:46:10 UTC, H. S. Teoh wrote:
> This is the unpopular opinion, but I'm skeptical if this day will ever
> come. The problem with voice recognition is that it's based on natural
> language, and natural language is inherently ambiguous. You say that
> heuristics can solve this, I call BS on that. Heuristics are bug-prone
> and unreliable (because otherwise they'd be algorithms!), precisely
> because they fail to capture the essence of the problem, but are merely
> crutches to get us mostly there in lieu of an actual solution.

Right, but it is likely that the nature of programming will change. In the beginning of the web the search engines had trouble matching anything but exact phrases, now they are capable of figuring out what you probably wanted.

Take music composition, people still write notes explicitly as discrete symbols, yet others compose music by recording a song, and then manipulating it (i.e. auto tune). So, even though you can do pitch recognition many probably use discrete interfaces like keyboard or a mouse for writing music, yet new forms of music and composition has come with the ability to process audio in a more intuitive, evolutionary fashion.

Same thing is likely to happen with programming, e.g. a different models for computation or at least new ways to modify existing components. Like neural simulations, adaptive systems, fuzzy logic etc...

You also have areas like program synthesis, genetic programming etc, where the computer itself generates the program to fit a specified result. When the computer is capable of that you might have a more "top down" programming model where you just keep adding constraints until you are happy with the result.
March 21, 2015
> Right, but it is likely that the nature of programming will ni
> change. In the beginning of the web the search engines had trouble matching anything but exact phrases, now they are capable of figuring out what you probably wanted.

As you implicitly recognize later, it's not either/or, in the same way that spreadsheets (ugh) constituted a new way of programming and people continued to program conventionally similar kinds of tasks even as spreadsheets exploded in usage (and now we are back to finding it often more convenient to write code again, plus the robustness that never went away).

HS Teoh is right about context, and the superiority of the written word for organizing and expressing thinking at a very high level.  The nature of human memory and perception means that is unlikely to change very soon, if ever.

Dr Iain Mcgilchrist (The Master and His Emissary) is very good on context, BTW.

> You also have areas like program synthesis, genetic programming etc, where the computer itself generates the program to fit a specified result. When the computer is capable of that you might have a more "top down" programming model where you just keep adding constraints until you are happy with the result.

No doubt these techniques will continue to grow in usefulness (I certainly hope so, and am making that bet), but the ultimate implications depend on your conception of what creativity is.
March 22, 2015
On Saturday, 21 March 2015 at 23:58:18 UTC, Laeeth Isharc wrote:
> HS Teoh is right about context, and the superiority of the written word for organizing and expressing thinking at a very high level.  The nature of human memory and perception means that is unlikely to change very soon, if ever.

Actually, the visual system is a lot more powerful than our very limited capability of dealing with abstract symbols.

But developing visual languages/tools for programming is very challenging and quite expensive given the foundation we have in math.

> No doubt these techniques will continue to grow in usefulness (I certainly hope so, and am making that bet), but the ultimate implications depend on your conception of what creativity is.

Unfortunately progress will probably be defined by the industry desire to commoditize the programming profession, which basically will drive it more towards "configuration" than "construction". We already see this? An incredible amount of websites are built on top of a technical pile of configurable dung, Wordpress (and Php).

Add to this that the new generations of nerds grow up with a different knowledge frame (ipads) than the programmers of the 80s who grew up with peeks, pokes and machine language. There is bound to be some shift in what the typical programmers do.
March 22, 2015
On Friday, 20 March 2015 at 22:55:24 UTC, Laeeth Isharc wrote:
> On Friday, 20 March 2015 at 07:37:04 UTC, Paulo  Pinto wrote:
>> Language features should be tested with real users using scientific validation processes, instead of being blindly added to a language.
>
> There is nothing intrinsically more scientific about basing a decision on a study rather than experience and judgement (including aesthetic judgement), which is not to say that more data cannot be useful,


Of course there is. Experience and judgement aren't measurable. You don't have science without numbers.

Atila


March 22, 2015
On Sunday, 22 March 2015 at 09:30:38 UTC, Atila Neves wrote:
> On Friday, 20 March 2015 at 22:55:24 UTC, Laeeth Isharc wrote:
>> On Friday, 20 March 2015 at 07:37:04 UTC, Paulo  Pinto wrote:
>>> Language features should be tested with real users using scientific validation processes, instead of being blindly added to a language.
>>
>> There is nothing intrinsically more scientific about basing a decision on a study rather than experience and judgement (including aesthetic judgement), which is not to say that more data cannot be useful,
>
>
> Of course there is. Experience and judgement aren't measurable. You don't have science without numbers.
>
> Atila

But then, how can I keep my delusions and pretend they are fact because I have experience, judgment and, it goes without saying, a great sense of aesthetic  ?
March 22, 2015
On Sunday, 22 March 2015 at 09:30:38 UTC, Atila Neves wrote:
> Of course there is. Experience and judgement aren't measurable. You don't have science without numbers.

WTF?
March 22, 2015
On 2015-03-22 at 11:03, "Ola Fosheim =?UTF-8?B?R3LDuHN0YWQi?= <ola.fosheim.grostad+dlang@gmail.com>" wrote:
> On Sunday, 22 March 2015 at 09:30:38 UTC, Atila Neves wrote:
>> Of course there is. Experience and judgement aren't measurable. You don't have science without numbers.
>
> WTF?

Heh, everything is measurable, but sometimes the chosen metrics and analysis are just ridiculous and not worth the paper they are printed on, even though all rules of scientific reasoning were followed. :)
March 22, 2015
On Sunday, 22 March 2015 at 09:46:40 UTC, deadalnix wrote:
> But then, how can I keep my delusions and pretend they are fact because I have experience, judgment and, it goes without saying, a great sense of aesthetic  ?

You will keep your delusions and pretend they are fact until you take a course on the philosophy of science. The debate about qualitative and quantitative methods is long forgone. If you want a retake on that you will have to travel 50 years back in time.