www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - [Semi OT] The programming language wars

reply "deadalnix" <deadalnix gmail.com> writes:
I let this here. Very interesting and relevant to anyone here.

https://www.youtube.com/watch?v=mDZ-QSLQIB8
Mar 19 2015
parent reply Walter Bright <newshound2 digitalmars.com> writes:
On 3/19/2015 10:46 PM, deadalnix wrote:
 I let this here. Very interesting and relevant to anyone here.

 https://www.youtube.com/watch?v=mDZ-QSLQIB8
It's nearly an hour long. Got a TL;DW ?
Mar 20 2015
parent reply "Paulo Pinto" <pjmlp progtools.org> writes:
On Friday, 20 March 2015 at 07:14:58 UTC, Walter Bright wrote:
 On 3/19/2015 10:46 PM, deadalnix wrote:
 I let this here. Very interesting and relevant to anyone here.

 https://www.youtube.com/watch?v=mDZ-QSLQIB8
It's nearly an hour long. Got a TL;DW ?
Language features should be tested with real users using scientific validation processes, instead of being blindly added to a language. This means using tests groups with different types of backgrounds, applying the features in several situations, devising specific set of measurable targets and applying the whole statistic analysis to the results. For example, instead of having an online forum which syntax would be desired for the new feature X, have the whole set of options implemented and see which of them achieves better results with the respective study groups. An example that stuck with me was that languages that follow Algol/Pascal syntax lead themselves to less bugs, than those that follow C like syntax. There are quite a few other examples. Also the mention that as far as the researcher is aware, only Microsoft is pursuing such studies for language features. Don Syme is in the audience and gives an example how they did it for .NET generics. -- Paulo
Mar 20 2015
next sibling parent Walter Bright <newshound2 digitalmars.com> writes:
Thanks!
Mar 20 2015
prev sibling next sibling parent reply "w0rp" <devw0rp gmail.com> writes:
On Friday, 20 March 2015 at 07:37:04 UTC, Paulo  Pinto wrote:
 An example that stuck with me was that languages that follow 
 Algol/Pascal syntax lead themselves to less bugs, than those 
 that follow C like syntax.
That's probably skewed by C being the most popular language, which is optimised for bug creation.
Mar 20 2015
next sibling parent reply "Paulo Pinto" <pjmlp progtools.org> writes:
On Friday, 20 March 2015 at 11:48:20 UTC, w0rp wrote:
 On Friday, 20 March 2015 at 07:37:04 UTC, Paulo  Pinto wrote:
 An example that stuck with me was that languages that follow 
 Algol/Pascal syntax lead themselves to less bugs, than those 
 that follow C like syntax.
That's probably skewed by C being the most popular language, which is optimised for bug creation.
I said scientific studies, not asking joe/jane developer. Pick a random set of people without programming skills, using imaginary language X, with two types of syntax's to code a set of tasks in separate groups, one for each syntax. Measure each group behavior using proven analysis methods. At end of the study, the groups using the Algol based syntax will deliver less bugs. -- Paulo
Mar 20 2015
parent reply "Ola Fosheim =?UTF-8?B?R3LDuHN0YWQi?= writes:
On Friday, 20 March 2015 at 12:00:35 UTC, Paulo  Pinto wrote:
 At end of the study, the groups using the Algol based syntax 
 will deliver less bugs.
I think language syntax design these days should include the IDE. E.g. Dart's syntax is nothing special and not good at preventing bugs in itself, but the Dart syntax works very well when used with the Dart editor (based on Eclipse). These days it probably is a mistake to design a language syntax without considering what kind of IDE design the language is supposed to be used with.
Mar 20 2015
parent reply "Paulo Pinto" <pjmlp progtools.org> writes:
On Friday, 20 March 2015 at 12:07:25 UTC, Ola Fosheim Grøstad 
wrote:
 On Friday, 20 March 2015 at 12:00:35 UTC, Paulo  Pinto wrote:
 At end of the study, the groups using the Algol based syntax 
 will deliver less bugs.
I think language syntax design these days should include the IDE. E.g. Dart's syntax is nothing special and not good at preventing bugs in itself, but the Dart syntax works very well when used with the Dart editor (based on Eclipse). These days it probably is a mistake to design a language syntax without considering what kind of IDE design the language is supposed to be used with.
Given that I have been an IDE fan since the Amiga days, I fully agree. Every time I am on UNIX I feel like a time travel to the days of yore. Thankfully the situation has improved a lot in the last decade. -- Paulo
Mar 20 2015
parent reply ketmar <ketmar ketmar.no-ip.org> writes:
On Fri, 20 Mar 2015 13:28:45 +0000, Paulo  Pinto wrote:

 Given that I have been an IDE fan since the Amiga days, I fully agree.
=20
 Every time I am on UNIX I feel like a time travel to the days of yore.
being on non-nix system is a torture. there aren't even gcc, let alone=20 emacs/vim.=
Mar 20 2015
next sibling parent reply "H. S. Teoh via Digitalmars-d" <digitalmars-d puremagic.com> writes:
On Fri, Mar 20, 2015 at 05:04:20PM +0000, ketmar via Digitalmars-d wrote:
 On Fri, 20 Mar 2015 13:28:45 +0000, Paulo  Pinto wrote:
 
 Given that I have been an IDE fan since the Amiga days, I fully
 agree.
 
 Every time I am on UNIX I feel like a time travel to the days of
 yore.
