You can always look forward to a good debate when the topic is ‘Open source programming languages versus licensed programming languages’. There are pros and cons to both sides of the argument. The author gives readers, particularly aspirants in the field of programming, insights into this age old question.
In the current tech savvy scenario, we have become too busy to spend time on manual processes and hence try to get the system to perform tasks to the greatest extent possible. This means we must convey the instructions to the system, using various languages. The programming language plays an important role in letting us manipulate the system or the machine. There are different programming languages currently in use, of which some are open source while others are proprietary.
Open source basically refers to a program in which the source code is available to the public, free of cost, for use or for modification from its original design. It’s actually developed by a combined effort, under which programmers improve upon the code and share the changes with the public. As per the Open Source Initiative (OSI), the source code of an open source computer program is made available free of cost to the public so that the larger group of programmers who are not concerned about proprietary rights or financial gains will produce a more useful product that can be utilised further by everyone.
According to DFSG (Debian Free Software Guidelines), an open source programming language should fulfil the following criteria:
1. Free redistribution: An open source programming language should not restrict anyone from selling or giving away any component of it from an aggregate distribution containing various components from several different sources. It should also not require any fee for such sale.
2. Source code: An open source programming language must include the source code. If, in case, some form of a product is not distributed with the source code, then there must be some means of obtaining the source code for a reasonable reproduction cost, like downloading via the Internet without any charge. The source code must be the preferred form in which a programmer can modify the program. Obfuscated source code is not allowed.
3. Derived works: An open source programming language must be used to make any changes or derived works, and also, those changes must be permitted to be distributed under the same terms and conditions as that of the original programming language.
4. Integrity of the author’s source code: An open source programming language may restrict its source code from being distributed in modified form only if it allows the distribution of its patch files with its source code for the purpose of modifying the program developed during build time. It must explicitly permit its distribution built from modified source code. It may also require derived works to carry a different name or version from the original software.
5. No discrimination against persons or groups: An open source programming language must not discriminate against any kind of person or group of persons.
6. No discrimination against fields of endeavour: An open source programming language must not restrict anyone from making use of the program in a specific field of endeavour.
7. Distribution of licence: The rights attached to the open source programming language must apply to all to whom it is distributed, without the need for executing additional rights by those parties.
8. The licence must not be specific to a product: The rights attached to the open source programming language must not depend on it being part of a particular software distribution. If it is extracted from that distribution and used or distributed within the terms of its licence, all parties to whom it has been redistributed should have the same rights as those that are granted along with the original programming language distribution.
9. The licence must not restrict other software: An open source programming language must not place restrictions on other programming languages that are distributed along with the licensed programming languages.
10. The licence must be technology-neutral: There is no provision for the open source programming language to be predicated on any individual technology or style of interface.
Open source programming languages in the market
A flashback to the 18th century will reveal that the world’s very first program was written by Ada Lovelace for calculating Bernoulli’s Number using the Analytical Engine. The culture of writing programs has come into existence since then and, subsequently, it has led to the development of various other programs that are used to perform some complex mathematical calculations.
According to Wikipedia, it was only in the 1950s that the first high-level programming language, Plankalkül, was designed and developed by the Germans to communicate instructions to the computer. John Mauchly’s Short Code was the first high-level language ever to be developed for an electronic computer.
Today, developers and programmers have many programming language options that can be used to develop applications of their choice. Let’s take a look at a few such popular open source programming languages.
Java is one of the world’s most influential programming languages developed so far, and it is mostly open source today. It is being used at the core of many Web and Windows based applications on all platforms, operating systems and devices. This class-based object-oriented programming language has a large number of features.
Features of Java
- Is object-oriented.
- Allows us to create various modular programs and reusable code.
- It is easily ported.
- Is platform-independent.
- Easy to write, compile and debug.
PHP is on its way to becoming the most popular open source programming language. According to many leading industry leaders, PHP has emerged as the most user-friendly open source language; therefore, various open source packages such as Joomla and Drupal are built on it. It’s even budget-friendly and, hence, PHP based solutions are being used by entrepreneurs and SMEs as well. Currently, many developers are making their debut on PHP, which clearly highlights its strong community base.
Features of PHP
- Cross-platform compatibility.
- No need to specify the data type for variable declarations, and predefined variables can be used.
- Availability of predefined error reporting constants.
- Supports extended regular expressions.
- Has the ability to generate dynamic page content.
- Allows the user to create, open, read, write, delete and close files on the server
- Output can be in HTML, images, PDF, Flash, XHTML and XML file formats.
- Runs on various platforms such as Windows, Linux, UNIX, Mac OSx, etc.
- It is compatible with almost all servers being used currently.
Python was developed by Guido Van Rossum in the 1980s and handed over to the non-profit Python Software Foundation, which now serves as the administrator of the Python language. It was one of the first programming languages that was easy for people to pick up quickly. It is open source and is free to use even for commercial applications. It’s used as a scripting language, and programmers can easily produce readable and functional code in a very short period of time.
Features of Python
- Supports procedure-oriented as well as object-oriented programming (OOP). Python has a very powerful but simplistic way of implementing OOP.
- Good readability, with clear and simple syntax.
- Portable, therefore it can be interpreted in various operating systems, including UNIX-based systems, various Microsoft Windows versions, Mac OS, MS DOS, etc.
- The source code is open for users to modify and reuse.
- Easy to learn compared to other such languages.
- It can be embedded in C and C++.
- It’s a high-level language that does not need compilation to the binary.
Perl is still under active development even after 27 years. According to the Perl website, it is a stable, mature, powerful and portable language. It is highly efficient and feature rich. Perl 5 runs on over 100 platforms, which vary from portables to mainframes. It is suitable for both rapid prototyping as well as the large-scale development of various projects. Perl 5 and Perl 6 are parts of the Perl family of languages. However, Perl 6 is a separate language that has a different development team working on it. Hence, it comes as a dynamically typed, interpreted language which is comparable with both PHP and Python. It is ideal for processing and producing text data. It is highly portable and widely supported.
Features of Perl
- Has simple syntax, so it’s easy to learn for novices as well.
- It is cross-platform.
- Is versatile and has a very comprehensive library of modules.
- Has a very powerful as well as flexible object-oriented programming syntax.
- Supports multiple platforms including Linux, Microsoft DOS, Windows, Apple Mac, and some mobile platforms as well.
How to select a programming language
When we think of choosing our first programming language, several points pass through our minds, and the many options available add to the confusion. There are several factors that can help us select the most optimal programming language.
1. Performance and efficiency: This is one parameter that all of us look at while evaluating any programming language. We then choose the one that most efficiently performs a specific task in the least time. In reality, no specific language is fast. It’s the efficiency of the compiler and interpreter that makes it fast. So we should choose accordingly.
2. Capability to address your specific requirements: We should choose the one that best addresses our specific problem. We cannot select a language just because it’s popular or is highly efficient. It’s of no use if it doesn’t work to solve our problem.
3. Ease of learning, understanding and time taken for developing code: A programming language that takes less time for a coder to understand and learn, enabling it to be implemented for a specific application, is better than one that is complex. Also, if it’s easy to understand, it will take less time to code and at the same time, it will be easy for peers to review and modify the code.
4. Elasticity and portability: It’s always good to opt for languages that can easily be modified in order to support some new feature or functionality, without making too many changes. It is also advantageous if a programming language supports multiple platforms, middleware, databases and system management facilities or if it can support these with very few adjustments.
5. Security: A programming language should include specific security measures in order to protect its code from malicious usage.
6. Popularity and support: If the language we select is popular, then it becomes easier for us to find reference material. Also, the chances of finding its library files are higher, compared to less popular languages. It will be good if proper support is available as this saves a lot of time.
Open source vs licensed programming languages
- One of the most important reasons for preferring open source programming languages is that their source code can be customised efficiently to fit our needs and requirements, whereas in the case of a licensed programming language, if the source code is made available by the owner, it can be customised only to the permissible extent.
- Open source programming languages are subject to peer review constantly, so the bugs present in the program code can be easily found and fixed. Users from different programming backgrounds and countries can collaborate, unlike in the case of commercially developed programs where only the developers of the original piece of code can actually change it.
- Open source programming languages also allow the translation of the source code from one language to another, whereas in the case of licensed programming languages, the developers of the source code may not allow that.
- Open source programming languages are free to try out before actual implementation, unlike licensed ones, where we have trial versions that are valid for a few days only.
- Open source programming languages are more secure overall.
A few disadvantages
- It becomes confusing, sometimes, when so many changes are made in the source code of an open source programming language, by different users. Ultimately, this leaves us wondering about the version of the code we are using. In the case of licensed programming languages, the changes are made by developers of the source code and they clearly notify the current version of the code.
- Open source programming languages can also be tough to take on if we are very new to a certain language. If someone has worked on some previous code and hasn’t commented it, but has written some messy lines of code, it can be extremely confusing to unravel.
- It becomes difficult to find support for some open source programming languages if community users do not have a solution to your specific problem, whereas for licensed languages, the developers provide full-time support.
It’s rather difficult to come to a definite conclusion on whether we need to opt for an open source programming language or a licensed option since both have a few advantages and disadvantages. Although there are some significant pros associated with open source programming languages, like allowing for complete customisation for whatever task we are trying to accomplish and also full access to the source code, we cannot disengage ourselves completely from using licensed programming languages, since these are also useful at times when we suffer from platform dependency or tool support issues. Before taking the plunge, we need to consider the several factors we have discussed along with our requirements while choosing a specific programming language.
The Open Source Initiative (OSI) is a non-profit organisation that promotes open source products by certifying them with the Open Source Software trademark.
Debian Free Software Guidelines (DFSG) is a set of guidelines initially designed as a set of commitments that Debian agreed to abide by, and this has been adopted by the free software community as the basis of the Open Source Definition.
The author is a B. Tech in electronics and instrumentation engineering. He works on various software automation testing tools and on Android application development. He is currently working as an automation test engineer at Infosys, Pune. He can be reached at email@example.com.