Recently a coworker of mine brought up a topic about a voice recognition programming implementations he had read about or checked out himself, I cannot really remember which was it, so I’ve decided to check it out myself.

At first, my initial opinion on the idea of programming by voice recognition was that contemporary programming languages have a syntax which is not very well suited for being read directly and let alone spoken directly without having to decide among many possible interpretations of sections from the voice recognized transcript.
The first implementation that I have tried was the VoiceCode extension made in Python that could be best implemented in Emacs. It proved to be very hard to use because it sometimes lead to conflicting behavior of Emacs when brackets are sometimes automatically opened for a function and sometimes is expected to be opened by the user.

Those who have used Emacs know that for certain programming languages when you have a known function name and variables with names that begin with the same text and when tab is pressed, Emacs fills up the name of the object to the portion where the name of the function and of the variable or variables branch. If the text is the name of a function brackets are opened and if not, then no brackets will appear.

Since VoiceCode is not designed to recognize if the text is a name of a function of an existing variable, this is sometimes complicated, because the presentation of the spoken syntax portion is delayed and you can never know whether or not the brackets will be opened or not when you continue on dictating argument names etc.
Another problem was constant “mishearing” of words, though this can be contributed to my way of pronouncing and my accent as well as to the untrained voice recognition service on my system, since this was tested in a fresh system installation in a virtual machine.

Currently, you can only use it for Python and C++, which is not as impressive to me and also, there is way too much need for telling it directions like “next one”, “next on”, “go up”, “revise” etc. in order to navigate through your code.

All in all, I was not impressed with what VoiceCode had to offer.

The other one was an extension for Visual Studio. I did not have a chance to test this one myself, but I did watch a YouTube video that shows a demonstration of this extension.

Basically it provides a partial programming by voice recognition support to the extent that some object names and functions are recognized, mainly by picking the most seaming choices form the intelliSense popup after providing an object element accessor prefix like the dot, dash and grater then sign, double colon etc.

As for writing more complex expressions and some constant and literal values into arguments for functions the programmer must still rely on his or hers hands and the keyboard (or mouse via virtual keyboard input) which makes this approach actually more complicated because it actually takes much more time.

From reviewing these two approaches, one which attempts to completely eliminate the keyboard and mouse and the other which only partially steps in and replaces them I have come to the conclusion that both of these approaches are a valid and helpful effort, but also that current mainstream programming languages and their syntaxes are not made for this type of code input and would have to be well remodeled and revolutionized before such input method could become practical and efficient.