As with device charging plugs, browsers and mostly anything else in the world – there are various types of programming languages. Most of them were developed for a particular intention, such as instructions for a certain type of hardware or to perform in a certain computer environment. Therefore, one can wonder – will there ever be just one single language to rule them all?
The assembly languages, called second-generation, is inherently machine dependents which means that the instructions within the program are expressed reflecting that specific machine’s attributes (Brookshear, 2011, pp. 241). Then came third-generation languages which was meant to be machine independent and thereby theoretically to be used on any machine using the correct compiler. Unfortunately, experience showed that it was often necessary to change at least minor things in the program (Brookshear, 2011, pp. 243).
Why are there so many different programming languages? Scott (2006, pp. 6-7) has several theories. Firstly he mentions evolution, different needs created different languages. Another reason is that many languages were designed for a specific problem domain, such as text input, data structures or logical relational data.
Chisnall (2013, pp.50-56) believes that the likelihood of a single programming language is minimal. Modern hardware continues to develop and the software complexity increases. The languages need to evolve all the time to encompass these changes. He argues that as it is today, because of the difference in hardware, if a developer would like to utilize every bit of the performance, he would not be able to use just one language. He points to the cause and effect of the hardware development: The industry spent years developing CPUs optimized for running languages such as C, as people who needed fast coding turned to C, which again was because the hardware was optimized for it (CHISNALL, 2013, pp.50-56). It would seem like a catch 22.
Shirer (2015) argues that particularly in the early days of computing, the choice of programming language may have been political as well as practical. FORTRAN compilers were handed out freely together with the purchase of computers, by their manufacturers, to encourage program development. Algol was encouraged by some countries because of political reasons. (Shirer, 2015)
I will cover 3 languages that I feel would be good examples to discuss this theory of a single language. They are all related to the von Neumann imperative programming. Other types of languages include declarative languages such as functional, dataflow, constraint-based etc. (Scott, 2006, pp. 10)
C: Developed by Dennis Ritchie in the 1970’s. Originally intended as a system software development language, it gained a lot of popularity because of its efficient representations of complex algorithms. C might seem primitive compared to other high-level languages in that it doesn’t use natural language but rather symbolism. (Brookshear, 2011, pp. 553)
Java: Developed in the early 1990’s by Sun Microsystems. It borrows heavily from C and C++, however it’s main strength differs from these in the use of its templates. The language is also universally implemented so that its programs can be executed efficiently over a wide range of machines. The usage of templates means that complex software can be developed with less effort than other languages might. (Brookshear, 2011, pp. 554)
Ada: Developed by the United States Department of Defence (USDD), it is regarded as having many excellent features and ideas, but to be very complex. (Scott, 2006, pp. 7) The USDD wanted to have one unified general-purpose language for all their software development needs. Ada has a major emphasis on programming for real-time computer systems and functioning in parallel processing environments. (Brookshear, 2011, pp. 553) Contractors are often required to use Ada in order to continue with the general-purpose language to keep the systems able to co-operate. (Shirer, 2015)
Considering everything above, I do not believe there will be a universal programming language. I believe this language will need to be so complex and have so many definitions and developed API for every scenario that it will be nearly impossible. Also, in order to utilize every hardware component to the max, the program would need to cover many configurations and instruction sets. (Brookshear, 2011, pp. 241)
In addition, many companies, such as the UDD, have invested large amounts of money in software based on a specific language. To convert all of the existing software to be compatible with the new, or change into the new to eliminate the need for updating the old software language, would cost a lot of money. Also, who would be in charge of maintaining and develop this language – as we can see from the languages mentioned above, they all had someone backing them for particular interests.
We have tried Esperanto in natural languages, sadly this failed. Because of ownership interests and the other points mentioned, I also believe this idea of a single programming language would fail.
Brookshear, J. G. (2011) Computer science : an overview. Boston , M.A. ; Pearson / Addison-Wesley, 2011.
CHISNALL, D. (2013) ‘The Challenge of Cross- Language Interoperability’, Commun ACM, 56 (12), pp.50-6.
Scott, M. L. (2006) Programming language pragmatics. [electronic book]. San Francisco, Calif. : Morgan Kaufmann ; c2006; 2nd ed. [Online] [EBSCO]. Available from: http://search.ebscohost.com.ezproxy.liv.ac.uk/login.aspx?direct=true&db=cat00003a&AN=lvp.b2611802&site=eds-live&scope=site (Accessed: 27.11.2016).
Shirer, D. L. (2015) ‘Computer programming languages’, Salem Press Encyclopedia of Science.
Image source: 3844328, Pixabay. CC public domain licence. https://pixabay.com/en/programming-computer-environment-1857236/