Writing

Feed Software, technology, sysadmin war stories, and more.

Monday, February 13, 2012

I don't believe in "because it's there"

I am disturbed by the sheer amount of heat, light and sound which is generated by the both the world of programming language development and its close cousin, the realm of frameworks. It seems like every time you turn around, someone is trying to pitch yet another flavor of the month to you. It just makes no sense to me.

I've used a fair number of programming languages over the years. I liked some more than others. All of them had a specific reason for being used, and none of them were "because it's there".

Well, almost none of them. There was the whole Commodore VIC-20 BASIC thing. In those days, you got a manual which told you how to poke around and do interesting things. It just happened to be programming as we know it now. Back then, it was just what you did with the box, just like you'd put a quarter into an arcade game or change the channel on a TV. Those little bitty boxes were there to do random things as you commanded.

Toys R Us sticker

It even came in stages. When you hit the end of the included manual, they told you to go to your "dealer" and pick up the Programmers Reference Guide. For me, that meant Toys R Us, as the fading orange sticker on my copy shows. I don't know how it was only 97 cents even then, but that's not important here.

Later in life, a DOS box came along, and some friends and family would have the occasional issue on their own computers. I wanted to write something for them which would help, but sending them GWBASIC things was right out. I wound up with MS QuickBASIC which could compile my code into a real EXE! Then they could just run it like any other "real" program.

A few years after that, a new problem called for a program which would stay resident in memory and keep running. In the DOS world, we called those TSRs - Terminate and Stay Resident. You had to fit into 640 KB of low memory, and anything you ate with your TSR was unavailable for other programs. The huge QB programs just wouldn't cut it. It was also a real pain to deal with interrupt vectors and the like in QB, so I added something new.

Some friends had shown me Turbo Pascal and the low-level stuff which was possible, and how the programs didn't have huge memory footprints. I started using it for certain types of problems, and went back and forth.

When I started using Unix boxes, the problem was one of extending existing software. The things which needed help were all written in C, so that's what I picked up. I happened to find it agreeable and started using it for new projects. The lack of QB and TP on the BSD and Linux boxes in my life probably helped that shift happen.

There's a pattern emerging here: find a problem, find something to solve it. If it happens to be a new language some of the time, so be it.

This played out with the one time I wrote something in Perl to do some NT user lookups. ActiveState Perl was the only thing we could put on there at short notice at no cost, and I was able to cargo-cult a bunch of API calls together to make a service.

Years later at another job, some guys went on vacation and their service went down. It happened to be written in Java, but the root cause looked like the sort of thing I used to fix all the time. I checked out their code and figured out what to twiddle to fix the problem. Then I talked to a friend to find out the idiomatic way to build Java stuff at this company, and once that worked, I stood up a temporary copy. Their users were most pleased with this, and when the devs got back, they took a patch from me to fix the issue in their code.

There has to be some compelling reason to get me to bother. It seems like a lot of this stuff is created just to show off, as if "look, I can create a language or framework" is some kind of accomplishment. If so many people keep doing it, it can't be that special, right?

So, here is my position on all of this. Just because a programming language or framework exists does not make it the least bit interesting to me. I don't care about the latest take on syntactical sugar. It's all just the same stuff rehashed over and over again.

Oh, and if your new environment invents dozens of new vocabulary words, I will probably actively try to avoid it. Coming up with new names for existing concepts serves as a way to create a tribal identity of sorts. The people who use the new terms are clearly part of the "in group", and everyone else is the "unwashed masses".

To see this in action, go watch the South Park episode where the kids from New York call the South Park kids something, and they don't know what it means. They use this to separate the cool kids from the uncool kids. That's what's going on every time someone spews out yet another word for something which could already be described using existing language. It's really annoying, and it just keeps repeating the same old patterns every couple of years.

You won't get to the future by running around in circles forever.