Fluency in programming languages

I recent­ly had a con­ver­sa­ti­on with a fri­end who is curr­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 alre­a­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 languages–provided they’­re simi­lar enough to what you know alre­a­dy. But to reach a cer­tain level of mas­tery in any lan­guage, to be able to wri­te idio­ma­tic code, you have to immer­se yours­elf quite deep­ly and prac­ti­ce quite a bit. To my mind, most peo­p­le take a sizable num­ber of years to reach that level of exper­ti­se – and not reco­gni­zing that indi­ca­tes that this level has­n’t been attai­ned yet. 

To be a good pro­gramm­er, you should be able to know your lan­guage insi­de out. Can you give a list of short­co­mings 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 decis­i­ons were made with what pur­po­se in mind?

And to be an excel­lent pro­gramm­er, 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?


Beitrag veröffentlicht

in

von

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert