Of course there are resemblances, but also big BIG differences.
Resemblances: the most obvious ones, the existence of a set of synctactic rules, a semantic and also, though I still don’t really grasp the concept for computer languages a pragmatic.
Also, certain concepts as variables can be also thought of in terms of natural languages. Usually, we linguist talk about variables in the fields of phonology and phonetics (not everyone pronounces the “sounds” in a language the same way, there is even a social structure to explain and predict certain sounds in certain contexts, etc.), but I was just thinking the other day about the scope of code (in the computer sense of the word) in which a certain variable holds a certain value, for example, and relating [this] to phenomena like anaphora in spoken/written texts. For example, in (this) brief text, the this I put within brackets refers,in the present paragraph, to “the fact that a variable has a certain value”, so, the reference of that pronoun is anaphoric, you have to look for it in the preceding text. But the pronoun within parenthesis has a demonstrative value, its meaning not being anaphoric because it depends on the noun after. I know it is not a perfect analogy, but surely we all have read complex texts in which you ask yourself what is the meaning of this expression and you have to search for it in the preceding/or following text. And the expression involved, so, can be thought of as a kind of “variable” because if it appears in another place perhaps it has a different referent.
Also, I like the “free” syntax of Python, I mean, it seems a little more free than in other languages I’ve seen. I t is a wide stretch, but it makes me think of old Latin, because the word order was a lot more “random” than it was in late Latin, less fixed.
This is, of course, of no use to the task of programming, but while I work on my “pythonese” I have to use as many analogies to make sense of things. Yesterday I was talking to another linguist and I told her that I was building a kind of “pidgin” to interact with my Programming Languages instructors and the other students, because we use a lot of similar words but with quite a different meaning, yet the subjective values we give to different languages are so similar…
- code: for programmers, it is a piece of programming sentences, but for us it is a whole linguistic system,
- words (reserved words, for example): there are no such words in natural languages, unless you are talking about some jargon or cryptic language,
- pragmatics: as I said, I don’t grasp completely the programming languages sense, but for linguists and pragmaticians, context is key,
- alphabet: for programming languages it is a set of characters, but for us linguists each character ideally “corresponds to” a phoneme, which is a unit that combines with others to form units with meaning but alphabets do not always correspond precisely to a sound (as English speakers you know this much better than myself, as a Spanish speaker we have fewer problems of correspondence),
As for subjective values, I have heard and read expressions like : “this language is logic”, “clear”, “intuitive”, “successful”, “efficient”, “superior/inferior”, “fun”, “nice”, “challenging” and my top favorite, “elegant”. As a sociolinguist (I didn’t say this before, but though I know about Chomsky main ideas, I am not a generativist, I would have it a lot easier to learn how to code!), we are trained to avoid this kind of judgement, but it is fun to notice that the subjective evaluation works also in the field of programming languages.
Sorry for the quick answer, I hope I didn’t make many grammar errors and you could understand me.
(PS I am a little behind, hopefully I will catch up soon with the lessons. But with codecademy I got to the first part of Functions, so, behind with the reading, more into the practicing. I am reading also the book Natural Language Processing with Python, though, so, not so behind!)