being on non-nix system is a torture. there aren't even gcc, let alone emacs/vim.
Yeah, I've become so accustomed to the speed of keyboard-based controls that every time I use my wife's Windows laptop, I feel so frustrated at the rodent dependence and its slowness that I want to throw the thing out the window. But at another level, it's not even about keyboard vs. rodent... it's about *scriptability*. It's about abstraction. Typing commands at the CLI, while on the surface looks so tedious, actually has a powerful advantage: you can abstract it. You can encapsulate it into a script. Most well-designed CLI programs are scriptable, which means complex operations can be encapsulated and then used as new primitives with greater expressiveness. Sure you can have keyboard shortcuts in GUI programs, but you can't abstract a series of mouse clicks and drags or a series of keyboard shortcuts into a single action. They will forever remain in the realm of micromanagement -- click this menu, move mouse to item 6, open submenu, click that, etc.. I have yet to see a successful attempt at encapsulation a series of actions as a single meta-action (I've seen attempts at it, but none that were compelling enough to be useful.) You can't build meta-meta-actions from meta-actions. Everything is bound to what-you-see-is-all-you-get. You can't parametrize a series of mouse interactions the same way you can take a bash script and parametrize it to do something far beyond what the original sequence of typed commands did. Ultimately, I think rodent-based UIs will go the way of the dinosaur. It's a regression from the expressiveness of an actual language with grammar and semantics back to caveman-style point-and-grunt. It may take decades, maybe even centuries, before the current GUI trendiness fades away, but eventually it will become obvious that there is no future in a non-abstractible UI. Either CLIs will be proven by the test of time, or something else altogether will come along to replace the rodent dead-end with something more powerful. Something abstractible with the expressiveness of language and semantics, not regressive point-and-grunt. T -- Indifference will certainly be the downfall of mankind, but who cares? -- Miquel van Smoorenburg
Mar 20 2015
next sibling parent "CraigDillabaugh" <craig.dillabaugh gmail.com> writes:
On Friday, 20 March 2015 at 17:25:54 UTC, H. S. Teoh wrote:
 On Fri, Mar 20, 2015 at 05:04:20PM +0000, ketmar via 
 Digitalmars-d wrote:
 On Fri, 20 Mar 2015 13:28:45 +0000, Paulo  Pinto wrote:
 
 Given that I have been an IDE fan since the Amiga days, I 
 fully
 agree.
 
 Every time I am on UNIX I feel like a time travel to the 
 days of
 yore.
being on non-nix system is a torture. there aren't even gcc, let alone emacs/vim.
Yeah, I've become so accustomed to the speed of keyboard-based controls that every time I use my wife's Windows laptop, I feel so frustrated at the rodent dependence and its slowness that I want to throw the thing out the window. But at another level, it's not even about keyboard vs. rodent... it's about *scriptability*. It's about abstraction. Typing commands at the CLI, while on the surface looks so tedious, actually has a powerful advantage:
clip
 Ultimately, I think rodent-based UIs will go the way of the 
 dinosaur.
While I may not share you optimism for the future, I do agree the CLI is almost always better:o) One big advantage to CLI stuff is that when you come up against some tricky configuration, or rarely used command, you can write a little script (with comments) describing how to do it (and WHY you did it that way). Very handy for those tasks that you end up doing once every X months, and always forget the details of in between. How do you do that with a GUI? Make a video or open up OpenOffice/MS Word and start taking screen shots. Painful stuff. Same goes for configuration files which beat GUI-based configuration hands down. Having said all that having IDE-like, language aware, code-completion and background compilation, and a good debugger are a big plus for productivity in many cases.
Mar 20 2015
prev sibling next sibling parent reply "Paulo Pinto" <pjmlp progtools.org> writes:
On Friday, 20 March 2015 at 17:25:54 UTC, H. S. Teoh wrote:
 On Fri, Mar 20, 2015 at 05:04:20PM +0000, ketmar via 
 Digitalmars-d wrote:
 On Fri, 20 Mar 2015 13:28:45 +0000, Paulo  Pinto wrote:
 
 Given that I have been an IDE fan since the Amiga days, I 
 fully
 agree.
 
 Every time I am on UNIX I feel like a time travel to the 
 days of
 yore.
