Sam Gentle.com

First class

A ticket featuring several first-class things

In programming it's common to talk about things being first-class, in the sense of being fundamental to some system; the system is designed with them in mind, and they are part of its core model. To say a language has first-class functions is to say that you can pass functions around like you can any other data and they can be used anywhere.

Some languages do not have first-class functions, meaning functions operate according to some separate system and are usually not as powerful. This is an especially bad thing, because functions are the basis for the abstract unit of operation and being able to manipulate them directly and make them part of your data is immensely powerful. However, there are other non-first-class things too. For example, some languages (like C) do not even have first-class strings, meaning they have to be implemented in terms of something else (arrays).

The point is that everything that's first-class gets a seat at the design table. Having first-class functions means functions (and functional programming) are part of the core of what your language is. Having first-class strings means your language is intended to be used with strings, the other features in your language work well with strings, and strings are as easy to use as anything else. That's not to say you couldn't implement your own strings. Hell, you could implement your own programming language, but it would always be a little bit worse for not being first-class.

Going beyond programming, there are other examples of systems where things are first-class. The internet is one: on the internet, servers are first-class. Every website you visit, bank transfer you make, message you send is going to or coming from a server somewhere. There was a time when every computer was a server, and people ran their websites on their home computers. Those days are basically gone, though; these days you probably wouldn't have your own website, and if you did you'd probably run it on someone else's server. Your Wordpress or Medium or Tumblr blog is second-class on the internet the same way strings are second-class in C.

What's bad about this? Well, nothing, necessarily. Much like people use strings every day in C, people get by just fine on Wordpress. But the internet wasn't designed with you in mind, and that leads to certain consequences that can limit or surprise you. These services can go down (though it's admittedly far less likely than your own server going down) or remove your content if they find it objectionable. Worse still, if you want to do something that hasn't already been envisioned by an existing provider (like, ahem, a demo server), you can't do it. Being second-class on the internet means you can't be creative with it. You can be creative on it, but that's not the same thing. You're limited to ways of using the internet that someone has already thought of.

Another important system with thisn property is the economy. Capitalism is a fine system, as long as you are a first-class member, which means holding and investing capital. Beyond home ownership, not a lot of people do this. The main capital most people have access to is their labour, and instead of investing it by starting a business they rent it out via employment. But there's no chance of employment generating a substantial return; any extra value you generate is immediately captured. In employment, your membership in the economy is implemented on top of your employer; it's second-class.

That's not to say that everyone is able to become first-class in this sense; the reason it is rare is because there are various systematic barriers to membership. In many cases people don't have sufficient resources to pay their biological debts, and have no choice but to rent their labour. In other cases, the barriers are implicit, such as being discouraged from or not knowing about investment as an option. Sometimes, too, the barriers are self-imposed, such as being underconfident or intimidated.

I believe a lot of the disconnect between left- and right-wing politics comes from crossed assumptions in this regard. Every story about a plucky young libertarian who hauled themselves up by their bootstraps is someone who joined the first class. Every downtrodden single mother chewed up by the system is someone stuck in the second class. In both cases, the message is simple: becoming part of the economic first class is good, being in the second class is bad. The question is just about in what proportion we encourage people to get into first vs ease their time in second. Two points that don't make a lot of sense are to assume everyone is in the first class, or to aim for a permanent-yet-livable second class.

Ultimately, much like with programming or the internet, being a second-class citizen in the economy can work fine, but there's always some things that aren't available to you, and the inevitable feeling that the system isn't built with you in mind. That's because it isn't. This may be okay for strings or websites, but I don't think it's something you should be okay with when it comes to your life.