Categories
Uncategorized

My Experience With Every Programming Language I’ve Ever Used

When I tell people I work in software engineering those unfamiliar with the job description sometimes ask how many programming languages I know. I do not really think it matters, it is a bit like asking a carpenter how many saws they know how to use. Additionally, learning new languages after a certain point becomes really easy and knowing the language is not really the hard part about programming. Yet I have become curious myself and so I have enumerated all the programming languages I know. They follow in order of learning them, a ⭐ denotes that I still use them at time of writing in some capacity.

C++ ⭐

I got a tome from the public library titled something like “C++ in 30 Days” and only made it through the first few chapters. I was able to write rudimentary programs but nothing that took full advantage of the language. I learned a lot more about it as an undergraduate because it was the programming language of the curricula. I learned a lot more of it because I was able to mix it with Objective-C to write FiveTimer. I most recently used it writing native methods for an Electron app.

HTML & CSS ⭐

I built this website (not the blog part, that’s just WordPress) around the same time I was learning C++. I initially built it using Macromedia Dreamweaver which led to a very rigid table based layout. Soon after, I rewrote the whole site with Notepad++ using proper CSS along with some PHP and it hasn’t changed much since then. (Archive.org’s Wayback machine has done a very good job of archiving all of these versions if one is so curious to see).

PHP

I took some interest in PHP for its speed and ubiquity on the web. It was also the first dynamic language where I didn’t have to worry about declaring types everywhere, a stark difference from C++. I had some fun rewriting my website with it so that I could have the same header and footer everywhere. I’ve written some small scripts and a visualization tools with it but not much since then (~2013).

Lisp (SBCL)

In retrospect a portion of my undergraduate education was stuck in the 70’s and so LISP was used in an AI course. It was interesting to get into the mostly functional way of thinking with it, Polish notation, and countless parentheses. I’ve tried to use this for some programming challenges but had a hard time writing to stdout. Definitely a language to look at if the spartan syntax of Haskell turns you away.

Objective-C ⭐

When I started iOS programming this was the only language available. I could recognize that it had some C influence but all the brackets made no sense, a book immensely helped me to learn it (Cocoa and Objective-C: Up and Running). You also had to do explicit memory management in those days (iOS 4) so that was an interesting learning curve that became unnecessary in iOS 5. FiveTimer today is still entirely written and maintained in Objective-C with some sprinkling of C++.

Perl

(Speaking of spartan syntax) I’ve written exactly one script with Perl, I had to look up how to do every single line and expression. After I got it working I decided it wasn’t for me and haven’t touched it since.

JavaScript ⭐

JavaScript is Joyful. I started using it to make a graph display for campus power consumption. I latched on to ES6 as soon as it became available for use (via BabelJs, then called 6to5) and I’ve been neck-deep in the ecosystem ever since writing in almost every framework along the way: Backbone, Angular, React, Vue, and Svelte. Even writing some backends in NodeJS and desktop apps in Electron along the way.

Lua

I TA’ed a robotics course that used Lua for the Lego Mindstorms controllers. It’s a really fun little language, almost like JavaScript. I used it with some friends too in a game jam with the Love2D framework and found it much more pleasant than firing up Unity (I’ve tangentially used Unity helping friends program games, I would not say I know or have experience in C# so much as I know some of its patterns).

Java

Somehow I almost forgot this one, it’s what I’ve written Android apps in and for a time did some GWT work with. I find it akin to laying on a bed of nails, it is not ideal but I am not injured by it. However, put too much weight on one point and it quickly becomes painful.

ActionScript

My first job out of college was building ActionScript driven (read: Flash) museum displays. The language was not that great but luckily had some similarities with JavaScript, I moved into the web department as fast as I could. There is another moral in here about not accepting a job until you know exactly what it entails.

Python ⭐

First used in a robotics course where we would program Lego NEXT Mindstorm kits. Didn’t really get it then. I used it intermittently to do Project Euler problems and then almost exclusively in graduate school. it is my go-to for any project that requires some serious backend, computer vision, or machine learning component. It is almost as joyful as JavaScript but dependency management hell is real.

Swift

I jumped on Swift 1.0 when it came out in 2015 and started writing BitFlipper with it. It’s a really fun language to get into writing and thinking in once you get the flow down. I used it for some work projects and also for the aforementioned BitFlipper which finally got published to the app store. It’s too bad that it’s not really viable to use outside of the MacOS/iOS environment despite its open source status.

MATLAB

An unjustified amount of work in graduate school was with MATLAB. It does not feel so much like a programming language as it does someone just wanted a nice tool to multiply matrices and it got out of hand.

MiniZinc

This is a magical constraint programming language that everyone should take the chance to look into for solving problems with giant search spaces. Great for solving configurations of tile-based board games.


If I had to include languages I’ve tangentially used I’d add Ruby and C# but I wouldn’t say I know them. At this point, learning new programming languages is no great feat. Instead it has become more about the correct patterns and practices that are inherit in the language that sets them apart. Writing Python is different from JavaScript is different from Swift, learning the structure and patterns is hard about programming. A carpenter, after all, does not use one single saw for everything in their shop.

Leave a Reply

Your email address will not be published. Required fields are marked *