Artificial Intelligence/Natural Programming

Advertisement


Question
hi Saurabh!

I have just heard about Natural Programming. When i googled this subject, i saw AI featured prominently.

can you tell me about Natural Programming? where does it fit,in the areas of such standard programs as Word and Excel. Will Natural Programming replace them? will it replace VB or VBA, the latter currently in use for creating macros in these two Microsoft programs?

I appreciate the information you can provide.

Chris

Answer
Hi Chris,

End-users must write programs to control many different kinds of applications. Examples include multimedia authoring, controlling robots, defining manufacturing processes, setting up simulations, programming agents, scripting, etc. The languages used today for these tasks are usually difficult to learn and are based on professional programming languages. This is in spite of years of research highlighting the problems with these languages for novice programmers. The Natural Programming Project is developing general principles, methods, and programming language and environment designs that will significantly reduce the amount of learning and effort needed to write programs for people who are not professional programmers. These principles are based on a thorough analysis of previous empirical studies of programmers and new studies designed to discover more natural approaches to programming and end-user. The goal is to make it possible for people to express their ideas in the same way they think about them.

It is somewhat surprising that in spite of over 30 years of research in the areas of empirical studies of programmers (ESP) and human-computer interaction (HCI), the designs of new programming languages and debugging tools have generally not taken advantage of what has been discovered. For example, the C#, JavaScript, and Java languages use the same mechanisms for looping, conditionals, and assignments shown to cause many errors for both beginning and expert programmers in the C language. Systems such as MacroMedia's Director and Flash, Microsoft's Visual Basic, and general-purpose programming environments like MetroWerks' CodeWarrior and Microsoft's Visual C++, all provide the same debugging techniques available for 60 years: breakpoints, print statements, and showing the values of variables.

We will have an easier job if their programming tasks are made more natural. By "natural," I mean "faithfully representing nature or life," which here implies it works in the way people expect. By "natural programming" we are aiming for the language and environment to work the way that nonprogrammers expect. Current debugging tools support some of these activities, while hindering others. For example, breakpoints and code-stepping support observation of control flow but hinder exploration and restructuring, whereas visualization tools help restructure data but hinder diagnosis and observation
none of these tools support hypothesizing activities. The argument behind the Natural Programming approach to debugging is that support for such question-related activities will significantly improve success. If programmers have a weak hypothesis about the cause of a failure, any implicit assumptions about what did or did not happen at runtime will go unchecked. Not only do these unchecked assumptions cause debugging to take more time, but they also result in new errors.

One way to define programming is the process of transforming a mental plan in familiar terms into one compatible with the computer. The closer the language is to the programmer's original plan, the easier this refinement process will be. This is closely related to the concept of directness that, as part of direct manipulation, is a key principle in making user interfaces (UI) easier to use. UI designers and researchers have been promoting directness at least since Ben Shneiderman identified the concept in 1983, but it has not even been a consideration in most programming language designs.

Conventional programming languages require the programmer to make tremendous transformations from the intended tasks to the code design. For example, a typical program to add a set of numbers in C uses three kinds of parentheses and three kinds of assignment operators in five lines of code, whereas a single "SUM" operator is sufficient in a spreadsheet. If the computer language were to enable people to express algorithms and data more like their natural expressions, the transformation effort would be reduced.


Regards
Saurabh

Artificial Intelligence

All Answers


Answers by Expert:


Ask Experts

Volunteer


Saurabh Kudesia

Expertise

I can answer your queries related to AI, Fuzzy logic, algorithms, VR and simulation theories.

Experience

With an electronics background, I was rated as one of the Top 5 expert of Yahoo!Expert Group for three years in the category AI/Robotics. I have had the honour of evaluating books of international repute on AI/Robotics as Subject Matter Expert. I have in my credit more than 50 papers/articles published in different National and International Magazines/websites covering various aspects of AI, Robotics, VR and Mind theories. I am also contributing my skills and expertise to help movements like Singularity, Transhumanity and Cryonics.

©2012 About.com, a part of The New York Times Company. All rights reserved.