being on non-nix system is a torture. there aren't even gcc, let alone emacs/vim.
Yeah, I've become so accustomed to the speed of keyboard-based controls that every time I use my wife's Windows laptop, I feel so frustrated at the rodent dependence and its slowness that I want to throw the thing out the window. But at another level, it's not even about keyboard vs. rodent... it's about *scriptability*. It's about abstraction. Typing commands at the CLI, while on the surface looks so tedious, actually has a powerful advantage: you can abstract it. You can encapsulate it into a script. Most well-designed CLI programs are scriptable, which means complex operations can be encapsulated and then used as new primitives with greater expressiveness. Sure you can have keyboard shortcuts in GUI programs, but you can't abstract a series of mouse clicks and drags or a series of keyboard shortcuts into a single action. They will forever remain in the realm of micromanagement -- click this menu, move mouse to item 6, open submenu, click that, etc.. I have yet to see a successful attempt at encapsulation a series of actions as a single meta-action (I've seen attempts at it, but none that were compelling enough to be useful.) You can't build meta-meta-actions from meta-actions. Everything is bound to what-you-see-is-all-you-get. You can't parametrize a series of mouse interactions the same way you can take a bash script and parametrize it to do something far beyond what the original sequence of typed commands did. Ultimately, I think rodent-based UIs will go the way of the dinosaur. It's a regression from the expressiveness of an actual language with grammar and semantics back to caveman-style point-and-grunt. It may take decades, maybe even centuries, before the current GUI trendiness fades away, but eventually it will become obvious that there is no future in a non-abstractible UI. Either CLIs will be proven by the test of time, or something else altogether will come along to replace the rodent dead-end with something more powerful. Something abstractible with the expressiveness of language and semantics, not regressive point-and-grunt. T
When I use GUIs, my knowledge of keyboard shortcuts coupled with the mouse actions is no different than top gamer playing a FPS/RTS game. Sure, GUIs might not beat CLIs in terms of scriptability, but GUIs coupled with REPLs sure do the job pretty well. When I am on Mac OS X and Windows, reaching out for the CLI means using developer tools only available via the console or automating administration tasks. On the other hand when at any other UNIX flavours besides Mac OS X, it seems the CLI is unavoidable. As for CLIs regaining their central place in the world of computing, in a world going towards speech recognition and touch interfaces, I very much doubt CLI use will increase. -- Paulo
Mar 20 2015
next sibling parent ketmar <ketmar ketmar.no-ip.org> writes:
On Fri, 20 Mar 2015 18:31:06 +0000, Paulo Pinto wrote:

 As for CLIs regaining their central place in the world of computing, in
 a world going towards speech recognition and touch interfaces, I very
 much doubt CLI use will increase.
this is another overhyped trendy blah-blah, like "cloud computing". such=20 interfaces are for casual users. sure, when i want to simply listen music=20 or watch a movie, it's easier to tell that or point it with my finger.=20 but if i want to use my computer for something more complex, typing on=20 keyboard is simply faster and less error-prone than speaking. especially=20 if you cut off that stupid mouse. ;-)=
Mar 20 2015
prev sibling parent reply "Joakim" <dlang joakim.fea.st> writes:
On Friday, 20 March 2015 at 18:31:07 UTC, Paulo Pinto wrote:
 On Friday, 20 March 2015 at 17:25:54 UTC, H. S. Teoh wrote:
 Ultimately, I think rodent-based UIs will go the way of the 
 dinosaur.
 It's a regression from the expressiveness of an actual 
 language with
 grammar and semantics back to caveman-style point-and-grunt. 
 It may take
 decades, maybe even centuries, before the current GUI 
 trendiness fades
 away, but eventually it will become obvious that there is no 
 future in a
 non-abstractible UI. Either CLIs will be proven by the test of 
 time, or
 something else altogether will come along to replace the 
 rodent dead-end
 with something more powerful. Something abstractible with the
 expressiveness of language and semantics, not regressive
 point-and-grunt.
As for CLIs regaining their central place in the world of computing, in a world going towards speech recognition and touch interfaces, I very much doubt CLI use will increase.
What I was going to say too, neither CLI or GUI will win, speech recognition will replace them both, by providing the best of both. Rather than writing a script to scrape several shopping websites for the price of a Galaxy S6, I'll simply tell the intelligent agent on my computer "Find me the best deal on a S6" and it will go find it. As for touch, seems like a dead-end to me, far less expressive than anything else and really only geared for rudimentary interaction. It may always be there but you likely won't use it much. I do think some sort of hand gesture-based interface will stick around for when voice isn't expressive enough, ie you'll still want to use your hands when painting: http://www.engadget.com/2015/03/19/jaw-dropping-magic-leap-demo/ That video is not the way it will be done, as waving your arms around Minority Report-style is way too much effort, but something akin to the small finger movements I make on my touch-based trackpad, but in 3D, will likely be it.
Mar 20 2015
parent reply "H. S. Teoh via Digitalmars-d" <digitalmars-d puremagic.com> writes:
On Sat, Mar 21, 2015 at 04:17:00AM +0000, Joakim via Digitalmars-d wrote:
[...]
 What I was going to say too, neither CLI or GUI will win, speech
 recognition will replace them both, by providing the best of both.
 Rather than writing a script to scrape several shopping websites for
 the price of a Galaxy S6, I'll simply tell the intelligent agent on my
 computer "Find me the best deal on a S6" and it will go find it.
I dunno, I find that I can express myself far more precisely and concisely on the keyboard than I can verbally. Maybe for everyday tasks like shopping for the best deals voice recognition is Good Enough(tm), but for more complex tasks, I have yet to find something more expressive than the keyboard.
 As for touch, seems like a dead-end to me, far less expressive than
 anything else and really only geared for rudimentary interaction.  It
 may always be there but you likely won't use it much.
Yeah, it's just another variation of point-and-grunt. Except the grunt part is replaced with tap. :-P
 I do think some sort of hand gesture-based interface will stick around
 for when voice isn't expressive enough, ie you'll still want to use
 your hands when painting:
 
 http://www.engadget.com/2015/03/19/jaw-dropping-magic-leap-demo/
 
 That video is not the way it will be done, as waving your arms around
 Minority Report-style is way too much effort, but something akin to
 the small finger movements I make on my touch-based trackpad, but in
 3D, will likely be it.
You might be on to something. Manipulation of 3D holograms via hand motion detection perhaps might be what will eventually work best. T -- "Maybe" is a strange word. When mom or dad says it it means "yes", but when my big brothers say it it means "no"! -- PJ jr.
Mar 20 2015
parent reply FG <home fgda.pl> writes:
On 2015-03-21 at 06:30, H. S. Teoh via Digitalmars-d wrote:
 On Sat, Mar 21, 2015 at 04:17:00AM +0000, Joakim via Digitalmars-d wrote:
 [...]
 What I was going to say too, neither CLI or GUI will win, speech
 recognition will replace them both, by providing the best of both.
 Rather than writing a script to scrape several shopping websites for
 the price of a Galaxy S6, I'll simply tell the intelligent agent on my
 computer "Find me the best deal on a S6" and it will go find it.
I dunno, I find that I can express myself far more precisely and concisely on the keyboard than I can verbally. Maybe for everyday tasks like shopping for the best deals voice recognition is Good Enough(tm), but for more complex tasks, I have yet to find something more expressive than the keyboard.
"Find me the best deal on a S6" is only a little more complex than "make me a cup of coffee." Fine for doing predefined tasks but questionable as an ubiquitous input method. It's hard enough for mathematicians to dictate a theorem without using any symbolic notation. There is too much ambiguity and room for interpretation in speech to make it a reliable and easy input method for all tasks. Even in your example: You say: "Find me the best deal on a S6." I hear: "Fine me the best teal on A.S. six." Computer: "Are you looking for steel?" Now imagine the extra trouble if you mix languages. Also, how do you include meta-text control sequences in a message? By raising your voice or tilting your head when you say the magic words? Cf.: "There was this famous quote QUOTE to be or not to be END QUOTE on page six END PARAGRAPH..." Very awkward, if talking to oneself wasn't awkward already. 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."
Mar 21 2015
next sibling parent "Piotrek" <no_data no_data.pl> writes:
On Saturday, 21 March 2015 at 14:07:28 UTC, FG wrote:
 Now imagine the extra trouble if you mix languages. Also, how 
 do you include meta-text control sequences in a message? By 
 raising your voice or tilting your head when you say the magic 
 words? Cf.:

 "There was this famous quote QUOTE to be or not to be END QUOTE 
 on page six END PARAGRAPH..."

 Very awkward, if talking to oneself wasn't awkward already. 
 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."
Just for fun. A visualization of the problem from 2007 (I doubt there was breakthrough meanwhile) https://www.youtube.com/watch?v=MzJ0CytAsec Piotrek
Mar 21 2015
prev sibling next sibling parent reply "Paulo Pinto" <pjmlp progtools.org> writes:
On Saturday, 21 March 2015 at 14:07:28 UTC, FG wrote:
 On 2015-03-21 at 06:30, H. S. Teoh via Digitalmars-d wrote:
 On Sat, Mar 21, 2015 at 04:17:00AM +0000, Joakim via 
 Digitalmars-d wrote:
 [...]
 What I was going to say too, neither CLI or GUI will win, 
 speech
 recognition will replace them both, by providing the best of 
 both.
 Rather than writing a script to scrape several shopping 
 websites for
 the price of a Galaxy S6, I'll simply tell the intelligent 
 agent on my
 computer "Find me the best deal on a S6" and it will go find 
 it.
I dunno, I find that I can express myself far more precisely and concisely on the keyboard than I can verbally. Maybe for everyday tasks like shopping for the best deals voice recognition is Good Enough(tm), but for more complex tasks, I have yet to find something more expressive than the keyboard.
"Find me the best deal on a S6" is only a little more complex than "make me a cup of coffee." Fine for doing predefined tasks but questionable as an ubiquitous input method. It's hard enough for mathematicians to dictate a theorem without using any symbolic notation. There is too much ambiguity and room for interpretation in speech to make it a reliable and easy input method for all tasks. Even in your example: You say: "Find me the best deal on a S6." I hear: "Fine me the best teal on A.S. six." Computer: "Are you looking for steel?" Now imagine the extra trouble if you mix languages. Also, how do you include meta-text control sequences in a message? By raising your voice or tilting your head when you say the magic words? Cf.: "There was this famous quote QUOTE to be or not to be END QUOTE on page six END PARAGRAPH..." Very awkward, if talking to oneself wasn't awkward already. 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."
I don't expect programming will remain so low level in the future. We are at the infancy of our skills, when comparing with engineerings with a fee centuries of progress. For me the future lyes in something like Wolfram/Mathematic with natural voice processing.
Mar 21 2015
parent reply "deadalnix" <deadalnix gmail.com> writes:
On Saturday, 21 March 2015 at 15:51:38 UTC, Paulo Pinto wrote:
 I don't expect programming will remain so low level in the 
 future. We are at the infancy of our skills, when comparing 
 with engineerings with a fee centuries of progress.

 For me the future lyes in something like Wolfram/Mathematic 
 with natural voice processing.
People have been saying this for longer than I'm alive.
Mar 21 2015
next sibling parent "Joakim" <dlang joakim.fea.st> writes:
On Saturday, 21 March 2015 at 19:20:18 UTC, deadalnix wrote:
 On Saturday, 21 March 2015 at 15:51:38 UTC, Paulo Pinto wrote:
 I don't expect programming will remain so low level in the 
 future. We are at the infancy of our skills, when comparing 
 with engineerings with a fee centuries of progress.

 For me the future lyes in something like Wolfram/Mathematic 
 with natural voice processing.
People have been saying this for longer than I'm alive.
Unless you've been alive for a few centuries, they still could be right. ;)
Mar 21 2015
prev sibling parent reply "Paulo Pinto" <pjmlp progtools.org> writes:
On Saturday, 21 March 2015 at 19:20:18 UTC, deadalnix wrote:
 On Saturday, 21 March 2015 at 15:51:38 UTC, Paulo Pinto wrote:
 I don't expect programming will remain so low level in the 
 future. We are at the infancy of our skills, when comparing 
 with engineerings with a fee centuries of progress.

 For me the future lyes in something like Wolfram/Mathematic 
 with natural voice processing.
People have been saying this for longer than I'm alive.
You missed my remark about the age of computing versus other arts from engineering. We are still building bridges with wood and houses with clay. - Paulo
Mar 23 2015
parent "deadalnix" <deadalnix gmail.com> writes:
On Monday, 23 March 2015 at 10:40:12 UTC, Paulo Pinto wrote:
 On Saturday, 21 March 2015 at 19:20:18 UTC, deadalnix wrote:
 On Saturday, 21 March 2015 at 15:51:38 UTC, Paulo Pinto wrote:
 I don't expect programming will remain so low level in the 
 future. We are at the infancy of our skills, when comparing 
 with engineerings with a fee centuries of progress.

 For me the future lyes in something like Wolfram/Mathematic 
 with natural voice processing.
People have been saying this for longer than I'm alive.
You missed my remark about the age of computing versus other arts from engineering. We are still building bridges with wood and houses with clay. - Paulo
Maybe, and we will certainly see more of this in the future. However, that future may be far away, considering it is promised for decades at this point and still not up and running. Also, someone will have to code these systems, so the job we do now will still be necessary.
Mar 23 2015
prev sibling parent reply "Joakim" <dlang joakim.fea.st> writes:
On Saturday, 21 March 2015 at 14:07:28 UTC, FG wrote:
 On 2015-03-21 at 06:30, H. S. Teoh via Digitalmars-d wrote:
 On Sat, Mar 21, 2015 at 04:17:00AM +0000, Joakim via 
 Digitalmars-d wrote:
 [...]
 What I was going to say too, neither CLI or GUI will win, 
 speech
 recognition will replace them both, by providing the best of 
 both.
 Rather than writing a script to scrape several shopping 
 websites for
 the price of a Galaxy S6, I'll simply tell the intelligent 
 agent on my
 computer "Find me the best deal on a S6" and it will go find 
 it.
I dunno, I find that I can express myself far more precisely and concisely on the keyboard than I can verbally. Maybe for everyday tasks like shopping for the best deals voice recognition is Good Enough(tm), but for more complex tasks, I have yet to find something more expressive than the keyboard.
"Find me the best deal on a S6" is only a little more complex than "make me a cup of coffee." Fine for doing predefined tasks but questionable as an ubiquitous input method. It's hard enough for mathematicians to dictate a theorem without using any symbolic notation. There is too much ambiguity and room for interpretation in speech to make it a reliable and easy input method for all tasks. Even in your example: You say: "Find me the best deal on a S6." I hear: "Fine me the best teal on A.S. six." Computer: "Are you looking for steel?"
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. After 3-4 more tries- "a sex," "nsx," etc- it finally got it right. But it never messed up anything before "on," only the intentionally difficult S6, which requires context to understand. Ask that question to the wrong person and they'd have no idea what you meant by S6 either. My point is that the currently deployed, state-of-the-art systems are already much better than what you'd hear or what you think the computer would guess, and soon they will get that last bit right too.
 Now imagine the extra trouble if you mix languages. Also, how 
 do you include meta-text control sequences in a message? By 
 raising your voice or tilting your head when you say the magic 
 words? Cf.:

 "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. Mixing languages is already hellish with keyboards and will be a lot easier with speech recognition.
 Very awkward, if talking to oneself wasn't awkward already.
Put a headset on and speak a bit lower and nobody watching will know what you're saying or who you're saying it to.
 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. On Saturday, 21 March 2015 at 15:13:13 UTC, Piotrek wrote:
 Just for fun. A visualization of the problem from 2007 (I doubt 
 there was breakthrough meanwhile)

 https://www.youtube.com/watch?v=MzJ0CytAsec
Got a couple minutes into that before I knew current speech recognition is much better, as it has progressed by leaps and bounds over the intervening eight years. Doesn't mean it's good enough to throw away your keyboard yet, but it's nowhere near that bad anymore. 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. 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. 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.
Mar 21 2015
next sibling parent reply FG <home fgda.pl> writes:
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?
Mar 21 2015
parent reply "Joakim" <dlang joakim.fea.st> writes:
On Saturday, 21 March 2015 at 20:51:52 UTC, FG wrote:
 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 will probably keep some variation on the current textual symbolic notation but develop verbal shorthand and IDEs that enable faster programming than even keyboards allow today.
 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?
Yes, hand and fingers, as I said before, and you will even be able to "paint" in 3D: https://www.thurrott.com/windows/windows-10/573/hands-microsoft-hololens On Saturday, 21 March 2015 at 21:46:10 UTC, H. S. Teoh wrote:
 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.
When you said "I think rodent-based UIs will go the way of the dinosaur," you seemed to be talking about more than just programmers.
 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.
You don't have to handle full "natural language" to handle voice input, you can constrain the user to a verbal shorthand for certain tasks. Eventually, you can loosen that requirement as the recognition engines get better. You can never have algorithms that handle all the complexity of human speech, especially since the speech recognition engine has no understanding of what the words actually mean. But thousands upon thousands of heuristics might just do the job.
 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.
This acronym example is actually fairly easy for the computer to handle, given its great memory. But yes, there are many contexts where the meaning of the words is necessary to disambiguate what is meant and without some sort of AI, you have to rely on various heuristics.
 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.
I'd say we're fairly close, given the vast computing power in even our mobile devices these days, and that is nowhere near the Turing test, as extracting a bunch of personalized info and contextual dictionaries is nowhere close to the complexity of a computer generating a human-like answer to any question a human asks it.
 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.
Certain of these can be dealt with by heuristics, others are too hard to deal with right now, but likely wouldn't make much of a difference in accuracy anyway.
 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"...).
It took me a minute to even figure out what "Fruit flies like a banana" meant, as that pair of sentences takes advantage of the human heuristic of assuming that two rhyming sentences place their verb in the same spot. But a speech recognition engine doesn't _need_ to parse the grammar in those sentences, as it'll likely get it just from the pronunciation, so it would likely confuse only us humans, who are trying to understand what it actually means, and not the computer, which just wants to transcribe literally what we said. On Saturday, 21 March 2015 at 22:00:21 UTC, Ola Fosheim Grøstad wrote:
 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.
Good point, this was a good video from a couple years ago: http://forum.dlang.org/thread/op.wn0ye9uy54xghj puck.auriga.bhead.co.uk 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.
Nobody is arguing against text, but of the best way to provide it to the computer, whether through tapping keys or voicing it. 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:
 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.
But it takes experience and judgement to interpret and contextualize those numbers, so we are back to square one. :) Note that Laeeth specifically said more data can be useful, only that one has to be careful that it's the right data, not just data that happens to be lying around.
Mar 29 2015
parent reply "Abdulhaq" <alynch4047 gmail.com> writes:
On Sunday, 29 March 2015 at 18:27:51 UTC, Joakim wrote:
 would suffice.
