I'm currently searching for the right terms to use...
# thinking-together
n
I'm currently searching for the right terms to use for some proposed programming constructs, and "*class*" is precisely the word I want to use for a specific construct: it makes the most sense, in terms of its non-software meaning. Unfortunately, the term "class" has been absolutely butchered by OOP. Do I dare reappropriate it? I'm not sure I have a good alternative. I need a term that can mean both a label for things (e.g. "X has class Y"), but also the collection/aggregation of things having that label (e.g. "class Y has 7 items").
🧠 2
c
Everything is subject to disruption - actually feels overdue for someone to take a new swing at class - do it
n
I did think along those lines, but imagine the search engine clashes if I ever was to release something popular, eek. People would be pulling up tons of bad resources.
And of course, everyone who first learns one definition and then has to learn another would have to suffer through that confusion.
"Group" is another alternative that I'm evaluating
👍 1
i
How about.... "category" / smoke bomb /
😂 3
n
My answer: too many syllables 😛. The aesthetics of a term is important to me.
People would be saying/reading/writing it a lot!
i
How about... "type" / superman dive / Okay, jokes aside — some people prefer to reuse terms ("tag", for instance, is used in a billion and one different contexts). Other people prefer to invent terms ("hypertext"), or pull terms out of obscurity (looking at you, "complect"). Each person has their own taste. There's no harm in any of these approaches as long as the context is adequately defined.
👍 1
n
I definitely fall into the first "*class*" 🙂. I want to tap into people's existing intuitions. I had a phase where I invented new terms, but soon I was confusing even myself about the semantics of the underlying constructs!
Using existing terms with existing connotations gives me a clear red flag when the semantics start drifting (a.k.a. I'm getting confused). I'd actually strongly recommend other designers follow a similar naming scheme for that reason. Until the dust settles, at the very least!
Roam Research has actually been crucial for helping me re-terminologize. I make every usage of a term a link, and as the semantics change, I can perform a simple rename operation and then review all the sites where I discussed the construct!
c
Blob? Block? Set? The problem is all the preconceived ideas behind these words. Perhaps make up a word, and force users to think about what it means? Gort, Bur, Pag 😉
n
Oh god no 😧 imagine the learning curve
As I mentioned in an earlier post (and got pushback for), I think we want to bring PLs as close to human intuition as possible. To me that entails finding very carefully crafted words that map back to widely-understood concepts.
Even if there’s a slight lossiness to the mapping
j
I’ve been reading “Women, Fire and Dangerous Things,” which is about (amongst other things) meaning and categories. I think it’s tempting to think that class is precisely the semantics you want, but if the point is for existing human intuition to apply as directly as possible, there are meanings associated with class that are likely unrelated to your use case (and which could cause confusion). A class of students, for example, which was likely motivated by class as category, but has taken on significant other components. Or class as social standing, which I suspect followed a similar path. I think group has fewer associations and might be better for that reason.
❤️ 1
c
Regarding learning curve; don't all new languages have a learning curve? Does using an existing concept get in the way of understanding something new (especially if the new thing isn't quite the same as the old) ? Perhaps a new, unique, word would help the concept stick in the mind more easily.... That said, I was only half serious about making up names 😉
m
“cluster”?
n
@Jared Windover It was actually my intent to connote both "class of animal" and "class of students": in my current PL design a category is indistinguishable from a collection ("classroom"). The social status connotation is not intended, but given the context is coding, I doubt people would start thinking their source code is describing wealth and power inequality. The context of use should provide clarity. But regardless, I'll probably prefer "group" for now, to avoid OOP at the very least.
@Chris Maughan An existing concept gets in the way of something new when you choose a poor word for it. For example, "objects" in traditional OOP are nothing like our everyday understanding. ..."An object is instantiated from a class (template), which is its inherent and sole category. You can't re-categorize/re-purpose an existing object. Just like in the real world!" ..."An object has public and private members, because that makes them more 'secure' or something. Just like real life!" ..."An object has a fixed set of methods (behaviours) inherent to them. Systems don't have behaviour as a whole; behaviour belongs to individual entities, and they are all pre-defined before the system is turned on. Wow, reminds me of reality! Animals and pencils are both like this." ..."Objects change when other objects call their methods, and the world freezes whilst they change. Every object has total authority on whether its state changes; no external force has the power to change its state. Just like the real world!" And so on. That's when existing intuitions aren't helpful.
Traditional objects are just a big knot of everything some computer scientists came up with after reading about biology whilst on an acid trip. No single term can intuitively describe that knot. The solution is to avoid knotting together half-baked metaphors in the first place.
(OOP rant over)
c
I think you might be making my argument for me though 😉 If an existing concept is getting in the way, and none of our existing concepts accurately describe what is happening, time for a new one.....
n
Oh you mean "an existing PL concept" rather than "an existing real-world concept"? In that case, sure, having a pre-existing PL concept that has already claimed the term for itself (and poisoned it with a complicated meaning) definitely does pose a problem.
w
Certainly, my inner logician understands the label "X has class Y" sense as a predicate and the aggregation "class Y has 7 items" as a set. Of course, the logician starts using the words type and class when predicate/set paradoxes some up.
Really tag is good: "X has tag Y" or "X is tagged as a Y" and also "7 items are tagged Y" or "the tag Y has 7 items."