Don’t learn a syntax, learn to change the way you think

A lan­guage that doesn’t affect the way you think about pro­gram­ming, is not worth know­ing.”

- Alan Perlis

In my last post, I out­lined the tech­niques to learn­ing that I picked up from Josh Kaufman’s TEDx talk. I briefly men­tioned that one should learn a new par­a­digm rather than a lan­guage with a slight­ly dif­fer­ent syn­tax (e.g. C# <=> Java, Action­Script <=> Haxe) but didn’t stress near­ly enough the impor­tance of doing so.

As the math­e­mati­cian Richard Ham­ming once said, that it’s pos­si­ble for there to be thoughts that we can­not have:

Just as there are odours that dogs can smell and we can­not, as well as sounds that dogs can hear and we can­not, so too there are wave­lengths of light we can­not see and flavours we can­not taste. Why then, giv­en our brains wired the way they are, does the remark “Per­haps there are thoughts we can­not think,” sur­prise you? Evo­lu­tion, so far, may pos­si­bly have blocked us from being able to think in some direc­tions; there could be unthink­able thoughts.”

- Richard Ham­ming

but what does this have to do with pro­gram­ming lan­guages, or any lan­guages for that mat­ter?

What we cannot express, we cannot think

BBC went to a remote, uncon­nect­ed tribe called the Him­ba, whose colour vocab­u­lary is very dif­fer­ent from us in that they only have 5 words for colour.


What they found was intrigu­ing.

The Him­ba is able to eas­i­ly iden­ti­fy the square with a dif­fer­ent shade of green in this pic­ture:


because they have dif­fer­ent words for the two shades of green. For us, this feat is dif­fi­cult because to us, they’re all green.

On the oth­er hand, because we have two words for blue and green, it is easy for us to spot the blue square from the rest:


For the Him­ba, who has only one word that describes both blue and green, they strug­gle to iden­ti­fy the square with a dif­fer­ent colour.

The impli­ca­tion is pro­found, that not only do lan­guages shape our think­ing, they might pro­hib­it it.

The lim­its of my lan­guage mean the lim­its of my world.”

- Lud­wig Wittgen­stein

What if the same is true for pro­gram­ming lan­guages?

Pro­gram­ming lan­guages have a devi­ous influ­ence: they shape our think­ing habits.”

- Dijk­stra

What if our cre­ative pow­ers are lim­it­ed by the ideas that can be expressed by the pro­gram­ming lan­guage we use?

What if some solu­tions are out of our reach because they can­not be clear­ly expressed in those lan­guages? How would we ever dis­cov­er these unknown unknowns?

With­out being aware of the out­side pos­si­bil­i­ties, would we ever become aware of our uncon­scious incom­pe­tence?

I don’t know of any research into the impact pro­gram­ming par­a­digms have on cre­ativ­i­ty. From per­son­al expe­ri­ence, my most cre­ative solu­tions have come from my ven­tures into non-main­stream pro­gram­ming and data­base par­a­digms. These ven­tures have opened doors in my mind and allowed me to see solu­tions I couldn’t before.

By con­trast, my oth­er learn­ing efforts such as Dart and Haxe has taught me a slight­ly dif­fer­ent syn­tax for express­ing the same ideas that I’m already famil­iar with. Whilst they can prove to be use­ful tools for spe­cif­ic tasks, they failed to have the same mind-expand­ing effect that is far more valu­able to my long term career.

On Diversity

We can diver­si­fy our ways of think­ing and approach­es to prob­lem solv­ing by learn­ing new pro­gram­ming par­a­digms, but that’s not the only way. In fact, some of the most notable peo­ple in the field of com­put­er sci­ence has come from oth­er dis­ci­plines.

For exam­ple, Alan Kay was a biol­o­gist, and it was the study of biol­o­gy that inspired him to coin the term objects.

I thought of objects being like bio­log­i­cal cells and/or indi­vid­ual com­put­ers on a net­work, only able to com­mu­ni­cate with mes­sages.”

- Alan Kay

(the fact that we have come to teach and think about OOP in a very dif­fer­ent sense to what Alan Kay envi­sioned is anoth­er mat­ter..)

Sim­i­lar­ly, Joe Arm­strong start­ed out as a physi­cist.

And Adam Torn­hill, a speak­er whose work I thor­ough­ly enjoy, has learnt much about pro­gram­ming from his stud­ies in psy­chol­o­gy.


We also need diver­si­ty in our com­mu­ni­ties.

There’s a famous Chi­nese proverb that goes like this,

three hum­ble shoe­mak­ers brain­storm­ing make a great states­man.”

How­ev­er, this only holds true if each of the shoe­mak­ers is able to offer a dif­fer­ent per­spec­tive and ideas.


In real­i­ty, giv­en that the shoe­mak­ers have the same pro­fes­sion and gen­der they prob­a­bly have a much greater over­lap in mind­scape.


The result? The shoe­mak­ers’ numer­i­cal advan­tage amounts to lit­tle when it comes to find­ing cre­ative solu­tions. Which is why, in a cre­ative indus­try like ours,  we need to guard against mono­cul­ture.


To sum­marise, learn­ing a new lan­guage with­in the same par­a­digm gives you imple­men­ta­tion options and trade-offs for the set of approach­es that is best afford­ed by the par­a­digm.

Learn­ing a new par­a­digm gives you entire new approach­es that you didn’t have access to before, and has a far longer-last­ing ben­e­fit. Which is why, giv­en the choice, you should learn a new par­a­digm rather than a new lan­guage.