Here, I’m talking about high level languages — not “machine languages” (binary numbers that interact directly with a computer) or even “assembly languages” (one-step removed, with mnemonics replacing the actual numbers.)
Dealing with the low level languages is somewhat like reading those legal notices in the newspaper. Doable, but who has the time and/or the ability to find and assimilate all of that information.
That’s why the high level languages were invented — for humans. But always remember, any high level language must somehow be translated into actual machine code for the computer to perform the task.
The languages come in two broad categories:
Text Based: e.g., C, C++, C#, Java, Python.
Graphics Based: e.g., Scratch, LabView, EV3 (used in Lego MindStorms robots) If you’ve never seen any of these, download Hopscotch on your iPad. Go through a tutorial or two — lots of fun & you’ll get the idea.
They can be mixed together — a combination of moving icons around and interfacing with text based routines.
There’s a taxonomy of approaches:
Procedural (the “old” way)
Object Oriented (the “newer” way. New = last 20 years or so)
You can use many of the languages either way. BTW, there is another approach called Functional Programming (Haskell is a language dedicated to this approach). Almost all of the programs written today use the object oriented approach — and yes, I’ll talk about that in a future post.
Back to the languages: Ever try to learn a foreign language? The analogy is not all that good. You already know a language, your native one and you can “see” and understand the new one with that knowledge (bias?). Even so, learning a programming language is much simpler.
Sure, you don’t have a reference, (AND you don’t really need any math — just logical reasoning), but the number of things to learn is much smaller — and more clearly defined. Also, all of the general programming languages have common elements. It’s not quite “know one, you know them all”, but close. A close friend, born in the USA, who spoke Italian at home, said that leaning French was easy — but he had a pretty good incentive. He was courting his future wife who only spoke French 🙂
The hardest thing about computer programming is the required precision. It’s nothing like you’ve ever done or seen before. Any little mistake (like forget a semi-colon) and the program fails. At first it freaks many people out. Also, the computer does not care if you are smart, dumb, rich, poor, parents are famous, or that you know the mayor. The program works or it doesn’t. (That’s the part I like best — It’s 100% on you)
The really nice thing is that once you learn one programming language the others can be picked up fairly easily. They all do the same basic things.
Spoken language analogy. All have Nouns, Verbs, Adjectives, etc. The syntax is different, The killer is the slang and idioms.
Programming languages have slang, too, but the problem is much less severe. But there is no , “Well you know what I mean”, or “It’s on the desk” when it’s really “on the table”. Hand waving doesn’t work at all.
There is zero intelligence in a computer. (I saw an interview recently with one of MIT’s big-time computer scientists. They were asking him about so-called artificial intelligence (AI) and the worry that robots will soon be smarter than humans. He said that the current state-or-the-art of AI is about the same level as that of a retarded cockroach. Long way to go before, “Robot masters please don’t fire us”.
Always assuming that the computer has zero reasoning or judgment ability, will save you grief if you ever start programming.