Program Taxonomy (sort of)

The, “sort of” is because a rigorous classification of computer languages is probably impossible & a lot of the details fall into the “who cares” category.

From the computer itself to the folks programming them:

Machine Language — all zeroes and ones — and lots of them.  The only one that a given computer can use.  Literally a recipe, but unbelievably detailed.

Assembly Language — specific to a class of computers, but very close to the machine language. Somewhat readable by humans but it is still almost 100% focused on actual computer operations.  The translation into machine language is straightforward, often simple (if you know how that computer actually works).

Higher Level language (text based) — here you can write things like, “z = x + y, or Sales = Price * Volume”.  One of the first was “C” (and yes there was an “A” and a “B”, which still is used, but I’ve never seen it). Examples are C, C++, C#, Java, JavaScript, Python, VBA, and a bunch of others.  These languages must be translated eventually into machine language.  You’ll hear words like “compile”, and “interpret”, and probably others, but rest assured, to “work”, your high-level language program must be converted into machine code.  Not to worry, it’s done millions of times a minute all over the world.  Those programs work extremely well.

Higher Level Language (graphics based) — here you move icons (symbols) around on a screen, hooking them up in logical ways to perform your task.  Again, this set of symbols and their connections have to be converted into machine language.  Not to worry, that’s done all of the time. The programs that do it are as perfect as programs go.  The odds are that you’ll never have to do anything but invoke them.  The translation happens so fast that you may not even be aware of anything going on except seeing the end result.

Special Purpose Languages (SPL) — There are thousands of these.  Any computer controlled machine will probably have a special language.  The make it easy for a user to program the machine.  A good example is any language that controls a machine tool.  The operations are vary specific, move the tool to point P1, drill hole, etc.  Look up APT (Automatic Programmed Tool) as an example.  Robotic prostheses need to be programmed by specialists and developing a SPL or using an existing one allows them to concentrate on the intricate part of connecting the prosthesis to a body part.

Almost all of the SPL’s are written in C  or assembler.

The taxonomy classification gets messy here, because you can generally mix the text and the graphics so I just think of them as at the same level.  Graphic examples are. Scratch ( a neat simpler implementation for iPad is Hopscotch — try it, it’s free, fun & the tutorials are wonderful), LabView (MIT), and the language supporting the Lego MindStorms NXT, and EV3 products.  Lots of development here.  Graphics are here to stay — maybe someday text based languages will go the way of the dinosaurs. But not soon!

In the higher level language area we have another “dimension” and that is the design and logical organization of the code, itself.  This is a big deal, but if you’ve never programmed, what follows will mean little to you.  You may even wonder why it is so important.  There are 3 ways to organize your code. (hint: pick the second one!)

Procedural Programming (PP) — How they all started.

Object Oriented Programming (OOP) — The good programmers did this by design, but now the languages support it formally, or even (e.g., Java) force it. Pundits say that OOP should be learned later.  Maybe, but I teach it very early.  Why learn second rate methods?

You’ll see.  We understand our real world through OOP glasses and thinking. (a teaser, I know)

Functional Programming (FP) — Everything is a function.  Look up the language called, Haskell.

The main reason that OOP is so dominant now is that it makes it possible to write more complex programs with fewer errors.  Also, makes it easier for multiple folks to work on the same program — more importantly, by people who will repair and enhance it in the future (probably unknown to the original authors).

These approaches and those needed standards are seldom taught (or even discussed) in our current school offerings or in entertainment pieces like “The Hour of Code” (coming to your school the week of Dec 7).





Print Friendly, PDF & Email