Part of the problem here is that we’re not actually doing computer science. We’re doing programming, with a wide variety (hundreds!) of imperfect languages with different combinations of features and restrictions. There are only so many words to go around, so the same names get used for vaguely similar features across many languages, and native speakers naturally attach their mother tongue’s baggage to the jargon it uses. Someone who got started with JavaScript would have a very different idea of what a “class” is than someone who got started with Ruby. People come to Python or JavaScript and exclaim that they “don’t have real closures” because of a quirk of name binding.

I’m as guilty of spouting off inaccurate names of things as anyone. I catch myself using the generic term for the thing I’m talking about even if the language I’m referencing doesn’t support that feature. I use “method” a lot and I likely mean “member function”. I definitely say “argument” rather than “parameter”.

Fascinating piece as always from Evee. I’ve got a bunch of her posts saved to read later (as you can tell, this post is now 8 months old). I recommend subscribing to her site if you’re not already.