views:

214

answers:

4

I recently came upon something called Rpoku which is a spoken computer language. I also found some research called Voice Code which takes a different approach. There's a demo video here..

Does this look promising, or is just a toy? Is it or will it be possible to create applications some day without typing at a keyboard?

+1  A: 

I've been thinking about this one a lot; and I think it would take a paradigm shift (not to mention advances in AI on the scale of Star Trek) to allow programmers to be as productive orally as they are when writing.

For instance, in this simple code example, I'm actually saying a lot more than I'm typing:

List<Employee> ListOfEmployees = new List<Employee>();

foreach (Employee emp in ListOfEmployees) {
Console.WriteLine(emp.Name);
}

In that code block, I'm saying the following:

Create a generic list of employee objects, initalize the employee object to its default. After that, I want to iterate through the employee objects one at a time, and write each one's name out to the console.

(I intentionally left out the code to assign the names to the employees -- for simplicity).

It was much faster for me to type out that code than it was to say what I wanted to do, and even if it weren't, there would have to be terms defined for the computer to translate my words into actual code. Not to mention that this is a very high-level language -- imagine what Perl (or C) would look like if spoken?

George Stocker
employees do: [:each| each name printOn: Transcript.]
Jules
Or: foreach employees (print . name)
Jules
Remember: The goal is to make things 'easy' for a neophyte to come in and say. If they have to learn another language, you lose the reason for having it verbal. If you want a 'Star Trek'-ish computer, then you have to be able to speak plain full sentence english.
George Stocker
Would it not be more akin to: "Create an initialized list of employees and output the list to the console"?
BenAlabaster
See, in each of these statements, assumptions are made by the user as to the vocabulary of the computer. It's so easy for us to communicate ideas with a few words, yet so hard for us to program the computer to do the same. "Create" - do you want that list to be 'in memory'? 'persisted'? .
George Stocker
That's just one example with one word; there can be dozens of others. "Initalized List" - what are your parameters for initalization? What sort of list? Linked? Array? ArrayList? Generic List? Database Table? Then "Employees" - Which employees? To which company?. This is the challenge we face.
George Stocker
+1  A: 

I, for one, think that it's a horrible idea. For spoken language to make sense and be easier it actually has to be somewhat free-form. In the end all it'll result in is trying to figure out what is grammatically acceptable for the "compiler" to actually do what I want, and in the it'll be just as "technical" as languages are today, except more of a wolf in sheep's clothing.

Maybe I'd give it a shot if I wanted to drive myself to suicide :D

PhoenixRedeemer
A: 

Probably not. Or at least not yet. The next step would be literate programming and DSL.

May be, but maybe not. We don't want to write more just to let the stakeholder actually understand the software intention. Are we?

Anyway, here's an interesting video about all this.

http://www.infoq.com/presentations/domain-specific-languages

OscarRyz
A: 

Debugging would be annoying at best.

I think you might think more in terms of using a spoken language to drive a program. If you had a set of high-level functions and data, you could easily say (to steal an example) "Print a list of employee names", as long as Print, List and Employee Names were already defined.

Bill K