On languages, programming paradigms and 'coding for everyone'
Language is a substrate for thought. A means of translating figures that exist as pure idea into a form that can be communicated. Some ideas can be expressed as speech or transcribed in writing. Other ideas defy literal translation and can only be represented through visual imagery or music.Â
Language not only expresses our thoughts but shapes how we think. Fleeting ideas become higher-ordered and more structured concepts through the linguistic scaffolding we use to "think them through."Â
Ideas put through the filter of a language either benefit from its semantic richness and depth of syntax- or they have expressive bits of meaning shaved off from the edges, as if by crude tools, from a language lacking the ability to fully communicate robust concepts.Â
Languages form personal and cultural identities. Memes given form and shape by language find receptors in our minds and change us.  There are words that can't be expressed in any other language.  Japanese contains layers upon layers of social deference, which reinforces generations of cultural values.
The point of all this is to say â a language becomes an intrinsic part of who we are, and how we think.
So what then of programming languages?
First of all, I would argue that programming languages are not languages at all. Â They are not written forms of spoken word. Â There are only a handful of them that can (almost) sensibly be read aloud.
Programming languages are actually a kind of sophisticated calculus. They are a system of communicating a programmer's intent into a machine's functional algorithms.
The problem isâ coding, or rather the need for the final productâ a programmed applicationâ continues to extend to every aspect, and every field of our modern lives. Â And the means of production, the ability to code, is limited to a relatively small part of the society who are programmersâ who I would suggest share similar psychological traits and dispositions (I have nothing to back that statement up with other than observation). Â This doesn't mean there aren't brilliant outliers, but they are the exception, not the rule â as evidenced by the ongoing discussion led by the statement: "everyone should learn to code."
Like I said - the problem has been framed incorrectly. Â Programming languages have evolved and been refined by generations of programmers who share similar traits and the languages themselves reinforce and support the way in which these programmers are most comfortable thinking and creating. Â Asking a designer to suddenly become a programmer is as unfair as asking an illustrator to suddenly become an accountant. Â
This doesn't mean there aren't 'T' or 'I' shaped people who can do it but it does mean that it's a bit like learning to write with your other hand. Â There's a more natural and intuitive way to do it.
We need to change the programming paradigm. Â We need to invent new languages, metaphors, input devices and as-of-yet undiscovered means of production to sit as the interface between idea and execution for non-analytical, creative, intuitive and other types of thinkers in our society.
[ EDIT - 10 Dec 2013 - I've been thinking about this topic a lot, and have removed the discussion of how children are encouraged / discouraged to learn programming according to gender, so I can write about that separately. ]