Monday, June 20, 2016

Programmer Language

Ben Kuhn asked in this blog post: why are my social circles so saturated with programmers? There must be some reason for this. One possible reason he suggested:

Perhaps the various subcultures of programmers are closer together, and more distinct from other subcultures, than I perceive. Maybe “programmer culture” is less analogous to other single professions and more analogous to “academic culture” or “hippie culture,” where it would be more reasonable to have that be your entire social group.
I think this is the most likely one for several reasons, involving the entire trajectory of my undergraduate career, as well as this tour-de-force of anthropology explaining programmer culture.

Here’s one specific facet of it that I’d like to talk about: Programmers (and people in related professions) talk differently from other people, and it's noticeable.

If you’re looking for it, that is. Many times, when people who aren’t in “programmer culture”1 encounter it, they shrug unfamiliar terms off or try to ask for clarification in a general way. So we don’t even notice what jargon we’re using. I have a friend who is militant about asking questions when she doesn’t understand something, and it becomes obvious when I’m talking to her that I use “programmer culture” jargon without even thinking about it.

Usually, though, it’s not obvious, because I, like Ben, live in an incredibly well-filtered bubble full of programmers and people who have learned to live with programmer culture.

Here are some of these semi-technical terms that I’ve collected, trying hard to notice the way I talk on a day-to-day basis:
  • The word "nonzero" used in any context. E.g. "There are nonzero reasons to work for a big company, but I sure wouldn't want to."
  • Using the letter "N" as a word meaning "some (large) number, I don't know how many". E.g. "I have a package at the leasing office. Or rather, N packages."
  • This one's only used in text: using an $UNDERSCORED_VARIABLE to denote "fill in the blank with whatever's most convenient." E.g. "I do my own taxes by hand, but $YOUR_FAVORITE_TAX_SOFTWARE is probably a fine choice as well."
  • The term "stack", used to refer to all sorts of stack-like things: one's workload or to-do list, most commonly. "I'll try to get that done for you, but I have a lot of things on my stack today."
  • The preposition "modulo," meaning "plus or minus" or perhaps "disregarding". (For that matter, the term "plus or minus"!) E.g. "I'm done building my new bike, modulo some adjustments to the rear derailleur."
  • The term "order" or "on the order of", originating in the term "order of magnitude" or sometimes more like "order of convergence" as in computer science. An example of the first sense: "I have, like, order twenty boxes in my apartment right now." (Usually accompanied by a vague hand-waving motion.)
  • Used in text conversations, as a correction: "s/thing/other_thing/". E.g.
    me: I'm writing a tumblr post about the programmer dialect
    me: s/tumblr/blog/

    This is sometimes used in place of the more common Millenial idiom, which is to just type the correction preceded by a *, with enough context to be comprehensible: in this case it would be "*blog post".
  •  The term "there exists," used as it is in mathematics: e.g. "I'm sure there exists some way to do this correctly, but I'm sick of trying to figure it out; I'm going to try something else."
  • The word "nontrivial," used roughly as it is in mathematics to mean something like "significant": e.g "I want to do my own taxes, but that's a nontrivial amount of work." It's a quantifier, with its own distinctive flavor of how much it means.
  • "Orthogonal," used to mean "not related to or influenced by." For example, "He's a good friend to me, but that's orthogonal to whether he's actually a good person."
  • "Abstraction layer" or "level of abstraction"; not very commonly used outside of technical areas,  but when it is, it can be potent. E.g. "Civilization is an abstraction layer over the harshness of reality."
  • The phrase "is a function of"; I'm not sure this one is specific to programmer culture, but is probably used more commonly. Example: "Whether I want to go to the party is a function of whether my boyfriend can go."
  • The word "parameter" used to mean something like the inverse of "being a function of" something else. E.g. "Oh, you're looking for a new apartment? What are your parameters?"
  • The term "strictly better" or in general "strictly," used in the most pedantic sense of the word from math - or sometimes used less pedantically, resulting in immediate correction by whoever is nearest. "This startup job offer isn't strictly worse, since they offered me more vacation, but I think it is worse on balance."
  • On a related note: Very-carefully-phrased sentences, a result of the rampant pedantry in programmer culture. I'm finding it hard to think of an example, but I know it when I see it.

I’m sure this list isn’t exhaustive, since I seem to think of new ones every day or two just by paying attention to what I’m saying. And these are more representative of my own linguistic silo than programmer culture as a whole - they're probably more math-influenced than average, for example. What other parts of the “programmer” dialect have I missed?

1: “People who are part of programmer culture” is distinct from being a programmer; neither one implies the other. Silicon Valley programmers are much more likely to be part of “programmer culture,” but it’s still not a guarantee; people in college who hang out with a lot of programmers (*cough*) may be part of the culture without doing a lot of programming themselves.

1 comment :

  1. Moar:
    -Expected Value in the economic sense
    -Funges (as verb of fungible), which is not actually a real word
    -Least Convenient Possible World
    -Set of..., sub-set, intersection of.., etc