August 19, 2009

linguistics and all that

I get to use translators occasionally at work.  It can be a fascinating exercise.  I'll ask a potentially complicated question- something like "How many children in your family?"; there'll be an animated exchange for about 5 minutes (well, I'm  busy.  Time flies), and then the interpreter turns around and with a dead straight face says "two."

I'm never sure whether to laugh or cry at that point.  You know you're missing something; however, to find out what it was you've got to question the integrity of the only person who  can give you the answers you're looking for.  Usually, giving it up for a lost cause is the most sensible option. 

Since moving to Linux, I've taken the opportunity to learn how to program.  I can't admit to even being a bad programmer at present- I haven't got that far yet.  At the moment, I'm living out that quote- "Some people's only meaning in life is to stand as a warning to others" - although I'm learning rapidly about gdb's capabilities.  The process is much like learning another language; you start off not even being able to do the basics (although I've got to say I'm glad the first words you learn in program languages aren't "where is the bathroom?"), and to start with even a sentence is too much; a semicolon can cause confusion for days.  It took me about a week to figure out the commands to get gcc to do it's stuff;  my first makefile got me bogged down for a fortnight.

There is, however, a deep satisfaction in being allowed to learn.  Linux, by lowering the barriers, both financial and access, gave me that.  While I've possibly not got the patience to ever program really well, knowing enough to be able to admire the skills of others is a nice start, and I'm starting to get there.

 Some of the stuff I've read is all about which language is the best.  I figured it was going to take some time to learn how to do this, so I may as well try to pick a language that was worth the effort.   The more I read, however, the more it sounds like the eternal disputes we get across language barriers; some advantage/ disadvantage reviews look more like a cockney trying to convince the Americans to talk properly than a learned discussion on the merits of a language.

For my 2 cents, I'd offer the following list:

 1) flexibility/ extensibility.  For computing languages, it probably means an easy way to port, probably through a library.  If you look at the English language, for example, one reason it has become so universal is the ability to create a dialect that crosses part of the barrier between one language group and itself (ever tried to understand Pidgin English?).  It also allows moving with the times; yesterday multithreading, today the cloud, tomorrow... spoken languages achieve this by constantly picking up new terms and allowing the older ones to waste away by neglect; some similiar capability should exist for computing languages.

2) Speed.  I was tempted to put this one at the top.  Like language, programs are not there for their own end; they serve a purpose, and the quicker they achieve that purpose the better.  Why do we give common things nicknames?   Programming languages should not just get the job done; they should get the job done quicker. 

3)Specialisation.  The ability to convey meaning in a minimum of time is part of the reason English has so many subspecialised areas- maths, architecture, medicine, engineering  all have their unique terms.  They exist simply to allow precision without having to repeat yourself.  Programs (and programming) should be no different.  Life is short; so should the program be.

 4)Understandability.  This one plays back into the other two.  If you need to learn a completely new way of looking at words to learn how to program, it's making it unnecessarily difficult.  Learning a new concept is one thing; having to learn a completely different use for an old concept is another.  An excellent example is the end-of-line character.  It's not a full stop in most languages; therefore, to program is to have to re-learn English syntax.

I realise I'm asking for the world.  However, perfection isn't something to ignore; "he who aims at nothing is sure to hit it."

Click Here!