For many people that language is Ruby. This is often credited with making programming “click”; Publishers talk about it with a certain indebtedness and affection. I understood. I wrote my first “Hello World” in a horrible thing called Java, but programming only started to feel comfortable when I learned JavaScript (I know, I know) and OCaml – both of which basically shaped my tastes.
I reached Ruby a little late. It wasn’t until my fourth job that I found myself on a team that primarily used it. By then, I had heard so many praises of its beauty that I was filled with anticipation, ready to be charmed, to experience the professional satori described by its followers. My dislike of it was immediate.
Arriving late to a language means seeing it without the unforgiving fog of sentimentality that comes with print—a strong willingness to ignore a flaw as an oddity. What I saw was not some jeweled device but a cheap thing that had absolutely no clue that the world of programming had moved on.
ruby created In 1995 by Japanese programmer Yukihiro Matsumoto, affectionately known as “Matz”. In addition to creating the only major programming language to originate outside the West, this Osaka-born practicing Mormon is also known for being exceptionally nice, so much so that the Ruby community adopted Minaswan’s motto of “Matz is Nice and So We’re Nice”.
Due to this, as well as its beautiful name, ruby is easy on the eyes. Its syntax is simple, free of semicolons or parentheses. Even more so than Python, a language known for its readability, Ruby reads almost like plain English.
Programming languages are generally divided into two camps: statically typed and dynamically typed. A static-type system resembles a set of Lego in that the pieces only connect with other pieces of the right size and shape, making certain mistakes physically impossible. With dynamic typing, you can join the pieces together as you wish. Although on a smaller scale this is theoretically more flexible, this freedom has an adverse effect when you are building larger structures – some types of errors are only caught while the program is running. As soon as you put weight on your Lego footbridge, in other words, it collapses into a useless heap.
Ruby, you might have guessed, is dynamically typed. There’s also Python and JavaScript, but over the years, those communities have developed sophisticated tools to treat them more responsibly. None of Ruby’s existing solutions are equivalent to them. It is very well suited for what programmers call “footguns”, features that make it very easy to shoot yourself in the foot.
<a href