Natural Language Programming

That both English and Java are called languages is no coincidence. You use a language to express ideas. English expresses ideas to people, and Java expresses ideas to computers. What’s more, both English and Java have things like words, names, and punctuation. In fact, the biggest difference between the two languages is that Java is easier to learn than English.
— Barry Burd

What Is Natural Language Programming?

English is not an easy language to learn. However, it can be learned, though humans have thus far been unable to design a computer with the capability of fully understanding a natural language (where a natural language is nothing more than a human language, such as English, French, and Chinese).

The current model that Natural Language Programming Systems implore is highly inefficient. As it stands, engineers are actively working to design a system that can unambiguously convert any sentence into some associated high level programming language (i.e. Python). But why the need for a middle-man language? Why can’t the computer simply interpret the natural language itself without having to convert into an intermediary language?

Of course, the nay-sayers will argue against its plausibility simply because computer’s need an element of controllability (i.e. if-then statements). Their arguments against the Natural Language Programming may also involve natural language’s lack of an exact syntax (i.e. homophonic words). But this is thinking in terms of a close, limited mind. We must be open to future innovation as we humans are possible of achieving anything that we so desire (i.e. putting a man on the moon). There are solutions to the two stated barriers, and I have no doubt in my mind that we will one day overcome them.

In terms of economic benefit, Natural Language Programming is a no-brainer. Why spend valuable resources training people to complete intermediary programming tasks when we could simply increase the level of technology thereby increasing efficiency in production. Essentially everyone would be able to act as their own programmer, programming their computer to do anything they so desired.

The source file would be nothing more than a text file written in plain English, though it would have to be extremely detailed, much like the script of a movie. The computer would then interpret that source file and compile it into a program. Sounds simple right? Below is example of a Natural Language Programming source file.

First, create a window approximately 75% of the screen size. Then, add two menus to the top, one File and one Help. Under the File menu, add Exit. When a user clicks on Exit, the program should exit. Under the help menu, add a simple About option that describes this program.

Now create two buttons in the main window. The first button should say "Message", and the second one should say "Exit" (without the quotes). When a user clicks on Message, a message box should pop up saying "Hello, World!" (also without the quotes). When the user clicks on the Exit button, the program should exit.

Personal Assistant versus Personal Computer

I came across an excellent quote at O’Reilly.com while doing some research, “The true definition of power and expressivity in a programming language is how little it gets in the way of a programmer. Making power available does not make it usable.” It should therefore be possible for you and I to easily construct computer programs that accomplish complex tasks in a reasonably short period of time with no prior programming experience. That would truly make that computer’s power readily available to the computer’s user.

With a fully implemented Natural Language Programming System, your computer would be your new best friend. Menial tasks could be completed by simply delegating them to your computer. With that said, your computer could be seen as much more than a simple word processing, internet-enabled device. In fulfilling the role of Personal Assistant (PA) versus Personal Computer (PC) your “computer” could very well be labeled as a “robot.”

Realistically, when will this come into fruition? Most likely towards the later half of this century. The concepts detailed above may sound simplistic in nature, but designing a Natural Language Programming System will be anything but simple.

In the future, programming languages will be nothing more than pure English, Spanish or French. Tell a computer to do something and it will listen. You will not have to learn an entirely new language to communicate with your machine. Nor will you have to hire the services of someone to act as an intermediary. Anyone will be able to “program” in this new computer language, thus resulting in a more efficient work force. The benefits are extreme, and I look forward to one day witnessing the implementation of such a system.



RELATED POSTS:

  1. The Apple Tablet Will Make The “Smart Home” A Reality

Categories: Technology
 
Luis Andre Garrigo at 19:59 on 20 March 2010
Natural Language Programming http://goo.gl/fb/phNn
Neal
Interesting. Another benefit of making an intermediate language is that once English is done, more than half the work is done for other languages – you only have to translate to the mid-level language.

I have a bit of trouble with your use case though. Building a GUI is really difficult with just a text editor. Programmers don’t really do that any more; visual things should be done visually.
http://www.youtube.com/watch?v=WlbXhfkkBj4#t=1m15s

The NetBeans system is pretty overcomplicated but there’s a lot of power that comes with WYSIWYG (what you see is what you get) editing. For the same reason, nobody types essays in HTML.

“You’ll never find a programming language that frees you from the burden of clarifying your ideas.”
-xkcd
21 March 10 at 15:47
ahh don’t bash NetBeans, thats my go to Java IDE.

As far as using pure text to program, that would be the first step towards a true NLP System. From there, the language could be expanded to utilize other inputs, such as voice in combination with a drawing (i.e. draw a circle on a pad and tell the computer to add 50% opacity and rotate it around its center, etc.)

The fact is that this would require some sort of 2-channel communication. In other words, assume you tell the computer to do something, but you are not being specific enough. The language would have to address its concerns with you looking for some clarification. I will be addressing this in a follow up post. Stay tuned. :)
21 March 10 at 23:51
Get Adobe Flash playerPlugin by wpburn.com wordpress themes