At the Osmosian Order of Plain English Programmers, we teach kids to program in a different way.
We begin by getting rid of all unnecessary and distracting clutter. This is what our full-screen Integrated Development Environment (IDE) looks like, for example:
The top of the screen contains alphabetic menus, a status message field, the middle is the work area, and the bottom has tabs. Icons, tool bars, window borders, widgets, and palettes are not available. In this way, the student is encouraged to focus on the foreground content, not the background (which is left in the background). Oops! Forgot to mention. There are no scroll bars.roll bars. Everywhere. The right mouse button functions to move content horizontally, vertically, and / or diagonally, while an Incremental Find facility is used to search large files rapidly (a la Jef Raskin). You can also change the focus intuitively by using the Home, End, Page Up, Page Down, and Arrow keys.
By using full path names, the file system is exposed to the programmer. The programmer gets only this view: there are no icons, and there are no alternate views in "open" or "save as" dialog boxes (because we don't use or need dialog boxes). Thus the students are introduced to the exact syntax for referencing files in their programs, and they only have to maintain a single mental image of the file system in their developing brains.
Additionally, our students' applications are clutter-free. A black screen is erased, top-to-bottom and side-to-side, when the screen is cleared. They have access to the entire screen (and computer), so their dreams can come true exactly as they imagined. It's not a sandbox.
Second, we program in natural, English-language sentences. Instead of obscure words like CONST and EVAL and INSTANCEOF (which, technically, aren't words), our "keywords" are articles (like a, an, the, some, etc) and prepositions (like in, of, with, etc).
Additionally, we emphasize semantics (WHAT is being said) rather than syntax (HOW it is being said). Routines in Plain English typically have multiple headers, so they can be called in a variety of ways. For example, this routine...
"To erase the screen;
To blank out the screen;
To wipe off the screen;
To clear the screen:
Unmask everything.
Draw the screen's box with the black color and the black color.
Refresh the screen.
Put the screen's box into the context's box."
…can be called four different ways:
"Erase the screen.
Blank out the screen.
Wipe off the screen.
Clear the screen."
A skilled teacher provides pre-coded libraries with headers in the "local dialect" of his students. Students are also encouraged to teach the compiler to speak (and think) as they do by adding headers to existing libraries, and by developing libraries of their own. their own.
The third difference is that our approach uses the same interface and language for novices and experts alike. A system for kids, but not just a system for kids. The whole package was created with this interface and language: an uncluttered desktop, simplified file manager, elegant text editor, handy hexadecimal dumper, native-code-generating compiler/linker, and a wysiwyg page layout facility for documentation and other creative writing and drawing tasks. In other words, the student can simply dig deeper when he is ready. There is no need for him to buy a new shovel or find another plot of land. Everything is here, from “Hello, world!””world!””world!”” all the way to the machine code.
Speaking of “Hello, World!”, this is a version we often use to illustrate the fundamental concepts of sequence, conditional statements, and looping. This is what we tell the students to type in:
"To run:
Start up.
Clear the screen.
Use medium letters. Use the fat pen.
Pick a really dark color.
Loop.
Start in the center of the screen.
Turn left 1/32 of the way.
Turn right. Move 2 inches. Turn left.
Write "HELLO WORLD".
Refresh the screen.
Lighten the current color about 20 percent.
Add 1 to a count. If the count is 32, break.
Repeat.
Wait for the escape key.
Shut down."
And this is what they see on the screen when they run their programs (using the Run command, which is conveniently and intuitively located under the “R” menu):
Programs are text-based, left-brain activities. Nevertheless, learning occurs best when both sides of the brain are engaged. We use graphical outputs to enliven both hemispheres and the corpus callosum that connects them in most of our introductory exercises. For example:
"To run:
Start up.
Draw a desert landscape.
Wait for the escape key.
Shut down.
To draw a desert landscape:
Clear the screen.
Draw the sky.
Draw the sun.
Draw the birds.
Draw the sand.
To draw the sky:
Use the lightest sky blue pen.
Imagine a line across the middle of the screen's box.
Loop.
Draw the line.
Refresh the screen.
Darken the current color about 3 percent.
Move the line up 1 pixel.
If the line is above the screen's box's top, break.
Repeat.
To draw the sun:
Pick a spot anywhere in the top middle 1/4 of the screen's box.
Make a dot between 1/4 inch and 1 inch wide.
Center the dot on the spot.
Draw the dot with the lightest yellow color.
To draw the birds:
Pick a spot in the screen's box about 1 inch above the middle.
Use the black pen.
Loop.
Move to the spot.
Face east.
Pick a width between 1/8 inch and 1/4 inch.
Draw a quarter circle given the width.
Turn around.
Draw another quarter circle given the width.
Move the spot about 1/2 inch in any direction.
Add 1 to a count. If the count is 3, break.
Repeat.
To draw the sand:
Use the lightest orange pen.
Imagine a line across the middle of the screen's box.
Loop.
Draw the line.
Refresh the screen.
Darken the current color about 3 percent.
Move the line down 1 pixel.
If the line is below the screen's box's bottom, break.
Repeat."
Note the seamless integration of vector graphics and turtle graphics. This is the kind of artwork the program produces:
Optical illusions are always fun and inspiring. This is one of my personal favorites:
"To run:
Start up.
Draw the crooked line illusion.
Wait for the escape key.
Shut down.
To draw the crooked line illusion:
Clear the screen.
Use the fat pen.
Imagine a big box 4 inches smaller than the screen's box.
Imagine a line across the top of the big box.
Imagine a small box 1/2 inch by 1/2 inch.
Move the small box to the top left corner of the big box.
Loop.
Draw and fill the small box with the white color.
Move the small box right 1 inch.
Refresh the screen.
If the small box is still in the big box, repeat.
Move the small box close to the left side of the big box.
Draw the line with the red color.
Move the line down 1/2 inch.
Move the small box down 1/2 inch.
If the small box is still in the big box, repeat.
Draw the line with the red color.
Use medium letters.
Write "THE RED LINES ARE ALL STRAIGHT AND PARALLEL."
with the gold pen at the bottom of the screen's box.
Refresh the screen."
You’re going to need a ruler to check out this result:
A programmer of the future, we believe, will program his machines in a similar fashion to how we "programme" Amazon Alexa, Apple Siri, Google Home, and Microsoft Cortana today. My wife will, for example, say:
Set a timer for 12 minutes and echo that. Then play a Beatles song."
A short program is being written and executed in English by her. We would really be on the right track if the above devices were also programmed in English. This is evident from our Plain English prototype. If we can write a Compiler and IDE in English, then why not an automated assistant? It's the 21st century, let's face it. Why shouldn't we programmers and users be able to communicate with our machines in the same language that we use to communicate with each other?