A blog about nothing. By Don Kuntz.

On Programming Languages

I’ve been thinking about programming languages again, and my preferences, and all sorts of different things. Basically, expect tangents.

While I’ve continually confessed my love of Python, I’ve started playing with Go. Go is fantastic, I described it in an interview as a static language, but with the fun of Python. One of the big things I like about Go is that the command line tools are wonderful. You can use go run to compile and run your program with one command, instead of having to compile and run in two separate steps. And testing is built in.

But enough about Go (which is delightful, I’m working on using a different adjective to describe Go each time I mention it…), my main motivation for starting this post was C++. I don’t enjoy using C++, I find the conventions funny, and I would much rather use a different language. I respect C++ because it’s where I was first explicitly introduced to pointers (in that I could manipulate them, I was first introduced to the concept of pointers with Java and how everything is technically a pointer), but I don’t really like working in C++.

Having played with Go a little, I really like that it has pointers. I know most people don’t like pointers, but I really enjoy pointers. I find them useful, and I like how they give you the ability to create cool data structures.

I was once told that I would never use anything I learned in my data structures class, like creating a linked list, my response is, yeah, but they’re cool, and while I may end up hurting myself at times, being able to create a linked list is, at least to me, something that seems mildly useful and really cool.

Back to C++. I don’t have fun writing C++ code. There isn’t the same spark when I write C++ that I get when I use Python and Go (and even Ruby, Java, and PHP to a smaller extent, but not the .NET stack). I fully understand the C++ is still important today, and that lots of things use it, and it probably isn’t going away soon, and that having some sort of foundation in C++ gives you a good foundation for lots of languages which are modeled on C++, or are C-esque, but I just don’t enjoy it.

While I don’t enjoy C++, I don’t dislike it, I just would prefer to use a different language. I can think of only a few situations where I would use C++, and for the most part, C is probably a better choice than C++. Mostly for embedded devices.

Moving away from C++, while I haven’t done much work with it, C# and asp.NET are not a fun time. Writing a .NET web application seems counterintuitive to how one would write a web application. Okay, maybe not counterintuitive, but it’s weird. I have to store database procedures, instead of being able to write them in the application itself. You don’t pass data to the views, they have multiple fields which are manipulated by the server. It’s just counter to what every other framework I’ve used does. Plus, the whole compilation thing, and not being able to dynamically recompile while testing is a drag…

Anyways, those are some thoughts I’ve been thinking…