speaking in tongues
I recently had a chat with a friend of mine about how dissatisfied I feel that I only speak one language (one and a half, counting the few semesters of Spanish I completed in high school). The compassionate fellow he is, my friend tried to console me, pointing out that I’m at least lucky that the one language I do speak is English (agreed) and that, considering my wealth of programming experience, I am fluent in several languages.
This isn’t the first time I’ve heard someone talk about being fluent in a programming language. I have never met a developer in person who would use that phrasing, though. In most programming ‘languages’ it is perfectly possible to write code in any natural language you want. More importantly, the difference between different programming languages tends to be more along the lines of how processes are structured (if I define a variable here will I be able to see it there? change its type? delete it later? what tools are provided to help me structure data and operations on it? how many lines does it take to write 99 bottles of beer?) than the enormous differences in vocabulary that you see going from, say, English to Italian. The ‘vocabulary’ of code, the API’s available, are something that don’t need to be memorized for a developer to be proficient; in fact I would say that hardly any developers memorize even built-in APIs (those included with the language as standard libraries) to the extent that they would learn vocabulary in a second language.
I have thought about this for a while and I don’t know of a better word for a programming language than “language.” But sometimes I really wish there was one.