Programming languages were created by different computer scientists and developers to solve a problem. They have been coexisting with machines as early as the 1950’s to solve problems as simple as mathematical computations at a faster rate. Today, they are what makes the software and other digital programs we access through many smart devices such as smartphones, computers, and other automated machines. Therefore, programming languages are also constantly created to fit the growing needs for the technology that evolves and are more widely used than before. Having a variety of programming languages helps expand developers’ tools for solving problems that may arise from different disciplines—this is how technology gets widely adapted throughout our lives. This paper will focus on the benefits of having many programming languages despite the inconvenience they bring to programmers and developers. Although some argue that many of the programming languages, especially the mainstream ones (i.e. C, C++, and Java) try to replace each other but still have similar or even the same flaws, it is still worth agreeing that creating programming languages is more preferable. With the flaws in mind, offering better methodologies to creating programming languages may reduce the imperfections present.
An article by programmer Vasyl Langutin discusses the main reasons why there are many programming languages and why they are constantly being created. The first reason is that technology constantly evolves, thus, demands more suitable programming languages to make software for them. Programming languages are made to solve any problem. Different problems arise as technology evolves. A great example of this argument is when Google released their own programming language Go in 2009. An article released by Network World Middle East discussed the creation of Go. According to Google’s principal software engineer, Rob Pike, Go is created to solve the problems Google is dealing with their own software or application programs. Creating another programming language was necessary because they had problems with implementing their programs with the other existing languages for the past decade (“Google Creates”).
The third reason is each developer or company has different needs for their projects. Having many programming languages allows flexibility for companies and developers to solve their unique problems. This reason is similar to the previous ones but focuses on the motivation behind the creation of each programming language. This is evident in the creation of PHP and Go which were made out of necessity by their developers. Also, many programming languages give flexibility to developers and companies alike. C++ and Go allow faster execution rate and high performance compared to their counterparts, tools to analyze data such as statistics and tables are easily done through Python, and each operating system for mobile applications require different languages that fit its capabilities such as Swift for iOS (Apple operating system) applications and Java for Android operating systems.
Although having many programming languages for each specialization in software is reasonable and vital, there are programming languages that overlap with each other based on their functionality. Such as these are the programming languages R and Python and C++ and C# (read as “C-sharp”). Also, popular programming languages such as C++ and Java (although Java is a huge improvement to C++) have the same amount of flaws. Programmer David Pankhurst argues that there are too many programming languages existing and creating more gives a hindrance to software and web developers. He argues that the developers of many programming languages create it out of egocentricity. Also, some of the programming languages, especially the popular ones like C and C++ have their flaws on handling data (specifically on an issue called “garbage collection”) and the unnecessary strictness of these languages, including Java, involve requiring a semicolon on each line of code to be executed. The unnecessary strictness of syntax was resolved by newer programming languages like Python (which don’t require semicolons but rather leave an executable code on each line). But Pankhurst further argues that most programmers who create programming languages would rather create one than learn from an existing one. These programmers would then improve their own inventions due to egocentricity and competition in the job market. They would prefer working on a project or thesis that creates a new revolutionary programming language rather than improving an existing language that may have been revised and used several times. Also, introducing a new programming language and learning it earlier lets a programmer or developer become more competitive in the job market. New languages normally learned by younger generations allow leverage towards more experienced programmers, thus, stronger competition in the job market. Also, companies that sell cross-platform tools benefit from the demand of having tools that can convert or allow certain programming languages to work in any program, thus, support the creation of multiple languages. Although all of these may be true, Pankhurst’s blog is based on opinion and rational reasoning. Since creating many programming languages out of the wrong methodology and motive may be the problem, finding a better methodology and motive can be the solution to creating better programming languages.
There hasn’t been a proper methodology for creating programming languages since most of the languages sprung up from personal projects and personal solutions to problems that arise which are reasonable motives. Although there’s no proper methodology, there have been different methodologies introduced on creating programming languages based on human data and better syntax for easy readability and understanding of programming and general concepts of computer science. In Peterson’s article, “Media Centered Languages for New Computing Experiences,” he discusses the use of two media-based languages that help widen the audience to younger people towards the concepts of computer science. The two languages mentioned were Pan, a graphical language, and Haskell, an “algorithmic computer music.” He mentions the issue in learning computer science basics is focusing on the syntax of the programming language itself rather than its purpose or the problem it aims to address. This is due to the strict nature of using programming languages which causes more lines of code that are harder for beginners to comprehend quickly. The languages mentioned focus on basic mathematical notations and functions learned as early as middle school. Peterson discusses an example of a geometric pattern displayed by Pan. It only required 4 lines of code to display the intricate Cartesian plane compared to using more complex and popular programming languages. Likewise, Haskell provides syntax on musical notations that is more readable than other languages. Although the languages above are not suitable to replace the more complex languages widely used for current software, it is worth noting that these simple programming languages do make programming easier to learn and understand by a general audience as young as teenagers. Having these kinds of languages can be the motivation for creating new programming languages.
Another methodology focuses on creating programming languages based on human data and surveys rather than inheriting from existing languages and developed by novice programmers. In Stefik et al.’s article, “Towards Intuitive Programming Languages,” they discuss the research they conducted and the development of their programming language, Hop which is created based on scientific and empirical data of human studies. Instead of deriving their language from an existing programming language or programmed by novice developers, the team decided to survey average people, including non-programmers on which type of syntax, keywords, and other semantics a programming language should have. They claim to be the only ones who have used this methodology and are successful. An example mentioned was replacing the keyword “for” for looping through or repeating a certain block of code into “repeat” since it is more intuitive. Although having a “better” programming language is ideal, it is impossible to create such with all the problems a programming language is required to solve. Stefik et al. did mention that their programming language is not one that solves all the problems or is even fit to replace all the complex programming languages existing. Rather, it should be a methodology or inspiration to create programming languages that are “rich, flexible, fast, and measurably intuitive” (214). Creating such a language can be done through observation and survey of human data. Stefik et al. could have provided more information on how big their survey pool was to derive at a conclusion of how intuitive Hop was since there was nothing mentioned about it. The method of analyzing empirical data and using scientific method for creating a programming language rather than inheriting from existing, low-level, assembly languages may be a better option to avoid the flaws and difficulties of programming and understanding the basic concepts of computer science.
Having many programming languages is vital for software developers, programmers, and computer scientists. They act as an arsenal of tools to use for solving problems of different disciplines and bringing solutions to upcoming problems. Just like Google’s Go, they can motivate the creation of more sophisticated solutions that optimize and innovate current technology or existing software. Although learning many programming languages is inconvenient to programmers and time-consuming as its syntax is stricter than natural languages, creating more programming languages is still preferable as to provides flexibility and different tools to solve problems. Creating them with proper methodologies can remove the hindrance of strict syntax and difficult comprehension of the language. There hasn’t been a proper methodology to creating programming languages but there have been different ways and motives to creating one. Programming languages like Pan and Haskell focus on math and music respectively. Hop was created based on surveying average people based on the intuition of what and how a programming language should be. All these languages allow better intuition and understanding of the solution and basic concepts of computer science in a few simple lines of code rather than comprehending the meaning of stricter syntax found in more popular and sophisticated programming languages.
“Google Creates Programming Language to Simplify App Dev.” Network World Middle East, Nov 11, 2009. ProQuest, http://libproxy.utdallas.edu/login?url=https://www.proquest.com/magazines/google-creates-programming-language-simplify-app/docview/210995289/se-2?accountid=7120.
Lagutin, Vasyl. “Why Are There so Many Programming Languages?” FreeCodeCamp.org, FreeCodeCamp.org, 14 Sept. 2021, www.freecodecamp.org/news/why-are-there-so-many-programming-languages/.
Pankhurst, David. “On Too Many Programming Languages.” Utopia Mechanicus, Utopia Mechanicus, 6 June 2014, www.utopiamechanicus.com/article/why-so-many-computer-languages/.
Peterson, John. “Media Centered Languages for New Computing Experiences.” Proceedings of the 2005 Conference on Diversity in Computing – TAPIA ’05, 19 Oct. 2005, doi:10.1145/1095242.1095253.
Stefik, Andreas, et al. “Toward Intuitive Programming Languages.” 2011 IEEE 19th International Conference on Program Comprehension, 22 June 2011, doi:10.1109/icpc.2011.33.