I like this technique Larry Press of California State University uses in his tutorial on VB.NET designed for true beginners:
Describe something your program is doing in plain English, then translate that to what he calls a “geek” language, which is somewhat like the old hypertalk language for HyperCard, which is then convertible to Visual Basic code. An example:
|English||Add “Hello my friend! ” to whatever is in the greeting area on the screen.|
|Geek||Append the string “Hello my friend! ” to the value of the Text property of the TextBox named “txtOut.”|
|VB||txtOut.appendtext(“Hello my friend! “)|
Of course the other way around is another part of the skill. Looking at existing code, and interpreting what it does in geek or plain English.
As he says: “The bad news is that you have to learn two new languages: Geek and VB. The good news is that once you are fluent in Geek, it is relatively easy to learn new programming languages.” Once you know about the constraints and affordances involved in things like object-oriented programming (properties, objects, classes, message passing, etc.), it is much easier to pick up new programming languages.
It wouldn’t be terribly difficult to automate the process somewhat using Antlr to translate VB or C# or Java into an english-like representation or vice versa, along with pretty formatting and hyperlinks to docs to make the code as easy as possible for beginners to understand:
int x = 0;
x += 1;