3
$\begingroup$

For example, words like "method," "puts," and "object" do not have as much linguistic markedness as "comparator," "eff-gets," and even "function" (because context alone at the very least conjures up the math term). So, for example, how do you make clear when explaining classes that when you say "your method doesn't work," that you mean the class's function doesn't work rather than the manner in which a student is carrying out the task at hand doesn't work? My current method(!) is to never use the word with its mundane meaning in a tutoring context: "In the last session, the professor went over ways for writing methods for a class."

(It may be the case that this isn't a problem for some, but in my first year, I didn't realize that "for-loop" wasn't jargon on the first exposure.)

EDIT: People have missed the point of the question. The names of certain CS concepts have more markedness (“standing-out-ness”) than the names of other concepts. Which particular concepts do not matter: “variable” sounds more like a jargon word, more like a reason to have the ears perk up and know to start taking notes, than “assignment.” When speaking out loud, how do you non-stiltedly mark jargon whose meaning may be overshadowed by a more common meaning in a non-jargon context?

$\endgroup$
7
  • $\begingroup$ Yes I can see that as a problem. But on a side note: a method can be a function or a procedure (some people make a mash up of the two, but this is usually an anti-pattern, and I can't remember the case where it is not). $\endgroup$ Oct 24, 2019 at 18:18
  • $\begingroup$ Session also has jargon meanings. $\endgroup$ Oct 25, 2019 at 7:15
  • 1
    $\begingroup$ Are you asking about why it is important to use jargon correctly or how we can avoid jargon and use generic terms? I can actually say a lot more about the difference between math and CS in the use of terms variable and function. The concepts are very different in the two fields. $\endgroup$
    – Buffy
    Oct 25, 2019 at 12:40
  • $\begingroup$ Suggest a non-jargon context in which this might be important. Not a class lecture, I assume. $\endgroup$
    – Buffy
    Oct 25, 2019 at 12:51
  • $\begingroup$ @ctrl-alt-delor Anything with getNext() or similar both returns information and changes internal state. Stack or queue pop() methods are similarly messy. There are undoubtedly more such examples, which is why the rule remains soft in most languages. $\endgroup$
    – Ben I.
    Jan 14, 2022 at 12:29

3 Answers 3

3
$\begingroup$

In direct answer to your question: not much. I keep my approach here very simple. I do as I would for any other time that a word could have two meanings. If the word use feels ambiguous, I clarify which version I mean. If it doesn't, I let it stand.

It sounds like you're trying to put a lot of careful discipline into your speech patterns. There's nothing wrong with that; it's admirable! It may even help to stem a bit of confusion, but I honestly haven't found that being more relaxed (and clarifying as needed) has caused many roadblocks for my students, so I don't worry about it too much.

I do occasionally discuss trap words when first introducing them, just to make clear to my students that there are now two meanings in play.

$\endgroup$
2
$\begingroup$

Actually, a static method of a class is the same as a function. The context that is available in the body includes the parameters and the containing (non local) variables. But an ordinary (non static method) is different. It also has as its context the actual object that was sent the message that invoked the method. So, the concepts are different and if you don't get that part the whole meaning of OO programming can be lost.

You "call" a function (static method), but you send a message to an object, via some reference variable that refers to an object of some class. The actual class may not be obvious (or even knowable) from the text of the program without executing it. The class of the object actually determines how the message is handled (which method is invoked). It isn't the text of the program, but the dynamic behavior of it that matters.

For example, consider a list that contains objects of some class along with objects of its subclasses. It is heterogeneous in a certain well defined way. You insert into that list in some way and later, at a different part of the program you want to process all of the objects in that list. So you get an object and you send it a message. If the message is defined in the superclass then the objects of subclasses will understand it, but each might have the message implemented with a different method. When you extract the object from the (heterogeneous) list you don't actually know what class it has other than that it conforms in some way to the protocol of some superclass.

If you can follow the above, you may start to see how important the language actually is and how misleading it can be to use simpler, but inaccurate, language. Dynamic dispatch is the essence of OO programming and what really distinguishes it from other paradigms.

$\endgroup$
1
  • $\begingroup$ This Answer helped me because it prompted me to think a little more about Static and the occasional times I used it. I do still wonder if we couldn't have simpler, but accurate programming languages. Or, fewer of them. But that was a different Question... $\endgroup$
    – Scott Rowe
    Jan 14, 2022 at 15:28
2
$\begingroup$

It is a CS class isn't it? You cannot refuse to use the language of the trade simply because it may have a different meaning for beginners. By all means use the jargon. That may help reinforce the concept in the students' minds.

You just may need to put the extra effort to disambiguate frequently by adding say: I mean your program method. We do this every where. Forexample, a Physics teacher may tell students the field near the GSM tower is strong & then add something like: I mean the electromagnetic field.

Use the jargon bro: they are the more precise scientific terms. Any euphemism or "by-pass" may end up beclouding the concept and befuddling the students.

$\endgroup$
2
  • 1
    $\begingroup$ You understood the opposite of what I meant: I refuse to use the language of normal people, for fear that when I use the language of the trade, my words will not be recognized. $\endgroup$ Oct 25, 2019 at 0:50
  • $\begingroup$ OK I get you now. Yes, keeping non technical usage of jargon out can help. E.g. instead of use this method, one could say: use this style for the common meaning. $\endgroup$ Oct 25, 2019 at 6:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.