Homepage / Programming / Why You Can't Just Tell Your Computer What You Want It To Do
Google Helpouts – A Help Provider’s Review How Much Water Should I Drink Every Day? Installing Google Wallet on Android Outside the United States Q: Is Spirituality the Opposite of Science? A: Definitely not How to Remove io9’s Space Wasting Sidebar I’d be Leery of Google Keep, Google’s Evernote Competitor FUD and Sensationalism from F-Secure on Android Malware Numbers The Definition of Irony in Web Design Weight Loss Status Update, Day 120 Weight Loss Status Update, Day 60 Weight Loss Status Update, Day 30 Weight Loss & Unconventional Eating Habits Weight Loss Problems Despite Following All the Conventional Wisdom How Strategic Voting Subverts Democracy Response to Vic Toews’ Email re Bill C-30 Privacy Concerns One Million Moms protests sexuality of JC Penny’s new spokesperson Ellen DeGeneres Review: Samsung Sidekick 4G From T-Mobile GoDaddy’s Stance On SOPA Shows Off Their Ignorance In More Ways Than One! Android 472% Malware Increase Scare Is Sensationalist Fix VSFTPD Slow Directory Listings & Timeouts Tablet Computing: Apple Only? Using Linux to Root the Sidekick 4G (Samsung Galaxy Series SGH -T839) Linux Tip: Permanently Disable NumPad Mouse Keys Google Music releases Linux Music Manager! Migrating Openfire Instant Messaging Service PBX In A Flash: Custom Dialplans & FreePBX Android App Review: Remote Desktop For Your Phone! PBX In A Flash: Send Email Using Gmail / Google Apps Android Security Apps Review: Lookout, SeekDroid, Cerberus, Prey & Theft Aware How To Get Amazon’s Free Android Apps From Outside The US Google Music Beta Impressions (vs Subsonic) Swype & SwiftKeyX Android Virtual Keyboards Review Why You Can’t Just Tell Your Computer What You Want It To Do Cellphone Use Is NOT Giving You Cancer Facebook Messages Offering “Unprecedented”? Um, No… Etsy: Great Community Care & Responsiveness! Etsy: Now Worse Than Facebook For Respecting User Privacy? Android: Major Malware Killed Fast & Clean Facebook’s Privacy Breaches And Plans On Exposing More Personal Info Facebook’s New “Like”: Instead Of You, Websites Get To Post Why You Like Them Is Mexico Safe To Visit? Definitely! Cost Of Living In Bucerias CRTC Backpedals On Allowing False News Broadcasting! Facebook: Now With Even Less Social Networking! Pro CRTC Amendment 2010-931 Arguments & Responses How To Install Carrier-Blocked Android Apps Without Rooting Your Phone Take Action On The CRTC’s Amendments To Allow News Broadcasters To Report Opinions Or Lies As Facts Ninjerktsu’s “Carl Sagan and his Fully Armed Spaceship of the Imagination” As A Single Image Puerto Vallarta & Area: Tips For Snowbirds Bucerias: A Snowbird’s Impressions Facebook: Why The Sudden Monetization Push? Facebook Outrage Du Jour: Your Posts Can Be Sold For Ads Handy Android App: FilesAnywhere, A Fax For Your Phone Facebook Apps Can Now Access Your Address & Mobile Number Diaspora – My Impressions Two Months In First Beach Day of 2011, in Bucerias! Handy Android App: Google Voice Callback Free Swype Touchscreen Keyboard For Android Signal Strength Drop – iPhone 4 vs Droid Facebook Privacy & Security Tips Making Google Voice Work After Moving To Canada Implanted Contact Lenses – Best $5000 I *EVER* Spent! Quantum Darwinism! Pantheism, Monotheism, Atheism, And Communication

Programming

Why You Can’t Just Tell Your Computer What You Want It To Do

I was taking my morning constitutional through reddit today when I clicked through to the blog post “We need a programming language for the rest of us“.  It’s basically a short rant about programming being hard and it not being fair to the average Joe who can’t speak computerese and dammit why ain’t the gubmint doin’ sumpin’ ’bout it???  I left a long comment in reply, and thought it would make a good blog post of my one.  So without further ado, here is why you can’t just tell your computer what you want it to do in plain old English.
The problem with programming languages isn’t that they’re too complicated, or even that they’re “unnatural”.  Programming languages are in fact laughably simple when compared to human languages.  There are only a very few syntactical rules, and they have a vocabulary of just a couple hundred words at most.  Learning a programming language is FAR easier than learning a human language, no question about it.

