To understand why all-encompassing programming language has not yet been developed, we need to investigate the drivers that yield to the variety in development of computer programming. But first, let’s say that in the future, there will be a unified language. The questions that spontaneously rises with this hypothesis are: How it will look like? Will it be able to address all complexities and address all needs? Are people willing to use it? Would it be an open-source developed by volunteers or commercial driven by organizations? How much time does it need?
Today there are hundreds of programming languages. Programming languages can be classified into one or more of the following paradigms:
- High-level / low-level
- Functional / imperative / procedural
- General-purpose / domain-specific
Creating a language that is entirely independent of any current philosophy in programming paradigms would be a tedious work and against all principles of research and scientific development in the field. One can argue about the style of coding, like text-based or graphical representation, or in the form of natural language. How much of object-oriented, functional, and imperative features it contains and would it rely on newer trends in programming paradigms. Madsen (2000), explained that “the goal of research in programming languages should be to develop a language that integrates the best of concepts and constructs from the various programming paradigms” (pp. 1). In his interview with Big Think, Bjarne Stroustrup (the founder of C++), anticipated that there would be a unified design in style and guidelines, instead of syntaxes and semantics (Stroustrup, 2017).
the goal of research in programming languages should be to develop a language that integrates the best of concepts and constructs from the various programming paradigms
The complexity of building a flexible and unified language has to do with two main barriers. First is developing a sort of general-domain language which also tackles the needs of all specific domains. In their paper, van Deursen, Klint, and Visser (2000), gave a survey of literature on domain-specific languages, there are literary hundreds of them. Examples of old specific-domain languages are Fortran and Cobol; the former was designed to help engineers in complex scientific computing; the latter was primarily built for business computing (DuPal, 2013). Such programs evolve with time for general purposes, and therefore, a need emerged for applications with the emphasis on specific strengths (van Deursen, 2000, p. 26). The second barrier is it needs to be reliable and consistent across the variety of system platforms and devices. Programming languages use specific libraries for different operating systems. For example, C# and Objective-C are both objected-oriented languages that were derived from C. However, C# is used for Microsoft, while Objective-C is used for IOS applications.
In order to have a brief idea about the various domains and programming languages used in each, below is a summary of the different fields of programming:
Personally, I believe that there is great merit in variety. Sometimes people select languages based on practical needs, background, or even taste. They learn other languages to strengthen their skills and expand their horizons. Personally, I learned in the beginning R because it is an awesome high-level language that addressed my needs, which were mainly related to statistics and ad-hoc data analysis. I also had to learn it because my precedents and other colleagues in my old organization were using it. Then I started using different languages like Python because who doesn’t and Scala for Big Data analytics. I find strength in using a language that is more suitable for a specific requirement. In my opinion, even if unified language comes into existence, it doesn’t mean that coders will discard all other languages and only use it.
DuPaul, N. (2013) ‘The History of Programming Languages Infographics’. Veracode, 15 April. Available at: https://www.veracode.com/blog/author/neil-dupaul. (Accessed: 1 December 2017)
Madsen O.L. (2000) Towards a Unified Programming Language. In: Bertino E. (eds) ECOOP 2000 — Object-Oriented Programming. ECOOP 2000. Lecture Notes in Computer Science, vol 1850. Springer, Berlin, Heidelberg
Stroustrup, Bjarne (2017) There will be a unified programming language. Available at: http://bigthink.com/videos/there-will-be-a-unified-programming-language (Accessed: 1 December 2017) van Deursen, Arie; Klint, Paul; Visser, Joost (2000) ‘Domain Specific Languages’. Theory of computer Science. ACM SIGPLAN Notices. 35(6):26-36 (Available at: http://dare.uva.nl/personal/pure/en/publications/domainspecific-languagesan-annotated-bibliography(7070463f-b610-44c3-87b1-78700bc6bbfd).html)