When you said "I think rodent-based UIs will go the way of the dinosaur," you seemed to be talking about more than just programmers.
I'm still waiting for The Last One (from Feb 1981) to reach fruition: http://www.tebbo.com/presshere/html/wf8104.htm http://teblog.typepad.com/david_tebbutt/2007/07/the-last-one-pe.html Once finished, there will be no more need to write any programs.
Mar 29 2015
parent reply "Joakim" <dlang joakim.fea.st> writes:
On Sunday, 29 March 2015 at 21:17:26 UTC, Abdulhaq wrote:
 On Sunday, 29 March 2015 at 18:27:51 UTC, Joakim wrote:
 would suffice.
When you said "I think rodent-based UIs will go the way of the dinosaur," you seemed to be talking about more than just programmers.
I'm still waiting for The Last One (from Feb 1981) to reach fruition: http://www.tebbo.com/presshere/html/wf8104.htm http://teblog.typepad.com/david_tebbutt/2007/07/the-last-one-pe.html Once finished, there will be no more need to write any programs.
Heh, that article is pretty funny. :) In the comments for the second link, the lead programmer supposedly said, "For me TLO remains the 1st ever programming wizard. Wrongly advertised and promoted, but inherentlyt a 'good idea'." Considering how widespread wizards are in Windows these days, the idea has certainly done well. I do think that that concept of non-technical users providing constraints and answering questions is the future of building software, it just can't be built by one isolated guy. The configuration and glue code can be auto-generated, but there will likely always need to be core libraries written in a programming language by programmers. But the same automation that has put most travel agents out of work will one day be applied to most programmers too.
Mar 30 2015
next sibling parent "Abdulhaq" <alynch4047 gmail.com> writes:
On Monday, 30 March 2015 at 18:49:01 UTC, Joakim wrote:
 On Sunday, 29 March 2015 at 21:17:26 UTC, Abdulhaq wrote:
 On Sunday, 29 March 2015 at 18:27:51 UTC, Joakim wrote:
 would suffice.
