I started learning how to code as a teenager. Back then there weren’t very many programming languages. I remember BASIC, Pascal, Fortran, COBOL, C and a handful of others that were highly specialized. Why so few? Because in the 1970’s, computers just couldn’t do very much compared to today. The available languages were sufficient for the limited tasks computers had been assigned to manage.
Over the last several decades, computer technology has exploded. The smartphone I carry around in my pocket is far more powerful than the fastest computers of my youth. As a teenager, I rarely encountered anything where a computer had played a part. Today the rare encounter would be with things where computers had played no part. Computers handle so many tasks now that, as a natural consequence, there are thousands of programming languages with more appearing every year.
With so many languages, it can be difficult to choose one. What is important in a programming language?
I frequently come across articles that try to declare the top 5 most important languages for <insert current year here>. Others will declare a set of programming languages as “modern”. And occasionally, someone will go out on a limb to declare a particular (usually shiny and new) language the one language to rule them all. Long ago I wondered why a lingua franca of programming languages did not exist. It seemed like it made sense to learn one rather than many.
The reality is that programming languages come about for specific purposes. First, all programming languages will have the basics. They will all have the ability to assign values to variables. They will all have some mathematical operators. They will all have conditional expressions, control flow, value types, etc. Some will be object-oriented, some will not. Some will be appropriate for solving wide range of problems while others will be more narrow. Ultimately, what is important in a programming language is that you as the programmer can be productive with it. The language that allows you to quickly and easily solve the problems you’re facing is probably just fine, perhaps even the best one.
Despite their names both being at the same station of the alphabet, C and COBOL could not be more different. Yet one is not better than the other. I wouldn’t want to write banking applications in C or device drivers in COBOL. I wouldn’t choose Java for creating desktop applications or Swift for server software. Choose the right language for the right purpose. Of course, that’s easier said than done.
If you’re a professional, full-time software developer you could use ten or more programming languages during your career. Most languages have so much in common that, having learned a few, picking up a new one isn’t difficult. However, if you are learning programming for the first time, a hobbyist or a citizen developer, then focusing on one programming language, at least initially, is sensible.
To make things more complex, the programming language is only one component in creating software. There will usually be some kind of code editor, usually (but not always) a debugger, compiler and linker. Sometimes there will be a visual user interface editor and possibly one or more frameworks which are libraries of code for a very specific purpose that abstract you from the nitty-gritty details so you can focus on coding faster. That’s potentially a lot of moving parts.
My company provides a programming language called Xojo (‘zōjō). It’s actually more than just a programming language. It’s the combination of all the things I mentioned above: code editor, debugger, compiler, linker, interface builder and frameworks. Usually this is referred to as an Integrated Development Environment or IDE for short. We focus on making Xojo easy and free to learn, but powerful enough to use as your development needs become more sophisticated. For example, with Xojo you can build apps for many different platforms and targets without learning all the details that make them different. You can build applications for macOS, Linux, Windows, the web, iOS and Raspberry Pi, sharing most of your code between all of them.
Xojo also has features you’d expect in more modern languages. Xojo is object-oriented, uses a standard dot notation syntax, has exception handling, and manages memory via referencing counting for you. Should your needs require them, it has powerful features such as overloading, delegates, declares and more. Xojo is arguably as modern as just about any other programming language. Every language has its differences of course and there will always be those who argue that their language of choice is the best. Like golf clubs, there’s no one that is perfect for every possible problem. Sometimes you need a putter and sometimes you need a driver.
That a language is new or modern might sound great but if it’s not well-suited for you or your intended purpose then new and modern won’t matter. What’s important in a programming language is that you are productive with it. The best programming language for you is one where you can quickly and easily:
- Learn it.
- Create your app.
- Deploy your app successfully.
- Observe your app doing what it’s supposed to do.
- Debug and update your app when it doesn’t behave.
You might have wondered (as I did for many years) why there hasn’t been one language to rule them all. That programming languages all have so much in common makes this even more of a mystery. The answer is really twofold. First, as mentioned earlier languages are often designed for a specific purpose and second, that sometimes software developers will think they can do better and create a new language. Once in a while, they’re right.
If a language that is easy to learn and use and makes it easy to create apps for many different devices/operating systems is what you’re looking for, Xojo may be it. The best part is that it costs nothing to find out. You can download and use Xojo for free. You only buy a license when you want to distribute your app.