No, the problem is that computers are stupid.  Incredibly powerful calculating engines and inhumanly fast, to be sure, but unbelievably stupid by any other human standard.  Computers do not understand ANYTHING.  I mean, how many times have you slammed your head into your keyboard, screaming “NOOOOO!  DAMMIT, JUST DO WHAT I WANT YOU TO DO!!!”?  More than once, I’m willing to bet, and if you’re a programmer you’ve probably already invested in a nice padded keyboard to keep your forehead from scarring up too much.

So, computers are definitely dumber than a sack full of doorknobs.  To be able to parse a natural language like English, a computer would need to be able to comprehend context and semantics.  In order to do that, it unfortunately seem to need to be just as intelligent as a human is; all the research seems to point to the idea that in order to understand what humans are gibbering about, you have to more or less be as smart as a human.  Smarter, actually, if you really want a computer that will completely understand what you mean when you say something.  After all, there is still plenty of room for misunderstanding between two average human language speakers even when doing something like giving directions to drive a car from point A to point B.  Unfortunately, artificial intelligence like that is still well beyond the state of the art and will be for some decades to come.  Which is why you tell a programmer what you want and the programmer (who is hopefully as smart as  you and can understand what you mean) writes a program instead of you telling the computer what you want and having it write a program to do what you want.

It is the stupidity of computers that is what makes programming hard, not a programming language’s syntax or it’s construction or the math and logic used in a program.  You have to explicitly outline everything in excruciating detail, because computers don’t understand context or subtext.  THAT is where the perceived complexity of programming languages comes from: having to go into that level of detail, instead of the computer just being able to understand what you mean when you tell it “draw a cartoon of a man running between his house and his car and slipping on a banana peel”.  And the closer to the metal you are, the worse it gets as you’re having to be more and more explicit as there are fewer and fewer interpretative layers between you and the computer’s processing.  That’s why many people can usually fumble their way around with high level scripting languages like Javascript or Python well enough, but start to stumble when C type languages rear their ugly heads.  Being able to provide meaningful instructions to something so stupid and literal minded that it only understands a dozen rules of grammar and only knows a couple of hundred words requires the person doing the instructing to do a LOT of thinking and explaining for it using those extremely limited language constructs.  It’s exhausting and frustrating!

Even using a high level language with libraries of functions and methods that others have built before you to call on, it’s still incredibly time consuming and frustrating.  You still need to know those functions and methods and when to call them, because the computer DOESN’T.  Remember, it’s stupid.  It doesn’t understand context, not even a little bit.  So while to you or me it’s obvious from context that to draw a stick figure cartoon man you’re going to need a circle for a head, a line for the body, and some angled lines sticking off the main line for the arms and legs… a computer still needs to be told that all, every time, explicitly.  You’re going to have to tell it to call those libraries to draw those shapes and how to arrange them all in relation to each other, using the very simple and extremely limited tiny little programming language it can barely parse.

To give you an example, imagine explaining to a four year old child how to drive to the grocery store, get all the groceries you’ll need for the week, pay for them, and then bring them home and put them away for you.  Got it?  Ok, now also imagine that the kid is also deaf, dumb and blind and can only be instructed via tapping morse code on the tip of it’s left pinky finger while it dances the hokey-pokey.  Go on, imagine it.  I’ll wait right here for you to uncurl from the fetal position and overcome the horror associated at the idea of having to do that before I continue.  Alright, now that you’ve recovered I can tell you: a computer is not even as capable as that kid.

And THAT is what makes programming hard: not the language, which is really very simple in nature, but having to write reams and reams and reams of instructions for a complete idiot who can never just ‘get’ what you mean, using just the few words it can understand, over and over again.

We need a programming language for the rest of us

2 Comments

  1. Tyler Style 2011-06-16 07:53

    The follow ups on my reddit comment are an interesting read, too.

  2. bustamove 2011-06-22 04:10

    Yeah – nicely put – 10/10 from me

Post a Comment

Your email address will not be published. Required fields are marked *

*