When you said "I think rodent-based UIs will go the way of the dinosaur," you seemed to be talking about more than just programmers.
I'm still waiting for The Last One (from Feb 1981) to reach fruition: http://www.tebbo.com/presshere/html/wf8104.htm http://teblog.typepad.com/david_tebbutt/2007/07/the-last-one-pe.html Once finished, there will be no more need to write any programs.
Heh, that article is pretty funny. :) In the comments for the second link, the lead programmer supposedly said, "For me TLO remains the 1st ever programming wizard. Wrongly advertised and promoted, but inherentlyt a 'good idea'." Considering how widespread wizards are in Windows these days, the idea has certainly done well. I do think that that concept of non-technical users providing constraints and answering questions is the future of building software, it just can't be built by one isolated guy. The configuration and glue code can be auto-generated, but there will likely always need to be core libraries written in a programming language by programmers. But the same automation that has put most travel agents out of work will one day be applied to most programmers too.
It was such an exciting time back then, but most of us who had a clue knew that it certainly couldn't be done (at that time, anyway). Around about the same time there was another article in PCW (a great magazine by the way) about a data compression tool that you could rerun over and over again to make files smaller and smaller ;-). I wish we could read the back issues like we can with Byte (on archive,org). Even the adverts are great to read for us old hands. As to whether we'll ever do it, I agree with previous comments that it's related to understanding language - context is everything, and that takes an understanding of life and its paraphernalia.
Mar 30 2015
prev sibling parent ketmar <ketmar ketmar.no-ip.org> writes:
On Mon, 30 Mar 2015 18:49:00 +0000, Joakim wrote:

 On Sunday, 29 March 2015 at 21:17:26 UTC, Abdulhaq wrote:
 On Sunday, 29 March 2015 at 18:27:51 UTC, Joakim wrote:
 would suffice.
