Programming Languages II: My Favorites

This article presents my personal requirements for an exceptional programming language. While there will be many active proponents of their own favorite, after using so many different languages, I’ve determined that most languages just don’t meet the specifications I feel are most important for rapidly developing anything from the most simple applications to extremely complex systems.

My most desired characteristics of a truly useful programming language, in no particular order, are:

  • There must be a seriously powerful IDE (Integrated Development Environment) that enhances the speed and simplicity to build AND debug any application;
  • Excellent documentation with examples is a must. One should not have to spend a majority of your time using a search engine to find out how things work – especially since so much outside information is just plain wrong;
  • A robust library of classes and supporting methods will facilitate speed in developing;
  • Having a large library of 3rd party classes/projects that easily integrates with your software; as an example, the “NuGet” system available in Visual Studio fits that bill;
  • The code created with the language must execute quickly AND be relatively small;
  • The ability to have a tool to develop excellent User Interfaces (UI) is almost a must. UI’s are very time consuming to create and any help built into the language or development system is a gigantic advantage;
  • Ideally there should be some support for some kind of portability so you can code once, and install on different platforms;
  • There must be a large group of developers adept with the language to afford continuity in business situations.

My personal favorites that fit virtually all of these characteristics, by platform, are:

Platform

Language/Development Environment

Hands down, C# is a clear winner. It meets all criteria listed above, including free and paid versions of its IDE (Visual Studio) and portability with Visual Code that can compile that same applications to run on different operating systems. While it is not strictly compiled, its “Just In Time” (JIT) compilation allows C# to run extremely fast and can be used for the most complex applications. JIT effectively attempts to predict the code path and pre-compiles the code in that path so that it runs almost as fast as C/C++. And its IDE makes building a UI really fast and easy. While C++ can create smaller and slightly faster applications, it is significantly more difficult to learn and you usually must find third party tools to create User Interfaces.

Apple’s XCode, while not perfect, has two significantly powerful languages: Objective C (older but still useful) and Swift (the more modern language pushed by Apple.) XCode sports a UI builder, although it can feel a little clunky compared to Microsoft’s Visual Studio.

Linux

Jet Brains’ IntelliJ, which is primary used to develop with Java. Java’s online documentation is really excellent, repleat with examples. There is also a very large community of developers familiar with Java.

All the above notwithstanding, there are merits to several other languages for specific purposes. For example, JavaScript is extremely useful for web programming, as is the case for PHP. However, I’ve found that it was more of a nuisance than valuable to build applications with most other languages, even the very popular Python. Most languages support all basic functionality, however writing apps with these languages usually forces one to spend lots of time using search engines to figure out the proper syntax to do something that is easily accomplished in other languages.

I do apologize to fans and designers of the many other language choices. However, my experience has shown that almost none of these other languages offers anything so special that the choice to use them becomes so clear.