In the previous articles, we looked at how choosing a language can be the difference between a successful project and a failure. In this article, we will look at language support and how that can affect your project.
Catch up on the rest of the programming languages series here:
- Assessing Your Project Requirements
- A Comparison of Compiled, Interpreted, and Byte-Code
- Evaluating the Time Constraints of Your Project
- Different Libraries and Their Functionalities
- Graphics and GUIs
A Brief History of Programming
Computers have been around since the 1940s, and they’ve changed dramatically since then. However, the programming of computers has barely changed in all that time, as it requires a user to enter commands that get converted into instructions.
Before the invention of the internet, computer programmers had to rely on either books or other programmers to solve problems and provide support. Programmers of the past would recycle code to help save time, write notes down in books, and spend hours trying to fix problems. But when the internet came around, millions of computers became connected and information could easily be shared. Suddenly, programmers could ask for help online, and others with experience in the issue could post code that could be copied and pasted.
Google is Your Friend!
So, why is any of this important when choosing a language? Imagine that you have a project idea (say, a voice-activated IoT device), and you have determined that Python is the best language to choose. You start coding the project and install the needed libraries, but no matter how much you try, you cannot get the program to work correctly.
Fortunately, Python has a large online community that can help, but what if that were not the case? You would have potentially invested large amounts of time in a program that cannot even be completed.
When coding in a language that you are not an expert in (very few people are true experts in a language), it can be a massive benefit to have help from others; this is where Google is your friend (GIYF). There are three main ways for solving a coding-related problem:
- Google the error code
- Go to an online forum
- Look at the documentation
But how does each language fair in these three main areas?
Being one of the older languages, it arguably has the most online content, discussions, and chances are someone else has already made the project you are making. This means that there are plenty of online resources to look at with examples, explanations, and even pre-made classes that can help with using more complex libraries.
Forums are plentiful online and are typically very active, so you can expect a response from someone rather quickly. However, as time progresses, C/C++ may start to fall behind when it comes to modern features. This does not mean that it will stop being used in the future, but it may mean that features in the far future may not be implemented.
Overall, the language is heavily supported and you can be sure that for most of your projects there are already examples of it online.
Java is a more modern language that is heavily based on C++, and it too is heavily supported with forums and plenty of examples online. But Java being a more modern language means that it will most likely have better future feature support, and since Java runs on a virtual machine, the end users are the ones who update their Java version (which ensures they have the latest features).
Considering Java’s cross-platform nature, relative speed, and widespread adoption, it is unlikely that Java as a language will disappear in the next 20 years. Therefore, it can be expected that Java will be heavily supported for a while to come and continuously have new features included.
Python is an interpreted language that is object-oriented. While some may disagree, it is a language that is very different from the de facto languages like C, C++, and Java. Despite this, it has gained a massive community, and now many universities around the world use it as a scientific language. However, its uses also extend to graphical interfaces, hardware, and networking, which means there are plenty of libraries that need examples.
Since Python is one of the most popular languages to date, it has a massive online community (arguably the biggest one), and many experienced programmers on forums who can help.
Due to its cross-platform nature and simplicity, it is hard to see Python disappearing anytime soon, so a project coded in Python should not fail due to lack of support.
VB.net and C#
These two languages are somewhat odd since they heavily rely on the .net framework, which is produced by Microsoft. The .net framework allows for a programmer to easily access Windows API calls, which allows for many features, including security, networking, gaming, and threading.
Due to the large market share of Windows, Microsoft has a commercial incentive to provide support and examples; however, should a new OS be developed, they can decide to drop further development at a moments notice.
But Microsoft has learned from their mistakes with Windows Vista and 8, so the chances of them reinventing the wheel and creating a new framework is very unlikely. This means that you can expect professional and hobby support for the foreseeable future, but should the market share of Windows fall, considering a cross-platform language would not be a bad idea.
Open Source vs. Profit-Driven Languages and Support
Overall, you can see that cross-platform languages like Python, that are open source and not developed by companies, have a strong chance of lasting for many years since they are not profit driven. However, because they are not dependent on the income, the designers could decide to stop development without an excuse or warning.
Profit-driven languages (such as C# and VB.net) have an incentive to keep customers happy and ensure that designers use their products. Therefore, ensuring that the language has full support and development is in their best interest. Of course, the computer market can be volatile with the nature of how technology can change and make billions of devices obsolete.
As it currently stands, all languages have a good level of support and online resources to ensure that no project comes to a grinding halt due to an unforeseen error.