When you said "I think rodent-based UIs will go the way of the dinosaur," you seemed to be talking about more than just programmers.
I'm still waiting for The Last One (from Feb 1981) to reach fruition: http://www.tebbo.com/presshere/html/wf8104.htm http://teblog.typepad.com/david_tebbutt/2007/07/the-last-one-pe.html Once finished, there will be no more need to write any programs.
=20 Heh, that article is pretty funny. :) In the comments for the second link, the lead programmer supposedly said, "For me TLO remains the 1st ever programming wizard. Wrongly advertised and promoted, but inherentlyt a 'good idea'." Considering how widespread wizards are in Windows these days, the idea has certainly done well. =20 I do think that that concept of non-technical users providing constraints and answering questions is the future of building software, it just can't be built by one isolated guy. The configuration and glue code can be auto-generated, but there will likely always need to be core libraries written in a programming language by programmers. But the same automation that has put most travel agents out of work will one day be applied to most programmers too.
that would be a big day!=
Mar 30 2015
prev sibling parent reply "H. S. Teoh via Digitalmars-d" <digitalmars-d puremagic.com> writes:
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.
Mar 21 2015
parent reply "Ola Fosheim =?UTF-8?B?R3LDuHN0YWQi?= writes:
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.
Mar 21 2015
parent reply "Laeeth Isharc" <laeeth nospamlaeeth.com> writes:
 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.
Mar 21 2015
parent "Ola Fosheim =?UTF-8?B?R3LDuHN0YWQi?= writes:
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.
Mar 22 2015
prev sibling next sibling parent ketmar <ketmar ketmar.no-ip.org> writes:
On Fri, 20 Mar 2015 10:23:27 -0700, H. S. Teoh via Digitalmars-d wrote:

 Ultimately, I think rodent-based UIs will go the way of the dinosaur.
 It's a regression from the expressiveness of an actual language with
 grammar and semantics back to caveman-style point-and-grunt. It may take
 decades, maybe even centuries, before the current GUI trendiness fades
 away, but eventually it will become obvious that there is no future in a
 non-abstractible UI. Either CLIs will be proven by the test of time, or
 something else altogether will come along to replace the rodent dead-end
 with something more powerful. Something abstractible with the
 expressiveness of language and semantics, not regressive
 point-and-grunt.
Oberon TUI was really nice, as it combines point-and-click with CLI=20 expressivenes. not only you can type command almost anywhere and=20 immediately execute it, but you can combine commands in "tools",=20 parameterize commands with "marked window", "selected text" (those were=20 completely independend things), simple text and so on. even window=20 actions like "close", "save" and such was ordinary commands, simply=20 printed at window header. Oberon Gadgets was an extension of that system, where buttons and so on=20 were simply "nicely drawn area that still executes command on click".=
Mar 20 2015
prev sibling parent reply "John Colvin" <john.loughran.colvin gmail.com> writes:
On Friday, 20 March 2015 at 17:25:54 UTC, H. S. Teoh wrote:
 On Fri, Mar 20, 2015 at 05:04:20PM +0000, ketmar via 
 Digitalmars-d wrote:
 On Fri, 20 Mar 2015 13:28:45 +0000, Paulo  Pinto wrote:
 
 Given that I have been an IDE fan since the Amiga days, I 
 fully
 agree.
 
 Every time I am on UNIX I feel like a time travel to the 
 days of
 yore.
