Schlagwort-Archive: Languages

Fluency in programming languages

I recent­ly had a con­ver­sa­ti­on with a fri­end who is cur­r­ent­ly job hun­ting for a pro­gramming job. He is a smart guy who holds a PhD in phy­sics, has spent a good num­ber of years in rese­arch and – as part of the life of a modern phy­si­cist – had to wri­te code as part of his day job alrea­dy. But he said some­thing that got me thin­king: he said that once you mas­ter the basic con­cepts of pro­gramming, you can pro­gram in just about any lan­guage you’re put in front of.

I stron­gly dis­agree. I feel that in many ways, Lud­wig Wittgenstein’s “The limits of my lan­guage mean the limits of my world.” holds even more true for pro­gramming lan­guages than it holds for natu­ral lan­guages. Of cour­se, given a good enough intro­duc­tion to a lan­guage and some time, you can wri­te pro­grams in many lan­guages – pro­vi­ded they’re simi­lar enough to what you know alrea­dy. But to reach a cer­tain level of mas­te­ry in any lan­guage, to be able to wri­te idio­ma­tic code, you have to immer­se yours­elf qui­te deeply and prac­tice qui­te a bit. To my mind, most peop­le take a sizab­le num­ber of years to reach that level of exper­ti­se – and not reco­gni­zing that indi­ca­tes that this level hasn’t been attai­ned yet.

To be a good pro­grammer, you should be able to know your lan­guage insi­de out. Can you give a list of short­co­m­ings of your lan­guage that goes bey­ond “It sucks?” Do you under­stand whe­re the limits of your lan­guage lie, what design decisi­ons were made with what pur­po­se in mind?

And to be an excel­lent pro­grammer, in how many dif­fe­rent lan­guages have you attai­ned that sta­tus? In how many dif­fe­rent types of lan­guages? If you’re given a spe­ci­fic pro­blem, how do you deci­de which lan­guage is the appro­pria­te tool for the job?