The Language of Machines

The Language of Machines
So many programming languages

My favorite and least favorite programming languages I've used thus far in my career.

Top 5

1. Kotlin

There's a spot in my heart for Java because it was the first programming language I ever learned. The JVM has an excellent garbage collector and makes platform compatability easy. However, it has limitations and the syntax can be overly-verbose. Kotlin is my favorite JVM-based language. It solves many of the shortcomings and can be used as a scripting language in data science notebooks! The backend of my blog is written in Kotlin with a framework called Ktor. It's also great for android development, which is an area I haven't explored yet.

2. R

I think R is proof that open source works! It is the language I've used most in my academic career. If I was asked to analysis on a set of data with tools of my choice, I would use R. While Python is a bit easier I simply enjoy the flow of R better. ggplot is an extremely powerful library for creating data visualizations and R shiny is very nice for quickly building web apps. Deep learning is the only area I would probably use Python instead (although Tensorflow/Pytorch can both be used with R).

3. Python

Python is a great general-purpose language with a huge selection of libraries. It almost becomes too easy when you can just import a library that does the exact thing you need, like scraping a web page or NLP. My biggest qualm with it is the package management system; Pip is handy but updating packages can be a nightmare of version conflicts. A long time ago I tried to make a Tensorflow project but trying to keep it up to date was just too difficult. Still it remains a powerful tool for server-side and data science solutions.

4. Bash/Shell

I consider myself to be a Linux power user, everything is done faster from the CLI over a GUI. I set up scripts to do some basic file moving tasks locally. Linux scripting is just so clean and well documented. I don't really have that much to say about this one I just think Bash is really useful.

5. TypeScript

I've always preferred server-side coding more than frontend development, mainly due to JavaScript. However, TypeScript fixes many of the qualms I had with JS. Unlike JS, TS has a more Java-Like/Object-Oriented syntax with types and a compiler that provides error checking. TS has everything JS does and more, enough said. It's too bad TS is so usually tied to NPM package manager, which I think is the worst package manager ever.

Honorable Mentions:

  • Julia - A new statistical programming langauge that's supposedly almost as fast as C. I've had little opportunity to practice with it since it lacks maturity.

Wall of Shame

Remember, every langauge sucks in some regard. The following are just languages I've personally had had bad experiences with. This doesn't speak to my fluency just how much fun using the language is.

1. Visual Basic Advanced (VBA)

VBA is an abomination of a programming language. It's old and extremely limited in what it can do. Documentation sucks and some functions don't behave as expected. It doesn't have any use outside Excel in my option. There's not that much else to say that hasn't been said about this one.

2. SAS

SAS is what you get when people with no programming experience make a proprietary language. It represents everything wrong with paying for a programming language. Invented by business people to do one specific thing and nothing else. Granted it does a few things very well, but the syntax is clunky and inconsistent across functions, the documentation can be overly-verbose and confusing and the community is more condescending than StackOverflow. Thank goodness I can use SQL-like queries or I would get nothing done.

3. PowerShell

Of course another programming language made by Microsoft makes the list. Just like Windows, it steals important stuff from Linux and then tries to make it just different enough. Like why is the escape character a backtick instead of a forward slash like every other shell language? But besides that sometimes it flat out doesn't work. One time I tried to move a file between drives with PowerShell and it deleted the file instead. Windows is made to use with the GUI. Thankfully I haven't worked with any company that's braindead enough to use Windows Server so I don't see PowerShell scripts often.

4. PHP

Why is PHP still a thing in 2023? While other server-side languages protect against attacks like SQL injection, if you don't know how to code in PHP your code properly it's easy to introduce security flaws. Not to mention, it's an ugly language and its hard to follow when reading someone else's code. There are so many better server-side alternatives.

5. Assembly

Assembly language requires a low-level knowledge of system architecture. I understand CPU architecture and memory management but I found coding is x86 a frustrating experience. Granted I learned a lot when I finally finished the program. This really isn't a complaint about the language but just the nature of low-level programming. Some people find it fun but it's not for me.

Dishonorable Mentions:

  • Makefiles - The most finicky syntax I've ever seen. Why is it whitespace sensitive?
  • JavaScript - JS was created in 10 days and it shows. Just a bad design in so many places, like == and === really don't need to exist. Shoutout to my least favorite web framework, React.js