being on non-nix system is a torture. there aren't even gcc, let alone emacs/vim.
Yeah, I've become so accustomed to the speed of keyboard-based controls that every time I use my wife's Windows laptop, I feel so frustrated at the rodent dependence and its slowness that I want to throw the thing out the window. But at another level, it's not even about keyboard vs. rodent... it's about *scriptability*. It's about abstraction. Typing commands at the CLI, while on the surface looks so tedious, actually has a powerful advantage: you can abstract it. You can encapsulate it into a script. Most well-designed CLI programs are scriptable, which means complex operations can be encapsulated and then used as new primitives with greater expressiveness. Sure you can have keyboard shortcuts in GUI programs, but you can't abstract a series of mouse clicks and drags or a series of keyboard shortcuts into a single action. They will forever remain in the realm of micromanagement -- click this menu, move mouse to item 6, open submenu, click that, etc.. I have yet to see a successful attempt at encapsulation a series of actions as a single meta-action (I've seen attempts at it, but none that were compelling enough to be useful.) You can't build meta-meta-actions from meta-actions. Everything is bound to what-you-see-is-all-you-get. You can't parametrize a series of mouse interactions the same way you can take a bash script and parametrize it to do something far beyond what the original sequence of typed commands did. Ultimately, I think rodent-based UIs will go the way of the dinosaur. It's a regression from the expressiveness of an actual language with grammar and semantics back to caveman-style point-and-grunt. It may take decades, maybe even centuries, before the current GUI trendiness fades away, but eventually it will become obvious that there is no future in a non-abstractible UI. Either CLIs will be proven by the test of time, or something else altogether will come along to replace the rodent dead-end with something more powerful. Something abstractible with the expressiveness of language and semantics, not regressive point-and-grunt. T
In general I'm in agreement with you, but I think there *is* a place for more visual structure than a terminal editing a text-file can give you (essentially 1-D or maybe 1.5D, whatever that means). Some models/data/tasks are inherently more intuitive and quicker to work with in 2D.
Mar 21 2015
parent "H. S. Teoh via Digitalmars-d" <digitalmars-d puremagic.com> writes:
On Sat, Mar 21, 2015 at 03:10:37PM +0000, John Colvin via Digitalmars-d wrote:
 On Friday, 20 March 2015 at 17:25:54 UTC, H. S. Teoh wrote:
[...]
But at another level, it's not even about keyboard vs. rodent... it's
about *scriptability*. It's about abstraction. Typing commands at the
CLI, while on the surface looks so tedious, actually has a powerful
advantage: you can abstract it. You can encapsulate it into a script.
Most well-designed CLI programs are scriptable, which means complex
operations can be encapsulated and then used as new primitives with
greater expressiveness.

Sure you can have keyboard shortcuts in GUI programs, but you can't
abstract a series of mouse clicks and drags or a series of keyboard
shortcuts into a single action. They will forever remain in the realm
of micromanagement -- click this menu, move mouse to item 6, open
submenu, click that, etc.. I have yet to see a successful attempt at
encapsulation a series of actions as a single meta-action (I've seen
attempts at it, but none that were compelling enough to be useful.)
You can't build meta-meta-actions from meta-actions. Everything is
bound to what-you-see-is-all-you-get. You can't parametrize a series
of mouse interactions the same way you can take a bash script and
parametrize it to do something far beyond what the original sequence
of typed commands did.

Ultimately, I think rodent-based UIs will go the way of the dinosaur.
It's a regression from the expressiveness of an actual language with
grammar and semantics back to caveman-style point-and-grunt. It may
take decades, maybe even centuries, before the current GUI trendiness
fades away, but eventually it will become obvious that there is no
future in a non-abstractible UI. Either CLIs will be proven by the
test of time, or something else altogether will come along to replace
the rodent dead-end with something more powerful. Something
abstractible with the expressiveness of language and semantics, not
regressive point-and-grunt.


T
In general I'm in agreement with you, but I think there *is* a place for more visual structure than a terminal editing a text-file can give you (essentially 1-D or maybe 1.5D, whatever that means). Some models/data/tasks are inherently more intuitive and quicker to work with in 2D.
Certainly, some tasks are more suited for 2D, or even 3D, manipulation than editing a text file, say. But just because task X is more profitably manipulated with a 2D interface, does not imply that *every* task is better manipulated the same way. But at a more fundamental level, it's not really about text vs. graphics or 1D (1.5D) vs. 2D. 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 ideas like "from here until the first line that contains the word 'END', replace all occurrences of 'x' with 'y'". A single sed command could accomplish this, whereas using contemporary GUI idioms you'd need to invent a morass of hard-to-navigate nested submenus. 2) Speed: I can type the sed command in far less time than it takes to move my hand to the mouse, move the cursor across the screen, and click through said morass of nested submenus to select the requisite checkboxes to express what I want to do. 3) Abstraction power: I can parametrize said sed command, and put a whole collection of such commands into a script, that I can thereafter refer to by name to execute the same commands again, *without having to remember* the individual details of said commands. 4) Annotative power: As somebody else pointed out, I can add comments to a script explaining what is needed to perform task X, and why the given steps were chosen for that purpose. This alleviates the need to memorize obscure details about the system that you don't really care about to get your job done, as well as serve to jog your memory when something went wrong and you need to recall why things were done this way and how you might be able to fix it. I simply cannot see how these kinds of meta-annotations can even remotely be shoehorned into contemporary GUI idioms. 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 GUI that is NOT rodent-based would alleviate a large part of these problems, actually. I've been using Vimperator for my browser recently, and in spite of its warts (mostly due to the fact that it's merely a customization layer on top of an essentially rodent-dependent browser core), it's proven to be a far more efficient way of using a GUI browser than the rodent. Well, OK, it's hearkening back to the CLI days of modal editors (y'know, vim), but it proves that it's not really *graphics* per se that are the problem, but it's today's obsession with the rodent that's the source of much of my complaint. T -- Just because you survived after you did it, doesn't mean it wasn't stupid!
Mar 21 2015
prev sibling parent reply "weaselcat" <weaselcat gmail.com> writes:
On Friday, 20 March 2015 at 17:04:20 UTC, ketmar wrote:
 On Fri, 20 Mar 2015 13:28:45 +0000, Paulo  Pinto wrote:

 Given that I have been an IDE fan since the Amiga days, I 
 fully agree.
 
 Every time I am on UNIX I feel like a time travel to the days 
 of yore.
being on non-nix system is a torture. there aren't even gcc, let alone emacs/vim.
I wish there was a blend of modern IDEs with the editing/customizability power of emacs/vim. mono-d and DDT's utilities are far ahead of anything available for D in emacs/vim, but the actual IDEs themselves are difficult to work with.
Mar 20 2015
parent Rikki Cattermole <alphaglosined gmail.com> writes:
On 21/03/2015 8:40 a.m., weaselcat wrote:
 On Friday, 20 March 2015 at 17:04:20 UTC, ketmar wrote:
 On Fri, 20 Mar 2015 13:28:45 +0000, Paulo  Pinto wrote:

 Given that I have been an IDE fan since the Amiga days, I fully agree.

 Every time I am on UNIX I feel like a time travel to the days of yore.
being on non-nix system is a torture. there aren't even gcc, let alone emacs/vim.
I wish there was a blend of modern IDEs with the editing/customizability power of emacs/vim. mono-d and DDT's utilities are far ahead of anything available for D in emacs/vim, but the actual IDEs themselves are difficult to work with.
You guys are giving me ideas...
Mar 20 2015
prev sibling parent "deadalnix" <deadalnix gmail.com> writes:
On Friday, 20 March 2015 at 11:48:20 UTC, w0rp wrote:
 On Friday, 20 March 2015 at 07:37:04 UTC, Paulo  Pinto wrote:
 An example that stuck with me was that languages that follow 
 Algol/Pascal syntax lead themselves to less bugs, than those 
 that follow C like syntax.
That's probably skewed by C being the most popular language, which is optimised for bug creation.
The guy explain that for beginner it is worse, but after 3+ years of experience, C syntax wins. Most likely because C style has become a de facto standard, and that the benefit of standardization outweigh the initial confusion. He explains that the same goes for strong typing.
Mar 20 2015
prev sibling next sibling parent reply "Laeeth Isharc" <laeeth nospamlaeeth.com> writes:
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, if thoughtfully considered. The problem is that people tend to emphasize tangible hard data over sometimes more important but less easy to measure factors - the drunk looking for his keys under the lamppost 'because that is where the light is'. So one must be careful to avoid being dazzled by shiny 'scientific' approaches when their value remains yet to be proven. Laeeth.
Mar 20 2015
next sibling parent Walter Bright <newshound2 digitalmars.com> writes:
On 3/20/2015 3:55 PM, Laeeth Isharc wrote:
 So one must be careful to avoid being dazzled by shiny 'scientific' approaches
 when their value remains yet to be proven.
True. Scientific studies of human behavior are notoriously difficult to remove hidden biases from.
Mar 20 2015
prev sibling next sibling parent "John Colvin" <john.loughran.colvin gmail.com> writes:
On Friday, 20 March 2015 at 22:55:24 UTC, Laeeth Isharc wrote:
 So one must be careful to avoid being dazzled by shiny 
 'scientific' approaches when their value remains yet to be 
 proven.
I sense a recursive problem here...
Mar 21 2015
prev sibling parent reply "Atila Neves" <atila.neves gmail.com> writes:
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
Mar 22 2015
next sibling parent reply "deadalnix" <deadalnix gmail.com> writes:
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 ?
Mar 22 2015
parent "Ola Fosheim =?UTF-8?B?R3LDuHN0YWQi?= writes:
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.
Mar 22 2015
prev sibling parent reply "Ola Fosheim =?UTF-8?B?R3LDuHN0YWQi?= writes:
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?
Mar 22 2015
parent reply FG <home fgda.pl> writes:
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. :)
Mar 22 2015
parent "Ola Fosheim =?UTF-8?B?R3LDuHN0YWQi?= writes:
On Sunday, 22 March 2015 at 10:24:16 UTC, FG wrote:
 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. :)
Almost right. Even a well conducted quantitative study might be misleading because it measures correlation and not causality. Causality is hard nut to crack and it will in the end hang on our beliefs in the methodology, the study, the tools, the objects being studied, the people conducting the studies and the "already accepted assumptions in the field" (established theories which might be wrong) etc. So in essence, science is a belief system (not all that different from religion, although the contrary is often claimed). This all becomes easier to reason about if people give up the idea that science represents "the truth". It does not, it presents models that are hypothetical in nature. These may be useful or not useful, but are usually incomplete and somewhat incorrect... In medical sciences correlation based models can be very useful, or very harmful (when incomplete on critical parameters such as negative effects of radiation). In the design field the theories used are applied to a future unknown setting so correlation has very low value and insight in causality has a very high value. Meaning: a somewhat flawed high level model about how human beings think and react, about causality, might lead to better design than a more limited and correct low level model of how the brain works based on correlation. Whether "everything is measurable" depends on what you mean. You might say that qualitative studies involves measuring because everything you perceive are measurements. In the real world, the data (what you have collected) will usually be inadequate for what is being "claimed". After all, it is a society of "publish or perish". So you need many independent studies to get something solid, but how many fields can produce that? Only the big ones, right?
Mar 22 2015
prev sibling parent "Kagamin" <spam here.lot> writes:
On Friday, 20 March 2015 at 07:37:04 UTC, Paulo  Pinto wrote:
 An example that stuck with me was that languages that follow 
 Algol/Pascal syntax lead themselves to less bugs, than those 
 that follow C like syntax.

 There are quite a few other examples. Also the mention that as 
 far as the researcher is aware, only Microsoft is pursuing such 
 studies for language features. Don Syme is in the audience and 
 gives an example how they did it for .NET generics.
Anything wrong with VB.NET?
Mar 23 2015